Java 如何动态修改特征(如直线)的坐标?
我想改变一条线的坐标,并在飞行中用新坐标绘制它。虽然这些值可以更改,但我没有成功地使用新坐标重新绘制。Java 如何动态修改特征(如直线)的坐标?,java,geotools,Java,Geotools,我想改变一条线的坐标,并在飞行中用新坐标绘制它。虽然这些值可以更改,但我没有成功地使用新坐标重新绘制。 我的示例代码和跟踪输出在这里 TRACE-1:SimpleFeatureImpl:OSB_Line=[SimpleFeatureImpl.Attribute:the_geom=Multilinering((32.56891053280672 39.98170079260158,32.5619576563663 39.98391357917568)), TRACE-2:SimpleFeature
我的示例代码和跟踪输出在这里 TRACE-1:SimpleFeatureImpl:OSB_Line=[SimpleFeatureImpl.Attribute:the_geom=Multilinering((32.56891053280672 39.98170079260158,32.5619576563663 39.98391357917568)),
TRACE-2:SimpleFeatureImpl:OSB_Line=[SimpleFeatureImpl.Attribute:the_geom=多行((132.5689105328067 39.98170079260158,
public void modifySelectedFeatures(Set<FeatureId> idSet) {
FilterFactory2 ff = CommonFactoryFinder.getFilterFactory2(null);
MapContent mapContent = mapFrame.getMapContent();
FeatureLayer layer = (FeatureLayer) mapContent.layers().get(0);
Filter filter = ff.id(idSet);
try {
SimpleFeatureCollection fColl = (SimpleFeatureCollection) layer.getFeatureSource().getFeatures(filter);
if (!fColl.isEmpty()) {
SimpleFeatureIterator iterator = fColl.features();
while (iterator.hasNext()) {
SimpleFeature simpleFeature = iterator.next();
System.out.println("TRACE-1:" + simpleFeature);
Geometry geom = (MultiLineString) simpleFeature.getDefaultGeometry();
Coordinate c = geom.getCoordinates()[0];
c.setCoordinate(new Coordinate(c.x + 100.0, c.y, c.z));
simpleFeature.setDefaultGeometry(geom);
System.out.println("TRACE-2:" + simpleFeature);
}
}
} catch (IOException e) {
e.printStackTrace();
}
mapFrame.getMapPane().repaint();
}
public void modifySelectedFeatures(Set idSet){
FilterFactory2 ff=CommonFactoryFinder.getFilterFactory2(null);
MapContent MapContent=mapFrame.getMapContent();
FeatureLayer层=(FeatureLayer)mapContent.layers().get(0);
过滤器过滤器=ff.id(idSet);
试一试{
SimpleFeatureCollection fColl=(SimpleFeatureCollection)layer.getFeatureSource().getFeatures(过滤器);
如果(!fColl.isEmpty()){
SimpleFeatureIterator迭代器=fColl.features();
while(iterator.hasNext()){
SimpleFeature SimpleFeature=iterator.next();
System.out.println(“TRACE-1:+simpleFeature”);
几何图形几何图形=(多行线)simpleFeature.getDefaultGeometry();
坐标c=geom.getCoordinates()[0];
c、 设置坐标(新坐标(c.x+100.0,c.y,c.z));
simpleFeature.setDefaultGeometry(geom);
System.out.println(“TRACE-2:+simpleFeature”);
}
}
}捕获(IOE异常){
e、 printStackTrace();
}
mapFrame.getMapPane().repaint();
}