在使用ArcMap中设置数据库连接后,系统会自己生成一个用来连接空间库的.sde文件。一般存在于@”C:\Users\Feng\AppData\Roaming\ESRI\Desktop10.2\ArcCatalog文件夹下。在很多情况下我们会用到这个sde文件去操作SDE库。例如:GP工具输出结果到SDE时。
/// <summary>
/// 创建SDE连接文件
/// </summary>
/// <param name="sdePath">sde文件路径,如:"F:\\GIS测试数据\\localhost.sde"</param>
public static void CreatSDEConnfile(string sdePath)
{
string sdeFolder = System.IO.Path.GetDirectoryName(sdePath);
if (!System.IO.Directory.Exists(sdeFolder))
System.IO.Directory.CreateDirectory(sdeFolder);
string ip = "127.0.0.1"; //IP
string slmc = "orcl"; //实例名称
string yhm = "SDE"; //用户名
string mm = "sde"; //密码
IPropertySet propertySet = new PropertySet();
propertySet.SetProperty("INSTANCE", string.Format("sde:oracle11g:{0}/{1}", ip, slmc));
propertySet.SetProperty("USER", yhm);
propertySet.SetProperty("PASSWORD", mm);
//IWorkspaceFactory pWorkspaceFactory = new SdeWorkspaceFactory(); 推荐使用ProgID
Type factoryType = Type.GetTypeFromProgID("esriDataSourcesGDB.SdeWorkspaceFactory");
IWorkspaceFactory pWorkspaceFactory = (IWorkspaceFactory)Activator.CreateInstance(factoryType);
IWorkspaceName pWorkspaceName=pWorkspaceFactory.Create(sdeFolder, System.IO.Path.GetFileName(sdePath), propertySet, 0);
System.Runtime.InteropServices.Marshal.FinalReleaseComObject(pWorkspaceFactory);
}