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.
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.
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>
Tulis data spasial
Ada dua fungsi tulis utama dalam modul IO spasial. atlas.io.write
Fungsi 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.
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.
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.
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.
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 untuktrue
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
, dandate
. 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:
Detail format data yang didukung
Langkah berikutnya
Lihat artikel berikut untuk mengetahui sampel kode lainnya yang akan ditambahkan ke peta Anda: