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 Tanım
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.

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

Sonraki kod tanıtımında KML veya KMZ'nin nasıl okunup haritaya yüklenecekleri gösterilir. KML, veya OgcMapLayerbiçiminde ImageLyaer 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.

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

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

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.

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

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.

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.

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

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

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

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

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ği true "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, booleanve date. 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:

statik işlevleri atlas.io

SpatialDataSet

SpatialDataSetStats

GmlReader

GmlWriter

atlas.io.ogc.WKT işlevleri

WFS hizmetine Bağlan

Çekirdek işlemden yararlanma

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:

OGC harita katmanı ekleme