标签:get base 图形 date integer 就是 ack package pkg
译者注:本文略偏激,但是我大部分赞同不要再用 shp 格式的思想,积极拥抱新的生产力。
ESRI Shapefile
简称 shp 格式,是由 ESRI 公开的一种矢量数据格式,它已经有30多年的历史了。
尽管这些年它为各行各业提供了巨大的生产力,但是它在现在这个需求越来越变态的行业中已经略显力不从心。
作为 GIS IT 行业的一员,是时候停止使用 shp 格式并引入新格式了。
列举了一些为什么它的占有率如此之高的原因:
原因可就多多了:
默认情况下,shp 格式是不带坐标系定义的,必须额外使用一个 *.prj
文件来定义。但是这里要说清楚,*.prj
并非 shp 格式规范里的内容,是额外加上去的。
你至少要三个文件才能完整使用一个 shp 格式 —— *.shx
+ *.shp
+ *.dbf
。
你甚至见过更多的文件,例如上面提到的 prj,还有 cfg,等等等等。通常,你需要进行 zip 打包或者挨个发送,才能保证数据完整,相信新手都有传少文件导致乌龙的情况。
所以,在一些古老的高校中仍然推崇使用拼音首字母来写属性,你用英文单词还随时可能爆掉。
其实,255个属性放在先进的场景下也足够了,译者并不觉得是什么缺点。
仅支持 float
、integer
、char
、date
四种。对于 blob
、数组
、图像
就不支持了。
一定有朋友在刚接触时,发现 shp 的属性表是乱码的,这就是编码问题,原先编辑时用的是 gb 编码,换一台机器变成了 utf8,或者反过来,就会导致显示乱码,这个是历史遗留问题。
.shp
和 .dbf
文件最大 2GB,虽然 GDAL 的驱动克服了这个限制可以达到 4GB
译者觉得即使是 2GB,对于单份可编辑型数据来说也很大了。
它不存储复杂的几何关系。
一个 shp 文件,只能是一种几何类型的文件。
译者觉得保持文件单一性也挺好的,并不认为一个数据文件里有多种几何类型是什么优点。
链式数据结构,不支持层级数据的存储等。
multipatch 虽然是三维几何形状,但是并不支持存储三维数据所需的纹理、材质信息。
通常,定义坐标系的 .prj
文件使用的是 ESRI WKT
来定义坐标系统投影信息,这个与 EPSG
的定义是不兼容的。
例如 multi-polygon
和 multi-polyline
。
无法在属性字段里写“没有数据”。不过译者觉得这是个好事。
目前有完全能替代 shp 文件格式的格式吗?似乎没有,毕竟瘦死的骆驼比马大,在 shp 格式还没有完全阻碍到生产之前,新格式并没有那么重要。
列举几个:
译者注:早些年我就写过 gpkg 格式的博客,百度搜即可,很容易找到。
主要特点:
译者注:我也写过这个格式,好好找找,能找到的~
主要特点:
这个不必多说,用过都知道,短小精悍,但是缺点也很明显。
这可能不太算一种 shp 格式的替代品,因为 GML 格式相对来说复杂得多,软件支持率也不算很广泛。
SpatialLite 与 GeoPackage 一样是基于 SQLite 拓展而来,但是它只支持矢量数据。不过能用 SpatialLite 的场景,一般也支持 GeoPackage,SpatialLite 只是特定场合的 shp 格式替代品。
就是一文本表格,它不一定是地理数据,但是它存储地理数据的时候,最大的特点就是简单,对非 GIS 行业的人来说特别友好。
kml 是因谷歌地球的欢迎而起家的一种矢量数据格式,最大的特点就是能把样式也带进数据里。其本质是一种 XML 文本文件。仅支持 WGS84 坐标系。
作为一种 shp 替代品,GeoDatabase 格式完全称职。但是它并不开源,且数据格式为 ArcGIS 专有。
特点:
标签:get base 图形 date integer 就是 ack package pkg
原文地址:https://www.cnblogs.com/onsummer/p/14857005.html