Java geotools 检查点是否包含在具有公差的多边形中

mic*_*ele 7 java contain geotools

我正在使用 Java Geotools 库来检查 POINT(...) 是否包含在 POLYGON(...) 中。

我已经做到了:

Geometry sPG = reader.read(wktStartPoint); //startpointgeometry
Geometry sEG = reader.read(wktEndPoint);
if(wktLayerGeo.contains(sPG) || wktLayerGeo.contains(sEG)){
 // do something
}
Run Code Online (Sandbox Code Playgroud)

但现在我必须设置一个容差:例如,我会检查一个点是否包含在容差距离为 50 公里的多边形中。

我可以用 GeoTools 做吗?

谢谢

Ian*_*ton 1

您可以使用DWithin运算符来检查点(或其他几何图形)是否位于几何图形的指定距离内。请注意,无论单位字符串如何,距离始终采用数据投影的单位。

double distance = 10.0d;

FilterFactory2 ff = CommonFactoryFinder.getFilterFactory2();
Filter filter = ff.dwithin(ff.property("POLYGON"), ff.literal(point), distance, uom.toString());

return featureSource.getFeatures(filter);
Run Code Online (Sandbox Code Playgroud)