Açık kaynaklı, çapraz platform veri kümesi türleri olarak Shapefiles alternatifleri [kapalı]


20

Çok ESRI odaklı bir yazılım üzerinde çalışıyorum, ancak gelecekteki bir sürümde ESRI yazılımı kullanılmayacak. Shapefiles ve Geodatabases kullanır. Tüm verilerimi, muhtemelen Android ve diğer mobil cihazlarda olacak olan yazılımın gelecekteki sürümleri için tahmin ederek Shapefiles'a almayı planlıyorum. Shapefiles'in açık kaynak CBS dünyasındaki özellikler için en yaygın veri türü olduğu anlaşılıyor, ancak diğerleri neler ve ne fayda sağlıyorlar? GeoJSON ve KML hakkında bilgi sahibiyim ama eminim başkaları da var.

Tüm seçenekleri bilmek istiyorum, ancak özellikle mobil cihazlarda depolamak için en uygun veri kümesi türleriyle ilgileniyorum (verilere internet bağlantısı olmadan erişilebilir olmalıdır).



1
2011'den gelen bu soru GeoPackage bulunmadan önce soruldu ve cevaplar doğal olarak bu alternatifi içermiyor.
user30184

2
Esri Dosyası Geodatabase, çoğu küçük kütüphanenin metin içeriğine rakip olacak bir maksimum char alanı uzunluğuna sahiptir, Esri Personal Geodatabase çok uzun metin alanlarını da destekler. Her ikisine de QGIS ve elbette Esri ArcGIS üzerinden erişilebilir, ancak bu veri türleri için destek bu paketlerin dışında sınırlıdır. Yine de sürümüne dikkat edin, karşılaşacağınız çoğu Esri yazılımının 10+ olacağı ve QGIS için coğrafi veritabanı API'lerinin bu sürümü desteklemesi gerektiği için 9.3 uyumlu oluşturmayı deneyeceğim . GeoJSON ve KML de büyük metin alanlarını destekleyebilir ancak evrensel olarak okunabilir değildir.
Michael Stimson

1
Umm, 9.3, dosya coğrafi veritabanı uyumluluğu için iyi bir plan değil - FGDB API, 9.x stili .gdb'yi desteklemiyor.
Vince

1
@ElioDiaz şekil dosyaları, sınırlamalarına rağmen, en evrensel özellik aktarım ortamı oldukları için hala mevcuttur - neredeyse her CBS paketi açılır veya Esri şekil dosyasını içe aktarabilir. Biçim açık bir standarttır, böylece herkes kendi yoluyla okuyabilir ve uygulayabilir. Kuşkusuz üstün CBS özellik formatları vardır, ancak bunlar evrensel olarak benimsenmemiştir ... bu konu CBS'de pek çok kez tartışılmıştır . İstediğimiz kadar şekil dosyalarının bir süre için özellikler için en düşük ortak payda olması muhtemeldir, bu yüzden sadece sırıtmamız ve taşımamız gerekir.
Michael Stimson

Yanıtlar:


18

@ User890'ın söylediği gibi, bu çok fazla verinin nasıl kullanılacağına bağlıdır. Temel olarak verilere erişmenin iki yolu vardır:

  1. Hepsini tek seferde belleğe yükleyerek ve ardından bellekteki verilere erişerek / sorgulayarak.
  2. Belirli özellikleri, sınırlayıcı kutuları vb. Sorgulayarak

GeoJSON ve KML gibi formatlar, her şeyi tek seferde yüklemek istediğiniz durumlar için en uygun olanlardır. Avantajlar, verilerin uygulamanız için daha uygun bir şekilde yapılandırılabilmesidir. Dezavantajları: daha büyük dosya boyutları (metin tabanlı olduklarından) ve doğrudan dosyadan etkili sorgulama yapamamak.

SQLite / Spatialite sorgulama için daha iyidir (SQL), ancak verileri yapılandırmak daha zordur - her şeyi veritabanı tablolarına düzleştirmeniz ve ardından sorgulama sırasında JOIN'leri (pahalı olabilir) yapmanız gerekir.

Gerçekten hepsini kapsayacak mükemmel bir dosya biçimi yoktur (ancak daha sonra şekil dosyaları mükemmel olmaktan çok uzaktır). Dikkate alınması gereken bir alternatif, uygulamaya özel biçiminizi yuvarlamaktır, ancak bu yalnızca verileri dış dünyayla paylaşmanız gerekmediğinde çalışır.


14

OGR Vektör Formatı listesinin (bağlantı güncellendi) şimdiye kadar duyduğum her açık kaynak formatını ve daha fazlasını tanımladığını düşünüyorum . Bu formatların her birinin kendi avantajları / dezavantajları vardır, bu yüzden hangisinin 'en iyi' olduğunu söylemek zordur. Mobil uygulamalar için, dosya boyutunun daha önemli karar verme faktörlerinden biri olacağını hayal ediyorum.

