Delen via


Ruimtelijke gegevens lezen en schrijven

De volgende tabel bevat de ruimtelijke bestandsindelingen die worden ondersteund voor lees- en schrijfbewerkingen met de Spatial IO-module.

Gegevensopmaak Lezen Schrijven
GeoJSON
GeoRSS
GML
GPX
KML
KMZ
Ruimtelijk CSV-bestand
Bekende tekst

In deze volgende secties vindt u een overzicht van alle verschillende hulpprogramma's voor het lezen en schrijven van ruimtelijke gegevens met behulp van de ruimtelijke IO-module.

Ruimtelijke gegevens lezen

De atlas.io.read functie is de belangrijkste functie die wordt gebruikt voor het lezen van algemene indelingen voor ruimtelijke gegevens, zoals KML, GPX, GeoRSS, GeoJSON en CSV-bestanden met ruimtelijke gegevens. Deze functie kan ook gecomprimeerde versies van deze indelingen lezen, als een zip-bestand of een KMZ-bestand. De KMZ-bestandsindeling is een gecomprimeerde versie van KML die ook assets zoals installatiekopieën kan bevatten. De leesfunctie kan ook een URL aannemen die verwijst naar een bestand in een van deze indelingen. URL's moeten worden gehost op een CORS-eindpunt of een proxyservice moet worden opgegeven in de leesopties. De proxyservice wordt gebruikt om resources te laden op domeinen die niet zijn ingeschakeld voor CORS. De leesfunctie retourneert een belofte om de afbeeldingspictogrammen toe te voegen aan de kaart en verwerkt gegevens asynchroon om de impact op de UI-thread te minimaliseren.

Wanneer u een gecomprimeerd bestand leest, hetzij als een zip- of KMZ, wordt na uitgepakt naar het eerste geldige bestand gezocht. Bijvoorbeeld doc.kml of een bestand met een andere geldige extensie, zoals: .kml, .xml, geojson, .json, .csv, .tsv of .txt. Vervolgens worden afbeeldingen waarnaar wordt verwezen in KML- en GeoRSS-bestanden vooraf geladen om ervoor te zorgen dat ze toegankelijk zijn. Niet-toegankelijke afbeeldingsgegevens kunnen een alternatieve terugvalafbeelding laden of verwijderen uit de stijlen. Afbeeldingen die zijn geëxtraheerd uit KMZ-bestanden, worden geconverteerd naar gegevens-URI's.

Het resultaat van de leesfunctie is een SpatialDataSet object. Dit object breidt de klasse GeoJSON FeatureCollection uit. Het kan eenvoudig worden doorgegeven aan een DataSource as-is om de functies op een kaart weer te geven. De SpatialDataSet functiegegevens bevatten niet alleen informatie over functies, maar kunnen ook KML-grondoverlays, verwerking van metrische gegevens en andere details bevatten, zoals wordt beschreven in de volgende tabel.

Eigenschapsnaam Type Omschrijving
bbox BoundingBox Begrenzingsvak van alle gegevens in de gegevensset.
features Feature[] GeoJSON-functies binnen de gegevensset.
groundOverlays (atlas.layer.ImageLayer | atlas.layers.OgcMapLayer)[] Een matrix van KML GroundOverlays.
icons Recordtekenreeks<, tekenreeks> Een set pictogram-URL's. Sleutel = pictogramnaam, Waarde = URL.
properties willekeurige Eigenschapsinformatie op documentniveau van een ruimtelijke gegevensset.
stats SpatialDataSetStats Statistieken over de inhoud en verwerkingstijd van een ruimtelijke gegevensset.
type 'FeatureCollection' Alleen-lezen GeoJSON-typewaarde.

Voorbeelden van het lezen van ruimtelijke gegevens

In het voorbeeld ruimtelijke gegevens laden ziet u hoe u een set ruimtelijke gegevens leest en weergeeft op de kaart met behulp van de SimpleDataLayer klasse. De code maakt gebruik van een GPX-bestand waarnaar wordt verwezen door een URL. Zie Broncode voor ruimtelijke gegevens laden voor de broncode van dit voorbeeld.

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

In de volgende codedemo ziet u hoe u KML of KMZ kunt lezen en laden op de kaart. KML kan grondoverlays bevatten, die zich in de vorm van een ImageLyaer of OgcMapLayer. Deze overlays moeten afzonderlijk van de functies op de kaart worden toegevoegd. Als de gegevensset aangepaste pictogrammen bevat, moeten deze pictogrammen bovendien worden geladen in de toewijzingsresources voordat de functies worden geladen.

In het voorbeeld van kml laden op kaart ziet u hoe u KML- of KMZ-bestanden op de kaart laadt. Zie KML in kaartbroncode laden voor de broncode van dit voorbeeld.

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

U kunt desgewenst een proxyservice opgeven voor toegang tot assets voor meerdere domeinen waarvoor CORS niet is ingeschakeld. De leesfunctie probeert eerst toegang te krijgen tot bestanden in een ander domein met CORS. De eerste keer dat deze geen toegang krijgt tot een resource in een ander domein met CORS, worden er alleen meer bestanden aangevraagd als er een proxyservice wordt geleverd. De leesfunctie voegt de bestands-URL toe aan het einde van de opgegeven proxy-URL. Dit codefragment laat zien hoe u een proxyservice doorgeeft aan de leesfunctie:

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

In het volgende codefragment ziet u hoe u een bestand met scheidingstekens leest en weergeeft op de kaart. In dit geval gebruikt de code een CSV-bestand met kolommen voor ruimtelijke gegevens. U moet een verwijzing toevoegen naar de Azure Kaarten Spatial IO-module.


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

Ruimtelijke gegevens schrijven

Er zijn twee belangrijke schrijffuncties in de ruimtelijke IO-module. De atlas.io.write functie genereert een tekenreeks, terwijl de atlas.io.writeCompressed functie een gecomprimeerd zip-bestand genereert. Het gecomprimeerde zip-bestand bevat een tekstbestand met de ruimtelijke gegevens erin. Beide functies retourneren een belofte om de gegevens aan het bestand toe te voegen. En ze kunnen beide een van de volgende gegevens schrijven: SpatialDataSet, , DataSource, ImageLayer, OgcMapLayerfunctieverzameling, functie, geometrie of een matrix van elke combinatie van deze gegevenstypen. Wanneer u een van beide functies schrijft, kunt u de gewenste bestandsindeling opgeven. Als de bestandsindeling niet is opgegeven, worden de gegevens geschreven als KML.

Het voorbeeld van opties voor het schrijven van ruimtelijke gegevens is een hulpprogramma dat de meeste schrijfopties laat zien die met de atlas.io.write functie kunnen worden gebruikt. Zie Broncode voor het schrijven van ruimtelijke gegevens voor de broncode van dit voorbeeld.

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

Voorbeeld van het schrijven van ruimtelijke gegevens

Met de ruimtelijke bestanden slepen en neerzetten op kaartvoorbeeld kunt u een of meer KML-, KMZ-, GeoRSS-, GPX-, GML-, GeoJSON- of CSV-bestanden naar de kaart slepen en neerzetten. Zie Ruimtelijke bestanden slepen en neerzetten naar de broncode van de kaart voor de broncode van dit voorbeeld.

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.

U kunt desgewenst een proxyservice opgeven voor toegang tot assets voor meerdere domeinen waarvoor CORS niet is ingeschakeld. Dit codefragment laat zien dat u een proxyservice kunt opnemen:

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

Bekende tekst lezen en schrijven (WKT)

