Megosztás a következőn keresztül:


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 proxyalapú 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.