【python】使用wkt格式的數(shù)據(jù)

【python】使用wkt格式的數(shù)據(jù)

wkt

WKT是什么?關(guān)于坐標(biāo)系統(tǒng)的。誰能詳細(xì)解釋一下?

Well-Known Text (WKT) Representation of Spatial Reference Systems:顧名思義用眾所周知的文字形式來描述看見坐標(biāo)參照系統(tǒng),它與EPSG(2005年已經(jīng)換名)的坐標(biāo)文字表述模型一致?;A(chǔ)知識:坐標(biāo)參照系有三種最常見的子類:地心坐標(biāo)系(geocentric cs、GEOCCS),地理坐標(biāo)系(geographic cs、GEOGCS),和投影坐標(biāo)系(projected cs、PROJCS)以及相互之間的關(guān)系,可以參考《坐標(biāo)系、坐標(biāo)參照系、坐標(biāo)變換、投影變換》。

投影參數(shù)內(nèi)容:Ellipsoid 、 Datum ;Projection,可以參考《地圖投影為什么》。

坐標(biāo)系的文字描述的擴(kuò)展BN范式(EBNF)定義如下:<coordinate system> = <projected cs> | <geographic cs> | <geocentric cs><projection> = PROJECTION[\”<name>\”]<parameter> = PARAMETER[\”<name>\”, <value>]<value> = <number><datum> = DATUM[\”<name>\”, <spheroid>]<spheroid> = SPHEROID[\”<name>\”, <semi-major axis>, <inverse flattening>]<semi-major axis> = <number> NOTE: semi-major axis is measured in meters and must be > 0.<inverse flattening> = <number><prime meridian> = PRIMEM[\”<name>\”, <longitude>]<longitude> = <number><angular unit> = <unit><linear unit> = <unit><unit> = UNIT[\”<name>\”, <conversion factor>]<conversion factor> = <number>以下示例說明,參照上述參數(shù),然后比瓢畫葫蘆即可自行用WKT創(chuàng)建坐標(biāo)系。地理坐標(biāo)系的格式:<geographic cs> = GEOGCS[\”<name>\”, <datum>, <prime meridian>, <angular unit>]WGS1984的地理坐標(biāo)系WKT形式:GEOGCS[\”WGS 84\”, DATUM[\”WGS_1984\”, SPHEROID[\”WGS 84\”, 6378137, 298.257223563, AUTHORITY[\”EPSG\”, \”7030\”]], AUTHORITY[\”EPSG\”, \”6326\”]], PRIMEM[\”Greenwich\”, 0, AUTHORITY[\”EPSG\”, \”8901\”]], UNIT[\”degree\”, 0.09433, AUTHORITY[\”EPSG\”, \”9122\”]], AUTHORITY[\”EPSG\”, \”4326\”]]投影坐標(biāo)系的格式:<projected cs> = PROJCS[\”<name>\”, <geographic cs>百科, <projection>, {<parameter>,}* <linear unit>]WGS1984地理坐標(biāo),統(tǒng)一橫軸墨卡托(UTM)投影,**經(jīng)線117E的投影坐標(biāo)系WKT形式:PROJCS[\”WGS 84 / UTM zone 50N\”, GEOGCS[\”WGS 84\”, DATUM[\”WGS_1984\”, SPHEROID[\”WGS 84\”, 6378137, 298.257223563, AUTHORITY[\”EPSG\”, \”7030\”]], AUTHORITY[\”EPSG\”, \”6326\”]], PRIMEM[\”Greenwich\”, 0, AUTHORITY[\”EPSG\”, \”8901\”]], UNIT[\”degree\”, 0.09433, AUTHORITY[\”EPSG\”, \”9122\”]], AUTHORITY[\”EPSG\”, \”4326\”]], PROJECTION[\”Transverse_Mercator\”], PARAMETER[\”latitude_of_origin\”, 0], PARAMETER[\”central_meridian\”, 117], PARAMETER[\”scale_factor\”, 0.9996], PARAMETER[\”false_easting\”, 500000], PARAMETER[\”false_northing\”, 0], UNIT[\”metre\”, 1, AUTHORITY[\”EPSG\”, \”9001\”]], AUTHORITY[\”EPSG\”, \”32650\”]]地心坐標(biāo)系格式相似于地理坐標(biāo)系:<geocentric cs> = GEOCCS[\”<name>\”, <datum>, <prime meridian>, <linear unit>]參數(shù)中出現(xiàn)AUTHORITY是EPSG的玩意,在自定義坐標(biāo)系時可以忽略,我會在后面詳細(xì)介紹EPSG相關(guān)內(nèi)容。WKT更具體的可參考OGC相關(guān)文檔:如SFA、《SF for OLE/COM》等。練習(xí):給出下屬投影坐標(biāo)系參數(shù),請用WKT方式表述。

投影參數(shù):橢球體,Krasovsky_1940;基準(zhǔn)面,北京1954;投影:蘭勃特雙標(biāo)準(zhǔn)緯線,25N,47N;**經(jīng)線,117E。參考答案:PROJCS[\”liongg\”, GEOGCS[\”GCS_Beijing_1954\”, DATUM[\”D_Beijing_1954\”,SPHEROID[\”Krasovsky_1940\”,6378245.0,298.3]], PRIMEM[\”Greenwich\”,0.0], UNIT[\”Degree\”,0.09433]], PROJECTION[\”Lambert_Conformal_Conic\”], PARAMETER[\”False_Easting\”,20500000.0], PARAMETER[\”False_Northing\”,0.0], PARAMETER[\”Central_Meridian\”,0.0], PARAMETER[\”Standard_Parallel_1\”,25.0], PARAMETER[\”Standard_Parallel_2\”,47.0], PARAMETER[\”Scale_Factor\”,1.0], PARAMETER[\”Latitude_Of_Origin\”,0.0], UNIT[\”Meter\”,1.0]]有個偷懶的方法就是用商業(yè)軟件譬如ArcGIS按照參數(shù)新建投影,然后在.prj文件中提取投影內(nèi)容并修改。

MySQL的GIS、GEO入門筆記

探索和學(xué)習(xí)MySQL中GIS相關(guān)功能和特性 這里記錄了學(xué)習(xí)和了解MySQL中GIS特性相關(guān)內(nèi)容的過程。 MySQL**論壇中GIS的舉例 測試數(shù)據(jù)已經(jīng)導(dǎo)入成功,下面開始對GIS相關(guān)函數(shù)和GEOHASH進(jìn)行了解和體驗; mysql中g(shù)eometry類型的簡單使用 MySQL空間數(shù)據(jù)類型 經(jīng)緯度信息存儲在geometry格式的字段中,該字段必須非空。

MySQL8.0前按照longitude-latitude的順序存儲位置 MySQL8.0前按照longitude-latitude的順序存儲位置 MySQL8.0前按照longitude-latitude的順序存儲位置 插入數(shù)據(jù)時候可使用如下語句: MySQL存儲geometry信息的方式采用了25bytes,相比WKB的21bytes,多了4bytes的坐標(biāo)系表示,組成部分如下: WTF字符串格式說明 select ST_GeomFromText(WTF格式字符串); WKT(Well-known text)是一種文本標(biāo)記語言,用于表示矢量幾何對象、空間參照系統(tǒng)及空間參照系統(tǒng)之間的轉(zhuǎn)換。

通過WTF字符串生成geometry的方法: 點: POINT(x y) 線: LINESTRING(x1 y1, x2 y2, x3 y3…) 多邊形: POLYGON((0 0, 10 0, 10 10,0 10,0 0),(5 5,7 5,7 7,5 7,5 5)) 多點集: MULTIPOINT(0 0, 20 20, 60 60) 或 MULTIPOINT((0 0),(5 5),(5 0)) 多線集: MULTILINESTRING((10 10, 20 20), (15 15, 30 15)) 多多邊形集: MULTIPOLYGON(((0 0,10 0,10 10,0 10,0 0)),((5 5,7 5,7 7,5 7, 5 5))) 例如兩點一線組成的幾何集: GEOMETRYCOLLECTION(POINT(10 10), POINT(30 30), LINESTRING(15 15, 20 20)) A geometry is syntactically well-formed if it satisfies conditions such as those in this (nonexhaustive) list: Collections are not empty (except GeometryCollection) 更多內(nèi)容參見 ST_PointFromText(\’POINT(X Y)\’); ST_LineStringFromText(\’LINESTRING(0 0,1 1,2 2)\’); ST_PolygonFromText(\’POLYGON((0 0,10 0,10 10,0 10,0 0),(5 5,7 5,7 7,5 7,5 5))\’); ST_GeomCollFromText(); 更多內(nèi)容參見 參見 Point(x,y) LineString((x1,y1),(x2,y2)…) Polygon(LineString(),LineString()….) 參見 ST_AsText() ST_AsBinary() ST_AsWKT() 參見 ST_Dimension(geom) :返回geom的維度(-1,0,1,2) ST_Envelope(geom) :返回geom的最小外接矩形(MBR) ST_GeometryType(geom) :返回geom的類型 ST_IsEmpty(geom) :該函數(shù)并不能真實的判空,當(dāng)geom為任何有效的幾何值時返回0,無效的幾何值返回1; ST_IsSimple(geom) :當(dāng)geom無任何異常幾何點返回1(如自相交和自切線等),否則返回0 ST_SRID(geom) :返回geom的坐標(biāo)系ID 參見 ST_X(Point) :獲取Point的X值 ST_Y(Point) :獲取Point的Y值 參見 ST_StartPoint(linestrng) : 線的起點 ST_EndPoint(linestring) :返回線的**一個點 ST_IsClosed(linestring或multilinestring) :線是否閉合(若為線,則判斷起點與終點是否一致;若為線組,則判斷組內(nèi)每個元素是否符合閉合線) ST_Length(linestring) :返回線的長度,若入?yún)榫€集,則返回**內(nèi)所有長度的和 ST_NumPoiints(linestring) :返回點的數(shù)量; ST_PointN(linestring,N) :返回第N個點(從1開始) 參見 具體不在一一列舉,主要有計算多邊形面積、中心點、最小外接圓,**內(nèi)接圓等函數(shù),列舉幾個可能會用到的: ST_Area(Poly|mPoly) :返回雙精度的面積或面積的和 \’ST_Centroid(Poly|mPoly)\’:返回數(shù)學(xué)上的中心點 ST_ExteriorRing(Poly) :返回外接圓 參見 ST_Buffer說明 不再列舉,主要有:ST_Buffer(不懂干啥用),ST_ConvexHull(geom)凸包,ST_Dfference(g1,g2)比較差異,ST_Intersecton(g1,g2)交叉點,ST_SymDifference(g1,g2)對稱差分,ST_Union(g1,g2)連接、合并等。 檢查geometry Objects之間的空間關(guān)系的方法。 參見 計算兩個Object之間的空間關(guān)系的函數(shù),有兩個間距離、相交、不相交,包含、相等、相切、重疊、接觸、在內(nèi)等等空間關(guān)系。下面列舉幾個可能會常用的方法: ST_Contains(g1,g2) :g1是否完全包含g2 ST_Within(g1,g2) :g1是否包含于g2中 ST_Distance(g1,g2) :返回g1和g2之間的距離,已坐標(biāo)單位計算的 ST_Equals(g1,g2) :返回g1和g2是否相等 參見 MBRContains(g1,g2) :g1的mbr是否包含g2的mbr MBRWithin(g1,g2) :g1的mbr是否在g2的mbr內(nèi) MBRCoveredBy(g1,g2) :g1的mbr是否被g2的mbr覆蓋 MBRCovers(g1,g2) :g1的mbr是否覆蓋g2的mbr MBRDisjoint(g1,g2) :g1的mbr,g2的mbr是否不相交 MBRIntersects(g1,g2) :g1mbr,g2mbr是否相交 MBREqual(g1,g2) :g1的mbr,g2的mbr的外接是否相等 MBREquals(g1,g2) :g1的mbr,g2的mbr的外接是否相等 MBROverlaps(g1,g2) :g1mbr、g2mbr 其他函數(shù)請參看原文 GeoHash介紹 GeoHash Wiki百科 MySQL中自帶函數(shù) st_geohash(longtude,latitude,max_length) 或 st_geohash(point, max_length) 即可生成某一點的geohash值。

返回一個geohash字符串中的latitude或longitude 返回一個geohash解析出的point數(shù)據(jù) **文檔 通過geometry生成一個GeoJSON Object, select st_asgeojson(geometry,max_length,options); 通過GeoJSON生成GeoMetry對象。 ST_GeomFromGeoJSON(jsonstring, [options [, srid]]) 具體使用方法參見**文檔 **文檔 MySQL中提供的方便空間運(yùn)算的函數(shù)們 select ST_Distance_Spher(geomPoint1,geomPoint2 [, radius]); 此方法用于計算兩點或多個點之間的地球上的距離(是地球球面距離而不是直線距離),返回單位為米, select ST_IsValid(ST_GeomFromText(\’LINESTRING(0 0,1 1)\’)) 判斷入?yún)⑹欠袷欠系乩砦恢妹枋龅母袷?。返?(符合)或者0(不符); 例如: 返回0: select st_isvalid(st_geomfromtext(\’linestring(0 0, -0.00 0, 0.0 0)\’) 返回1: select st_isvalid(st_geomfromtext(\’linestring(0 0,1 1)\’) select st_astext(st_makeenvelope(pt1, pt2)); 返回兩點構(gòu)成的包絡(luò)。

(此計算是基于笛卡爾坐標(biāo)系而非球面) 例如: SELECT ST_AsText ( st_makeenvelope ( st_geomfromtext ( \’point(0 0)\’ ), st_geomfromtext ( \’point(1 1)\’ ) ) ); 返回結(jié)果: POLYGON((0 0,1 0,1 1,0 1,0 0)) 效果說明 JS抽稀算法 select st_simplify(geometry, max_distance); 用道格拉斯-普克算法(抽稀函數(shù))簡化geometry,并返回與原格式相同格式的結(jié)果。 例如,以下點集擬合為直線,步長0.5: SELECT st_simplify ( st_geomfromtext ( \’LINESTRING(0 0,0 1,1 1,1 2,2 2,2 3,3 3)\’ ), 0.5 ) 返回結(jié)果: LINESTRING(0 0, 0 1, 1 1, 2 3, 3 3) 再如,步長1.0: SELECT st_simplify ( st_geomfromtext ( \’LINESTRING(0 0,0 1,1 1,1 2,2 2,2 3,3 3)\’ ), 1.0 ) 返回結(jié)果: LINESTRING(0 0, 3 3) SELECT ST_Validate(geometry); 驗證geometry是符合正確的地理位置信息格式。

oracle 大地坐標(biāo) 怎么存儲WKT坐標(biāo)

WKT可以表示的幾何對象包括:點,線,多邊形,TIN(不規(guī)則三角網(wǎng))及多面體。可以通過幾何**的方式來表示不同維度的幾何對象。

幾何物體的坐標(biāo)可以是2D(x,y),3D(x,y,z),4D(x,y,z,m),加上一個屬于線性參照系統(tǒng)的m值。