多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php開源 > 綜合技術 > GIS中的WKB介紹

GIS中的WKB介紹

來源:程序員人生   發布時間:2016-03-01 08:39:03 閱讀次數:7526次

GIS中的WKB介紹

WKB的全稱是The Well-known Binary,也簡稱WKB,OGC與ISO/TC211都做出了一樣的規范,它是用來幾何體的表達。即用連續的2進制流來表達幾何體,這樣在GIS互操作方面也有好處?,F代GIS軟件的底層模塊中可以說都有關于WKB解析代碼。在2進制存儲中有大尾端和小尾端之分,通常在2進制流的第1個字節就指定,這樣在這個字節以后的字節流就能夠依照相應的大小尾端模式進行解析。分大小尾端是為了適應不同平臺環境。在1些開源和商業GIS軟件中都支持幾何體的WKB表示,這樣做也是為了異構平臺之間互操作。


基本塊的定義以下,這些基本定義在后面的幾何體建模中會用到:

Point {

double  x;

double  y}


PointZ {

double  x;

double  y;

double  z}


PointM {

double  x;

double  y;

double  m}


PointZM{

double  x;

double  y;

double  z;

double  m}


LinearRing{

uint32  numPoints;

Point  points[numPoints]}


LinearRingZ{

uint32  numPoints;

PointZ  points[numPoints]}


LinearRingM{

uint32  numPoints;

PointM  points[numPoints]}


LinearRingZM{

uint32  numPoints;

PointZM  points[numPoints]}



//字節序

enum  WKBByteOrder {

wkbXDR =0, // 大尾端

wkbNDR =1 // 小尾端

}


下面表示幾何體的整型的數值,用枚舉表示。

enum  WKBGeometryType {

wkbPoint  = 1,

wkbLineString  = 2,

wkbPolygon  = 3,

wkbTriangle  = 17

wkbMultiPoint  = 4,

wkbMultiLineString  = 5,

wkbMultiPolygon  = 6,

wkbGeometryCollection  = 7,

wkbPolyhedralSurface  = 15,

wkbTIN  = 16

wkbPointZ  = 1001,

wkbLineStringZ  = 1002,

wkbPolygonZ  = 1003,

wkbTrianglez = 1017

wkbMultiPointZ  = 1004,

wkbMultiLineStringZ  = 1005,

wkbMultiPolygonZ  = 1006,

wkbGeometryCollectionZ  = 1007,

wkbPolyhedralSurfaceZ  = 1015,

wkbTINZ  = 1016

wkbPointM  = 2001,

wkbLineStringM  = 2002,

wkbPolygonM  = 2003,

wkbTriangleM  = 2017

wkbMultiPointM  = 2004,

wkbMultiLineStringM  = 2005,

wkbMultiPolygonM  = 2006,

wkbGeometryCollectionM  = 2007,

wkbPolyhedralSurfaceM  = 2015,

wkbTINM  = 2016

wkbPointZM  = 3001,

wkbLineStringZM  = 3002,

wkbPolygonZM  = 3003,

wkbTriangleZM  = 3017

wkbMultiPointZM  = 3004,

wkbMultiLineStringZM  = 3005,

wkbMultiPolygonZM  = 3006,

wkbGeometryCollectionZM  = 3007,

wkbPolyhedralSurfaceZM  = 3015,

wkbTinZM  = 3016,

}


以下就是各個幾何體的定義了。

(1)   點


主要包括字節序和幾何體類型,接著后面是坐標總共是1+4+16=21個字節

WKBPoint{

byte  byteOrder;                        //字節序

static  uint32  wkbType= 1;             //幾何體類型

Point  point}                             //點的坐標


WKBPointZ{

byte  byteOrder;

static  uint32  wkbType = 1001;

PointZ  point}


WKBPointM{

byte  byteOrder;

static  uint32  wkbType= 2001;

PointM  point}


WKBPointZM{

byte  byteOrder;

static  uint32  wkbType= 3001;

PointZM  point}


(2)線串,即折線

