WKT数据示例并与GeoJSON数据对比

WKT(Well-Known Text) 是 OGC(开放地理空间联盟)标准定义的一种文本格式,用来表示空间几何数据。达梦、PostgreSQL(PostGIS)、MySQL 等数据库都支持它。

与 GeoJSON 的对应关系

java 复制代码
GeoJSON(前端用)          ↔       WKT(数据库存)
{"type":"Point",...}      ↔     POINT (...)
{"type":"LineString",...} ↔     LINESTRING (...)
{"type":"Polygon",...}    ↔     POLYGON ((...))

关键在于:GeoJSON 用 [] 包坐标,WKT 用 () 包坐标,且 WKT 里经纬度之间是空格不是逗号。

各种类型的 WKT 示例

1. Point(点)

java 复制代码
POINT (113.324568 23.106682)

注:WKT 里经纬度之间用空格 ,GeoJSON 用逗号

2. LineString(线串)

java 复制代码
LINESTRING (113.1 23.0, 113.15 23.05, 113.2 23.1)

3. Polygon(多边形)

java 复制代码
POLYGON ((113.2 23.0, 113.4 23.0, 113.4 23.2, 113.2 23.2, 113.2 23.0))

首尾相同才能闭合,用双层括号,外面那层是面的边界,里面可以有多个环。

4. Polygon 带洞(有内环)

java 复制代码
POLYGON (
    (0 0, 10 0, 10 10, 0 10, 0 0),       -- 外环:逆时针
    (2 2, 2 8, 8 8, 8 2, 2 2)            -- 内环:顺时针(洞)
)

第二个括号内环是个"洞",环内不算是多边形区域。

5. MultiPoint(多点)

java 复制代码
MULTIPOINT ((113.32 23.10), (113.33 23.11), (113.34 23.12))

6. MultiLineString(多线串)

java 复制代码
MULTILINESTRING ((113.1 23.0, 113.2 23.1), (113.3 23.2, 113.4 23.3))

7. MultiPolygon(多多边形)

java 复制代码
MULTIPOLYGON (((113.2 23.0, 113.3 23.0, 113.3 23.1, 113.2 23.1, 113.2 23.0)), ((113.4 23.2, 113.5 23.2, 113.5 23.3, 113.4 23.3, 113.4 23.2)))

三层括号:最外是 MultiPolygon → 中间是每个 Polygon → 最内是坐标环。

8. GeometryCollection(几何集合)

java 复制代码
GEOMETRYCOLLECTION (POINT (113.32 23.10), LINESTRING (113.1 23.0, 113.2 23.1))

WKT vs GeoJSON 对比速查

对比项 WKT(数据库) GeoJSON(前端)
坐标分隔符 空格 逗号
括号 () []
顺序 经度在前,纬度在后(都一样)
存储场景 达梦 ST_Geometry 字段 Leaflet 传给后端

项目中怎么用

java 复制代码
// 从数据库读到的 WKT
String wktFromDb = "LINESTRING (113.1 23.0, 113.15 23.05, 113.2 23.1)";

// 转成 GeoJSON 返回给前端
String geoJson = GeoSpatialUtil.wktToGeoJson(wktFromDb);
// → {"type":"LineString","coordinates":[[113.1,23.0],[113.15,23.05],[113.2,23.1]]}

// 前端传来的 GeoJSON 转 WKT 存库
String wktToDb = GeoSpatialUtil.geoJsonToWkt(geoJson);
// → LINESTRING (113.1 23.0, 113.15 23.05, 113.2 23.1)
相关推荐
xiangyun619 小时前
【408数据结构 08】队列:循环队列判空判满,408年年考,一次讲清
c语言·开发语言·数据结构·c++·算法
xiangyun619 小时前
【408数据结构 06】双链表、循环链表、静态链表
c语言·开发语言·数据结构·c++·算法
OKkankan10 小时前
LangChain 能力详解!:输出解析、RAG、向量数据库与 Retriever 检索器
数据结构·python·langchain·ai应用
蓝速科技10 小时前
便民服务大厅 AI 数字人一体机场景适配与落地指南丨蓝速科技
大数据·网络·数据结构·人工智能·自然语言处理·数据分析·运维开发
xxwxx__11 小时前
C++ AVL 树深度剖析:平衡二叉搜索树原理、源码与面试考点
数据结构·c++
Logic10111 小时前
C语言/数据结构数组题解:数字列表加一(Plus One)——进位处理与数组扩展
c语言·数据结构·模拟·数组·时间复杂度·算法题·进位
xxwxx__14 小时前
C++ STL set 与 map 全套详解:关联式容器、红黑树底层、代码坑点、刷题实战
数据结构·c++
程曦曦15 小时前
MySQL 生产库误删 98 张表后的时间点恢复实战:从 binlog 解析到资金对账
linux·数据结构·其他·算法·ubuntu·运维开发
郝学胜-神的一滴15 小时前
Effective Python 条款 13:善用星号解包,告别下标切片拆分的坑
服务器·开发语言·数据结构·python·程序人生·pycharm
Logic10115 小时前
C语言/数据结构位运算题解:异或XOR找出流水线上的“独特零件编号“——只出现一次的数字
c语言·数据结构·数组·位运算·时间复杂度·算法题·异或性质