是否有任何尝试替换shapefile?[关闭]


67

最近,我花了很多时间将诸如“ 25岁及以上学历或更高学历的公民百分比”这样的完美字段名称转换为“ edbchogtr”这样的名称,以满足DBF的10个字符的字段名称限制。

在另一个线程中(Shapefile技术规范中的“奇数”),geospatialpython评论说:“尽管shapefile格式存在缺陷,奇异之处和局限性,但它在GIS领域及其周围仍然顽固地存在。其他任何替换它的尝试都过于肿简单的矢量存储或过于专有。”

这项活动加上劳德黑德先生的评论使我感到奇怪:

  • 是否曾做过任何明确的尝试来替换shapefile作为GIS的无处不在的数据存储和交换格式?
  • 有竞争者吗?
  • 如果有竞争格式,为什么会失败?
  • Esri是否拒绝支持他们,还是这个故事只是技术惯性之一?
  • 如果没有尝试...为什么不呢?

看来我们作为GIS开发人员和用户都可以为自己做得更好。


2
@Mapperz除了最近发布的Geodatabase API外,我看不到任何免费的用于编写地理数据库的工具。除了世界上的ESRI部分,我认为这不能算是替代品。
canisrufus 2012年

2
您可以使用resources.arcgis.com/content/geodatabases/10.0/file-gdb-api使用GDAL gdal.org/ogr/drv_filegdb.html使用GDAL编写和读取地理数据库
Mapperz

1
希望看到Python API在没有ArcGIS许可的情况下读取/写入文件地理数据库(至少是简单功能)-这是开放的。
PolyGeo

2
@PolyGeo您和其他所有人:)
Ragi Yaser Burhum 2012年

3
@celenius来自gdal.org/ogr/drv_shapefile.html “几何:Shapefile格式显式使用32位偏移,因此不能超过8GB(实际上使用32位偏移到16位字)。因此,不建议使用文件大小超过4GB。属性:dbf格式中没有任何偏移,因此它可以任意大。” 因此,您可以拥有相当大的dbfs,但是必须谨慎使用超过4GB的shp。然后你在玩火。
拉吉·亚瑟(Ragi Yaser Burhum)2012年

Answers:


50

这是一个经常出现的话题。我可能没有正确的答案,但是我可以给我我的个人意见

支持它们的原因可以归因于它们的几个特征,所以让我列举一些。

  • 首先,有一个规范。我的意思是,我30多岁就已经存在了,从我十几岁开始就存在。因此可以肯定地说,这个规范已经存在了一段时间。当然,还发布了其他几种格式,但是这种格式的不同之处在于...

  • 比较简单!它建立在DBF格式的基础上,该格式当时已经存在,并且在多个平台/ OS中得到了广泛的支持。已经有解析器可以读取这种格式的一半(DBF部分),因此它使得支持额外的添加更加容易。你有几何吗?当然可以序列化并编写它。大功告成 将此与覆盖范围进行对比!尝试简单地向某人解释拓扑清理的作用。编写拓扑干净的覆盖范围并非易事。

  • 最重要的是,我认为shapefile仍然受欢迎的第一原因是开放源代码系统和专有系统都支持它们。您知道哪些不支持shapefile的GIS?!?闻所未闻。

作为替代,我们听说了File GeoDatabasesSpatialite。与Shapefiles相比,这两种格式在功能,灵活性,速度等方面都极为优越。以它们自己的方式,它们具有某些使它们在不同区域彼此更好的东西,但是,对spacespaceite和FileGDB的比较肯定不在这个问题的范围内。

我是否认为这两种格式都可以替代Shapefile?不在他们当前的化身中

为什么?

并不是因为技术上的争论(我确实说过它们在这方面要优越),而是因为其他原因:许可。

那么他们有什么问题呢?

FileGDB

FileGDB通过新的FileGDB API提供了互操作性。但是,此API以二进制格式提供由ESRI。这不是规范。过去,我曾在GeoDatabase团队工作过,与所有戴着锡箔帽的阴谋理论家相反,我可以告诉你,这根本不是恶意的。这是因为GeoDatabase的内部在每个版本上都会更改。要发布完整的规范,基本上需要提供应该如何维护所有内容的所有详细信息,然后在每年发布的版本中仔细记录格式的更改。这没有道理。因此,尽管FileGDB API并非规范,但它会抽象出所有这些小的更改。现在可以跨平台使用了!请注意,这是向前迈出的一大步!考虑到ESRI的保守性,这绝对是正确方向的反应。

但是,仅二进制支持并不能使开源世界中的任何人都感到高兴。如果ESRI不支持,则如何利用将一些代码移植到其他类型的Linux上的优势。你不能 这就是使开放源代码功能强大的原因,现在,您无法利用此功能。如果ESRI决定停止支持Debian,就是这样。大功告成 您无能为力地对其进行更改。

Spatialite

Spatialite很棒,因为它从SQLite获得了所有免费功能。SQLite无处不在。它可以在您的Android手机,iPhone / iPad,Firefox,Google Chrome和几种商用嵌入式设备上使用-可以永久使用。为了真正地使其成为一种地理格式(而不只是执行哑边界框操作),它需要利用PostGIS使用的同一几何库:GEOS。可悲的是,GEOS基于另一个更强大的几何库JTS。JTS中的所有算法都非常强大,那么问题出在哪里呢?

好吧,JTS已获得开源LGPL的许可,LGPL是病毒许可。JTS是LGPL,表示GEOS是LGPL,表示与GEOS静态链接的spacespaceite是LGPL。糟透了 为什么?在不过多解释开源许可证的情况下,我可以告诉您,例如,我不能在iPhone应用程序上使用spacespaceite,因为这会使我的整个应用程序自动开源(iOS仅允许静态链接)。任何类型的GPL许可证(合理地)都会吓倒ESRI,所以他们不会用10英尺长的杆触碰它。因此,ArcGIS,世界上最流行的GIS系统,不会(也可能永远不会)原生地支持spacespaceite。这会自动将其杀死为可行的格式。

因此,我们返回到各处都支持的糟糕的shapefile。

更新

显然我的答案引起了很大争议,以至于有人认为可以自由编辑和更改我的答案的全部含义以表达他们的观点是可以的。请不要那样做。如果您不同意我的意见,那完全可以,只需将您的意见发表在其他答案中,然后让社群做出决定。我将修改返回到我的答案,以显示原始含义。我正在添加此更新,以防您阅读声称sqlite是可行格式的已编辑答案。


SQLite / Spatialite的问题在于它不是一种格式,而是一种关系数据库引擎,其上具有空间库。尽管它做得很好,但它会强制以关系方式存储数据,但这并不总是最合适的方式。而且,SQLite文件格式(sqlite.org/fileformat2.html)的复杂性使得没有 SQLite引擎很难访问数据,因此不适合作为开放且易于访问的文件格式进行数据交换。它并不是真的为此而设计的。
Igor Brejc'2

8
实际上,LGPL不是病毒许可-它是专门为避免这种情况而设计的。此外,Spatialite已获得MPL tri许可证(来源)的许可,这意味着您可以选择Mozilla Public License作为最合适的许可证,并根据其(非常弱的copyleft)条款进行操作。我至少读到的是,ESRI的许可证使ESRI没有理由不支持Spatialite-他们是否会(考虑到与FileGDB在几乎相同的空间中竞争)是另一个故事……
om_henners 2012年

3
@Ragi,您使用库进行混合并将其移植。当然,移植必须是LGPL,因为从本质上讲这是衍生的工作。但是,如果您动态链接它,则它不被视为派生作品,而是“使用库的作品”,并且您可以保留许可证(en.wikipedia.org/wiki/GNU_Lesser_General_Public_License)。因此,在没有其他解释的情况下说“ LGPL具有病毒性”是不正确的。
Igor Brejc'2

2
但是,这又是一个有争议的问题,因为Spatialite是根据树状许可的模式(groups.google.com/forum/?fromgroups#!topic/spatialite-users/…)进行许可的,因此您可以选择适合的许可证您最多-MPL允许静态链接。
Igor Brejc'2

2
@ bugmenot123很好,然后根据需要进行更正,但是不要指责我散布有关操作系统的FUD,因为这是侮辱性的。我已经写了十多年的OS代码(对于您实际上使用了我的一些东西,不会感到惊讶),这并不是生气。是的,现在仍然如此。LGPL在iOS中进行动态链接(确切地说,在iOS 8中允许使用frameworks)。这从来不是技术问题,而是法律问题。在Appstore中进行分发需要代码签名-对于像我这样的所有OS爱好者来说,可悲的是-LGPL是对此的模糊许可。法庭上没有先例。
Ragi Yaser Burhum '17

18

SHP + SHX部件本身还不错。真正的问题在于DBF部分。可以使用支持Unicode和各种现代字段类型的新格式来实现。问题是那里的所有软件都很好地支持它。


6
+1在DBF方面进行改进也不是一件
ub

1
有尝试过吗?
canisrufus 2012年

5
我经常寄希望于Shapefile修正案,该修正案简单地将UTF-8 CSV文件替换为DBF。支持非常简单,并且只需对现有软件包进行最少的更改。
scw 2012年

1
@canis Fox Software在80年代后期进行了较小的尝试(专有)。MS购买了它们(大约在1990年)之后,就是这样。社区创建了DBF 3标准,几乎冻结了所有开发。MS发布了Access;FoxPro淘汰了;世界在前进。
ub

1
相反,@ Uffe可以随机访问CSV文件:您只需要一个索引,就像DBF文件可以有效地进行搜索一样。我看到的最大问题是,对CSV文件自然发生的细微更改(如引用字符串或CR / LF转换)会破坏所有字节偏移量。DBF文件的固定长度记录结构,尽管存储效率较低,但不存在该问题。
ub


7

至少空间主义者有此意图,请参见此演示文稿,例如http://www.sourcepole.ch/assets/2010/9/10/foss4g2010_spatialite.pdf

另一方面,我确实相信它失败的主要原因是shp得到了许多应用程序的良好支持,并且只有很少的缺陷。

其他人也有这样的看法:

这不是因为SpatiaLite项目没有为我们提供实施工具,而是社区可以减少对此的关心。SHP为他们工作,没有任何理由要改变。

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

有关Esri文件地理数据库,spatialite和Autodesk SDF的更多想法,请访问:http : //www.spatialdbadvisor.com/blog/121/the-shapefile-manifesto


正如我认为的spatiaLite一样,它在功能,参考系统等方面的开销约为3兆字节,这使其无法成为一种良好的全方位交换格式。
Scro 2012年

实际上,spacespaceite的许可并不理想-与工具无关。
拉吉·亚瑟·伯姆

@ Scro,3 MB太大了吗?对于台式机来说肯定不是太大。您必须考虑使用移动设备。另外,是否还有另一个Spatial API,具有与Spatialite相同的功能,且具有相同的功能?
klewis 2012年

@klewis-它本身并不太大,当您考虑到那里有很多小的(认为<200kb)数据集时,它的效率非常低。这会带来很多开销,尤其是考虑到以下事实:一旦收到数据,您通常会将每个数据集保留在3mb文件中,或者将其滚动到现有数据库中。明确地说,我<3 spatiaLite -但是我们谈论的是数据传输,在这种情况下,某种平面文件/ xml / wkb会更加高效。
Scro 2012年

6

Esri多年来一直在推广File Geodatabases,以替代shapefile。

最近,他们提供隐藏任何奇怪之处的API


我没有与地理数据库进行大量合作。维基百科说它们是一个“封闭的”标准,例如尚未发布地理数据库规范。如果不发布该格式的内部内容,似乎很难被广泛采用。虽然我还不了解历史,但我猜测shapefile在某种程度上如此受欢迎是因为该规范的公开部分。API看起来确实是一个好步骤。
canisrufus 2012年

1
@canis你是正确的。当时,没有人会采用shapefile,只是ESRI专门将它们推广为开放的GIS数据交换格式。即使当时可用的软件工具有限,但随着ESRI发布清晰的.shp / .shx规范(并坚持遵守),编写代码来阅读和阅读代码只需要花费几个小时的时间。编写shapefile:无需进行逆向工程。
ub

只要API是黑盒二进制blob,FGDB就不会看到与SHP相同的采用。即使Esri说服所有客户都从SHP转换为FGDB,该API仍与开放源代码实际上不兼容。
dericke

3

像GML这样的XML方言绝对不是针对操作大型数据集而进行优化的,但是可以用作软件之间或平台之间的交换格式。

我不认为许可有任何问题(请参阅Ragi Yaser Burhum关于Spatialite病毒特性的帖子),并且如果需要,可以很容易地调整现有的解析器。


1
我认为并没有因为您提出的原因而提及它,它没有针对大型数据集进行优化。XML膨胀。这里提到的格式是二进制的,其中GML将点存储为字符串。大小可能相差一个数量级。
canisrufus 2012年

3
Canisrufus是正确的。GML存在几个问题。可以使用XPath导航Infoset,但是任何尝试在XML之上实现空间索引的人都会告诉您,这是多么不合理,以及它映射到传统关系数据库的程度如何。无需赘述许多内容,如果像索引和查询这样的基本内容变得不那么琐碎,那么该格式就显得过分膨胀,并且基本上需要您将整个数据集存储在内存中才能对其进行任何处理,那么这不是一个好选择。
拉吉·亚瑟·伯姆

4
xml以纯文本格式存储时会肿。有免费的(免费的,修改和重新分发的)可用的二进制xml库,可以作为xml读取器的替代品,使人们可以自由利用xml的人类可读性以及二进制文件的性能和存储效率。我无法想到的唯一原因就是它无法被大量使用,就像johandvw在上面观察到的那样:没有人在乎,.shp确实“足够好”。
马特·威尔基

1

仅仅从不同的角度来看,我不确定使用 “ 25岁及以上学历或更高学历的公民百分比”是否是一个很好的领域名称。虽然可以处理空格和撇号,但是如果您正在编写代码或查询,则很可能会引入错误。

在我看来,空间数据分发的未来应该集中在Web和Web服务上,并且WFS规范(使用GML)已经公开并建立。 GeoJSON较小,可以更轻松地在JavaScript中使用。但是,压缩后的尺寸是可比的。

我也想对ESRI的Personal Geodatabases进行投票。它可能是经常使用的Microsoft格式,但它支持ODBC,SQL查询和视图,并允许非开发人员创建简单的数据输入表单,并至少包括某些级别的数据完整性检查(数据类型,长度,唯一值) 。


这是有道理的。他们的好处是,只要具备英语知识,就能弄清楚这些领域的含义。
canisrufus 2012年

这实际上就是数据集元数据的作用。shapefile可以使用具有相同名称的XML文件来存储它。
geographika
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.