Térbeli adatok beolvasása és írása
Az alábbi táblázat azokat a térbeli fájlformátumokat sorolja fel, amelyek támogatottak a térbeli IO-modullal végzett olvasási és írási műveletekhez.
Adatformátum | Olvasás | Írás |
---|---|---|
GeoJSON | ✓ | ✓ |
GeoRSS | ✓ | ✓ |
GML | ✓ | ✓ |
GPX | ✓ | ✓ |
KML | ✓ | ✓ |
KMZ | ✓ | ✓ |
Térbeli CSV | ✓ | ✓ |
Jól ismert szöveg | ✓ | ✓ |
Ezek a következő szakaszok a térbeli adatok térbeli IO-modullal történő olvasásának és írásának különböző eszközeit ismertetik.
Térbeli adatok olvasása
A atlas.io.read
függvény az olyan gyakori térbeli adatformátumok olvasására használt fő függvény, mint a KML, a GPX, a GeoRSS, a GeoJSON és a térbeli adatokat tartalmazó CSV-fájlok. Ez a függvény a formátumok tömörített verzióit zip-fájlként vagy KMZ-fájlként is képes olvasni. A KMZ fájlformátum a KML tömörített verziója, amely olyan objektumokat is tartalmazhat, mint a képek. Másik lehetőségként az olvasási függvény olyan URL-címet is megadhat, amely egy fájlra mutat ezen formátumok bármelyikében. Az URL-címeket CORS-kompatibilis végponton kell üzemeltetni, vagy proxyszolgáltatást kell biztosítani az olvasási beállítások között. A proxyszolgáltatás olyan tartományok erőforrásainak betöltésére szolgál, amelyek nincsenek engedélyezve a CORS-ben. Az olvasási függvény ígéretet ad arra, hogy hozzáadja a képikonokat a térképhez, és aszinkron módon dolgozza fel az adatokat a felhasználói felületi szálra gyakorolt hatás minimalizálása érdekében.
Tömörített fájl zip-ként vagy KMZ-ként való olvasásakor a kibontott fájl az első érvényes fájlt keresi. Például doc.kml vagy más érvényes kiterjesztésű fájl, például: .kml, .xml, geojson, .json, .csv, .tsv vagy .txt. Ezután a KML- és GeoRSS-fájlokban hivatkozott képek előre betöltődnek, hogy biztosan elérhetők legyenek. A elérhetetlen képadatok betölthetnek egy másik tartalék képet, vagy eltávolíthatók a stílusokból. A KMZ-fájlokból kinyert képek adat-URI-kká alakulnak.
Az olvasási függvény eredménye egy SpatialDataSet
objektum. Ez az objektum kibővíti a GeoJSON FeatureCollection osztályt. Könnyen átadható egy DataSource
olyan eszköznek, amely a funkcióit térképen jeleníti meg. Ez SpatialDataSet
nem csak a szolgáltatásinformációkat tartalmazza, hanem a KML alaprétegeit, a metrikák feldolgozását és egyéb részleteket is, az alábbi táblázatban ismertetett módon.
Tulajdonság neve | Típus | Leírás |
---|---|---|
bbox |
BoundingBox |
Az adathalmaz összes adatának határolókerete. |
features |
Feature[] |
GeoJSON-funkciók az adatkészleten belül. |
groundOverlays |
(atlas.layer.ImageLayer | atlas.layers.OgcMapLayer)[] |
A KML GroundOverlays tömbje. |
icons |
Rekordsztring<, sztring> | Ikon URL-címek készlete. Key = icon name, Value = URL. |
tulajdonságok | bármelyik | A térbeli adathalmaz dokumentumszintjén megadott tulajdonságinformációk. |
stats |
SpatialDataSetStats |
A térbeli adatkészletek tartalmára és feldolgozási idejére vonatkozó statisztikák. |
type |
'FeatureCollection' |
Írásvédett GeoJSON-típusérték. |
Példák térbeli adatok olvasására
A térbeli adatok betöltése minta bemutatja, hogyan olvasható be egy térbeli adatkészlet, és hogyan jeleníthető meg a térképen az SimpleDataLayer
osztály használatával. A kód egy URL-cím által mutatott GPX-fájlt használ. A minta forráskódját a térbeli adatforráskód betöltése című témakörben talál.
A következő kódbemutató bemutatja, hogyan olvashatja és töltheti be a KML-t vagy a KMZ-t a térképre. A KML tartalmazhat földfelszíneket, amelyek ImageLyaer
egy vagy OgcMapLayer
. Ezeket az átfedéseket a funkcióktól elkülönítve kell hozzáadni a térképhez. Ezenkívül ha az adatkészlet egyéni ikonokkal rendelkezik, ezeket az ikonokat be kell tölteni a térképek erőforrásaiba a funkciók betöltése előtt.
A KML betöltése térképmintára azt mutatja be, hogyan tölthet be KML- vagy KMZ-fájlokat a térképre. A minta forráskódját lásd : KML betöltése a térkép forráskódjára.
Igény szerint proxyszolgáltatást is biztosíthat olyan tartományok közötti eszközök eléréséhez, amelyekhez nincs engedélyezve a CORS. Az olvasási függvény először a CORS használatával próbál hozzáférni egy másik tartomány fájljaihoz. Amikor először nem fér hozzá egy másik tartomány erőforrásaihoz a CORS használatával, csak akkor kér több fájlt, ha proxyszolgáltatást biztosít. Az olvasási függvény hozzáfűzi a fájl URL-címét a megadott proxy URL-cím végéhez. Ez a kódrészlet bemutatja, hogyan adhat át proxyszolgáltatást az olvasási függvénynek:
//Read a file from a URL or pass in a raw data as a string.
atlas.io.read('https://nonCorsDomain.example.com/mySuperCoolData.xml', {
//Provide a proxy service
proxyService: window.location.origin + '/YourCorsEnabledProxyService.ashx?url='
}).then(async r => {
if (r) {
// Some code goes here . . .
}
});
Az alábbi kódrészlet bemutatja, hogyan olvasható be egy tagolt fájl, és hogyan jeleníthető meg a térképen. Ebben az esetben a kód egy térbeli adatoszlopokat tartalmazó CSV-fájlt használ. Hozzá kell adnia egy hivatkozást az Azure Maps térbeli IO-modulhoz.
<!-- Add reference to the Azure Maps Spatial IO module. -->
<script src="https://atlas.microsoft.com/sdk/javascript/spatial/0/atlas-spatial.min.js"></script>
<script type="text/javascript">
var map, datasource, layer;
//a URL pointing to the CSV file
var delimitedFileUrl = "https://s3-us-west-2.amazonaws.com/s.cdpn.io/1717245/earthquakes_gt7_alltime.csv";
function InitMap()
{
map = new atlas.Map('myMap', {
center: [-73.985708, 40.75773],
zoom: 12,
view: "Auto",
//Add authentication details for connecting to Azure Maps.
authOptions: {
// Get an Azure Maps key at https://azuremaps.com/.
authType: 'subscriptionKey',
subscriptionKey: '{Your-Azure-Maps-Subscription-key}'
},
});
//Wait until the map resources are ready.
map.events.add('ready', function () {
//Create a data source and add it to the map.
datasource = new atlas.source.DataSource();
map.sources.add(datasource);
//Add a simple data layer for rendering the data.
layer = new atlas.layer.SimpleDataLayer(datasource);
map.layers.add(layer);
//Read a CSV file from a URL or pass in a raw string.
atlas.io.read(delimitedFileUrl).then(r => {
if (r) {
//Add the feature data to the data source.
datasource.add(r);
//If bounding box information is known for data, set the map view to it.
if (r.bbox) {
map.setCamera({
bounds: r.bbox,
padding: 50
});
}
}
});
});
}
</script>
Térbeli adatok írása
A térbeli IO-modulban két fő írási függvény található. A atlas.io.write
függvény létrehoz egy sztringet, míg a atlas.io.writeCompressed
függvény tömörített zip-fájlt hoz létre. A tömörített zip-fájl tartalmazna egy szövegalapú fájlt, benne a térbeli adatokkal. Mindkét függvény ígéretet ad az adatok fájlhoz való hozzáadására. A következő adatok bármelyikét megírhatják: SpatialDataSet
, DataSource
, ImageLayer
, , OgcMapLayer
funkciógyűjtemény, funkció, geometria vagy az adattípusok tetszőleges kombinációjának tömbje. Ha bármelyik függvényt használja, megadhatja a kívánt fájlformátumot. Ha a fájlformátum nincs megadva, akkor az adatok KML formátumban lesznek megírva.
A térbeli adatírási lehetőségek mintája egy olyan eszköz, amely bemutatja a függvényhez használható legtöbb írási atlas.io.write
lehetőséget. A minta forráskódját lásd : Térbeli adatírási lehetőségek forráskódja.
Példa térbeli adatok írására
A térbeli fájlok térképmintára húzásával egy vagy több KML-, KMZ-, GeoRSS-, GPX-, GML-, GeoJSON- vagy CSV-fájlt húzhat a térképre. A minta forráskódját lásd : Térbeli fájlok húzása a térkép forráskódjára.
Igény szerint proxyszolgáltatást is biztosíthat olyan tartományok közötti eszközök eléréséhez, amelyekhez nincs engedélyezve a CORS. Ez a kódrészlet azt mutatja, hogy egy proxyszolgáltatást is beépíthet:
atlas.io.read(data, {
//Provide a proxy service
proxyService: window.location.origin + '/YourCorsEnabledProxyService.ashx?url='
}).then(
//Success
function(r) {
//some code goes here ...
}
);
Jól ismert szöveg olvasása és írása (WKT)
A jól ismert szöveg (WKT) egy nyílt térinformatikai konzorcium (OGC) szabvány a térbeli geometriák szövegként való ábrázolására. Számos térinformatikai rendszer támogatja a WKT-t, például az Azure SQL-t és az Azure PostgreSQL-t a PostGIS beépülő modul használatával. A legtöbb OGC-szabványhoz hasonlóan a koordináták "hosszúsági szélességként" vannak formázva, hogy igazodjanak az "x y" konvencióhoz. Például a -110 hosszúsági és a 45-ös szélességi pont WKT formátumban írható POINT(-110 45)
.
A jól ismert szöveg olvasható a atlas.io.ogc.WKT.read
függvény használatával, és a atlas.io.ogc.WKT.write
függvény használatával írható.
Példák jól ismert szöveg olvasására és írására (WKT)
A Jól ismert szöveg olvasása minta bemutatja, hogyan olvasható be a jól ismert szöveges sztring POINT(-122.34009 47.60995)
, és hogyan jelenítheti meg a térképen buborékréteg használatával. A minta forráskódját lásd : Read Well Known Text source code.
A jól ismert szöveg olvasási és írási mintája bemutatja, hogyan olvashatók és írhatóak a Jól ismert szöveg (WKT) sztringek GeoJSON-ként. A minta forráskódját lásd : Jól ismert szöveg forráskódjának olvasása és írása.
GML olvasása és írása
A GML egy térbeli XML-fájlspecifikáció, amelyet gyakran más XML-specifikációk kiterjesztéseként használnak. A GeoJSON-adatok a függvény használatával XML-ként írhatók GML-címkékkel atlas.io.core.GmlWriter.write
. A GML-t tartalmazó XML a atlas.io.core.GmlReader.read
függvény használatával olvasható. Az olvasási függvénynek két lehetősége van:
- A
isAxisOrderLonLat
beállítás – A "szélesség, hosszúság" vagy "hosszúság, szélesség" koordináták tengelyének sorrendje adathalmazonként eltérő lehet, és nem mindig jól definiált. A GML-olvasó alapértelmezés szerint "szélesség, hosszúság" néven olvassa be a koordinátaadatokat, de ezt a beállításttrue
"hosszúság, szélesség" értékre állítja. - A
propertyTypes
beállítás – Ez a beállítás egy kulcsérték-keresési tábla, ahol a kulcs az adathalmaz egyik tulajdonságának neve. Az érték az az objektumtípus, amely az értéket az elemzés során átadhatja. A támogatott típusértékek a következők:string
,number
,boolean
ésdate
. Ha egy tulajdonság nincs a keresési táblában, vagy nincs megadva a típus, a tulajdonság sztringként lesz elemezve.
A atlas.io.read
függvény akkor alapértelmezés szerint a atlas.io.core.GmlReader.read
függvényhez tartozik, ha azt észleli, hogy a bemeneti adatok XML formátumúak, de az adatok nem a térbeli XML-formátumok egyikét sem támogatják.
Az GmlReader
elemzési koordináták az alábbi SRID-k egyikével rendelkeznek:
- EPSG:4326 (előnyben részesített)
- EPSG:4269, EPSG:4283, EPSG:4258, EPSG:4308, EPSG:4230, EPSG:4272, EPSG:4271, EPSG:4267, EPSG:4608, EPSG:4674 esetleg kis hibahatárral.
- EPSG:3857, EPSG:102100, EPSG:3785, EPSG:900913, EPSG:102113, EPSG:41001, EPSG:54004
További erőforrások
További információ a cikkben használt osztályokról és módszerekről:
Csatlakozás WFS-szolgáltatáshoz
Támogatott adatformátum részletei
Következő lépések
További kódmintákat a térképekhez a következő cikkekben talál: