我正在使用 Geomesa 并且我想编写一些适用于 JAVA 的东西,在这个示例中,我试图在一个区域中获取一些点并将其转换为一条线以便稍后绘制它:
Query query=new Query(feature.getTypeName());
query.setFilter(CQL.toFilter(filtre));
query.setSortBy(new SortBy[] {CommonFactoryFinder.getFilterFactory2().sort("dtg",SortOrder.ASCENDING) });
FeatureCollection collection=source.getFeatures(query);
FeatureIterator iterator=collection.features();
我得到了我需要的所有点,但问题是我不能直接将它转换为 LineString ,我所做的是我迭代了所有集合并收集了 ArrayList 中每个元素的几何图形,然后我将 ArrayList 转换为一个坐标数组并创建了 LineString
Coordinate[] tab;
cool.add(((com.vividsolutions.jts.geom.Point)save.getDefaultGeometry()).getCoordinate());
while (iterator.hasNext()) {
actuel=iterator.next();
double distance= ( (com.vividsolutions.jts.geom.Point)save.getDefaultGeometry()).distance((com.vividsolutions.jts.geom.Point)actuel.getDefaultGeometry());
if(distance<0.3 ){
if(distance>0)
cool.add(((com.vividsolutions.jts.geom.Point) actuel.getDefaultGeometry()).getCoordinate());
}
else{
tab=new Coordinate[cool.size()];
tab=cool.toArray(tab);
route=factory.createLinearRing(tab);
System.out.println(route);
cool=new ArrayList<>();
}
}
tab=new Coordinate[cool.size()+1];
tab=cool.toArray(tab);
tab[cool.size()]=cool.get(0);
route=factory.createLinearRing(tab);
System.out.println(route);
iterator.close();
有没有另一种方法可以在不做所有这些工作的情况下直接获得所有积分?