前言
在 WebGIS 开发中,数据格式的转换与兼容是关键挑战。WKT(Well-Known Text)和 GeoJSON 是两种常见的地理空间数据格式。WKT 广泛用于数据存储与交换,而 GeoJSON 以其简洁的 JSON 结构更契合 Web 开发需求。本文将探讨 WKT 转换为 GeoJSON 的多种方法,并结合 Leaflet 地图库解析如何将转换后的数据加载到前端进行渲染。
一、WKT 后台转换实现
本节介绍基于 PostGIS 空间数据库和 Java 后台实现 WKT 转为 GeoJSON。
1、基于 PostGIS 实现
如果开发数据库中包含空间数据库,可直接利用空间函数处理。例如查询空间属性的 WKT 格式:
SELECT ST_AsEWKT(geom) FROM biz_ceic_earthquake LIMIT 10;
若要转换为 GeoJSON,可使用 ST_AsGeoJSON 函数:
SELECT ST_AsEWKT(geom), ST_AsGeoJSON(geom) FROM biz_ceic_earthquake LIMIT 10;
返回结果集中第二列即为 GeoJSON 类型。结合 SQL 查询将结果返回给前端即可。
2、GeoTools 实现
基于 GeoTools 组件实现纯后台转换逻辑。首先在 Pom.xml 中引入依赖:
<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>
核心转换代码如下:
package com.yelang.project.geotools.wkt2json;
import org.geotools.geojson.geom.GeometryJSON;
import org.geotools.geometry.jts.JTSFactoryFinder;
import org.locationtech.jts.geom.Geometry;
import org.locationtech.jts.geom.GeometryFactory;
import org.locationtech.jts.io.WKTReader;
import java.io.StringWriter;
public class WKTToGeoJSON {
public static String wktToJson(String wkt) {
String json = null;
try {
GeometryFactory geometryFactory = JTSFactoryFinder.getGeometryFactory(null);
WKTReader reader = new WKTReader(geometryFactory);
Geometry geometry = reader.read(wkt);
GeometryJSON geometryJson = new GeometryJSON();
StringWriter writer = new StringWriter();
geometryJson.write(geometry, writer);
json = writer.toString();
} catch (Exception e) {
e.printStackTrace();
}
return json;
}
public static void main(String[] args) {
String wkt = "POLYGON ((0 0, 0 1, 1 1, 1 0, 0 0))";
String geoJson = wktToJson(wkt);
System.out.println(geoJson);
}
}
该代码使用 WKTReader 读取字符串转为 Geometry 对象,再通过 GeometryJSON 格式化输出。
二、wellknown.js 转换
若仅有前端环境且无后台支撑,可集成 wellknown.js 组件进行 WKT 到 GeoJSON 的转换。
1、wellknown.js 是什么?
wellknown.js 是 Mapbox 开源的成熟组件,用于解析和序列化 Well-Known Text 到 GeoJSON。支持 Point、MultiPoint、LineString、Polygon 等几何体。
2、wellknown.js 的方法
核心方法包括 parse(wkt) 和 stringify(geojson)。parse 方法将 WKT 字符串转换为 GeoJSON 几何对象,是前端转换的基础。
三、在 Leaflet.js 中集成 wellknown.js
1、资源引入
在 Leaflet.js 页面中通过 Script 标签引入 wellknown.js:
<script src="/pcwater/static/js/wellknown.js"></script>
2、将 wkt 转为 geojson
引入资源后调用 API 实现转换并加载到 Leaflet 地图:
var myStyle = {color:"red",weight:5,"opacity":1, "fillOpacity": 0};
const geojson = wellknown.parse(_tempPolyline);
var areaLayer = L.geoJSON(geojson,{style:myStyle}).addTo(showLayerGroup);
指定展示样式后调用 L.geoJSON 方法实现空间属性展示。若无后端支持,可采用此纯前端方案。
四、总结
本文介绍了三种 WKT 转 GeoJSON 的实现方式:基于 PostGIS 的 SQL 函数、Java GeoTools 库以及前端 wellknown.js 组件。结合 Leaflet 地图库,演示了如何将转换后的 GeoJSON 数据加载至前端进行渲染与交互,涵盖后台数据库处理、后端代码实现及纯前端集成流程。

