2016-08-01 28 views
2

我正在使用Java Geotools库检查POINT(...)是否包含在POLYGON(...)中。Java geotools检查点是否包含在具有容差的多边形中

我有做到了:

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

但现在我必须设置一个宽容:如果一个点被包含在50公里例如公差距离多边形我会检查。

我可以使用GeoTools吗?

谢谢

回答

0

可以使用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); 
0

可以使用JTS buffer方法对您的多边形几何形状(API):

double yourToleranceDistance = 2; 
int numberOfSegmentsPerQuadrant = 2; 
// get the geometry with your tolerance 
Polygon wktLayerGeoWithTolerance = (Polygon) wktLayerGeo.buffer(yourToleranceDistance, numberOfSegmentsPerQuadrant, BufferParameters.CAP_SQUARE); 
// continue with your code... 
if(wktLayerGeoWithTolerance.contains(sPG) || wktLayerGeoWithTolerance.contains(sEG)){ 
    // do something 
}