Sdílet prostřednictvím


Geoprostorová data a data o poloze GeoJSON ve službě Azure Cosmos DB for NoSQL

PLATÍ PRO: NoSQL

Azure Cosmos DB for NoSQL má integrovanou geoprostorovou funkci, která představuje geometrické obrazce nebo skutečná umístění nebo mnohoúhelníky na mapě.

Geoprostorová data často zahrnují dotazy na blízkost. Například otázka "Najít všechna maloobchodní místa poblíž aktuálního umístění" je zodpovězena pomocí dotazu bezkontaktní komunikace u více geoprostorových datových objektů.

Mezi běžné případy použití geoprostorových případů patří mimo jiné:

  • Analýza geografické polohy, která řídí konkrétní marketingové iniciativy založené na poloze.
  • Přizpůsobení založené na poloze pro odvětví, jako je maloobchod a zdravotnictví, aby se zlepšilo uživatelské prostředí.
  • Logistická vylepšení pro odvětví, jako je doprava, kde je optimalizace důležitá.
  • Analýza rizik pro odvětví, jako je pojištění a finance, aby doplnila další metadata.
  • Situační povědomí*, pro výstrahy a oznámení založená na proxy.

Úvod do prostorových dat

Prostorová data popisují umístění a tvar objektů v prostoru. Ve většině aplikací tyto body a obrazce odpovídají objektům na zemi a geoprostorovým datům. Prostorová data se dají použít k reprezentaci umístění osoby, místa zájmu nebo hranice města nebo jezera.

Azure Cosmos DB for NoSQL podporuje dva prostorové datové typy: datový typ geometrie a zeměpisný datový typ.

  • Typ geometrie představuje data v euklidovském (plochém) souřadnicovém systému. Tento typ je užitečný pro běžné geometrické úkoly, jako jsou měření čar, protínání mnohoúhelníku a měření vzdálenosti mezi body.
  • Zeměpisný typ představuje data v souřadnicovém systému s kruhovou zemí. Tento typ je užitečný pro běžné geografické úlohy, jako je určení, zda je umístění v konkrétních mezích a měření vzdálenosti mezi lokalitami.

Podporované datové typy

Azure Cosmos DB for NoSQL podporuje indexování a dotazování dat geoprostorových bodů reprezentovaných pomocí specifikace GeoJSON. Datové struktury GeoJSON jsou vždy platné objekty JSON, takže je můžete ukládat a dotazovat pomocí služby Azure Cosmos DB bez specializovaných nástrojů nebo knihoven.

Azure Cosmos DB podporuje následující prostorové datové typy:

  • Bod
  • LineString
  • Mnohoúhelník
  • MultiPolygon

Points

Bod označuje jednu pozici v prostoru. V geoprostorových datech představuje bod přesnou polohu, což může být ulice obchodu s potravinami, veřejný terminál, automobil nebo město. Bod je reprezentován v GeoJSON (a Azure Cosmos DB for NOSQL) pomocí dvojice souřadnic (zeměpisná délka a zeměpisná šířka).

Podívejte se na tento příklad bodu GeoJSON. Zeměpisná délka je -122.12826822304672 a zeměpisná šířka je 47.63980239335718.

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

Tip

Pro datový typ zeměpis určuje specifikace GeoJSON délku první a druhou zeměpisnou šířku. Stejně jako v jiných mapovacích aplikacích jsou zeměpisné délky a zeměpisné šířky úhly a znázorněny z hlediska stupňů. Hodnoty délky se měří z hlavního poledníku a jsou mezi -180 stupni a 180.0 stupni a hodnoty zeměpisné šířky se měří z rovníku a jsou mezi -90.0 stupni a 90.0 stupni.

U datového typu geometrie určuje specifikace GeoJSON nejprve vodorovnou osu a druhou svislou osu.

Prostorové datové typy lze vložit do položky, jak je znázorněno v tomto příkladu položky zařízení, která obsahuje data GeoJSON.

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

Azure Cosmos DB for NoSQL interpretuje souřadnice podle referenčního systému WGS-84. Další informace naleznete v tématu referenční systémy souřadnic.

LineStrings

Spojnicové řetězce představují řadu dvou nebo více bodů v prostoru a segmenty čáry, které je spojují. V geoprostorových datech se linestringy běžně používají k reprezentaci dálnic nebo řek.

V tomto příkladu se řetězec řádku používá k reprezentaci čáry, která je nakreslená mezi dvěma body.

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

Mnohoúhelníky

Mnohoúhelník je hranice propojených bodů, která tvoří uzavřený linestring. Mnohoúhelníky se běžně používají k reprezentaci přírodních formací, jako jsou jezera nebo politické jurisdikce, jako jsou města a státy.

Body v polygonu musí být zadány v pořadí proti směru hodinových ručiček. Mnohoúhelník zadaný v pořadí hodinových ručiček představuje inverzní funkci oblasti v ní.

V tomto příkladu se mnohoúhelník vytvoří propojením více bodů.

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

Tip

Specifikace GeoJSON vyžaduje, aby pro platné mnohoúhelníky byl poslední zadaný pár souřadnic stejný jako první, aby se vytvořil uzavřený obrazec.

MultiPolygony

MultiPolygon je pole s nulovými nebo více mnohoúhelníky. MultiPolygony nemůžou překrývat strany ani nemají žádnou společnou oblast. Mohou se dotýkat na jednom nebo více bodech.

Tady je příklad multipolygonu.

{
    "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]
        ]]]
}

Souřadnicové referenční systémy

Vzhledem k tomu, že tvar země je nepravidelný, souřadnice geografických geoprostorových dat jsou reprezentovány v mnoha souřadnicových referenčních systémech (CRS). Každá CRS má vlastní rámce referenčních jednotek a měrných jednotek. Například "Národní mřížka Británie" je referenční systém přesný pro Spojené království, ale ne mimo ni.

Nejoblíbenější CRS používané dnes je World Geodetic System WGS-84. Zařízení GPS a mnoho mapových služeb, včetně Google Maps a rozhraní API Map Bing, používají WGS-84. Azure Cosmos DB for NoSQL podporuje indexování a dotazování geografických geoprostorových dat pouze pomocí WGS-84 CRS.

Vytváření položek s prostorovými daty

Při vytváření položek obsahujících hodnoty GeoJSON se automaticky indexují pomocí prostorového indexu. K tomuto výchozímu indexování dochází v souladu se zásadami indexování kontejneru. Výchozí zásady indexování, pokud nejsou zadané, budou přesně indexovat data GeoJSON. Pokud pracujete se sadou SDK v dynamicky zadaném jazyce, jako je Python nebo Node.js, musíte vytvořit platnou geoJSON.

var userProfileitem = {
    "id":"cosmosdb",
    "location":{
        "type":"Point",
        "coordinates":[ -122.12, 47.66 ]
    }
};

client.createitem(`dbs/${databaseName}/colls/${collectionName}`, userProfileitem, (err, created) => {
    // additional code within the callback
});

Pokud nemáte informace o zeměpisné šířce a délce, ale máte fyzické adresy nebo název umístění, vyhledejte skutečné souřadnice pomocí online služby. Služby jako Mapy Bing vám můžou pomoct s vyhledáním skutečných zeměpisných dat ze známého názvu umístění. Další informace o geokódování Map Bing naleznete v tématu Služby REST Mapy Bing.