发表用户:讨论贴
收集整理:James.Liu
相关讨论:http://www.mygis.com.cn/forum/dispbbs.asp?boardID=11&ID=6857
信息原始来源:James MapInfo技术论坛

文章标题:如何修改一个图元的坐标?

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