目录
一、引言
首先明确一点,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), | { "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), | { "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)), | { "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)), | { "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是采用二进制存储表示点线面等