WKBLineString{

byte  byteOrder;                               //字節序

static  uint32  wkbType = 2;                    //幾何體類型

uint32  numPoints;                                  //點的個數

Point  points[numPoints]}                 //點的坐標數組


總的字節大小

1+4+4+ numPoints*sizeof(Point)字節


WKBLineStringZ{

byte  byteOrder;

static  uint32  wkbType = 1002;

uint32  numPoints;

PointZ  points[numPoints]}


WKBLineStringM{

byte  byteOrder;

static  uint32  wkbType= 2002;

uint32  numPoints;

PointM  points[numPoints]}


WKBLineStringZM{

byte  byteOrder;

static  uint32  wkbType= 3002;

uint32  numPoints;

PointZM  points[numPoints]}


(2)   多邊形


所占的字節大小是:1+4+4+ numRings*(4 + LinearRing.numPoints*sizeof(Point))

WKBPolygon{

byte  byteOrder;                               //字節序

static  uint32  wkbType= 3;                    //幾何體類型

uint32  numRings;                                   //線串的個數

LinearRing rings[numRings]}           //線串(環)的數組


WKBPolygonZ{

byte  byteOrder;

static  uint32  wkbType= 1003;

uint32  numRings;

LinearRingZ  rings[numRings]}


WKBPolygonM{

byte  byteOrder;

static  uint32  wkbType = 2003;

uint32  numRings;

LinearRingM  rings[numRings]}


WKBPolygonZM{

byte  byteOrder;

static  uint32  wkbType = 3003;

uint32  numRings;

LinearRingZM  rings[numRings]}


(4)3角形注:當前主流GIS軟件中把這個放在TIN中建模

WKBTriangle{

byte  byteOrder;                               //字節序

static  uint32  wkbType= 17;                  //幾何體的類型

uint32  numRings;                                   //環的個數

LinearRing rings[numRings]}           //環的數組


WKBTriangleZ{

byte  byteOrder;

static  uint32  wkbType= 1017;

uint32  numRings;

LinearRingZ rings[numRings]}


WKBTriangleM{

byte  byteOrder;

Static  uint32  wkbType= 2017;

uint32  numRings;

LinearRingM  rings[numRings]}


WKBTriangleZM{

Byte  byteOrder;

static  uint32  wkbType= 3017;

uint32  numRings;

LinearRingZM  rings[numRings]}


(5)多面體表面

WKBPolyhedralSurface{

bytebyteOrder;                                        //字節序

staticuint32 wkbType = 15;                       //幾何體類型

uint32numPolygons;                                //多邊形數目

WKBPolygonpolygons[numPolygons]}      //多邊形的數組


WKBPolyhedralSurfaceZ{

bytebyteOrder;

staticuint32 wkbType=1015;

uint32numPolygons;

WKBPolygonZpolygons[numPolygons]}


WKBPolyhedralSurfaceM{

bytebyteOrder;

staticuint32 wkbType=2015;

uint32numPolygons;

WKBPolygonMpolygons[numPolygons]}


WKBPolyhedralSurfaceZM{

bytebyteOrder;

staticuint32 wkbType=3015;

uint32numPolygons;

WKBPolygonZMpolygons[numPolygons]}


(6)不規則3角網(TIN)貌似1般3角網和矢量數據的幾何模型位于同1層次上,所以目前很少看到有GIS軟件這樣建模的。僅僅是自己的觀點


WKBTIN {

bytebyteOrder;                                               //字節序

staticuint32 wkbType = 16;                              //幾何體的類型

uint32numPolygons;                                       //多邊形的數目

WKBPolygonpolygons[numPolygons]}             //多邊形數組


WKBTINZ{

bytebyteOrder;

staticuint32 wkbType=1016;

uint32numPolygons;

WKBPolygonZpolygons[numPolygons]}


WKBTINM{

bytebyteOrder;

staticuint32 wkbType=2016;

uint32numPolygons;

WKBPolygonMpolygons[numPolygons]}


WKBTINZM{

bytebyteOrder;

staticuint32 wkbType=3016;

uint32numPolygons;

WKBPolygonZMpolygons[numPolygons]}


