什么是 WKT
WKT(Well-Known Text,熟知文本)是由 OGC(开放地理空间信息联盟)制定的一种几何对象文本表示标准。它以纯文本形式描述矢量几何,具有可读性强、跨平台兼容、易于在数据库和 Web 服务之间传输的特点。WKT 广泛应用于 PostGIS、SpatiaLite 等空间数据库,以及 WFS、WMS 等 OGC Web 服务中,是地理空间数据交换的基础格式之一。
支持的几何类型及语法
WKT 支持完整的 OGC 几何模型,涵盖简单几何与集合类型:
点类型
- POINT:单点,语法为
POINT(x y) - MULTIPOINT:多点,语法为
MULTIPOINT((x y), (x y))
线类型
- LINESTRING:折线,由有序点序列组成:
LINESTRING(x y, x y, ...) - MULTILINESTRING:多折线:
MULTILINESTRING((x y, x y), (x y, x y))
面类型
- POLYGON:多边形,外环在前、内环(洞)在后,首尾坐标需闭合:
POLYGON((x y, x y, x y, x y)) - MULTIPOLYGON:多多边形:
MULTIPOLYGON(((x y, ...)), ((x y, ...)))
几何集合
- GEOMETRYCOLLECTION:可混合包含不同几何类型:
GEOMETRYCOLLECTION(POINT(...), LINESTRING(...))
WKT 与 GeoJSON 的区别
虽然两者都用于描述几何数据,但在格式和约定上存在显著差异:
- 坐标顺序:WKT 写作
(x y),即(经度 纬度);GeoJSON 使用[经度, 纬度]数组表示。 - 数据结构:WKT 是纯文本字符串;GeoJSON 是结构化的 JSON 对象。
- 存储方式:WKT 适合数据库存储与 SQL 查询;GeoJSON 适合 Web 传输与前端渲染。
转换原理
将 WKT 转换为 GeoJSON 的核心流程包括三个步骤:
- 词法分析:将 WKT 文本拆解为类型关键字、括号、坐标数字等 Token。
- 构建几何对象:依据 Token 流递归构建内存中的几何对象树。
- 序列化:将几何对象按 GeoJSON 规范序列化为 JSON 输出。
逆向转换(GeoJSON 转 WKT)则按相反方向执行,将 JSON 结构重新拼接为 WKT 文本。
自研解析器的优势
本工具内置自研 WKT 解析器,具有以下优势:
- 零第三方依赖:完全自行控制解析逻辑,避免引入庞大的依赖库。
- 完全可控:可针对业务场景定制解析规则与异常处理。
- 轻量高效:仅包含必要逻辑,体积小、执行快。
应用场景
- 空间数据库查询:在 PostGIS 中使用
ST_GeomFromText()将 WKT 转为几何对象,进行空间查询与分析。 - WFS 服务:Web Feature Service 常以 WKT 表示查询过滤条件中的几何范围。
- 几何数据交换:在不同 GIS 系统之间以文本形式交换几何数据,保证可读性与兼容性。
提示:进行 WKT 与 GeoJSON 互转时,请务必留意坐标顺序,避免经纬度颠倒导致几何位置错误。
如果你需要在线进行 WKT 与 GeoJSON 的互转,可以使用我们的 WKT 转换工具,支持上述所有几何类型,实时解析与转换。