复制于维基百科: https://zh.wikipedia.org/wiki/Shapefile ,因为的确经常会把数据格式的一些细节忘记,所以复制过来,以供后续有必要的时候,查缺补漏。

ESRI Shapefile(shp),或简称shapefile,是美国环境系统研究所公司(ESRI)开发的空间数据开放格式。目前,该文件格式已经成为了地理信息软件界的开放标准,这表明ESRI公司在全球的地理信息系统市场的重要性。Shapefile也是重要的交换格式,能够在ESRI与其他公司的产品之间进行数据互操作。

Shapefile文件用于描述几何体对象:点、折线与多边形。例如,Shapefile文件可以存储井、河流、湖泊等空间对象的几何位置。除了几何位置,shp文件也可以存储这些空间对象的属性,例如河流的名字、城市的温度等等。

Shapefile属于一种矢量图形格式,它能够保存几何图形的位置及相关属性。但这种格式没法存储地理数据的拓扑信息。Shapefile在九十年代初的ArcView GIS的第二个版本被首次应用。目前,许多自由的程序或商业的程序都可以读取Shapefile。

Shapefile是一种比较原始的矢量数据存储方式,它仅仅能够存储几何体的位置数据,而无法在一个文件之中同时存储这些几何体的属性数据。因此,Shapefile还必须附带一个二维表用于存储Shapefile中每个几何体的属性信息。Shapefile中许多几何体能够代表复杂的地理事物,并为他们提供强大而精确的计算能力。

Shapefile文件指的是一种文件存储的方法,实际上该种文件格式是由多个文件组成的。其中,要组成一个Shapefile,有三个文件是必不可少的,它们分别是".shp", ".shx"与 ".dbf"文件。表示同一数据的一组文件其文件名前缀应该相同。例如,存储一个关于湖的几何与属性数据,就必须有lake.shp,lake.shx与lake.dbf三个文件。而其中“真正”的Shapefile的后缀为shp,然而仅有这个文件数据是不完整的,必须要把其他两个附带上才能构成一组完整的地理数据。除了这三个必须的文件以外,还有八个可选的文件,使用它们可以增强空间数据的表达能力。所有的文件名都必须遵循MS DOS的8.3文件名标准(文件前缀名8个字符,后缀名3个字符,如shapefil.shp),以方便与一些老的应用程序保持兼容性,尽管现在许多新的程序都能够支持长文件名。此外,所有的文件都必须位于同一个目录之中。

必须的文件:

.shp — 图形格式,用于保存元素的几何实体。

.shx — 图形索引格式。几何体位置索引,记录每一个几何体在shp文件之中的位置,能够加快向前或向后搜索一个几何体的效率。

.dbf — 属性数据格式,以dBase III+ 的数据表格式存储每个几何形状的属性数据。

其他可选的文件:

.prj — 投帧式,用于保存地理坐标系统与投影信息,是一个存储well-known text投影描述符的文本文件。

.sbn and .sbx — 几何体的空间索引

.fbn and .fbx — 只读的Shapefiles的几何体的空间索引

.ain and .aih — 列表中活动字段的属性索引。

.ixs — 可读写Shapefile文件的地理编码索引

.mxs — 可读写Shapefile文件的地理编码索引(ODB格式)

.atx — .dbf文件的属性索引,其文件名格式为shapefile.columnname.atx (ArcGIS 8及之后的版本)

.shp.xml — 以XML格式保存元数据。

.cpg — 用于描述.dbf文件的代码页,指明其使用的字符编码。

在每个.shp, .shx与.dbf文件之中,图形在每个文件的排序是一致的。也就是说,.shp的第一条记录与.shx及.dbf之中的第一条记录相对应,如此类推。此外,在.shp与.shx之中,有许多字段的字节序是不一样的。因此用户在编写读取这些文件格式的程序时,必须十分小心地处理不同文件的不同字节序。

Shapefile通常以X与Y的方式来处理地理坐标,一般X对应经度,Y对应纬度,用户必须注意X,Y的顺序。

三、Shapefile图形格式 (.shp)

Shapefile格式的主文件包含了地理参照数据。该文件由一个定长的文件头和一个或若干个变长的记录数据组成。每一条变长数据记录包含一个记录头和一些记录内容。详细的数据存储格式由Esri Shapefile技术描述提供。注意,虽然Shapefile文件的后缀名与AutoCAD的图形字体源格式它们的文件后缀名相同的,都是.shp ,请不要把它们混淆。

主文件头包含17个字段,共100个字节,其中包含九个4字节(32位有符号整数,int32)整数字段,紧接着是八个8字节(双精度浮点数)有符号浮点数字段。

然后这个文件包含不定数目的变长数据记录,每个数据记录以一个8字节记录头开始:

在记录头的后面就是实际的记录:

变长记录的内容由图形的类型决定。Shapefile支持以下的图形类型:

在普通的使用中,Shapefile通常包含点、折线与多边形。带有Z坐标的形状是三维的。带有M坐标的形状是包含一个用户指定的测量值,该测量值定义在每一个点坐标之上。三维的Shapefile十分罕见。此外,实际应用中通常,Shapefile的M测量值这个功能已经被其他功能更加强大和稳健的数据库取代,Shapefile一般只负责几何数据。

四、Shapefile图形索引格式(.shx)

Shapefile的文件索引包含与.shp文件相同的100个字节的文件头,然后跟随着不定数目的8字节定长记录,每个记录都有两个字段。

因为这个图形索引每个数据项都是定长的,因此程序只要在这个图形索引中向前或向后遍历,读取索引中所记录的记录位移与记录长度,程序就可以很快地向前或向后遍历整个Shapefile,在.shp文件中找到任意一个几何体的正确位置。

五、Shapefile属性格式(.dbf)

每个图形的属性数据存储在dBase格式的数据表之中。属性数据也可以存储在另一种开放的数据表格式xBase格式之中。在开源Shapefile函数库Shapefile C library[2]中就是这样存储。

六、Shapefile投帧式(.prj)

.prj文件中的信息包含了.shp文件中几何数据所使用的经纬度坐标系统。尽管这个文件不是必须的,一般使用都会提供它,这样用户就无需猜测所给的坐标的经纬度系统。ArcGIS Desktop 9及以后的版本使用well-known text格式来生成坐标系统描述信息。以前的ArcGIS版本和某些第三方软件通常生成如下的这种格式:

老的投影文件格式样例:

Projection UTM

Zunits NO

Units METERS

Spheroid CLARKE1866

Xshift 0.0000000000

Yshift -4000000.0000000000

Parameters

