ArcGIS Engine 批量移动三维模型

0
分享 2013-03-23
模型制作的过程中没有带坐标,只有一个带有各个模型名称和质心坐标的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;
}
}[/i][/i][/i]

文章来源:http://blog.csdn.net/sydbc/article/details/17681375

0 个评论

要回复文章请先登录注册