Well-Known Text (WKT) is een OGC-standaard (Open Georuimteal Consortium) voor het vertegenwoordigen van ruimtelijke geometrieën als tekst. Veel georuimtelijke systemen ondersteunen WKT, zoals Azure SQL en Azure PostgreSQL met behulp van de PostGIS-invoegtoepassing. Net als bij de meeste OGC-standaarden worden coördinaten opgemaakt als 'lengtegraad breedtegraad' om overeen te komen met de 'x y'-conventie. Een punt op lengtegraad -110 en breedtegraad 45 kan bijvoorbeeld worden geschreven met POINT(-110 45) de WKT-indeling.

Bekende tekst kan worden gelezen met behulp van de atlas.io.ogc.WKT.read functie en geschreven met behulp van de atlas.io.ogc.WKT.write functie.

Voorbeelden van het lezen en schrijven van bekende tekst (WKT)

In het voorbeeld Van bekende leestekst ziet u hoe u de bekende tekenreeks POINT(-122.34009 47.60995) leest en weergeeft op de kaart met behulp van een bellenlaag. Zie Broncode voor bekende tekst lezen voor de broncode van dit voorbeeld.

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

In het voorbeeld Well Known Text lezen en schrijven ziet u hoe u WKT-tekenreeksen (Well Known Text) kunt lezen en schrijven als GeoJSON. Zie De broncode van dit voorbeeld lezen en schrijven naar de broncode van bekende tekst.

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

GML lezen en schrijven

GML is een ruimtelijke XML-bestandsspecificatie die vaak wordt gebruikt als extensie voor andere XML-specificaties. GeoJSON-gegevens kunnen worden geschreven als XML met GML-tags met behulp van de atlas.io.core.GmlWriter.write functie. De XML die GML bevat, kan worden gelezen met behulp van de atlas.io.core.GmlReader.read functie. De leesfunctie heeft twee opties:

  • De isAxisOrderLonLat optie: de asvolgorde van coördinaten 'breedtegraad, lengtegraad' of 'lengtegraad, breedtegraad' kan variëren tussen gegevenssets en is niet altijd goed gedefinieerd. Standaard leest de GML-lezer de coördinaatgegevens als 'breedtegraad, lengtegraad', maar als u deze optie instelt als true 'lengtegraad, breedtegraad'.
  • De propertyTypes optie: deze optie is een opzoektabel met sleutelwaarden waarbij de sleutel de naam is van een eigenschap in de gegevensset. De waarde is het objecttype waarnaar de waarde moet worden omgezet bij het parseren. De ondersteunde typewaarden zijn: string, number, booleanen date. Als een eigenschap zich niet in de opzoektabel bevindt of het type niet is gedefinieerd, wordt de eigenschap geparseerd als een tekenreeks.

De atlas.io.read functie wordt standaard ingesteld op de atlas.io.core.GmlReader.read functie wanneer wordt gedetecteerd dat de invoergegevens XML zijn, maar de gegevens niet een van de andere ruimtelijke XML-indelingen ondersteunen.

De GmlReader coördinaten parseren die een van de volgende SRID's hebben:

  • EPSG:4326 (voorkeur)
  • EPSG:4269, EPSG:4283, EPSG:4258, EPSG:4308, EPSG:4230, EPSG:4272, EPSG:4271, EPSG:4267, EPSG:4608, EPSG:4674 mogelijk met een kleine foutmarge.
  • EPSG:3857, EPSG:102100, EPSG:3785, EPSG:900913, EPSG:102113, EPSG:41001, EPSG:54004

Meer resources

Meer informatie over de klassen en methoden die in dit artikel worden gebruikt:

statische functies atlas.io

SpatialDataSet

SpatialDataSetStats

GmlReader

GmlWriter

atlas.io.ogc.WKT-functies

Verbinding maken naar een WFS-service

Basisbewerkingen gebruiken

Details van ondersteunde gegevensindeling

Volgende stappen

Zie de volgende artikelen voor meer codevoorbeelden die u aan uw kaarten kunt toevoegen:

Een OGC-kaartlaag toevoegen