一、WKT 后台转换实现
本节以 PostGIS 空间数据库和 Java 后台为例,介绍如何基于空间数据库和 Geotools 库实现 WKT 转为 GeoJSON。
1、基于 PostGIS 实现
如果大家的开发数据库中有空间数据库的话,我们可以直接利用空间数据的空间函数来进行处理。使用以下 SQL 语句可以查询空间属性的 WKT 格式:
select ST_AsEWKT(geom) from biz_ceic_earthquake limit 10;
如果要实现对应的 WKT 转为 GeoJSON,只需要使用 st_asgeojson 函数即可完成转换。示例 SQL 查询语句如下:
select ST_AsEWKT(geom), ST_AsGeoJSON(geom) from biz_ceic_earthquake limit 10;
第二列就是我们需要的 GeoJSON 类型。有了这个 SQL 语句之后,我们就可以在 Java 中结合 SQL 查询将结果返回给前端。
2、GeoTools 实现
这里介绍完全基于 Geotools 的纯后台转换逻辑,只需要用到 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>
引入相应的资源后,接下来我们就可以使用 Geotools 来实现把 WKT 字符串转为 GeoJSON。核心转换代码如下:
com.yelang.project.geotools.wkt2json;
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;
}
{
;
wktToJson(wkt);
System.out.println(geoJson);
}
}


