Membaca dan menulis data spasial

Tabel berikut mencantumkan format file spasial yang didukung untuk operasi membaca dan menulis dengan modul IO Spasial.

Format data Baca Tulis
GeoJSON
GeoRSS
GML
GPX
KML
KMZ
CSV Spasial
Teks yang Dikenal

Bagian berikut ini menguraikan semua alat yang berbeda untuk membaca dan menulis data spasial menggunakan modul IO Spasial.

Baca data spasial

Fungsi atlas.io.read ini adalah fungsi utama yang digunakan untuk membaca format data spasial umum seperti file KML, GPX, GeoRSS, GeoJSON, dan CSV dengan data spasial. Fungsi ini juga dapat membaca versi terkompresi dari format ini, sebagai file zip atau file KMZ. Format file KMZ adalah versi terkompresi KML yang juga dapat mencakup aset seperti gambar. Atau, fungsi baca dapat mengambil URL yang menunjuk ke file dalam salah satu format ini. URL harus dihost pada titik akhir yang diaktifkan CORS, atau layanan proksi harus disediakan dalam opsi baca. Layanan proksi digunakan untuk memuat sumber daya pada domain yang tidak diaktifkan CORS. Fungsi baca mengembalikan promis untuk menambahkan ikon gambar ke peta, dan memproses data secara asinkron untuk meminimalkan dampak ke rangkaian UI.

Saat membaca file terkompresi, baik sebagai zip atau KMZ, setelah di-unzip, file yang valid pertama akan dicopot. Misalnya, doc.kml, atau file dengan ekstensi valid lainnya, seperti: .kml, .xml, geojson, .json, .csv, .tsv, atau .txt. Kemudian, gambar yang direferensikan dalam file KML dan GeoRSS dimuat sebelumnya untuk memastikan mereka dapat diakses. Data gambar yang tidak dapat diakses dapat memuat gambar fallback alternatif atau dihapus dari gaya. Gambar yang diekstrak dari file KMZ dikonversi ke URI data.

Hasil dari fungsi baca adalah SpatialDataSet objek. Objek ini memperluas kelas GeoJSON FeatureCollection. Ini dapat dengan mudah diteruskan ke dalam DataSource dengan adanya untuk merender fitur-fiturnya di peta. Tidak SpatialDataSet hanya berisi informasi fitur, tetapi juga dapat mencakup overlay dasar KML, metrik pemrosesan, dan detail lainnya seperti yang diuraikan dalam tabel berikut.

Nama properti Tipe Deskripsi
bbox BoundingBox Kotak batas dari semua data dalam himpunan data.
features Feature[] Fitur GeoJSON dalam himpunan data.
groundOverlays (atlas.layer.ImageLayer | atlas.layers.OgcMapLayer)[] Larik KML GroundOverlays.
icons Rekaman<string, string> Set URL ikon. Tombol = nama ikon, Nilai = URL.
properti any Informasi properti yang disediakan pada tingkat dokumen himpunan data spasial.
stats SpatialDataSetStats Statistik tentang konten dan waktu pemrosesan himpunan data spasial.
type 'FeatureCollection' Nilai jenis GeoJSON baca-saja.

Contoh membaca data spasial

Sampel Muat data spasial memperlihatkan cara membaca himpunan data spasial, dan merendernya di peta menggunakan SimpleDataLayer kelas . Kode menggunakan file GPX yang ditunjukkan oleh URL. Untuk kode sumber sampel ini, lihat Memuat kode sumber data spasial.

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

Demo kode berikutnya menunjukkan cara membaca dan memuat KML, atau KMZ, ke peta. KML dapat berisi overlay tanah, yang berupa ImageLyaer atau OgcMapLayer. Overlay ini harus ditambahkan di peta secara terpisah dari fitur. Selain itu, jika himpunan data memiliki ikon kustom, ikon tersebut perlu dimuat ke sumber daya peta sebelum fitur dimuat.

Sampel Muat KML ke peta menunjukkan cara memuat file KML atau KMZ ke peta. Untuk kode sumber sampel ini, lihat Memuat KML ke kode sumber peta.

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

Anda dapat secara opsional menyediakan layanan proksi untuk mengakses aset lintas domain yang tidak mengaktifkan CORS. Fungsi baca mencoba mengakses file di domain lain menggunakan CORS terlebih dahulu. Pertama kali gagal mengakses sumber daya apa pun di domain lain menggunakan CORS, ia hanya meminta lebih banyak file jika layanan proksi disediakan. Fungsi baca menambahkan URL file ke akhir URL proksi yang disediakan. Cuplikan kode ini menunjukkan cara meneruskan layanan proksi ke fungsi baca:

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

Cuplikan kode berikut menunjukkan cara membaca file yang dibatasi dan merendernya di peta. Dalam hal ini, kode menggunakan file CSV yang memiliki kolom data spasial. Anda harus menambahkan referensi ke modul Azure Peta 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.

Tulis data spasial

Ada dua fungsi tulis utama dalam modul IO spasial. atlas.io.writeFungsi ini menghasilkan string, sementara atlas.io.writeCompressed fungsi menghasilkan file zip terkompresi. File zip terkompresi akan berisi file berbasis teks dengan data spasial di dalamnya. Kedua fungsi ini mengembalikan promis untuk menambahkan data ke file. Dan, mereka berdua dapat menulis salah satu data berikut: SpatialDataSet, DataSource, ImageLayer, OgcMapLayer, koleksi fitur, fitur, geometri, atau larik kombinasi apa pun dari jenis data ini. Saat menulis menggunakan salah satu fungsi, Anda dapat menentukan format file yang diinginkan. Jika format file tidak ditentukan, maka data ditulis sebagai KML.

Sampel Opsi penulisan data spasial adalah alat yang menunjukkan sebagian besar opsi tulis yang dapat digunakan dengan fungsi .atlas.io.write Untuk kode sumber sampel ini, lihat Kode sumber opsi penulisan data spasial.

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

Contoh tulis data spasial

Sampel Seret dan letakkan file spasial ke peta memungkinkan Anda menyeret dan meletakkan satu atau beberapa file KML, KMZ, GeoRSS, GPX, GML, GeoJSON, atau CSV ke peta. Untuk kode sumber sampel ini, lihat Seret dan letakkan file spasial ke kode sumber peta.

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.

Anda dapat secara opsional menyediakan layanan proksi untuk mengakses aset lintas domain yang tidak mengaktifkan CORS. Cuplikan kode ini menunjukkan Anda dapat menggabungkan layanan proksi:

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

Baca dan tulis Teks yang Dikenal (Well-Known Text; WKT)

Teks yang Dikenal (WKT) adalah standar Open Geospasial Consortium (Open Geospatial Consortium; OGC) untuk mewakili geometri spasial sebagai teks. Banyak sistem geospasial mendukung WKT, seperti Azure SQL dan Azure PostgreSQL menggunakan plugin PostGIS. Seperti kebanyakan standar OGC, koordinat diformat sebagai "garis lintang garis bujur" untuk menyelaraskan dengan konvensi "x y". Sebagai contoh, titik pada garis bujur -110 dan garis lintang 45 dapat ditulis sebagai POINT(-110 45) menggunakan format WKT.

Teks yang Dikenal dapat dibaca menggunakan atlas.io.ogc.WKT.read fungsi, dan ditulis menggunakan atlas.io.ogc.WKT.write fungsi.

Contoh membaca dan menulis Teks yang Dikenal (Well-Known Text; WKT)

Sampel Read Well Known Text menunjukkan cara membaca string POINT(-122.34009 47.60995) teks terkenal dan merendernya di peta menggunakan lapisan gelembung. Untuk kode sumber sampel ini, lihat Membaca kode sumber Teks Terkenal.

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

Sampel Baca dan tulis Teks Terkenal menunjukkan cara membaca dan menulis string Well Known Text (WKT) sebagai GeoJSON. Untuk kode sumber sampel ini, lihat Membaca dan menulis kode sumber Well Known Text.

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

Baca dan Tulis GML

GML adalah spesifikasi file XML spasial yang sering digunakan sebagai ekstensi untuk spesifikasi XML lainnya. Data GeoJSON dapat ditulis sebagai XML dengan tag GML menggunakan atlas.io.core.GmlWriter.write fungsi tersebut. XML yang berisi GML dapat dibaca menggunakan atlas.io.core.GmlReader.read fungsi tersebut. Fungsi baca memiliki dua opsi:

  • Opsi isAxisOrderLonLat - Urutan sumbu koordinat "lintang, bujur" atau "bujur, lintang" dapat bervariasi di antara himpunan data, dan tidak selalu didefinisikan dengan baik. Secara default pembaca GML membaca data koordinat sebagai "garis lintang, bujur", tetapi mengatur opsi ini untuk true membacanya sebagai "bujur, lintang".
  • Opsi propertyTypes - Opsi ini adalah tabel pencarian nilai kunci di mana kuncinya adalah nama properti dalam himpunan data. Nilai adalah tipe objek untuk mentransmisikan nilai saat menguraikan. Nilai jenis yang didukung adalah: string, number, boolean, dan date. Jika properti tidak berada dalam tabel pencarian atau jenisnya tidak ditentukan, properti diurai sebagai string.

Fungsi atlas.io.read default ke atlas.io.core.GmlReader.read fungsi ketika mendeteksi bahwa data input adalah XML, tetapi data bukan salah satu format XML spasial dukungan lainnya.

Koordinat GmlReader penguraian yang memiliki salah satu SRID berikut:

  • EPSG:4326 (Preferred)
  • EPSG:4269, EPSG:4283, EPSG:4258, EPSG:4308, EPSG:4230, EPSG:4272, EPSG:4271, EPSG:4267, EPSG:4608, EPSG:4674 mungkin dengan margin kesalahan yang kecil.
  • EPSG:3857, EPSG:102100, EPSG:3785, EPSG:900913, EPSG:102113, EPSG:41001, EPSG:54004

Sumber daya lainnya

Pelajari selengkapnya tentang kelas dan metode yang digunakan di artikel ini:

fungsi atlas.io statis

SpatialDataSet

SpatialDataSetStats

GmlReader

GmlWriter

fungsi atlas.io.ogc.WKT

Menyambungkan ke layanan WFS

Memanfaatkan operasi inti

Detail format data yang didukung

Langkah berikutnya

Lihat artikel berikut untuk mengetahui sampel kode lainnya yang akan ditambahkan ke peta Anda:

Menambahkan lapisan peta OGC