arcgis批量移动三维模型

模型制作的过程中没有带坐标,只有一个带有各个模型名称和质心坐标的EXCEL表,这时候一个一个配准显然工作量过大。通过AE写的一个读取excel批量移动三维模型的功能可以大大简化这个过程。

 

private void move3D(string a,double x,double y)
        {
           IFeatureWorkspace pFWS = pws as IFeatureWorkspace;
            IFeatureClasspFC_L = pFWS.OpenFeatureClass(a);

           IFeature pfeature = pFC_L.GetFeature(1);

           IWorkspaceEdit pwe = pws as IWorkspaceEdit;
           pwe.StartEditOperation();

           IGeometry pGeo = pfeature.Shape;
            ITransform3Dptran = pGeo as ITransform3D;
           
           ptran.Move3D(x,y,0);
           
           pfeature.Store();
           pwe.StopEditOperation();
           
        }

        private voidbutton1_Click(object sender, EventArgs e)
        {

           IWorkspaceFactory pwf = new FileGDBWorkspaceFactory();
            //string s =@”C:UsersyaoDocumentsArcGISDefault.gdb”;
            pws =pwf.OpenFromFile(GDBpath, 0);
            //
在这里传参数,第一个参数是模型名称,第二个参数是X坐标移动值,第三个是Y坐标移动值,单位是经纬度

            DataSeto=LoadDataFromExcel(Excelpath);
            try
            {
               for (int i = 0; i < oo.Tables[0].Rows.Count; i++)
               {
                   string name = Convert.ToString(oo.Tables[0].Rows[i][0]);
                   double x = Convert.ToDouble(oo.Tables[0].Rows[i][1]);
                   double y = Convert.ToDouble(oo.Tables[0].Rows[i][2]);
                   move3D(name, x, y);
               }
               MessageBox.Show(“ok”);
            }
            catch(Exception)
            {
               MessageBox.Show(“
错误”);
            }
        }
         public static DataSetLoadDataFromExcel(string filePath)
         {
            try
            {
               string strConn;
               //strConn = “Provider=Microsoft.Jet.OLEDB.4.0;Data Source=” + filePath +“;Extended Properties=”Excel 8.0;HDR=False;IMEX=1″”;
               strConn = “Provider=Microsoft.Ace.OleDb.12.0;” + “data source=” + filePath +“;Extended Properties=”Excel 12.0; HDR=NO; IMEX=1″”; //
此连接可以操作.xls.xlsx文件

               OleDbConnection leConn = new OleDbConnection(strConn);
               OleConn.Open();
               String sql = “SELECT * FROM  [Sheet1$]“;//
可是更改Sheet名称,比如sheet2,等等

               OleDbDataAdapter leDaExcel = new OleDbDataAdapter(sql, OleConn);
               DataSet leDsExcle = new DataSet();
               OleDaExcel.Fill(OleDsExcle, “Sheet1″);
               OleConn.Close();
               return OleDsExcle;
             }
             catch(Exception err)
             {
                MessageBox.Show(“
数据绑定Excel失败!失败原因:” + err.Message,“提示信息
”,
                    MessageBoxButtons.OK, MessageBoxIcon.Information);
                return null;
             }
         }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值