📄 shp文件格式.htm
字号:
NumPoints 小
<BR>注意:X=44+4* NumParts多边形
一个多边形包含一个或多个环。一个环是四或多个点彼此相连组成的一个闭合的彼此不相交的环。一个多边形可能包括多个外环,一个环的vertices的顺序和方向指示环的哪一边是多边形的内部。在多边形中的洞的环的vertices是逆时针方向的。一个环组成的多边形总是顺时针方向的。一个多边形的环是被做为它的一部分的。因为该定义没有禁止有确定坐标的连续的点,shape文件读程序必须解决这种情况。在另外,退化(degenerate)和可能导致零长度的结果是不被允许的。多边形的结构被定义为PolyLine结构,正如下文:
<BR>Polygon <BR>{ <BR> Double[4]
Box
//边界盒
<BR> Integer
NumParts
//部分的数目 <BR> Integer
NumPoints
//点的总数目
<BR> Integer[NumParts]
Parts
//在部分中第一个点的索引
<BR> Point[NumPoints]
Points
//所有部分的点 <BR>} <BR>多边形的域在以下为更详细的描述:
<BR>Box
被存储的多边形的边界盒,以Xmin,Ymin,Xmax,Ymax的顺序存储。
<BR>NumParts 在多边形中环的数目。 <BR>NumPoints
所有环的点的总数目。 <BR>Parts
NumParts长度的数列。为每条环存储它在点数列中的第一个点的索引。数列索引是从0开始的。
<BR>Points
NumPoints长度的数列。在多边形中的每一个环的点被尾到尾存储。环2的点跟在环1的点之后,如此下去。部分数列对每一环保持开始点的数列索引。在环间点之间没有界限。
<BR>图 2中的例子图演示了多边形的表现。该图中的多边形有一个洞,总共是8个vertices。
<BR><BR>关于多边形shape有以下重要注意事项: <BR>环是闭合的(第一个和最后一个vetex必须是一样的)在点数列中环的顺序是不重要的。
<BR>存储在shape文件中的多边形必须是clean,一个clean的多边形是指这样的一个多边形: <BR>1.
没有自交。这意味着属于一个环的一段可能不与另一个环的一段相交。一个多边形
<BR>的环可能在vetices处彼此相交,但不是在沿段处。重合的段被认为是相交的。 <BR>2.
在定义多边形的线的正确一边有多边形的内部。一个观察者以vertex顺序沿环走时,右边的邻居是多边形的内部。一个独环的多边形的vertices因此都是顺时针的。在这些多边形中的洞有一个逆时针的方向。当定义在多边形中的洞同样是顺时针时,发生"Dirty"多边形错误。这会导致内部的重叠。
<BR>图 2 一个多边形的实例 <BR>在此例中,NumParts等于2,NumPoints等于10。注意洞多边形的点的顺序是逆序的。
<BR> 0
5
<BR> 部 分 : 0
5
<BR> 0
1 2 3 4 5
6 7 8 9
<BR> 点
: v1 v2 v3 v4 v1 v5 v8
v7 v6 v5 <BR>表 7 多边形记录内容 <BR>位置
域
值
类型
数目 字节顺序 <BR>0字节
shape类型
5
整数
1
小 <BR>4字节
Box
Box
双精度
4
小 <BR>36字节
NumParts NumParts
整数
1
小 <BR>40字节
NumPoints NumPoints
整数 1
小 <BR>44字节
Parts
Parts
整数
NumParts 小 <BR>X字节
Points
Points
点
NumPoints 小
<BR>注意:X=44+4* NumParts <BR>在X,Y空间中衡量的shape类型该种shape有一个额外的坐标
M,注意"没有数据"的值可以被指定为M的一个值。 <BR>PointM
一个PointM包括一对以X,Y顺序排列的双精度的坐标,再加上衡量M。
<BR> PointM
<BR> {
<BR> Double
X //X 坐标
<BR> Double
Y //Y 坐标
<BR> Double
M //M 衡量
<BR> } <BR>表 8 PointM记录内容 <BR>位置
域
值
类型
数目 字节顺序 <BR>0字节
shape类型
21
整数
1
小 <BR>4字节
X
X
双精度
1
小 <BR>12字节
Y
Y
双精度
1
小 <BR>20字节
M
M
双精度
1
小 <BR>多PointM
一个多PointM代表一个PointM的集合:
<BR> MultiPoint
<BR> {
<BR> Double[4]
Box
//边界盒
<BR> Integer
NumPoints
//点的数目
<BR> Point[NumPoints]
Points
//在集合中的点
<BR> Double[2]
M Range
//衡量M的上下界
<BR> Double[NumPoints]
M Array //衡量
<BR> } <BR>多PointM的域在以下为更详细的描述: <BR>Box
被存储的多PointM的边界盒,以Xmin,Ymin,Xmax,Ymax的顺序存储。
<BR>NumPoints 点的总数目。 <BR>Points
NumPoints长的点的数列。 <BR>M Range
以Mmin,Mmax顺序存储的多PointM的最小,最大值。 <BR>M Array
NumPoints长的衡量的数组。 <BR>表 9 多PointM记录内容
<BR>位置 域
值
类型
数目 字节顺序 <BR>0字节
shape类型
28
整数
1
小 <BR>4字节
Box
Box
双精度 4
小 <BR>36字节
NumPoints NumPoints
整数 1
小 <BR>40字节
Points
Points
点
NumPoints 小 <BR>X*字节
Mmin
Mmin
双精度 1
小 <BR>X+8*字节
Mmax
Mmax
双精度 1
小 <BR>X+16*字节 Marry
Marry
双精度 NumPoints
小 <BR>注意:X = 40+(16* NumPoints) *可选的 <BR>多LineM
一条shape文件的多LineM包含一个或多个部分。指一条包含一个或多个部分的有序的vertices的集合。一个部分是指二个或多个点彼此连接的顺序。部分间彼此相连或不连。部分间彼此可能相交或不相交。
<BR>PolyLineM <BR>{ <BR> Double[4]
Box
//边界盒
<BR> Integer
NumParts
//部分的数目 <BR> Integer
NumPoints
//点的总数目
<BR> Integer[NumParts]
Parts
//在部分中第一个点的索引
<BR> Point[NumPoints]
Points
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -