Uzamsal verileri okuma ve yazma
Aşağıdaki tabloda Uzamsal GÇ modülüyle okuma ve yazma işlemleri için desteklenen uzamsal dosya biçimleri listelenmektedir.
Veri Biçimi | Okundu | Yaz |
---|---|---|
GeoJSON | ✓ | ✓ |
GeoRSS | ✓ | ✓ |
GML | ✓ | ✓ |
GPX | ✓ | ✓ |
KML | ✓ | ✓ |
KMZ | ✓ | ✓ |
Uzamsal CSV | ✓ | ✓ |
İyi Bilinen Metin | ✓ | ✓ |
Bu sonraki bölümlerde Uzamsal GÇ modülünü kullanarak uzamsal verileri okumak ve yazmak için kullanılan tüm farklı araçlar özetlenmiştir.
Uzamsal verileri okuma
İşlev atlas.io.read
, KML, GPX, GeoRSS, GeoJSON ve CSV dosyaları gibi yaygın uzamsal veri biçimlerini uzamsal verilerle okumak için kullanılan ana işlevdir. Bu işlev, bu biçimlerin sıkıştırılmış sürümlerini zip dosyası veya KMZ dosyası olarak da okuyabilir. KMZ dosya biçimi, görüntü gibi varlıkları da içerebilen sıkıştırılmış bir KML sürümüdür. Alternatif olarak, okuma işlevi bu biçimlerden herhangi birinde bir dosyaya işaret eden bir URL alabilir. URL'ler CORS özellikli bir uç noktada barındırılmalıdır veya okuma seçeneklerinde bir ara sunucu hizmeti sağlanmalıdır. Proxy hizmeti, CORS etkin olmayan etki alanlarına kaynak yüklemek için kullanılır. Read işlevi, görüntü simgelerini haritaya eklemeye yönelik bir söz döndürür ve kullanıcı arabirimi iş parçacığı üzerindeki etkiyi en aza indirmek için verileri zaman uyumsuz olarak işler.
Sıkıştırılmış bir dosyayı zip veya KMZ olarak okurken sıkıştırmasını açtıktan sonra ilk geçerli dosyayı arar. Örneğin, doc.kml veya .kml, .xml, geojson, .json, .csv, .tsv veya .txt gibi başka geçerli uzantıya sahip bir dosya. Ardından KML ve GeoRSS dosyalarında başvuruda bulunan görüntüler, erişilebilir olduklarından emin olmak için önceden yüklenir. Erişilemeyen görüntü verileri alternatif bir geri dönüş görüntüsü yükleyebilir veya stillerden kaldırılabilir. KMZ dosyalarından ayıklanan görüntüler veri URI'lerine dönüştürülür.
Okuma işlevinin sonucu bir SpatialDataSet
nesnedir. Bu nesne GeoJSON FeatureCollection sınıfını genişletir. Özelliklerini harita üzerinde işlemek için olduğu gibi'ye kolayca geçirilebilir DataSource
. yalnızca SpatialDataSet
özellik bilgilerini içermez, aynı zamanda KML yer paylaşımlarını, işleme ölçümlerini ve aşağıdaki tabloda özetlenen diğer ayrıntıları da içerebilir.
Özellik adı | Türü | Açıklama |
---|---|---|
bbox |
BoundingBox |
Veri kümesindeki tüm verilerin sınırlayıcı kutusu. |
features |
Feature[] |
Veri kümesindeki GeoJSON özellikleri. |
groundOverlays |
(atlas.layer.ImageLayer | atlas.layers.OgcMapLayer)[] |
KML GroundOverlays dizisi. |
icons |
Kayıt<dizesi, dize> | Simge URL'leri kümesi. Anahtar = simge adı, Değer = URL. |
özellikler | herhangi bir | Uzamsal veri kümesinin belge düzeyinde sağlanan özellik bilgileri. |
stats |
SpatialDataSetStats |
Uzamsal veri kümesinin içeriği ve işleme süresiyle ilgili istatistikler. |
type |
'FeatureCollection' |
Salt okunur GeoJSON türü değeri. |
Uzamsal verileri okuma örnekleri
Uzamsal veri yükleme örneği, uzamsal veri kümesinin nasıl okunmasını gösterir ve sınıfını SimpleDataLayer
kullanarak bunu haritada işler. Kod, URL ile işaret edilen bir GPX dosyası kullanır. Bu örneğin kaynak kodu için bkz . Uzamsal veri kaynağı kodunu yükleme.
Sonraki kod tanıtımında KML veya KMZ'nin nasıl okunup haritaya yüklenecekleri gösterilir. KML, veya OgcMapLayer
biçiminde ImageLayer
olan yer paylaşımları içerebilir. Bu katmanların özelliklerden ayrı olarak haritaya eklenmesi gerekir. Ayrıca, veri kümesinde özel simgeler varsa, özellikler yüklenmeden önce bu simgelerin harita kaynaklarına yüklenmesi gerekir.
KML'yi haritaya yükleme örneği, KML veya KMZ dosyalarının haritaya nasıl yükleneceklerini gösterir. Bu örneğin kaynak kodu için bkz . KML'yi harita kaynak koduna yükleme.
İsteğe bağlı olarak, CORS etkin olmayan etki alanları arası varlıklara erişmek için bir ara sunucu hizmeti sağlayabilirsiniz. Okuma işlevi önce CORS kullanarak başka bir etki alanındaki dosyalara erişmeye çalışır. CORS kullanarak başka bir etki alanındaki herhangi bir kaynağa ilk kez erişemediğinde, yalnızca bir ara sunucu hizmeti sağlanırsa daha fazla dosya istenir. Okuma işlevi, dosya URL'sini sağlanan ara sunucu URL'sinin sonuna ekler. Bu kod parçacığı, bir ara sunucuyu okuma işlevine geçirmeyi gösterir:
//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 . . .
}
});
Aşağıdaki kod parçacığında sınırlandırılmış bir dosyanın nasıl okunduğu ve haritada nasıl işlendiği gösterilmektedir. Bu durumda kod, uzamsal veri sütunları içeren bir CSV dosyası kullanır. Azure Haritalar Uzamsal GÇ modülüne bir başvuru eklemeniz gerekir.
<!-- 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>
var datasource, delimitedFileUrl = "Chicago_Police_Stations.csv";
// Download CSV file (delimitedFileUrl) from:
// https://github.com/Azure-Samples/AzureMapsCodeSamples/blob/main/Static/data/SpatialCSV/Chicago_Police_Stations.csv
function GetMap() {
//Instantiate a map object
var map = new atlas.Map("myMap", {
center: [-87.628899, 41.874693],
zoom: 9,
view: "Auto",
// Replace <Your Azure Maps Subscription Key> with your Azure Maps subscription key. https://aka.ms/am-primaryKey
authOptions: {
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>
Uzamsal veri yazma
Uzamsal GÇ modülünde iki ana yazma işlevi vardır.
atlas.io.write
İşlev bir dize oluştururkenatlas.io.writeCompressed
, işlev sıkıştırılmış bir zip dosyası oluşturur. Sıkıştırılmış zip dosyası, uzamsal verileri içeren metin tabanlı bir dosya içerebilir. Bu işlevlerin her ikisi de verileri dosyaya ekleme sözü döndürür. Ayrıca, her ikisi de şu verilerden herhangi birini yazabilir: SpatialDataSet
, DataSource
, ImageLayer
, OgcMapLayer
, , özellik koleksiyonu, özellik, geometri veya bu veri türlerinin herhangi bir birleşiminden oluşan bir dizi. İki işlevden birini kullanarak yazarken, istenen dosya biçimini belirtebilirsiniz. Dosya biçimi belirtilmezse veriler KML olarak yazılır.
Uzamsal veri yazma seçenekleri örneği, işleviyle atlas.io.write
kullanılabilecek yazma seçeneklerinin çoğunu gösteren bir araçtır. Bu örneğin kaynak kodu için bkz . Uzamsal veri yazma seçenekleri kaynak kodu.
Uzamsal veri yazma örneği
Uzamsal dosyaları harita örneğine sürükleyip bırakma örneği, bir veya daha fazla KML, KMZ, GeoRSS, GPX, GML, GeoJSON veya CSV dosyasını haritaya sürükleyip bırakmanızı sağlar. Bu örneğin kaynak kodu için bkz . Uzamsal dosyaları harita kaynak koduna sürükleme ve bırakma.
İsteğe bağlı olarak, CORS etkin olmayan etki alanları arası varlıklara erişmek için bir ara sunucu hizmeti sağlayabilirsiniz. Bu kod parçacığı, bir ara sunucu hizmeti ekleyebildiğinizi gösterir:
atlas.io.read(data, {
//Provide a proxy service
proxyService: window.location.origin + '/YourCorsEnabledProxyService.ashx?url='
}).then(
//Success
function(r) {
//some code goes here ...
}
);
okuma ve yazma İyi Bilinen Metin (WKT)
İyi Bilinen Metin (WKT), uzamsal geometrileri metin olarak temsil eden açık jeo-uzamsal konsorsiyum (OGC) standardıdır. PostGIS eklentisini kullanan Azure SQL ve Azure PostgreSQL gibi birçok jeo-uzamsal sistem WKT'yi destekler. Çoğu OGC standardı gibi koordinatlar da "x y" kuralıyla uyumlu olacak şekilde "boylam enlemi" olarak biçimlendirilir. Örneğin, -110 boylam ve enlem 45'te bir nokta WKT biçimi kullanılarak yazılabilir POINT(-110 45)
.
İyi bilinen metin işlevi kullanılarak atlas.io.ogc.WKT.read
okunabilir ve işlevi kullanılarak atlas.io.ogc.WKT.write
yazılabilir.
okuma ve yazma İyi Bilinen Metin (WKT) örnekleri
İyi Bilinen Metni Oku örneği, iyi bilinen metin dizesini POINT(-122.34009 47.60995)
okumayı ve kabarcık katmanı kullanarak haritada işlemeyi gösterir. Bu örneğin kaynak kodu için bkz . Bilinen Metin kaynak kodunu okuma.
İyi Bilinen Metin okuma ve yazma örneği, İyi Bilinen Metin (WKT) dizelerinin GeoJSON olarak nasıl okunduğunu ve yazılıp yazılabilir olduğunu gösterir. Bu örneğin kaynak kodu için bkz . Bilinen Metin kaynak kodunu okuma ve yazma.
GML okuma ve yazma
GML, genellikle diğer XML belirtimlerinin uzantısı olarak kullanılan bir uzamsal XML dosya belirtimidir. GeoJSON verileri, işlevi kullanılarak atlas.io.core.GmlWriter.write
GML etiketleriyle XML olarak yazılabilir. GML içeren XML işlevi kullanılarak atlas.io.core.GmlReader.read
okunabilir. read işlevinin iki seçeneği vardır:
- seçeneği
isAxisOrderLonLat
- "enlem, boylam" veya "boylam, enlem" koordinatlarının eksen sırası veri kümeleri arasında farklılık gösterebilir ve her zaman iyi tanımlanmamıştır. Varsayılan olarak GML okuyucusu koordinat verilerini "enlem, boylam" olarak okur, ancak bu seçeneğitrue
"boylam, enlem" olarak okur. - seçeneği
propertyTypes
- Bu seçenek, anahtarın veri kümesindeki bir özelliğin adı olduğu bir anahtar değeri arama tablosudur. Değer, ayrıştırma sırasında değerin atılması gereken nesne türüdür. Desteklenen tür değerleri şunlardır:string
,number
,boolean
vedate
. Bir özellik arama tablosunda değilse veya türü tanımlanmamışsa, özellik dize olarak ayrıştırılır.
İşlev, atlas.io.read
giriş verilerinin atlas.io.core.GmlReader.read
XML olduğunu algıladığında işlevi varsayılan olarak kullanır, ancak veriler diğer uzamsal XML biçimlerinden biri değildir.
Aşağıdaki GmlReader
SRID'lerden birine sahip koordinatları ayrıştırma:
- EPSG:4326 (Tercih Edilen)
- EPSG:4269, EPSG:4283, EPSG:4258, EPSG:4308, EPSG:4230, EPSG:4272, EPSG:4271, EPSG:4267, EPSG:4608, EPSG:4674 büyük olasılıkla küçük bir hata marjı ile.
- EPSG:3857, EPSG:102100, EPSG:3785, EPSG:900913, EPSG:102113, EPSG:41001, EPSG:54004
Diğer kaynaklar
Bu makalede kullanılan sınıflar ve yöntemler hakkında daha fazla bilgi edinin:
Desteklenen veri biçimi ayrıntıları
Sonraki adımlar
Haritalarınıza eklenecek daha fazla kod örneği için aşağıdaki makalelere bakın: