OpenGIS 的WKB和WKT
OpenGIS的說明書中定義了兩個(gè)表述空間對(duì)象的標(biāo)準(zhǔn)方式:一個(gè)是WKT(the Well-Known Text)形式,另一個(gè)是WKB(the Well-Known Binary)形式。這兩種形式都包括對(duì)象的類型信息和形成對(duì)象的坐標(biāo)信息。下面是用字符來描述要素的空間對(duì)象的例子: ?
POINT(0 0) ?
LINESTRING(0 0,1 1,1 2) ?
POLYGON((0 0,4 0,4 4,0 4,0 0),(1 1 ,2 1, 2 2, 1 2, 1 1)) ?
OpenGIS的說明書中還規(guī)定了空間對(duì)象的內(nèi)部存儲(chǔ)格式要包括一個(gè)空間參考系統(tǒng)標(biāo)識(shí)(SRID)。當(dāng)創(chuàng)建空間對(duì)象并向數(shù)據(jù)插入的時(shí)候需要這樣的SRID。下面是一個(gè)有效創(chuàng)建和插入一個(gè)OGC空間對(duì)象的語句: ? INSERT INTO SPATIALTabLE ( THE_GEOM, THE_NAME ) ?
VALUES ( GeomFromText(''POINT(-126.4 45.32)'', 312), ''A Place'' ) ?
注意:上面的THE_GEOM字段是GEOMETRY類型,該類型的對(duì)象可以用WKB定義,也可以用WKT定義。如:
? geometry = GeomFromWKB(bytea WKB, SRID); ?
geometry = GeometryFromText(text WKT, SRID); ?
所以GeomFromText(''POINT(-126.4 45.32)'', 312)中的POINT(-126.4 45.32)就是WKT,312就是這個(gè)空間對(duì)象的SRID。
?PostGIS的EWKB, EWKT ?
OGC的格式只支持2D的地理要素,而且其相關(guān)聯(lián)的SRID不能嵌入到輸入輸出表達(dá)中。PostGIS的擴(kuò)展格式目前是OGC格式的超集,也就是說只要是有效的WKB或WKT就是有效的EWKB或EWKT。當(dāng)然,如果今后OGC發(fā)布與該擴(kuò)展格式相沖突的新格式,那么這種超集的情況就會(huì)有所變化了。PostGIS的EWKB, EWKT增加了對(duì)3DZ,3DM和4D坐標(biāo)的支持,并可嵌入SRID信息。
下面是一些EWKT的例子: ?
POINT(0 0 0)-- XYZ ?
SRID=32632;POINT(0 0) – XY with SRID ?
由于SRID可以嵌入到EWKT或EWKB中,空間對(duì)象的定義就可以簡化為:
geometry = GeomFromEWKB(bytea EWKB);
geometry = GeomFromEWKT(text EWKT);
那么,相數(shù)據(jù)庫中插入PostGIS空間對(duì)象就可以寫成:
INSERT INTO SPATIALTabLE ( THE_GEOM, THE_NAME )
VALUES ( GeomFromText(''POINT(-126.4 45.32 312)''), ''A Place'' )
總結(jié)
以上是生活随笔為你收集整理的OpenGIS 的WKB和WKT的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 滞回比较器
- 下一篇: 怎么样判断两个IP地址是否在同一个网段