目录

一、引言

二、WKT、WKB、GeoJSON

三、WKT与GeoJSON

四、总结


 

 

一、引言

 

首先明确一点,WKT与WKB是OGC中的简单服务标准SFS(Simple Features Interface Standard),但是GeoJSON并不是OGC中的标准。

No, GeoJSON is not an OGC standard:

IETF Geographic JSON Working Group

The Internet Engineering Task Force, in conjunction with the original specification authors, has formed the Geographic JSON WG to standardize the format. Work continues on GitHub at https://github.com/geojson/draft-geojson.

 

 

二、WKT、WKB、GeoJSON

 

WKT(Well-known text)是开放地理空间联盟OGC(Open GIS Consortium )制定的一种文本标记语言,用于表示矢量几何对象、空间参照系统及空间参照系统之间的转换。

WKB(well-known binary) 是WKT的二进制表示形式,解决了WKT表达方式冗余的问题,便于传输和在数据库中存储相同的信息。

GeoJSON 一种JSON格式的Feature信息输出格式,它便于被JavaScript等脚本语言处理,OpenLayers等地理库便是采用GeoJSON格式。此外,TopoJSON等更精简的扩展格式。

 

 

三、WKT与GeoJSON

 

WKT与geojson分为点、线、面、几何集合四种:

1、Point, MultiPoint

2、LineString, MultiLineString

3、Polygon, MultiPolygon

4、GeometryCollection

可以由多种Geometry组成,如:GEOMETRYCOLLECTION(POINT(4 6),LINESTRING(4 6,7 10))

  示例:   

Type

Shape

WKT

GeoJSON

Point

 

POINT (30 10)

{ "type": "Point", "coordinates": [30, 10] }

LineString

 

LINESTRING (30 10, 10 30, 40 40)

{ "type": "LineString", "coordinates": [ [30, 10], [10, 30], [40, 40] ] }

Polygon

 

POLYGON ((30 10, 40 40, 20 40, 10 20, 30 10))

{ "type": "Polygon", "coordinates": [ [[30, 10], [40, 40], [20, 40], [10, 20], [30, 10]] ] }

 

POLYGON ((35 10, 45 45, 15 40, 10 20, 35 10),
(20 30, 35 35, 30 20, 20 30))

{ "type": "Polygon", "coordinates": [ [[35, 10], [45, 45], [15, 40], [10, 20], [35, 10]], [[20, 30], [35, 35], [30, 20], [20, 30]] ] }

MultiPoint

  

MULTIPOINT ((10 40), (40 30), (20 20), (30 10))

 

{ "type": "MultiPoint", "coordinates": [ [10, 40], [40, 30], [20, 20], [30, 10] ] }

 

MULTIPOINT (10 40, 40 30, 20 20, 30 10)

 

MultiLineString

  

MULTILINESTRING ((10 10, 20 20, 10 40),
(40 40, 30 30, 40 20, 30 10))

 

{ "type": "MultiLineString", "coordinates": [ [[10, 10], [20, 20], [10, 40]], [[40, 40], [30, 30], [40, 20], [30, 10]] ] }

 

MultiPolygon

  

MULTIPOLYGON (((30 20, 45 40, 10 40, 30 20)),
((15 5, 40 10, 10 20, 5 10, 15 5)))

 

{ "type": "MultiPolygon", "coordinates": [ [ [[30, 20], [45, 40], [10, 40], [30, 20]] ], [ [[15, 5], [40, 10], [10, 20], [5, 10], [15, 5]] ] ] }

MULTIPOLYGON (((40 40, 20 45, 45 30, 40 40)),
((20 35, 10 30, 10 10, 30 5, 45 20, 20 35),
(30 20, 20 15, 20 25, 30 20)))

{ "type": "MultiPolygon", "coordinates": [ [ [[40, 40], [20, 45], [45, 30], [40, 40]] ], [ [[20, 35], [10, 30], [10, 10], [30, 5], [45, 20], [20, 35]], [[30, 20], [20, 15], [20, 25], [30, 20]] ] ] }

WKT与geojson的主要区别是wkt是单独用来表示空间点线面数据的,而geojson还可以用来表示空间数据和属性数据的集合,下面是shp面数据转geojson,其中还包含图层信息等,而wkt并不能表示这个。

{
"type": "FeatureCollection",
"name": "a",
"crs": { "type": "name", "properties": { "name": "urn:ogc:def:crs:EPSG::3857" } },
"features": [
{ "type": "Feature", "properties": { "AREA": 0.0, "PERIMETER": 0.016, "BOU2_4M_": 914, "BOU2_4M_ID": 3089, "ADCODE93": 810000, "ADCODE99": 810000, "NAME": "棣欐腐鐗瑰埆琛屾斂鍖" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 12720007.326881121844053, 2544771.959127825684845 ], [ 12720092.256912549957633, 2545226.735669989138842 ], [ 12720510.112667175009847, 2545228.571321710944176 ], [ 12720666.383925, 2544938.081929029431194 ], [ 12720007.326881121844053, 2544771.959127825684845 ] ] ] } },
{ "type": "Feature", "properties": { "AREA": 0.0, "PERIMETER": 0.013, "BOU2_4M_": 915, "BOU2_4M_ID": 3090, "ADCODE93": 810000, "ADCODE99": 810000, "NAME": "棣欐腐鐗瑰埆琛屾斂鍖" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 12730249.039371021091938, 2544414.938326342497021 ], [ 12730198.930652478709817, 2544711.384370831772685 ], [ 12730315.28479553386569, 2544832.534102902282029 ], [ 12730576.019992018118501, 2544807.065052719321102 ], [ 12730715.30524355918169, 2544607.902998786885291 ], [ 12730353.503309676423669, 2544404.842732572928071 ], [ 12730249.039371021091938, 2544414.938326342497021 ] ] ] } }
]
}

 

WKB是采用二进制存储表示点线面等

 

 

四、总结

 

  • WKT、WKB与GeoJSON格式分类与基本概念;

 

  • WKT与GeoJSON格式的区别;
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