在 WebGIS 开发中,数据格式转换是常见挑战。WKT(Well-Known Text)和 GeoJSON 作为两种主流地理空间数据格式,前者常用于数据库存储,后者则是前端渲染的标准。本文将探讨几种高效的 WKT 转 GeoJSON 方案,并结合 Leaflet 实现地图加载。
后端转换方案
如果拥有后台支撑,利用空间数据库或 Java 库处理是最稳妥的方式。
基于 PostGIS 实现
若使用 PostgreSQL 配合 PostGIS 扩展,可以直接利用内置函数完成转换,无需额外代码逻辑。查询 WKT 格式通常使用 st_aswkt,而转为 GeoJSON 则直接使用 st_asgeojson。
select st_aswkt(geom), st_asgeojson(geom) from biz_ceic_earthquake limit 10;
执行后返回结果集中,第二列即为标准的 GeoJSON 对象。这种方式性能最高,适合大数据量场景,直接通过 SQL 将结果返回给前端即可。
基于 GeoTools 实现
对于非空间数据库环境,或者需要在应用层统一处理的情况,Java 生态中的 GeoTools 是首选。它提供了完整的 OGC 标准支持。
首先在 Maven 依赖中加入 GeoTools 和 JTS 核心组件:
<dependency>
<groupId>org.geotools</groupId>
<artifactId>gt-geojson</artifactId>
<version>28.2</version>
</dependency>
<dependency>
<groupId>org.locationtech.jts</groupId>
<artifactId>jts-core</artifactId>
<version>1.19.0</version>
</dependency>
核心转换逻辑如下,主要流程是读取 WKT 字符串生成 Geometry 对象,再序列化为 GeoJSON 字符串:
package com.example.wkt2json;
import org.geotools.geojson.geom.GeometryJSON;
org.geotools.geometry.jts.JTSFactoryFinder;
org.locationtech.jts.geom.Geometry;
org.locationtech.jts.geom.GeometryFactory;
org.locationtech.jts.io.WKTReader;
java.io.StringWriter;
{
String {
;
{
JTSFactoryFinder.getGeometryFactory();
(geometryFactory);
reader.read(wkt);
();
();
geometryJson.write(geometry, writer);
json = writer.toString();
} (Exception e) {
e.printStackTrace();
}
json;
}
{
;
System.out.println(wktToJson(wkt));
}
}


