|
ldj :
楼主:
如何修改一个图元的坐标(不删除)
songqian :
首先先获得该图元,然后改变其坐标,如果是在原图层改变的话,要先循环一边 while (ftr!=null) { ftr=rFtrSet.getNextFeature(); } 否则,会报错不让编辑。
songqian :
贴段代码给你参考一下,这个只是改变了点图元的坐标,线,区域图元同理 /*RewindableFeatureSet rFtrSet, Feature ftr,PointGeometry pntGeometry*/ ftr=rFtrSet.getNextFeature(); while (ftr!=null) { ftr=rFtrSet.getNextFeature(); } rFtrSet.rewind(); ftr = rFtrSet.getNextFeature(); while(ftr != null){ /*保存原图元属性,以便使新图元的属性与原图元一致*/ //得到一个图元的属性数目 attribCount =ftr.getAttributeCount(); attrib=new Attribute[attribCount]; for(int i=0;i<attribCount;i++){ attrib[i]=ftr.getAttribute(i); } //得到几何信息 geom = ftr.getGeometry(); //如果该元素是点 if (geom.getType()==Geometry.TYPE_POINT) { pntGeometry=(PointGeometry)geom; DoublePoint point=new DoublePoint(); point= pntGeometry.getPoint(null); double[] a=new double[2]; a=turnMath(point.x,point.y,Math.PI/4);//自定义改变坐标函数,根据你的需要改变坐标 point.x=a[0]; point.y=a[1]; FeatureFactory ff=myMap.getMapJ().getFeatureFactory(); Feature newftr=ff.createPoint(point,ftr.getRendition(),attrib,ftr.getPrimaryKey()); world.replaceFeature(ftr.getPrimaryKey(),newftr); } else//如果是线图元或区域图元,自己完成吧,到理一样{ } ftr = rFtrSet.getNextFeature(); } |