问题描述
为了进行地理查询,我试图找到一种将 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()