GIS工具箱
格式转换

WKT (Well-Known Text) 格式详解与 GeoJSON 互转

WKT 语法规则、支持的几何类型,以及与 GeoJSON 双向转换的实现。

WKTWell-Known TextGeoJSON格式转换

什么是 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 的核心流程包括三个步骤:

  1. 词法分析:将 WKT 文本拆解为类型关键字、括号、坐标数字等 Token。
  2. 构建几何对象:依据 Token 流递归构建内存中的几何对象树。
  3. 序列化:将几何对象按 GeoJSON 规范序列化为 JSON 输出。

逆向转换(GeoJSON 转 WKT)则按相反方向执行,将 JSON 结构重新拼接为 WKT 文本。

自研解析器的优势

本工具内置自研 WKT 解析器,具有以下优势:

  • 零第三方依赖:完全自行控制解析逻辑,避免引入庞大的依赖库。
  • 完全可控:可针对业务场景定制解析规则与异常处理。
  • 轻量高效:仅包含必要逻辑,体积小、执行快。

应用场景

  • 空间数据库查询:在 PostGIS 中使用 ST_GeomFromText() 将 WKT 转为几何对象,进行空间查询与分析。
  • WFS 服务:Web Feature Service 常以 WKT 表示查询过滤条件中的几何范围。
  • 几何数据交换:在不同 GIS 系统之间以文本形式交换几何数据,保证可读性与兼容性。
提示:进行 WKT 与 GeoJSON 互转时,请务必留意坐标顺序,避免经纬度颠倒导致几何位置错误。

如果你需要在线进行 WKT 与 GeoJSON 的互转,可以使用我们的 WKT 转换工具,支持上述所有几何类型,实时解析与转换。

本文涉及的工具

打开工具 →

相关文章