AE+C#将E00数据导入到ArcSDE中去
分享
介绍两种AE+C#将E00数据导入到ArcSDE中去的方法。
首先,需要将AE的互操作扩展的授权加上,我们在VS2010中新建一个WinFrom工程,引入一个License Control,设置如下图
然后,需要增加一个连接SDE数据库的方法
publicstaticIPropertySet getPropertySet()
{
IPropertySet Propset = newPropertySetClass();
try
{
Propset.SetProperty(“SERVER”, “esri-2003″);
Propset.SetProperty(“INSTANCE”, “port:5151″);
Propset.SetProperty(“USER”, “sde”);
Propset.SetProperty(“PASSWORD”, “sde”);
Propset.SetProperty(“DATABASE”, “orcl”);
Propset.SetProperty(“VERSION”, “SDE.DEFAULT”);
returnPropset;
}
catch (Exception ex)
{
stringmsg = ex.Message;
returnPropset;
}
}
方法一:通过GP调用FeatureClassToGeodatabase组件实现E00数据导入到ArcSDE中。
///<summary>
///
///</summary>
///<param name=”e00path”></param>
///<param name=”sdePath”>不带图层名称</param>
publicstaticvoid e00FeatureClassToGeodatabase(string e00path, string sdePath)
{
ESRI.ArcGIS.ConversionTools.FeatureClassToGeodatabase featureClassToGeodatabase= newFeatureClassToGeodatabase();
featureClassToGeodatabase.Output_Geodatabase = sdePath;
featureClassToGeodatabase.Input_Features = e00path;
Geoprocessor geoprocessor = newGeoprocessor();
geoprocessor.OverwriteOutput = true;
try
{
geoprocessor.Execute(featureClassToGeodatabase, null);
stringmess = null;
for (int k = 0; k < geoprocessor.MessageCount; k++)
{
mess +=geoprocessor.GetMessage(k) + ” “;
}
MessageBox.Show(mess);
}
catch (Exception ex)
{
stringmess = null;
for (int k = 0; k < geoprocessor.MessageCount; k++)
{
mess +=geoprocessor.GetMessage(k) + ” “;
}
}
}
方法二:通过GP调用CopyFeatures组件实现E00数据导入到ArcSDE中。
///<summary>
///
///</summary>
///<param name=”e00Path”></param>
///<param name=”sdePath”>带图层名称</param>
publicstaticvoid e00CopyFeaturesToSDE(string e00Path, stringsdePath)
{
IVariantArray parameters = newVarArrayClass();
parameters.Add(e00Path);
parameters.Add(sdePath);
Geoprocessor geoprocessor = newGeoprocessor();
geoprocessor.OverwriteOutput = true;
try
{
geoprocessor.Execute(“CopyFeatures”, parameters, null);
stringmess = null;
for (int k = 0; k < geoprocessor.MessageCount; k++)
{
mess +=geoprocessor.GetMessage(k) + ” “;
}
}
catch (Exception ex)
{
stringmess = null;
for (int k = 0; k < geoprocessor.MessageCount; k++)
{
mess +=geoprocessor.GetMessage(k) + ” “;
}
}
}
然后在窗体上增加一个按钮Button1,增加Click事件
privatevoid button1_Click(object sender, EventArgs e)
{
string path = @”C:est”;
string sdeName = @”test.sde”;
string sdePath = path + “\” + sdeName;
if (File.Exists(sdePath))
{
File.Delete(sdePath);
}
IWorkspaceFactory workspaceFactory = newSdeWorkspaceFactoryClass();
IWorkspaceName workspaceName =workspaceFactory.Create(path, sdeName, getPropertySet(), 0);
//方法一通过FeatureClassToGeodatabase
e00FeatureClassToGeodatabase(@”C: estcontinent.e00CONTINENT_point”, sdePath);
//方法二通过 CopyFeatures
e00CopyFeaturesToSDE(@”C: estcontinent.e00CONTINENT_arc”, sdePath + @”CONTINENT_arc”);
}
以上两种方式将E00数据导入到ArcSDE管理的数据库中去。
文章来源:http://blog.csdn.net/sydbc/article/details/17140049
首先,需要将AE的互操作扩展的授权加上,我们在VS2010中新建一个WinFrom工程,引入一个License Control,设置如下图
然后,需要增加一个连接SDE数据库的方法
publicstaticIPropertySet getPropertySet()
{
IPropertySet Propset = newPropertySetClass();
try
{
Propset.SetProperty(“SERVER”, “esri-2003″);
Propset.SetProperty(“INSTANCE”, “port:5151″);
Propset.SetProperty(“USER”, “sde”);
Propset.SetProperty(“PASSWORD”, “sde”);
Propset.SetProperty(“DATABASE”, “orcl”);
Propset.SetProperty(“VERSION”, “SDE.DEFAULT”);
returnPropset;
}
catch (Exception ex)
{
stringmsg = ex.Message;
returnPropset;
}
}
方法一:通过GP调用FeatureClassToGeodatabase组件实现E00数据导入到ArcSDE中。
///<summary>
///
///</summary>
///<param name=”e00path”></param>
///<param name=”sdePath”>不带图层名称</param>
publicstaticvoid e00FeatureClassToGeodatabase(string e00path, string sdePath)
{
ESRI.ArcGIS.ConversionTools.FeatureClassToGeodatabase featureClassToGeodatabase= newFeatureClassToGeodatabase();
featureClassToGeodatabase.Output_Geodatabase = sdePath;
featureClassToGeodatabase.Input_Features = e00path;
Geoprocessor geoprocessor = newGeoprocessor();
geoprocessor.OverwriteOutput = true;
try
{
geoprocessor.Execute(featureClassToGeodatabase, null);
stringmess = null;
for (int k = 0; k < geoprocessor.MessageCount; k++)
{
mess +=geoprocessor.GetMessage(k) + ” “;
}
MessageBox.Show(mess);
}
catch (Exception ex)
{
stringmess = null;
for (int k = 0; k < geoprocessor.MessageCount; k++)
{
mess +=geoprocessor.GetMessage(k) + ” “;
}
}
}
方法二:通过GP调用CopyFeatures组件实现E00数据导入到ArcSDE中。
///<summary>
///
///</summary>
///<param name=”e00Path”></param>
///<param name=”sdePath”>带图层名称</param>
publicstaticvoid e00CopyFeaturesToSDE(string e00Path, stringsdePath)
{
IVariantArray parameters = newVarArrayClass();
parameters.Add(e00Path);
parameters.Add(sdePath);
Geoprocessor geoprocessor = newGeoprocessor();
geoprocessor.OverwriteOutput = true;
try
{
geoprocessor.Execute(“CopyFeatures”, parameters, null);
stringmess = null;
for (int k = 0; k < geoprocessor.MessageCount; k++)
{
mess +=geoprocessor.GetMessage(k) + ” “;
}
}
catch (Exception ex)
{
stringmess = null;
for (int k = 0; k < geoprocessor.MessageCount; k++)
{
mess +=geoprocessor.GetMessage(k) + ” “;
}
}
}
然后在窗体上增加一个按钮Button1,增加Click事件
privatevoid button1_Click(object sender, EventArgs e)
{
string path = @”C:est”;
string sdeName = @”test.sde”;
string sdePath = path + “\” + sdeName;
if (File.Exists(sdePath))
{
File.Delete(sdePath);
}
IWorkspaceFactory workspaceFactory = newSdeWorkspaceFactoryClass();
IWorkspaceName workspaceName =workspaceFactory.Create(path, sdeName, getPropertySet(), 0);
//方法一通过FeatureClassToGeodatabase
e00FeatureClassToGeodatabase(@”C: estcontinent.e00CONTINENT_point”, sdePath);
//方法二通过 CopyFeatures
e00CopyFeaturesToSDE(@”C: estcontinent.e00CONTINENT_arc”, sdePath + @”CONTINENT_arc”);
}
以上两种方式将E00数据导入到ArcSDE管理的数据库中去。
文章来源:http://blog.csdn.net/sydbc/article/details/17140049
0 个评论
相关问题
- 作为Desktop用户对数据的获取比较乏力,可能缺了哪些知识?
- 有谁知道哪里可以免费获取各省市地图数据呢,包括详细的shape文件数据
- 有栅格数据a(大数据),小数据b,怎么从a中扣掉b,得到a数据剩下的部分?栅格能裁剪取反吗?
- 在windows server2008 R2 64位中安装了portal 10.5 设置好托管arcgis server站点,并用data store为托管数据库,发布数据出错
- sketchup模型导入cityengine中部分纹理丢失,怎么解决?
- cityengine怎么导入arcgis的shp数据,对shp数据有什么要求
- ArcGIS数据库数据逐图幅裁剪
- 镶嵌数据集 Add Rasters
- 市区择房分析时,需要添加字段并将其赋值1或者-1,怎么做? 在开始编辑的时候,总是出现空间参考与数据框不匹配提示,原因是什么?会影响下面的赋值吗?
- 网络分析中用路构建网络数据集的问题
- 基于ArcGIS的CAD数据向GIS数据转换方法