Java 如何使用过滤器地理工具通过端点或起点获取相交线
我有一个LineString特性源。对于源中的一个要素,我希望通过同一要素源的起点或终点获取相交线 我试着这样做只是为了:Java 如何使用过滤器地理工具通过端点或起点获取相交线,java,geotools,opengis,Java,Geotools,Opengis,我有一个LineString特性源。对于源中的一个要素,我希望通过同一要素源的起点或终点获取相交线 我试着这样做只是为了: Filter filter = ff.intersects(ff.literal(featureLastCoordinate), ff.function("endPoint", ff.literal(featureGeom))); FeatureCollection<SimpleFeatureType, SimpleFeature> intersectedFea
Filter filter = ff.intersects(ff.literal(featureLastCoordinate), ff.function("endPoint", ff.literal(featureGeom)));
FeatureCollection<SimpleFeatureType, SimpleFeature> intersectedFeatColl = inputSource.getFeatures(filter);
我找不到过滤器的正确表达式。例如:
我想为黄线获取其他线条。根据您对线条接触的确定程度,您可以执行以下操作:
LineString lineString = (LineString) first.getDefaultGeometry();
Point[] points = { lineString.getStartPoint(), lineString.getEndPoint() };
for (Point p : points) {
Filter f = CQL.toFilter("intersects( " + geom + ", " + p + ")");
SimpleFeatureCollection res = featureSource.getFeatures(f);
if (!res.isEmpty()) {
System.out.println("Point " + p + " touches ");
try (SimpleFeatureIterator itr = res.features()) {
while (itr.hasNext()) {
System.out.println(itr.next());
}
}
}
Polygon poly = (Polygon) p.buffer(10);
f = CQL.toFilter("intersects( " + geom + ", " + poly + ")");
res = featureSource.getFeatures(f);
if (!res.isEmpty()) {
System.out.println("Point " + p + " is close to ");
try (SimpleFeatureIterator itr = res.features()) {
while (itr.hasNext()) {
System.out.println(itr.next());
}
}
}
}
LineString lineString = (LineString) first.getDefaultGeometry();
Point[] points = { lineString.getStartPoint(), lineString.getEndPoint() };
for (Point p : points) {
Filter f = CQL.toFilter("intersects( " + geom + ", " + p + ")");
SimpleFeatureCollection res = featureSource.getFeatures(f);
if (!res.isEmpty()) {
System.out.println("Point " + p + " touches ");
try (SimpleFeatureIterator itr = res.features()) {
while (itr.hasNext()) {
System.out.println(itr.next());
}
}
}
Polygon poly = (Polygon) p.buffer(10);
f = CQL.toFilter("intersects( " + geom + ", " + poly + ")");
res = featureSource.getFeatures(f);
if (!res.isEmpty()) {
System.out.println("Point " + p + " is close to ");
try (SimpleFeatureIterator itr = res.features()) {
while (itr.hasNext()) {
System.out.println(itr.next());
}
}
}
}