Térinformatikai és GeoJSON-helyadatok az Azure Cosmos DB for NoSQL-ben
A KÖVETKEZŐRE VONATKOZIK: NoSQL
Az Azure Cosmos DB for NoSQL beépített térinformatikai funkciókkal rendelkezik, amelyek geometriai alakzatokat vagy valós helyeket/sokszögeket jelölnek a térképen.
A térinformatikai adatok gyakran közelségi lekérdezéseket is magukban foglalnak. A "Minden kiskereskedelmi hely megkeresése az aktuális hely közelében" kérdésre például egy több térinformatikai adatobjektumon keresztüli közelségi lekérdezéssel válaszol.
A térinformatikai használati esetek közé tartoznak, de nem korlátozódnak a következőkre:
- Földrajzi helyelemzés, amely konkrét helyalapú marketingkezdeményezéseket indít el.
- Helyalapú személyre szabás olyan iparágak számára, mint a kiskereskedelem és az egészségügy a felhasználói élmény javítása érdekében.
- A logisztika fejlesztése olyan iparágakban, mint a szállítás, ahol az optimalizálás kritikus fontosságú.
- Kockázatelemzés, olyan iparágak esetében, mint a biztosítás és a pénzügy, más metaadatok kiegészítéséhez.
- Helyzetfelismerés* a közelségalapú riasztásokhoz és értesítésekhez.
A térbeli adatok bemutatása
A térbeli adatok a térbeli objektumok helyzetét és alakját írják le. A legtöbb alkalmazásban ezek a pontok és alakzatok a föld és a térinformatikai adatok objektumainak felelnek meg. A térbeli adatok a személy helyét, az érdeklődési helyet, a város vagy a tó határát jelölhetik.
Az Azure Cosmos DB for NoSQL két térbeli adattípust támogat: a geometriai adattípust és a földrajzi adattípust.
- A geometria típusa egy euklideszi (sík) koordinátarendszer adatait jelöli. Ez a típus olyan gyakori geometriai feladatokhoz hasznos, mint a vonalak mérése, a sokszögek metszése és a pontok közötti távolság mérése.
- A földrajzi típus egy ciklikus föld koordinátarendszer adatait jelöli. Ez a típus olyan gyakori földrajzi feladatokhoz hasznos, mint például annak meghatározása, hogy egy hely adott határokon belül van-e, és méri-e a helyek közötti távolságot.
Támogatott adattípusok
Az Azure Cosmos DB for NoSQL támogatja a GeoJSON-specifikációval ábrázolt térinformatikai pontadatok indexelését és lekérdezését. A GeoJSON-adatstruktúrák mindig érvényes JSON-objektumok, ezért speciális eszközök és kódtárak nélkül tárolhatók és kérdezhetők le az Azure Cosmos DB-vel.
Az Azure Cosmos DB a következő térbeli adattípusokat támogatja:
- Pont
- LineString
- Polygon
- MultiPolygon
Pont
A pontok egyetlen helyet jelölnek a térben. A térinformatikai adatokban a Pont a pontos helyet jelöli, amely lehet egy élelmiszerbolt, egy kioszk, egy autó vagy egy város utcacíme. Egy pontot a GeoJSON (és az Azure Cosmos DB for NOSQL) jelöl a koordináta-pár (hosszúság és szélesség) használatával.
Tekintse meg ezt a GeoJSON-példát. A hosszúság és -122.12826822304672
a szélesség .47.63980239335718
{
"type": "Point",
"coordinates": [
-122.12826822304672,
47.63980239335718
]
}
Tipp.
A földrajzi adattípus esetében a GeoJSON-specifikáció az első és a második szélességi hosszúságot határozza meg. Más leképezési alkalmazásokhoz hasonlóan a hosszúság és a szélesség szögek és fokok formájában jelennek meg. A hosszúsági értékeket a prime meridiánból mérik, fokok és fokok között-180
, a szélességi értékeket pedig az Egyenlítőből, fokok és 90.0
fokok között-90.0
.180.0
A geometriai adattípus esetében a GeoJSON-specifikáció az első vízszintes tengelyt, a másodikat pedig a függőleges tengelyt határozza meg.
A térbeli adattípusok beágyazhatók egy elembe, ahogyan az a GeoJSON-adatokat tartalmazó létesítményelem példájában látható.
{
"name": "Headquarters",
"location": {
"type": "Point",
"coordinates": [
-122.12826822304672,
47.63980239335718
]
},
"category": "business-offices"
}
Az Azure Cosmos DB for NoSQL a WGS-84 referenciarendszer által képviselt koordinátákat értelmezi. További információ: koordináta-referenciarendszerek.
LineStrings
A LineStrings a tér két vagy több pontjának és az őket összekötő vonalszegmenseknek a sorozatát jelöli. A térinformatikai adatokban a LineStrings általában autópályákat vagy folyókat jelöl.
Ebben a példában egy vonalsztringet használunk, amely két pont között húzott vonalat jelöl.
{
"type": "LineString",
"coordinates": [
[ 31.8, -5 ],
[ 31.8, -4.7 ]
]
}
Sokszög
A sokszög az összekapcsolt pontok határa, amelyek zárt Vonalláncot alkotnak. A sokszögeket gyakran használják természeti képződmények, például tavak vagy politikai joghatóságok, például városok és államok jelképezésére.
A sokszögben lévő pontokat az óramutató járásával ellentétes sorrendben kell megadni. Az óramutató járásával megegyező sorrendben megadott sokszög a régió inverzét jelöli.
Ebben a példában több pont összekapcsolásával sokszög jön létre.
{
"type":"Polygon",
"coordinates":[ [
[ 31.8, -5 ],
[ 32, -5 ],
[ 32, -4.7 ],
[ 31.8, -4.7 ],
[ 31.8, -5 ]
] ]
}
Tipp.
A GeoJSON-specifikáció megköveteli, hogy érvényes sokszögek esetén az utolsó megadott koordináta-párnak meg kell egyeznie az elsővel egy zárt alakzat létrehozásához.
Többpógonyok
A MultiPolygon egy nulla vagy több poligonból álló tömb. A többpógonyok nem fedhetik át az oldalakat, és nem lehetnek közös területük. Egy vagy több ponton is érinthetnek.
Íme egy példa a MultiPolygonra.
{
"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]
]]]
}
Koordináta-referenciarendszerek
Mivel a föld alakja szabálytalan, a földrajzi térinformatikai adatok koordinátái számos koordináta-referenciarendszerben (CRS) jelennek meg. Minden CRS saját referenciakerettel és mértékegységekkel rendelkezik. Például a "National Grid of Britain" egy referenciarendszer, amely pontos az Egyesült Királyság számára, de nem azon kívül.
A jelenleg használt legnépszerűbb CRS a WGS-84 geodéziai világrendszer. A GPS-eszközök és számos leképezési szolgáltatás, köztük a Google Maps és a Bing Maps API-k a WGS-84-et használják. Az Azure Cosmos DB for NoSQL csak a WGS-84 CRS használatával támogatja a földrajzi térinformatikai adatok indexelését és lekérdezését.
Elemek létrehozása térbeli adatokkal
GeoJSON-értékeket tartalmazó elemek létrehozásakor a rendszer automatikusan térbeli indexeli őket. Ez az alapértelmezett indexelés a tároló indexelési szabályzatának megfelelően történik. Ha nincs megadva az alapértelmezett indexelési szabályzat, az pontosan indexeli a GeoJSON-adatokat. Ha dinamikusan gépelt nyelven (például Python vagy Node.js) dolgozik egy SDK-val, akkor érvényes GeoJSON-t kell létrehoznia.
var userProfileitem = {
"id": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb",
"location":{
"type":"Point",
"coordinates":[ -122.12, 47.66 ]
}
};
client.createitem(`dbs/${databaseName}/colls/${collectionName}`, userProfileitem, (err, created) => {
// additional code within the callback
});
Ha nem rendelkezik földrajzi szélességi és hosszúsági információkkal, de rendelkezik a fizikai címekkel vagy a hely nevével, keresse meg a tényleges koordinátákat egy online szolgáltatás használatával. Az olyan szolgáltatások, mint a Bing Maps, segíthetnek megtalálni a földrajzi adatokat egy ismert helynévből. További információ a Bing Maps geokódolásáról: Bing Maps REST Services.