解释shapefile的shx和shp文件之间的区别?


11

我正在寻找关于shp和shx文件差异的更深入的解释,但收效甚微。我的意思是,除了“ shp包含几何图形-shx包含几何图形的索引”之外。

我之所以问,是因为最近在QGIS中工作时,我做了两项观察,使我对这些文件扩展名的确切差异产生了疑问:

  1. QGIS可以打开并显示shx和shp,并且每个文件的输出(显示)看起来几乎相同,
  2. 但并非完全如此-我注意到,有时匹配的shx / shp文件相对于彼此显示略微“偏离边缘”。这似乎不是一个投影问题,他们只是没有在彼此完全相同的位置绘制。

这些观察使我好奇为什么存在这些显示差异,以及为什么QGIS可以以与shp相同的方式打开和操作shx,以前我的理解是,如果可以的话,shp是“主”文件,但是需要.dbf和.shx才能作为单个完整实体正常运行。



Answers:


19

关于shapefile格式的权威参考是ESRI Shapefile技术说明

将其描述shx为“索引”是一种误导。而是直接访问偏移量文件。中没有数据shx,只有前一百个字节和记录号的克隆,并且到中该记录的起始字节有偏移shp。属性的唯一位置是dbf(独立的-尽管有“知识”,shx但不与shpand 绑定dbf,只有记录号可以做到)。

shapefile可能具有“间隙”,shp这是shx必不可少的,但实际上Esri工具将​​重写整个间隙shpshx从而消除了通过编辑记录创建的间隙。在大多数情况下,shx如果内容丢失,可以恢复;shp或不能说相同的话dbf

的命名shpshx是的神器VFILE宽度操作系统,首先由ESRI移植到Unix上,VAX / VMS,通用数据,和IBM,然后到Microsoft Windows的PrImeOS的直接访问模块变量。的sbn/ sbx空间索引对共享相同的命名惯例(尽管这些不是shape文件规范内记录)。在原始的VFILEFORTRAN库中,仅命名了基本文件,而带有结束x符的偏移文件仅在文件创建时出现。


1
以后:从The index file (.shx) contains a 100-byte header followed by 8-byte, fixed-length records. Figure 4 illustrates the index file organization.逻辑上讲,它类似于数据库索引a data structure that improves the speed of data retrieval operations
user30184 '18

2
不,shx绝对不是空间索引。
文斯

1
shx实际上减慢串行访问(更多的I / O),但它确实使直接访问可能的,这可以被认为是一个进步。
文斯

1
“ ...,仅是前一百个字节和记录号的副本...”“ ... shx不会将shp和dbf绑定在一起,只有记录号可以做到这一点”。首先,您说“记录号”在.shx内。稍后您说.shx不会将.shp和.dbf绑定在一起,但是该“记录号”可以。如果“记录号”将两个引用格式联系在一起,并且是.shx的一部分,那么为什么不能说.shx与.shp和.dbf联系呢?这部分回答让我感到困惑。你能澄清一下吗?Tks。
安德烈·席尔瓦

2
记录号同时出现在shp和中shx。它存在于dbf记录大小乘以标头记录末尾的隐式字节偏移量(表的40个字节,其中包括一个字段计数,每个字段40个附加字节)的距离。我已经写shape文件的读者和作家两个“C”和Java,并且它是链接程序的循环计数变量shp/ shxdbf。在shx提供记录编号的联动,通过与RECNO完整性检查偏移到的开始shp记录,仅此而已。
文斯

12

可以从https://www.esri.com/library/whitepapers/pdfs/shapefile.pdf规范中读取,Shx当然不会在地图上单独显示任何内容。

您确实是对的,可以通过使用QGIS 3.0.3选择.shx部分来打开shapefile,但是我看不到位置的任何区别。我相信shapefile仍然通过相同的路径打开,并且结果相同。如果您可以做一个测试案例来再现不同几何位置的问题,请创建关于该问题的QGIS故障单。

如果删除.shp部分,将会看到QGIS不会单独打开.shx。


我的错,我再次检查了相同的文件,但确实是投影不匹配。当我重新对齐它们时,同一层的shx和shp版本对齐,并且与预期的相同。有趣的是,QGIS允许将.shx和.shp都上传到同一项目,并且它们显示各自的源路径,但是正如其他人指出的那样,输出的几何形状完全相同,因为它们的确是同一文件。
玛姬

2

.shx.shp文件的索引。

两者都需要能够打开.shp文件。如果.shx在QGIS中打开.shp文件,它将打开该文件。如果关闭,则存在投影问题。

ShapeFile需要三个组件:

  1. .shp -存储几何
  2. .shx -存储索引
  3. .dbf -存储属性

.prj通常建议使用一个文件,其中存储了投影信息。可以有其他文件与ShapeFile相关联,但并非绝对需要这些文件。

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.