20 世纪 90 年代,每一家正经的 GIS 厂商都随产品发布自家的专有文件格式,因此要在不同软件包之间迁移一个地图图层,就意味着重新数字化,或者编写一次性的转换器。Esri 自家的 ARC/INFO coverage 格式功能强大,但却是封闭的。当 Esri 在 90 年代初随 ArcView 2 推出 shapefile 时,它作为市场领导者做出了一个不同寻常的选择:它没有把格式藏起来,而是将其完整地记录下来。

一个 shapefile 并不是单个文件,而是三个文件:.shp 保存几何数据,.shx 是记录偏移量的索引,.dbf——一张 20 世纪 80 年代的 dBASE IV 表——保存属性数据。这个设计相当朴素:没有拓扑,上限 2 GB,空值被读作零。按理说,它本该是个落败者。

1998 年 7 月的白皮书《ESRI Shapefile 技术描述》(J-7855)把完整的字节级布局公之于众,免费阅读,免费实现。任何程序员现在都能在一周内写出一个转换器。开源库采用了它,接着是每一家竞争对手的 GIS,再接着是每一个需要让所有人都能读取的政府数据门户。

每一个新的读取者都加深了网络效应。交换格式只需要通用,而不需要优秀,于是大家汇聚到了那个任何人都能合法且低成本支持的格式上——Esri 的格式。技术上更优越的替代方案始终停留在小众,因为支持它们只是徒劳无功的工作。

公开字节,而非产品:开放胜过优雅

实现是免费且无约束的,因此竞争对手和公共机构没有理由去发明自己的交换格式。

每一个读取器和写入器都增加了网络效应;一旦数据门户假定使用 shapefile,想要摆脱它就意味着要支付一笔没人愿意支付的税。

交换格式容忍丑陋。这个格式的缺陷——dBASE IV 属性、2 GB 上限、没有拓扑——相比其通用性而言并不那么重要。

Esri 在战略上获胜:它的原生格式成了连竞争对手的用户也在其中传输数据的管道,把他们拉向 Esri 的工具。

一个格式取胜靠的是采用成本,而非优点。替代方案更干净,但没有文档或需要许可,所以没人采用它们。让你的格式免费实现,并接受缺陷作为普及的代价。

近三十年过去,shapefile 仍然是矢量 GIS 数据在组织之间流转的最常见方式。开放地理空间联盟于 2014 年将基于 SQLite 的继任者 GeoPackage 标准化,正是为了取代它,然而采用仍然只是部分的——数据门户、人口普查和开源工具仍然默认使用这个所有人都能读取的文件。大多数 GIS 所依赖的开源数据图书馆 GDAL,将 shapefile 支持作为一项核心义务来维护。这个所有人都爱吐槽的格式,比那些所有人都本该喜爱的格式活得更久。

从这里,追溯依据

参考来源

  1. ESRI Shapefile Technical Description Esri White Paper (J-7855) · esri.com
  2. What is a Shapefile? GIS Lounge (Geography Realm) · gislounge.com ·
  3. GeoPackage Standard — Open SQLite Format for Geospatial Data Open Geospatial Consortium · ogc.org