Partager via


Prise en charge de System.Text.Json pour la bibliothèque Microsoft.Spatial pour .NET

Le package Microsoft.Spatial contient des classes et des méthodes qui prennent en charge les opérations géographiques. Cette bibliothèque contient des convertisseurs dépendant de System.Text.Json pour une utilisation avec Microsoft.Spatial lors de l’utilisation du Kit de développement logiciel (SDK) Azure pour .NET.

Prise en main

Installez ce package si vous utilisez le package Microsoft.Spatial dans votre application et que vous souhaitez sérialiser des classes prises en charge avec System.Text.Json.

Installer le package

Installez ce package à partir de NuGet à l’aide de l’interface CLI .NET :

dotnet add package Microsoft.Azure.Core.Spatial

Concepts clés

Ce package de support contient la MicrosoftSpatialGeoJsonConverter classe qui peut être ajoutée à JsonSerializerOptions pour désérialiser des objets géographiques tels que GeographyPoint. Ce convertisseur peut être utilisé avec les bibliothèques clientes du KIT de développement logiciel (SDK) Azure, comme illustré dans les exemples ci-dessous.

Exemples

Le package Azure.Search.Documents est utilisé dans des exemples pour montrer comment les résultats de recherche contenant des points géographiques peuvent être désérialisés. Pour plus d’informations et pour obtenir des exemples d’utilisation d’Azure.Search.Documents, consultez son FICHIER README.

Désérialisation des documents

Considérez une classe de modèle contenant des informations sur les montagnes :

public class Mountain
{
    [SimpleField(IsKey = true)]
    public string Id { get; set; }

    [SearchableField(IsSortable = true, AnalyzerName = LexicalAnalyzerName.Values.EnLucene)]
    public string Name { get; set; }

    [SimpleField(IsFacetable = true, IsFilterable = true)]
    public GeographyPoint Summit { get; set; }
}

L’ajout de la MicrosoftSpatialGeoJsonConverter classe aux options de sérialiseur désérialise correctement l’emplacement du sommet :

// Get the Azure Cognitive Search endpoint and read-only API key.
Uri endpoint = new Uri(Environment.GetEnvironmentVariable("SEARCH_ENDPOINT"));
AzureKeyCredential credential = new AzureKeyCredential(Environment.GetEnvironmentVariable("SEARCH_API_KEY"));

// Create serializer options with our converter to deserialize geographic points.
JsonSerializerOptions serializerOptions = new JsonSerializerOptions
{
    Converters =
    {
        new MicrosoftSpatialGeoJsonConverter()
    },
    PropertyNamingPolicy = JsonNamingPolicy.CamelCase
};

SearchClientOptions clientOptions = new SearchClientOptions
{
    Serializer = new JsonObjectSerializer(serializerOptions)
};

SearchClient client = new SearchClient(endpoint, "mountains", credential, clientOptions);
Response<SearchResults<Mountain>> results = client.Search<Mountain>("Rainier");

foreach (SearchResult<Mountain> result in results.Value.GetResults())
{
    Mountain mountain = result.Document;
    Console.WriteLine("https://www.bing.com/maps?cp={0}~{1}&sp=point.{0}_{1}_{2}",
        mountain.Summit.Latitude,
        mountain.Summit.Longitude,
        Uri.EscapeUriString(mountain.Name));
}

Si vous recherchez un index rempli de montagnes, les éléments suivants peuvent être imprimés :

https://www.bing.com/maps?cp=46.85287~-121.76044&sp=point.46.85287_-121.76044_Mount%20Rainier

Contribution

Ce projet accepte les contributions et les suggestions. La plupart des contributions vous demandent d’accepter un contrat de licence de contribution (CLA) déclarant que vous avez le droit de nous accorder, et que vous nous accordez réellement, les droits d’utilisation de votre contribution. Pour plus d’informations, visitez https://cla.microsoft.com.

Quand vous envoyez une demande de tirage (pull request), un bot CLA détermine automatiquement si vous devez fournir un contrat CLA et agrémenter la demande de tirage de façon appropriée (par exemple, avec une étiquette ou un commentaire). Suivez simplement les instructions fournies par le bot. Vous n’aurez besoin de le faire qu’une seule fois sur tous les dépôts à l’aide de notre CLA.

Ce projet a adopté le Code de conduite Open Source de Microsoft. Pour plus d’informations, consultez les Questions fréquentes (FAQ) sur le code de conduite ou envoyez vos questions ou vos commentaires à opencode@microsoft.com.

Impressions