在 Java 中将 JTS 几何转换为 ElasticSearch 几何

问题描述

为了进行地理查询,我试图找到一种将 JTS Geometry 转换为 ElasticSeach Geometry 的方法,但我没有找到方便的方法

使用带有 Java API 的 ElasticSearch 7.11.1,要进行地理空间查询,我应该使用

    GeoShapeQueryBuilder

返回

QueryBuilders.geoShapeQuery(String,org.elasticsearch.geometry.Geometry)

方法

但是,在我的项目中,我使用的是 JTS 几何(请参阅 https://en.wikipedia.org/wiki/JTS_Topology_Suite),其中几何是类的实例:

org.locationtech.jts.geom.Geometry

显然,我无法将 JTS Geometry 转换为 ElasticSearch Geometry,但我应该以某种方式转换实例。

有没有人遇到过类似的问题?
非常感谢

解决方法

您可以从 jts.Geometry 对象获取坐标并构建您需要的任何 elasticsearch.Geometry,例如对于 Polygon,您可以编写如下内容:

val coordinates = geometry.coordinates
val mappedCoordinates = coordinates.map { Coordinate(it.x,it.y) }
val toPolygonGeometry = PolygonBuilder(CoordinatesBuilder().coordinates(mappedCoordinates)).toPolygonGeometry()