Mobil uygulamalar için, sqlite / spatialite biçiminin başlangıç ​​için mantıklı biçim olacağını düşünürdüm. Android'in sqlite için yerel destek sağladığını biliyorum. Böylece, uzamsal uzantıları yükleyebileceğinizi varsayarak, kullanabileceğiniz çok güçlü bir gisiniz olacaktır.

Ne kadar maceracı olduğunuza bağlı olarak, android için gdal oluşturmanın imkansız olmadığı anlaşılıyor . Daha sonra emrinizde çok daha fazla biçime sahip olabilirsiniz. Bu rotaya gittiyseniz bu sitedeki birçok kullanıcının ilgileneceğinden eminim.


13

Son zamanlarda ortaya çıkan yeni bir biçim Geopackage . Bu spesifikasyon SQLite veritabanının üzerine inşa edilmiştir, bu yüzden aynı tek dosya tabanına sahiptir, ancak OGC standardı olmanın ek avantajı vardır .
Dosya boyutuna gelince, depolama biçiminin Shapefile'da kullanılan uzamsal ve öznitelik verileri biçiminden .shpve .dbfbiçiminden daha kompakt olması muhtemeldir . Bu nedenle, GeoPackage, bir şekil dosyasındaki aynı özelliklerin toplamıyla aynı boyutta veya daha küçük olabilir.
Bu fotoğraf San Diego'da hem Shapefile hem de GeoPackage olarak kaydedilmiş bir kanalizasyon şebekesini göstermektedir. Gördüğünüz gibi, aslında aynı boyuttadırlar. Shapefile vs Geopackage Boyutu
Bu biçim SQLite'a dayandığından, mobil cihazlar için hazır olmalıdır. Birçok uygulama zaten depolama için bu veritabanı biçimini kullanır, bu nedenle kanıtlanmış bir teknolojidir. Herhangi bir çeviri gerekmeden çapraz platformda kullanılabilir.


4

Lennert ile aynı fikirde olun, iş için doğru formatı seçin.

Ancak Spatialite'nin oldukça çok yönlü bir format olduğunu gördüm. Şekil dosyası gibi verileri depolama ve paylaşma esnekliğine sahip tek bir dosyanız var, ancak karakter sınırlarıyla bahsettiğiniz sorunları reddediyorsunuz; mekansal bir veritabanının avantajlarından yararlanma fırsatı verirken.

Ne yazık ki ArcGIS'de tam olarak desteklenmiyor (kısa bir süre önce denemedim, bu yüzden yanlış olabilirim), ancak QGIS'de harika çalışıyor.


4

Birçok farklı biçim vardır ve en iyisi sahip olduğunuz veri kümesine, kullandığınız araçlara ve onunla yapmak istediğiniz şeylere bağlıdır.

Kullandığımlardan bazıları:

  • Dosya Geodatabase & spatialite veritabanları: Kullanmak istediğim bir catchall. Her türlü veriyi tutabilir ve ilişkileri olabilir, indeksleme ... Esd ortamında çalışırken gdb kullanıyorum, başka bir şey için uzamsal.

  • GeoJson: Kolay okunabilir format Genellikle endeksleme yolunda fazla bir şey gerektirmeyen küçük veri kümeleri için kullanıyorum

  • Uygun veritabanları: Bunu büyük veri kümeleri ve karmaşık algoritmalar için kullanma eğilimindeyim.

Ama başka tonlarca var.


3

SQLite / spatiallite veritabanı kullanmanızı tavsiye ederim. Geodatabase (içinde birden çok tablo / katman) gibi tek bir dosyadır ve ArcGIS Desktop ve QGIS'de kullanılabilir.


Çokgen verilerini sqlite'a kaydedip QGIS ile yükledim ve "CRS tanımsız: varsayılan olarak CRS EPSG: 4326 - WGS84" şeklinde bir mesaj aldım. Yansıtma hakkında bilgi kaybetmez mi?
Ichiro

Çokgen katmanını hangi yazılımla sqlite'a kaydettiniz?
artwork21

1

Seçenekler gerçekten hangi dili kullanacağınıza ve verilerin nasıl kullanılacağına bağlıdır. Android büyük olasılıkla Java olacaktır. Her seçenek, bu karara dayalı bir tür maliyet / fayda karşılaştırması olacaktır. Tüm veri formatları belirli kullanım durumları için optimize edilmiştir.

Bir sonraki soru verinin nasıl kullanılacağıdır. Mobil uygulama yalnızca uzamsal verileri okuyacak mı? Yoksa sık sık veri okuyup yazacak mı? Diğer cihazlarla veya sunucularla ne sıklıkla veri alışverişi yapacak?

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.