Sdílet prostřednictvím


Čtení a zápis prostorových dat

Následující tabulka uvádí formáty prostorových souborů, které jsou podporovány pro operace čtení a zápisu pomocí modulu Spatial IO.

Formát dat Čtení Zápis
GeoJSON
GeoRSS
GML
GPX
KML
KMZ
Prostorový sdílený svazek clusteru
Známý text

Tyto další části popisují všechny různé nástroje pro čtení a zápis prostorových dat pomocí modulu Spatial IO.

Čtení prostorových dat

Funkce atlas.io.read je hlavní funkcí sloužící ke čtení běžných formátů prostorových dat, jako jsou KML, GPX, GeoRSS, GeoJSON a soubory CSV s prostorovými daty. Tato funkce může také číst komprimované verze těchto formátů, jako soubor ZIP nebo soubor KMZ. Formát souboru KMZ je komprimovaná verze KNIHOVNY KML, která může obsahovat i prostředky, jako jsou obrázky. Případně může funkce pro čtení převzít adresu URL, která odkazuje na soubor v některém z těchto formátů. Adresy URL by měly být hostované na koncovém bodu s povoleným CORS nebo by měla být v možnostech čtení k dispozici služba proxy. Služba proxy se používá k načtení prostředků do domén, které nejsou povolené CORS. Funkce pro čtení vrátí příslib přidání ikon obrázků do mapy a asynchronní zpracování dat, aby se minimalizoval dopad na vlákno uživatelského rozhraní.

Při čtení komprimovaného souboru, ať už jako zip nebo KMZ, jakmile ho rozbalíte, vyhledá první platný soubor. Například doc.kml nebo soubor s jinou platnou příponou, například:.kml, .xml, geojson, .json, .csv, .tsv nebo .txt. Pak se obrázky odkazované v souborech KML a GeoRSS předem načtou, aby byly přístupné. Nepřístupná data obrázku můžou načíst alternativní záložní obrázek nebo odebrat ze stylů. Obrázky extrahované ze souborů KMZ se převedou na identifikátory URI dat.

Výsledkem funkce čtení je SpatialDataSet objekt. Tento objekt rozšiřuje GeoJSON FeatureCollection třídy. Dá se snadno předat do as-is DataSource k vykreslení jeho funkcí na mapě. Informace SpatialDataSet o funkcích obsahují nejen informace o funkcích, ale mohou také zahrnovat překrytí země KML, zpracování metrik a další podrobnosti, jak je popsáno v následující tabulce.

Název vlastnosti Typ Popis
bbox BoundingBox Ohraničující rámeček všech dat v sadě dat.
features Feature[] Funkce GeoJSON v datové sadě
groundOverlays (atlas.layer.ImageLayer | atlas.layers.OgcMapLayer)[] Pole KmL GroundOverlays.
icons Řetězec záznamu<, řetězec> Sada adres URL ikon. Klíč = název ikony, Hodnota = adresa URL.
vlastnosti jakékoliv Informace o vlastnosti poskytnuté na úrovni dokumentu prostorové datové sady
stats SpatialDataSetStats Statistiky o obsahu a době zpracování prostorové datové sady
type 'FeatureCollection' Hodnota typu GeoJSON určená jen pro čtení

Příklady čtení prostorových dat

Ukázka načtení prostorových dat ukazuje, jak číst prostorovou datovou sadu a vykreslit ji na mapě pomocí SimpleDataLayer třídy. Kód používá soubor GPX, na který odkazuje adresa URL. Zdrojový kód této ukázky najdete v tématu Načtení kódu zdroje prostorových dat.

A screenshot that shows the snap grid on map.A screenshot that shows a detailed description of the snap grid on map sample.

Následující ukázka kódu ukazuje, jak na mapě číst a načíst KML nebo KMZ. KmL může obsahovat překryvy země, které jsou ve formě nebo ImageLyaerOgcMapLayer. Tyto překryvy musí být na mapě přidány odděleně od funkcí. Kromě toho, pokud sada dat obsahuje vlastní ikony, je třeba tyto ikony načíst do mapových prostředků před načtením funkcí.

Ukázka načtení KML na mapu ukazuje, jak na mapu načíst soubory KML nebo KMZ. Zdrojový kód této ukázky najdete v tématu Načtení KML do zdrojového kódu mapování.

A screenshot that shows a map with a KML ground overlay.

Volitelně můžete poskytnout proxy službu pro přístup k prostředkům napříč doménami, které nemají povolené CORS. Funkce pro čtení se nejprve pokusí získat přístup k souborům v jiné doméně pomocí CORS. Při prvním selhání přístupu k jakémukoli prostředku v jiné doméně pomocí CORS vyžaduje pouze více souborů, pokud je k dispozici proxy služba. Funkce pro čtení připojí adresu URL souboru na konec zadané adresy URL proxy serveru. Tento fragment kódu ukazuje, jak předat proxy službu do funkce pro čtení:

//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 . . .
    }
});

Následující fragment kódu ukazuje, jak číst soubor s oddělovači a vykreslit ho na mapě. V tomto případě kód používá soubor CSV se sloupci prostorových dat. Musíte přidat odkaz na modul Azure Mapy Spatial IO.


<!-- 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>

A screenshot that shows a map created from a CSV file.

Zápis prostorových dat

V modulu prostorových vstupně-výstupních operací existují dvě hlavní funkce zápisu. Funkce atlas.io.write vygeneruje řetězec, zatímco atlas.io.writeCompressed funkce vygeneruje komprimovaný soubor ZIP. Komprimovaný soubor ZIP by obsahoval textový soubor s prostorovými daty v něm. Obě tyto funkce vrátí příslib přidání dat do souboru. A oba můžou napsat některá z následujících dat: SpatialDataSet, DataSource, ImageLayer, OgcMapLayer, , kolekce prvků, funkce, geometrie nebo pole libovolné kombinace těchto datových typů. Při psaní pomocí obou funkcí můžete zadat požadovaný formát souboru. Pokud není zadaný formát souboru, zapíšou se data jako KML.

Ukázka možností zápisu prostorových dat je nástroj, který ukazuje většinu možností zápisu atlas.io.write , které lze s funkcí použít. Zdrojový kód této ukázky naleznete v tématu Možnosti zápisu prostorových dat zdrojový kód.

A screenshot that shows The Spatial data write options sample that demonstrates most of the write options used with the atlas.io.write function.

Příklad zápisu prostorových dat

Přetažení prostorových souborů na ukázku mapy umožňuje přetáhnout na mapu jeden nebo více souborů KML, KMZ, GeoRSS, GPX, GML, GeoJSON nebo CSV na mapu. Zdrojový kód této ukázky naleznete v tématu Přetažení a přetažení prostorových souborů do zdrojového kódu mapy.

A screenshot that shows a map with a panel to the left of the map that enables you to drag and drop one or more KML, KMZ, GeoRSS, GPX, GML, GeoJSON or CSV files onto the map.

Volitelně můžete poskytnout proxy službu pro přístup k prostředkům napříč doménami, které nemají povolené CORS. Tento fragment kódu ukazuje, že byste mohli začlenit službu proxy:

atlas.io.read(data, {
    //Provide a proxy service
    proxyService: window.location.origin + '/YourCorsEnabledProxyService.ashx?url='
}).then(
    //Success
    function(r) {
        //some code goes here ...
    }
);

Čtení a zápis dobře známého textu (WKT)

Dobře známý text (WKT) je open geoprostorové konsorcium (OGC) pro reprezentaci prostorových geometrií jako textu. Mnoho geoprostorových systémů podporuje WKT, jako je Azure SQL a Azure PostgreSQL, pomocí modulu plug-in PostGIS. Stejně jako většina standardů OGC jsou souřadnice formátované jako "zeměpisná šířka délky" tak, aby odpovídaly konvenci "x y". Například bod v délce -110 a zeměpisné šířce 45 lze zapsat jako POINT(-110 45) formát WKT.

Známý text lze číst pomocí atlas.io.ogc.WKT.read funkce a zapisovat pomocí atlas.io.ogc.WKT.write funkce.

Příklady čtení a psaní dobře známého textu (WKT)

Ukázka pro čtení dobře známého textu ukazuje, jak číst dobře známý textový řetězec POINT(-122.34009 47.60995) a vykreslit ho na mapě pomocí bublinové vrstvy. Zdrojový kód této ukázky najdete v tématu Čtení známého textového zdrojového kódu.

A screenshot that shows how to read Well Known Text (WKT) as GeoJSON and render it on a map using a bubble layer.

Ukázka čtení a zápisu dobře známého textu ukazuje, jak číst a zapisovat dobře známé textové řetězce (WKT) jako GeoJSON. Zdrojový kód této ukázky najdete v tématu Čtení a zápis známého zdrojového kódu textu.

A screenshot showing the sample that demonstrates how to read and write Well Known Text (WKT) strings as GeoJSON.

GML pro čtení a zápis

GML je specifikace prostorového souboru XML, která se často používá jako rozšíření jiných specifikací XML. Data GeoJSON je možné zapsat jako XML se značkami GML pomocí atlas.io.core.GmlWriter.write funkce. Kód XML, který obsahuje GML, lze číst pomocí atlas.io.core.GmlReader.read funkce. Funkce pro čtení má dvě možnosti:

  • Možnost isAxisOrderLonLat – Pořadí os souřadnic "zeměpisná šířka, zeměpisná délka" nebo "zeměpisná délka, zeměpisná šířka" se může mezi sadami dat lišit a není vždy dobře definované. Ve výchozím nastavení čtečka GML čte souřadnicová data jako "zeměpisná šířka, zeměpisná délka", ale když tuto možnost nastavíte tak, aby true se četla jako "zeměpisná délka, zeměpisná šířka".
  • Možnost propertyTypes – Tato možnost je vyhledávací tabulka klíčové hodnoty, kde je klíč názvem vlastnosti v sadě dat. Hodnota je typ objektu, na který se má přetypovat hodnota při analýze. Podporované hodnoty typu: string, number, booleana date. Pokud vlastnost není ve vyhledávací tabulce nebo typ není definován, vlastnost se analyzuje jako řetězec.

Funkce atlas.io.read se ve výchozím nastavení použije atlas.io.core.GmlReader.read , když zjistí, že vstupní data jsou XML, ale data nejsou jedním z ostatních formátů prostorového XML.

Parsuje GmlReader souřadnice, které mají jednu z následujících identifikátorů SRID:

  • EPSG:4326 (upřednostňované)
  • EPSG:4269, EPSG:4283, EPSG:4258, EPSG:4308, EPSG:4230, EPSG:4272, EPSG:4271, EPSG:4267, EPSG:4608, EPSG:4674 pravděpodobně s malým okrajem chyby.
  • EPSG:3857, EPSG:102100, EPSG:3785, EPSG:900913, EPSG:102113, EPSG:41001, EPSG:54004

Další materiály

Další informace o třídách a metodách používaných v tomto článku:

atlas.io statických funkcí

SpatialDataSet

SpatialDataSetStats

GmlReader

GmlWriter

Atlas.io.ogc.WKT – funkce

Připojení do služby WFS

Využití základních operací

Podrobnosti o podporovaném formátu dat

Další kroky

Další ukázky kódu pro přidání do map najdete v následujících článcích:

Přidání vrstvy mapy OGC