Java 如何使用过滤器地理工具通过端点或起点获取相交线

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

我有一个LineString特性源。对于源中的一个要素,我希望通过同一要素源的起点或终点获取相交线

我试着这样做只是为了:

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());
      }
    }
  }
}