(7)多點

WKBMultiPoint{

byte  byteOrder;                               //字節序

staticuint32 wkbType=4;                    //幾何體類型

uint32  numPoints;                                  //點的個數

WKBPoint points[numPoints]}         //點的數組


WKBMultiPointZ{

Byte  byteOrder;

Static  uint32  wkbType=1004;

uint32  numPoints;

WKBPointZ  points[numPoints]}


WKBMultiPointM{

byte  byteOrder;

static  uint32  wkbType=2004;

uint32  numPoints;

WKBPointM  points[numPoints]}


WKBMultiPointZM{

byte  byteOrder;

Static  uint32  wkbType=3004;

uint32  numPoints;

WKBPointZM  points[numPoints]}


(8)多線串

WKBMultiLineString{

byte  byteOrder;                                                    //字節序

staticuint32 wkbType = 5;                                       //幾何體類型

uint32  numLineStrings;                                        //線串的個數

WKBLineString  lineStrings[numLineStrings]}         //線串數組


WKBMultiLineStringZ{

byte  byteOrder;

static  uint32  wkbType= 1005;

uint32  numLineStrings;

WKBLineStringZ  lineStrings[numLineStrings]}


WKBMultiLineStringM{

byte  byteOrder;

static  uint32  wkbType = 2005;

uint32  numLineStrings;

WKBLineStringM  lineStrings[numLineStrings]}


WKBMultiLineStringZM{

byte  byteOrder;

static  uint32  wkbType = 3005;

uint32  numLineStrings;

WKBLineStringZM  lineStrings[numLineStrings]}


(9)多多邊形

WKBMultiPolygon{

bytebyteOrder;                                        //字節序

staticuint32 wkbType = 6;                         //幾何體類型

uint32numPolygons;                                //多邊形數目

WKBPolygonpolygons[numPolygons]}      //多邊形數組


WKBMultiPolygonZ{

bytebyteOrder;

staticuint32 wkbType = 1006;

uint32numPolygons;

WKBPolygonZpolygons[numPolygons]}


WKBMultiPolygonM{

bytebyteOrder;

staticuint32 wkbType = 2006;

uint32numPolygons;

WKBPolygonMpolygons[numPolygons]}


WKBMultiPolygonZM{

bytebyteOrder;

staticuint32 wkbType = 3006;

uint32numPolygons;

WKBPolygonZMpolygons[numPolygons]}




下圖是1個多邊形的WKB布局。該圖表示這個多邊形的WKB存儲是小尾端,有兩個環,并且兩個環的點的個數都是3。

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 亚洲高清在线观看视频 | 亚洲欧美日韩久久精品第一区 | 在线观看免费精品国自产 | 性欧美18一19 | 国产又黄又爽又色的免费 | 爱爱视频日本 | 最新亚洲精品 | 亚洲自拍偷拍小说 | 亚洲色图网站 | 自拍自录videosfree自拍自录 | 4虎1515hh永久免费 | 国产日韩欧美亚洲 | 国产国拍亚洲精品av | 日本做爰免费大片视频 | 色性欧美| 亚洲另类春色小说 | 亚洲综合天堂 | 国产欧美一区二区三区在线看 | xxfree性人妖hd| 亚洲天堂成人网 | 欧美性受xxxx黑人xxxx | 午夜免费视频网站 | 波多野结衣一区二区在线 | 国产福利视频一区 | 欧美xxxx做受欧美护士 | 最近中文字幕高清mv免费 | 巨大黑人极品videos精品 | 欧美黑人巨大videos极品 | 福利影院第一页 | 欧美日韩久久毛片 | 久久黄色毛片 | 在线免费观看亚洲 | 欧美孕妇乱大交xxxx | 最近中文字幕高清mv免费 | 97久久影院| 尤物视频在线观看视频 | 伊人网网 | 老司机深夜福利在线 | 最近中文字幕高清字幕 | 和同事激情中文版在线观看 | 久久精品国产69国产精品亚洲 |