-108 0 0.000 /* longitude

36 0 0.000 /* latitude

新的WKT格式样例:

GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.0174532925199433]]

.prj文件中包含以下信息:

经纬度坐标系统或地图投影的名称

椭球体参数

本初子午线

所使用的单位

用于定义地图投影的参数,例如:

七、Shapefile空间索引格式(.sbn)

这是一个二进制的空间索引文件,仅仅可以应用在ESRI的软件之中。其文件格式没有公开的文档,其他厂商也没有实现这个文件。.sbn并不是必须的,因为.shp文件之中已经包含了所有的解析空间数据所需的信息。

1.Shapefile与拓扑

Shapefile无法存储拓扑信息。在ESRI的文件格式中,ArcInfo 的Coverage、以及Personal/File/Enterprise地理数据库,能够保存地理要素的拓扑信息。

2.空间表达

在shapefile文件之中,所有的折线与多边形都是用点来定义,点与点之间采用线性插值,也就是说点与点之间都是用线段相连。在数据采集时,点与点之间的距离决定了该文件所使用的比例。当图形放大超过一定比例的时候,图形就会呈现出锯齿。要使图形看上去更加平滑,那么就必须使用更多的点,这样就会消耗更大的存储空间。在这种情况下,样条函数可以很精确地表达不同形状的曲线而且占据相对更少的空间,但是目前shapefile并不支持样条曲线。

3.数据存储量

.shp文件或.dbf文件最大的体积不能够超过2 GB(或231位)。也就是说,一个shapefile最多只能够存储七千万个点坐标。文件所能够存储的几何体的数目取决于单个要素所使用的顶点的数目。

属性数据库格式所使用的.dbf文件基于一个比较古老的dBase标准。这种数据库格式天生有许多限制,例如:

无法存储空值。这对于数量数据来说是一个严重的问题,因为空值通常都用0来代替,这样会歪曲很多统计表达的结果。

对字段名或存储值中的Unicode支持不理想。

字段名最多只能够有10个字符。

最多只能够有255个字段。

只支持以下的数据类型:浮点类型(13字节存储空间),整数(4或9字节存储空间),日期(不能够存储时间,8字节存储空间)和文本(最大254字节存储空间)

浮点数有可能包含舍入错误,因为它们以文本的形式保存。

4、混合几何类型

由于在每一条几何记录中都有该记录的几何类型,所以理论上一个shapefile是可以存储混合的几何类型。但实际上规范中指出在同一shapefile之中所有非空的几何体都必须是同一类型。因此shapefile被限制为仅仅可以混合存储空几何体和另一单一几何体,该几何体的类型必须与文件头中定义的类型一致。例如,一个shapefile文件不可能同时包含折线与多边形数据,所以,在实际的地理事物描述中,井(点类型)、河(折线类型)与湖(多边形类型)必须分开存储在三个不同的文件之中。

重点记住shp、shx、dbf、prj都存储的是什么,其他的也不常用。

这个介绍里,好像少了一点点东西,shpfile的索引编码不是固定的,既每次在软件中打开的时候,FID都是变化的,举例来说,假设我有一个省边界文件province.shp,第一次在QGIS中打开,辽宁省的FID是1,再重新打开一下,辽宁省的FID可能就是2了,文件的FID,既feature id是不固定的,所以,要做数据标识,得拿其他字段来做,或者干脆新建一个字段id做索引。

Shpfile应该是最常用的地理信息数据格式文件,了解它的格式说明还是很有必要的。

复制于维基百科:https://zh.wikipedia.org/wiki/Shapefile,因为的确经常会把数据格式的一些细节忘记,所以复制过来,以供后续有必要的时候,查缺补漏。一、简介ESRI Shapefile(shp),或简称shapefile,是美国环境系统研究所公司(ESRI)开发的空间数据开放格式。目前,该文件格式已经成为了地理信息软件界的开放标准,这表明ESRI公司在全球的地理信息系统市场的重要性。Shapefile也是重要的交换格式,能够在ESRI与其他公司的产品之间进行数据互操
最近 项目 需要将 shp 线面数据保存在数据库中,但是数据库中存储的地理矢量数据的 格式 为 type:point|poyline|polygon, points:{x1,y1,x2,y2..}; 无奈拿到的数据为矢量面( 线)数据,数据属性中并没有面数据各个 位置 坐标信息; 询问网友后得到以下简单方式生成; 1.打开ArcMap软件,将需要转换的面 shp 数据加载进来; 2.打开ArcToo
打开注册表,定位到HKEY_Current_User\Software\ESRI\,添加 Common 项,在Common项下面新建 CodePage项。然后在CodePage项中(注册表右侧)添加一个字符串(REG_SZ),名称: dbfDefault,健值:oem(或者UTF-8),如下图。或者按如下方式运行: ========================================
文章目录一、文件介绍1.shapefile组成2.Main File(.shx)的文件结构3.Index File(.shx)的文件结构4.dBASE(.dbf)的文件结构二、读取 shp 文件 一、文件介绍 1.shapefile组成 ESRI shapefile由一个主文件,一个索引文件组成。和一个dBASE表。主文件是一个直接访问、可变记录长度的文件,其中每条记录都用它的顶 列表来描述一个形状。在索引文件中。每条记录包含对应的主文件记录从主文件开始的偏移量。dBASE表包含每个特性一条记录的特性属性。几何
近期由于工作原因需要读写shape文件,主要涉及几何数据和属性数据,在网上学习了一番,有些问题网上也没解决方案,不过最终自己还是解决了,今天有空在此作一番整理,希望与各位进行分享 一、前期准备 python读写 shp 文件所需的库为py shp ,对应的安装命令为 pip install py shp 二、写出shape文件 本来想先写读取shape文件的,但是手头没有测试用的 shp 数据,就决定先写写出 shp 数据吧,这样就可以造一个读取用的测试数据了 直接上代码吧,通过代码来介绍会比较方便 1、需要导入库,impo
前段 项目 中应甲方要求,需要将地图服务过程简化到越简单越好,由于该 项目 中地图只作为底图,只是看看而已,并未涉及到空间数据分析之类的。所以, 项目 中裁掉了空间数据库这一部分。在没空间数据库的情况下,空间数据只能作为文件的形式存储,其 格式 为同样的 shp 格式 。现将使用GeoServer发布 shp 数据的过程记录下。 1.新建工作区 2.新建数据存储 3.数据发布 4.切片(如果需要的话) 新建工作区...
在很多的GIS 项目 中,应用最多的矢量数据可能就是 shp 、geojson 格式 ,但是,客户给的地理数据总是千奇百怪的,比如CAD数据,并且是没有坐标系的CAD数据!那么如何从CAD数据得到 shp 数据 格式 呢?下面将一步一步介绍,如果有大佬有更好的方法,请不吝赐教,先谢谢了。 事例是从客户给的DWG 格式 数据中提取管线数据,DWG数据的基本情况是:(1)数据有很多层,道路、河道等都有。本来是想把道路、河道等图层删除后
Geoserver是著名的开源GIS软件之一。也是 项目 中常用的地图服务软件。基于geoserver和Openlayers就可以构建一个免费的开源GIS 项目 。 Geoserver除了浏览以外,其他譬如发布、删除等等操作均需要用户登陆,默认的账号和密码为:admin , geoserver . 一、启动Geoserver,并登陆。登陆后界面如图所
shp 文件是一种用于存储矢量数据的文件 格式 ,Spring Boot是Java语言下的一个开源框架,用于快速开发可独立运行的Spring应用程序。那么,解析 shp 文件Springboot是指通过使用Spring Boot技术,可以对 shp 文件进行解析,提取其中的数据,并实现矢量数据的可视化展示和空间分析等功能。 在Spring Boot中,可以使用Java开源库GeoTools来实现 shp 文件的解析和展示。GeoTools是一个开源的Java图形处理库,支持各种矢量和栅格数据 格式 的读写和处理,包括 shp 文件。 通过Spring Boot和GeoTools结合使用,可以快速实现 shp 文件的解析和可视化展示。例如,可以使用GeoTools中的FeatureCollection类来读取 shp 文件中的矢量数据,并使用Spring Boot提供的Web框架,通过请求响应将数据以地图形式呈现在页面上,实现矢量数据的可视化展示。 除此之外,还可以通过GeoTools提供的空间分析和处理功能,实现矢量数据的空间分析。例如,可以使用GeoTools中的BufferProcess类来实现空间缓冲区分析,计算 、线和面的缓冲区,并通过Spring Boot将结果以可视化形式呈现在页面上。 总之,解析 shp 文件Springboot是在Spring Boot框架下结合GeoTools库实现矢量数据的解析、展示和分析的过程。这种方式不仅方便快捷,还可以实现高效的数据处理和可视化展示,为地理信息系统的开发提供便利。
爱钓鱼的歪猴: MSVC不好用,一直报错 CMakeLists.txt:3: error: The CMAKE_CXX_COMPILER: cl is not a full path and was not found in the PATH. To use the JOM generator with Visual C++, cmake must be run from a shell that can use the compiler cl from the command line. This environment is unable to invoke the cl compiler. To fix this problem, run cmake from the Visual Studio Command Prompt (vcvarsall.bat). Tell CMake where to find the compiler by setting either the environment variable "CXX" or the CMake cache entry CMAKE_CXX_COMPILER to the full path to the compiler, or to the compiler name if it is in the PATH. gitlab统计代码量 小杨同学-yyx: 你这边找到解决的方法了吗 gitlab统计代码量 小杨同学-yyx: 请问大佬那个字段是能统计一个项目的代码总量? git 切换远程分支 m0_69862239: