Condividi tramite


Dati geospaziali - Linguaggio di query in Cosmos DB (in Azure e Infrastruttura)

Il linguaggio di query include funzionalità geospaziali predefinite per rappresentare forme geometriche o posizioni/poligoni effettivi su una mappa. I dati geospaziali spesso comportano query di prossimità. Ad esempio, la domanda "trovare tutte le posizioni di vendita al dettaglio vicino alla posizione corrente" viene risposta usando una query di prossimità su più oggetti dati geospaziali.

Casi d'uso

I casi d'uso geospaziali comuni includono, ma non sono limitati a:

  • Analisi della georilevazione, guidando iniziative di marketing specifiche basate sulla posizione.

  • Personalizzazione basata sulla posizione, per settori come la vendita al dettaglio e il settore sanitario per migliorare l'esperienza utente.

  • Miglioramento della logistica, per settori come i trasporti in cui l'ottimizzazione è fondamentale.

  • Analisi dei rischi, per settori come assicurazione e finanza per integrare altri metadati.

  • Consapevolezza della situazione*, per avvisi e notifiche basati sulla prossimità.

Introduzione ai dati spaziali

I dati spaziali descrivono la posizione e la forma degli oggetti nello spazio. Nella maggior parte delle applicazioni, questi punti e forme corrispondono agli oggetti sulla terra e ai dati geospaziali.

I dati spaziali possono essere usati per rappresentare:

  • La posizione di una persona

  • Un luogo di interesse

  • Il confine di una città, o di un lago

Il linguaggio di query supporta due tipi di dati spaziali: il tipo di dati geometry e il tipo di dati geography .

  • Il tipo geometry rappresenta i dati in un sistema di coordinate euclideo (piatto). Questo tipo è utile per attività geometriche comuni, ad esempio la misurazione delle linee, l'intersecazione dei poligoni e la misurazione della distanza tra i punti.

  • Il tipo geography rappresenta i dati in un sistema di coordinate terra rotonda. Questo tipo è utile per le attività geografiche comuni, ad esempio per determinare se una posizione si trova all'interno di limiti specifici e misurare la distanza tra posizioni.

Tipi di dati supportati

Il linguaggio di query supporta l'indicizzazione e l'esecuzione di query sui dati dei punti geospaziali rappresentati usando la specifica GeoJSON. Le strutture di dati GeoJSON sono oggetti JSON validi, quindi è possibile archiviarli ed eseguirne query usando il linguaggio di query senza strumenti o librerie specializzati.

Il linguaggio di query supporta i tipi di dati spaziali seguenti:

  • point

  • LineString

  • Poligono

  • MultiPolygon

Punti

Un punto indica una singola posizione nello spazio. Nei dati geospaziali, un punto rappresenta la posizione esatta, che può essere un indirizzo di un negozio di alimentari, un chiosco multimediale, un'automobile o una città. Un punto è rappresentato in GeoJSON (e il linguaggio di query) usando la coppia di coordinate (longitudine e latitudine).

Si consideri questo esempio di punto GeoJSON. La longitudine è -122.12826822304672 e la latitudine è 47.63980239335718.

{
  "type": "Point",
  "coordinates": [
    -122.12826822304672,
    47.63980239335718
  ]
}

Suggerimento

Per il tipo di dati geography , la specifica GeoJSON specifica la longitudine prima e la latitudine seconda. Come in altre applicazioni di mapping, longitudine e latitudine sono angoli e rappresentati in termini di gradi. I valori di longitudine vengono misurati dal Meridiano primo e sono compresi tra -180 gradi e 180.0 gradi e i valori di latitudine vengono misurati dall'equatore e sono compresi tra -90.0 gradi e 90.0 gradi.

Per il tipo di dati geometry , la specifica GeoJSON specifica prima l'asse orizzontale e il secondo asse verticale.

I tipi di dati spaziali possono essere incorporati in un elemento, come illustrato in questo esempio di un elemento della struttura che include i dati GeoJSON.

{
  "name": "Headquarters",
  "location": {
    "type": "Point",
    "coordinates": [
      -122.12826822304672,
      47.63980239335718
    ]
  },
  "category": "business-offices"
}

Il linguaggio di query interpreta le coordinate come rappresentate in base al sistema di riferimento WGS-84. Per altre informazioni, vedere Sistemi di riferimento delle coordinate.

LineStrings

LineStrings rappresenta una serie di due o più punti nello spazio e i segmenti di linea che le connettono. Nei dati geospaziali, LineStrings vengono comunemente usati per rappresentare autostrade o fiumi.

In questo esempio viene utilizzata una stringa di linea per rappresentare una linea disegnata tra due punti.

{
  "type": "LineString",
  "coordinates": [
    [ 31.8, -5 ],
    [ 31.8, -4.7 ]
  ]
}

Poligoni

Un poligono è un limite di punti connessi che forma un oggetto LineString chiuso. I poligoni sono comunemente usati per rappresentare formazioni naturali come laghi o giurisdizioni politiche come città e stati.

I punti all'interno di un poligono devono essere specificati in ordine antiorario. Un poligono specificato in senso orario rappresenta l'inverso dell'area all'interno di essa.

In questo esempio viene creato un poligono collegando più punti.

{
  "type":"Polygon",
  "coordinates":[[
    [ 31.8, -5 ],
    [ 32, -5 ],
    [ 32, -4.7 ],
    [ 31.8, -4.7 ],
    [ 31.8, -5 ]
  ]]
}

Suggerimento

La specifica GeoJSON richiede che per i poligoni validi, l'ultima coppia di coordinate fornita deve essere la stessa della prima, per creare una forma chiusa.

MultiPolygons

MultiPolygon è una matrice di zero o più poligoni. I multipolygon non possono sovrapporsi ai lati o avere un'area comune. Potrebbero toccare uno o più punti.

Ecco un esempio di MultiPolygon.

{
    "type":"MultiPolygon",
    "coordinates":[
      [[
          [52.0, 12.0],
          [53.0, 12.0],
          [53.0, 13.0],
          [52.0, 13.0],
          [52.0, 12.0]
      ]],
      [[
          [50.0, 0.0],
          [51.0, 0.0],
          [51.0, 5.0],
          [50.0, 5.0],
          [50.0, 0.0]
      ]]
    ]
}

Sistemi di riferimento delle coordinate

Poiché la forma della terra è irregolare, le coordinate dei dati geospaziali geografici sono rappresentate in molti sistemi di riferimento di coordinate (CRS). Ogni CRS ha i propri fotogrammi di riferimento e unità di misura. Ad esempio, "National Grid of Britain" è un sistema di riferimento accurato per il Regno Unito, ma non al di fuori di esso.

Il CRS più diffuso in uso oggi è il World Geodetic System WGS-84. I dispositivi GPS e molti servizi di mapping, tra cui Google Maps e le API di Bing Maps usano WGS-84. Il linguaggio di query supporta l'indicizzazione e l'esecuzione di query sui dati geospaziali geografici usando solo crs WGS-84.