?? 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 + -