Şekil dosyasını değiştirme girişimi var mı? [kapalı]


67

Geçenlerde, DBF'nin 10 karakterlik alan adı sınırını karşılamak için "Yüzde 25 yaş ve üstü bir lisans derecesi ile" edbchogtr "gibi iyi alan adlarını mükemmel şekilde alan isimleri dönüştürmek için çok fazla zaman harcıyorum.

Bir başka konu başlığında ( Shapefile teknik özelliklerinde “Tuhaflıklar” ), geospatialpython , “Shapefile formatının kusurlarına, tuhaflıklarına ve sınırlamalarına rağmen, inatçı bir şekilde GIS alanı içinde ve çevresinde inatla devam ettiğini söyledi. basit vektör depolama veya çok özel. "

Bu etkinlik Bay Lawhead'in yorumuyla birleştiğinde merak ettim:

  • şekil dosyasını GIS'in her yerde bulunan veri depolama ve değişim formatı olarak değiştirmek için açık bir girişimde bulunuldu mu?
  • Herhangi bir yarışmacı var mı?
  • Rekabetçi biçimler varsa, neden başarısız oldu?
  • Esri onları desteklemeyi reddetti mi, yoksa hikaye sadece teknolojik ataletten biri mi?
  • Denemediyseniz neden olmasın?

Hem CBS geliştiricileri hem de kullanıcıları olarak kendimiz için biraz daha iyisini yapabiliriz gibi görünüyor.


2
@Mapperz Yeni yayımlanan Geodatabase API dışında, ücretsiz bir coğrafi veritabanı yazmak için herhangi bir araç göremiyorum. Dünyanın ESRI kısmı dışında bunun bir yedek olarak sayılabileceğini sanmıyorum.
canisrufus

2
Sen GDAL kullanarak yazmak ve (API aracılığıyla) geodatabases okuyabilir gdal.org/ogr/drv_filegdb.html kullanarak resources.arcgis.com/content/geodatabases/10.0/file-gdb-api
Mapperz

1
ArcGIS lisansı olmadan Dosya Geodatabase'i (en azından Basit Özellikler) okumak / yazmak için Python API'sini görmek isterdim - bu Açık olurdu.
PolyGeo

2
@PolyGeo sizi ve herkesi :)
Ragi Yaser Burhum

3
@celenius gdal.org/ogr/drv_shapefile.html adresinden "Geometri: Shapefile formatı açıkça 32bit ofset kullanır ve 8GB'ı geçemez (aslında 32bit ofsetleri 16bit kelimelere kullanır). Bu nedenle, bir dosyanın kullanılması önerilmez. 4GB'ı aşan boyutlar. Nitelikler: dbf formatının içinde ofset yok, bu yüzden keyfi olarak büyük olabilir. " Bu yüzden oldukça büyük dbfs'lere sahip olabilirsiniz, ancak shp'ınız 4GB'ı geçerken dikkatli olmalısınız. O zaman ateşle oynuyorsun.
Ragi Yaser Burhum, 21.01.2012

Yanıtlar:


50

Bu her zaman ortaya çıkan bir konudur. Doğru cevabı alamayabilirim, ama sana kişisel görüşümü verebilirim .

Desteklenmelerinin nedeni, onlar hakkında çeşitli özelliklere atfedilebilir, bu yüzden birkaç taneden bahsedeyim.

  • İlk olarak, bir spec var . Demek istediğim, otuzlu yaşlarımın başındayım ve bu şey genç yaşımdan beri vardı. Bu yüzden bu özelliğin bir süredir var olduğunu söylemek güvenli. Tabii ki, ayrıca yayınlanmış başka formatlar da var, ama buradaki fark şudur ki ...

  • Bu nispeten basit! Halen varolan ve çeşitli platformlarda / işletim sistemlerinde yaygın olarak desteklenen DBF Formatı üzerine inşa edilmiştir . Bu formatın yarısını okuyabilen ayrıştırıcılar zaten vardı (DBF bölümü), bu yüzden fazladan ilaveyi desteklemeyi kolaylaştırdı. Bir geometriniz var mı? Tabii sadece seri hale getir ve yaz. Bitirdiniz. Bunun kapsamı ile kontrast ! Birine, bir topolojinin temizliğinin ne yaptığını basit terimlerle açıklamaya çalışın . Topolojik olarak temiz bir kapsama alanı yazmak önemsiz değildir.

  • En önemlisi, form dosyalarının hala popüler olmasının 1 numaralı nedeninin , hem Açık Kaynak hem de Tescilli sistemlerde desteklenmeleri olduğunu düşünüyorum . Shapefiles'i desteklemeyen hangi GIS'i biliyorsunuz?!? Duyulmamış.

Bunun yerine File GeoDatabases ve Spatialite dosyalarını duyuyoruz . Her iki format da, Shapefiles ile karşılaştırıldığında, işlevsellik, esneklik, hız vb. Bakımından oldukça üstündür. Kendi yollarında, farklı alanlarda kendilerini birbirlerinden daha iyi yapan bazı şeyleri vardır, ancak spatialite ve FileGDB karşılaştırması kesinlikle bu sorunun kapsamı dışındadır.

Bu formatlardan birinin Shapefilfiler'ın yerini alacağını mı düşünüyorum? Mevcut enkarnasyonlarında değil .

Neden?

Teknolojik bir argüman yüzünden değil (her şeyden önce bu açıdan üstün olduklarını söyledim), ama başka bir şey yüzünden: lisanslama.

Peki problemleri neler?

FileGDB :

FileGDB, yeni FileGDB API'siyle birlikte çalışabilirlik sağlar. Bununla birlikte, bu API ikili biçimde sağlanırESRI tarafından. Bu bir şartname değildir. Geçmişte GeoDatabase ekibinde çalıştıktan sonra, size söyleyebilirim ki, teneke folyo şapka takma komplo teorisyenlerinin aksine, bu hiç de kötü değildir. GeoDatabase içindekilerin her sürümde değişmesinden kaynaklanmaktadır. Tam bir teknik özellik yayınlamak, temel olarak her şeyin nasıl muhafaza edilmesi gerektiği ile ilgili tüm detayları vermeyi ve ardından her yıllık sürümle birlikte formattaki değişiklikleri dikkatlice belgelemeyi gerektirir. Mantıklı değil. Bu nedenle, FileGDB API, bir spesifik olmasa da, tüm bu küçük değişiklikleri dışlar. Ve şimdi platformlar arası kullanılabilir! Dikkat et, bu ileriye doğru büyük bir adım! ESRI'nin muhafazakar doğası göz önüne alındığında, bu kesinlikle doğru yönde bir tepkidir.

Ve yine de, sadece ikili destek Açık Kaynak dünyasındaki hiç kimseyi çok mutlu etmiyor. ESRI desteklemiyorsa, başka bir Linux lezzetine söylemek için bazı kodları taşımaktan nasıl faydalanırsınız? Yapamazsın Açık Kaynak'ı güçlü yapan şey budur ve şimdi bundan faydalanamazsınız. ESRI Debian'ı desteklemeyi bırakmaya karar verirse, hepsi bu. Bitirdiniz. Ve değiştirmek için yapabileceğiniz hiçbir şey yok.

Spatialite :

Spatialite harika çünkü tüm ücretsiz işlevselliği SQLite'den alıyor . SQLite her yerde kullanılır. Android telefonunuzda, iPhone / iPad'inizde, Firefox'ta, Google Chrome'da, çeşitli ticari yerleşik cihazlarda - sonsuza dek devam edebilir. Bir Geoformat'a gerçekten ulaşmak için (ve sadece aptal sınırlama kutusu işlemlerini yapmakla kalmaz), PostGIS'in kullandığı geometri kütüphanesinden yararlanmalıdır: GEOS . Ne yazık ki, GEOS, JTS olarak bilinen daha da harika bir geometri kütüphanesine dayanıyor . JTS'deki tüm algoritmalar son derece güçlü, peki sorun ne?

Eh, JTS, Open Source LGPL lisansına sahip ve LGPL viral bir lisans . JTS LGPL'dir, GEOS LGPL'dir, statik olarak GEOS'a bağlı spatialit anlamına gelir LGPL'dir . Bu berbat. Neden? Olmadan açık kaynak lisansı açıklayan çok fazla, bunu otomatik olarak benim tüm uygulamayı açık kaynak yapacak çünkü örneğin ben (sadece iOS statik bağlama sağlar), diyelim ki, spatialite üzerinde bir iPhone uygulamasını kullanamazlar, söyleyebilirim. Herhangi bir GPL lisansı (makul bir şekilde), ESRI’nin saçmalığını korkutur ve böylece 10 ayak direğine değmeyeceklerdir. Bu nedenle, dünyanın en popüler CBS sistemi olan ArcGIS, doğal olarak mekansaliteyi desteklemiyor (ve muhtemelen asla). Bu otomatik olarak uygun bir format olarak öldürür.

Ve böylece her yerde desteklenen berbat şekil dosyalarına geri dönüyoruz.

Güncelleme :

Görünüşe göre cevabım, birilerinin , görüşümü ifade etmek için cevabımın anlamını serbestçe düzenlemenin ve değiştirmenin Tamam olduğuna karar verdiği konusunda tartışmalıydı . Lütfen yapma bunu. Eğer benimle aynı fikirde değilseniz, bu tamamen iyi, sadece fikrinizi farklı bir cevap ile gönderin ve topluluğun karar vermesine izin verin. Orjinal anlamını göstermek için düzenlemelerimi cevabımdan geri aldım. Sqlite'ın uygun bir format olduğunu iddia eden düzenlenmiş cevabı okuduğunuzda bu güncellemeyi ekliyorum.


SQLite / Spatialite ile ilgili sorun, biçim değil, üzerine uzamsal kütüphaneli ilişkisel bir veritabanı motorudur. Yaptığı işi çok iyi yaparken, her zaman en uygun yol olmayan veriyi ilişkisel biçimde depolamaya zorlar. Ayrıca, SQLite dosya biçiminin ( sqlite.org/fileformat2.html ) karmaşıklığı , SQLite motoru olmadan verilere erişmeyi zorlaştırır ve bu nedenle veri alışverişi için açık ve kolay erişilebilir bir dosya biçimi olmak için uygun değildir. Gerçekten bunun için tasarlanmadı.
Igor Brejc

8
Aslında, LGPL viral bir lisans değildir - bundan kaçınmak için özel olarak tasarlanmıştır. Ek olarak, Spatialite, MPL tri lisans ( kaynak ) lisansı altında lisanslıdır , yani diğer şeylerin yanı sıra Mozilla Kamu Lisansını en uygun lisans olarak seçebilir ve (çok zayıf copyleft) şartları altında çalışabilirsiniz. ... onlar verip (verilen o FileGDB hemen hemen aynı uzay yarışan) başka bir hikaye - My okuma en az nedenim yok ESRI çünkü lisans Spatialite desteklemek için değil olmasıdır
om_henners

3
@Ragi, karıştırıp kullanarak bir kütüphane ve taşıma bunu. Tabii ki porting LGPL olmak zorunda kalacak, çünkü bu aslında bir türev çalışma. Ancak bunu dinamik olarak bağlarsanız, bir türev çalışma olarak kabul edilmez, "kütüphaneyi kullanan çalışma" dır ve lisansınızı korumanızı sağlarsınız ( en.wikipedia.org/wiki/GNU_Lesser_General_Public_License ). Bu nedenle, ek açıklama olmadan "LGPL viraldir" demek doğru değildir.
Igor Brejc

2
Fakat yine de, bu çok önemli bir nokta çünkü Spatialite bir ağaç lisanslı şema altında lisanslandırılmıştır ( groups.google.com/forum/?fromgroups#!topic/spatialite-users/… ), böylece uygun lisansı seçersiniz. en çok - MPL statik bağlantıya izin verir.
Igor Brejc

2
@ bugmenot123 Tamam, sonra istersen düzelt, ama hakarete bağlı olduğu için işletim sistemi hakkında FUD kullanmakla suçlama. On yıldan fazla bir süredir OS kodu yazıyorum (aslında bazılarını kullanmış olmanıza şaşırmam) ve bu öfkeli bir rant değildi. Doğruydu - ve hala öyle. LGPL'nin iOS'unda dinamik bağlantı (kesin olarak, çerçevelere , iOS 8'de izin verildi). Bu asla teknik bir konu değil, yasal bir konu oldu. Appstore'daki dağıtım kod imzalamayı gerektirir - ve ne yazık ki benim gibi tüm işletim sistemi severler için - LGPL bunun için bulanık bir lisanstır. Mahkemede emsal yok.
Ragi Yaser Burhum

18

SHP + SHX bölümünün kendisi o kadar da kötü değil. Asıl sorun DBF bölümünde yatmaktadır. Bu, unicode'u ve her türlü modern alan türünü destekleyen yeni bir formatla yapılabilir. Sorun, orada bulunan tüm yazılımlar tarafından iyi bir şekilde desteklenmesidir.


6
+1 DBF bölümünü geliştirmek de hiç zor değil: gerçekten de yazılım geliştiricilerini bir konuda anlaşmaya ikna etmeye geliyor .
whuber

1
Bir girişim oldu mu?
canisrufus

5
Sıklıkla DBF için bir UTF-8 CSV dosyasını ikame eden bir Shapefile değişikliği için işaret ettim. Mevcut yazılım paketlerinde asgari değişikliklerin desteklenmesi ve gerekli olması basit olacaktır.
scw

1
@canis Fox Software 80'lerin sonlarında küçük (tescilli) bir girişimde bulundu. MS onları satın aldıktan sonra (c. 1990) öyleydi. Topluluk bir DBF 3 standardı yarattı ve bu da tüm gelişmeleri dondurdu. MS Access'i serbest bıraktı; FoxPro öldü; dünya ilerledi.
whuber

1
Aksine, @Uffe, CSV dosyalarına rasgele erişilebilir: verimli aramalar için DBF dosyalarında olduğu gibi yalnızca bir dizine ihtiyacınız vardır. Gördüğüm en büyük sorun, CSV dosyalarında doğal olarak meydana gelen küçük değişikliklerin, karakter dizileri veya CR / LF dönüşümleri gibi tüm bayt ofsetlerini mahvedeceğidir. Sabit uzunluk DBF dosyasının kayıt yapısı, depolama az verimli olmasına rağmen, böyle bir sorun yoktur.
whuber


7

En azından spatialite niyeti var, bakınız örneğin bu sunum http://www.sourcepole.ch/assets/2010/9/10/foss4g2010_spatialite.pdf

Öte yandan, başarısız olmasının temel nedeninin, shp'nin birçok uygulama tarafından iyi bir şekilde desteklendiğinden ve sadece küçük eksikliklere sahip olduğuna inanıyoruz.

Diğerleri de bu görüşü paylaşıyor:

Bunun nedeni SpatiaLite projesinin uygulamamız için bize araç vermemesidir, topluluğun bu konuda daha az umursadığıdır. SHP onlar için çalışıyor ve değişmesi için hiçbir sebep yok.

http://www.spatiallyadjusted.com/2010/09/16/spatialite-is-not-the-shapefile-of-the-future/

Esri dosyası hakkında daha fazla düşünce, coğrafi veritabanı, spatialite ve autodesk sdf burada: http://www.spatialdbadvisor.com/blog/121/the-shapefile-manifesto


SpatiaLite’in düşündüğüm kadar iyi olması, fonksiyonlarda, referans sistemlerinde vb.
Scro

Aslında, spatialite için lisans idealden daha az - araçları ile ilgisi yok.
Ragi Yaser Burhum

@Scro, 3 megabayt çok büyük? Masaüstü için kesinlikle çok büyük değil. Mobil cihazları düşünüyor olmalısınız. Ayrıca, eşdeğer işlevselliğe sahip Spatialite'den daha küçük boyutta başka bir Spatial API var mı?
klewis

@klewis - kendi başına çok büyük değil, orada çok küçük (düşünen <200kb) veri kümesi olduğunu düşündüğünüzde çok verimsiz. Bu, genel olarak çok fazla yükler, özellikle, bir kez alındığında, her bir veri setini kendi 3mb dosyasında bırakmanız veya mevcut bir veritabanına aktarmanız gerçeğinin ışığında. Açıkçası, ben <3 spatiaLite - ama biz bir çeşit düz dosya / xml / wkb'nin çok daha verimli olacağı veri aktarımından bahsediyoruz.
Scro

6

Esri , birkaç yıldan beri dosya dosyalarının yerini alan File Geodatabas'ları tanıtıyor .

Daha yakın zamanlarda tuhaflıkları gizleyen bir API sağladılar .


Coğrafi veri tabanlarıyla pek çalışmadım. Vikipedi, "kapalı" bir standart olduklarını söylüyor, örneğin coğrafi veri tabanı özelliği henüz yayınlanmadı. Bu formatın içindekileri yayınlamadan çok geniş bir şekilde benimsenmesi zor görünüyor. Tarihi bilmek için çok genç olsam da, şekil dosyalarının şartnamenin halka açık kısmı nedeniyle kısmen popüler olduğunu tahmin ediyorum. API iyi bir adım gibi görünüyor.
canisrufus

1
@canis haklısın. O zamanlar hiç kimse ESRI’nin onları açık bir GIS veri değişim formatı olarak tanıtması dışında hiçbir şekilde şekil dosyası kabul etmeyecekti. ESRI’nin net bir .shp / .shx özelliği (ve buna bağlı kalmanın taahhüdü) açıklanmasıyla, mevcut yazılım araçlarının kısıtlı olduğu durumlarda bile, okuma ve yazma kodları yazmak için birkaç saatlik bir çalışma meselesi haline geldi. şekil dosyalarını yazar: tersine mühendislik gerekmez.
whuber

API bir kara kutu ikili blob olduğu sürece, FGDB SHP ile aynı kabulü görmeyecektir. Esri, tüm müşterilerini SHP'den FGDB'ye geçmeye ikna etse bile, API gerçekten açık kaynak ile uyumlu değildir.
dericke

3

GML gibi bir XML lehçesi, büyük veri kümelerini çalıştırmak için kesinlikle optimize edilmemiştir, ancak yazılım arasında veya platformlar arasında bir değişim biçimi olarak kullanılabilir.

Ruhsatlandırma ile ilgili herhangi bir sorun olduğuna inanmıyorum (bkz. Ragi Yaser Burhum'un Spatialite'nin viral özellikleri hakkındaki yazısına bakınız) ve gerektiğinde mevcut ayrıştırıcıları uyarlamak oldukça kolaydır.


1
Bence, sadece neden bu kadar büyüdüğünüzün, büyük veri kümeleri için optimize edilmediğinden söz edilmedi. XML şişirildi. Burada belirtilen formatlar, GML'nin noktaları string olarak kaydettiği ikilidir. Boyut, farklı büyüklükteki bir düzende olabilir.
canisrufus

3
Canisrufus haklı. GML ile ilgili birkaç problem var. Infoset, XPath kullanılarak gezilebilir, ancak XML'in üzerine konumsal dizin oluşturmayı deneyen herhangi biri, bunun ne kadar irrasyonel olduğunu ve geleneksel ilişkisel veritabanlarına ne kadar kötü eşlendiğini size söyleyecektir. Birçok ayrıntıya girmeden, indeksleme ve sorgulama kadar basit bir şey önemsiz hale gelirse, biçim şişirilir ve temelde veri kümesinin tamamını onunla bir şey yapmak için bellekte bulundurmanızı gerektirir, o zaman bu iyi bir seçenek değildir.
Ragi Yaser Burhum,

4
Düz metin olarak kaydedildiğinde xml şişirilir. İnsanlara xml'nin hem okunabilirliğini hem de binary'nin performansını ve depolama verimliliğini kullanma özgürlüğünü sağlama özgürlüğü veren serbestçe (hem ücretsiz hem de ücretsiz olarak değiştirmek ve yeniden dağıtmak için) kullanılabilir olan ikili xml kitaplıkları vardır. . Asla büyük bir şekilde ele alınmaması için düşünebilmemin tek nedeni, yukarıdaki gözlemler gibi : kimse umursamıyor, .shp, "yeterince iyi" oldu.
matt wilkie

1

Sadece buna farklı bir bakış açısıyla gelmek için, "25 yaş ve üstü vatandaşların yüzde bir lisans derecesiyle" kullanımının mükemmel bir alan adı olduğundan emin değilim . Boşluklar ve kesme işaretleri karıştırılarak işlenirken, kod veya sorgu yazıyorsanız, hataların ortaya çıkması daha olasıdır.

Benim görüşüme göre, mekansal veri dağılımının geleceği web ve web servislerine odaklanmalı ve WFS spesifikasyonu ( GML'yi kullanan) açık ve kuruludur . GeoJSON daha küçüktür ve JavaScript ile çalışmak daha kolay olabilir. Ancak sıkıştırma ile boyutlar karşılaştırılabilir.

Ayrıca, ESRI'nin Kişisel Coğrafi Veri Tabanlarına oy vermek istiyorum . Tamamen kötü amaçlı bir Microsoft biçiminde olabilir, ancak ODBC, SQL sorgularını, görünümlerini destekler ve geliştiricilerin kolay veri giriş formları oluşturmasına izin vermez ve en az bir düzeyde veri bütünlüğü denetimi (veri türleri, uzunluklar, benzersiz değerler) içerir .


Bu geçerli bir nokta. Onlarla ilgili iyi olan şey, İngilizce dil bilgisi verildiğinde alanların ne anlama geldiğidir.
canisrufus

Bu gerçekten de veri kümelerinin meta verilerinin rolü. Shapefile bunu depolamak için aynı isimde bir XML dosyası kullanabilir.
geographika
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.