需要帮助检索。sde文件路径从功能层使用ArcGIS Pro。净SDK . .

299
5
两个星期前
LakshmiAlaparthi
新的贡献者二世

我写了这个函数的bellow,它是得到我的路径像从临时文件夹的bellow,我不能连接到企业地理数据库使用这个路径-

-C: /用户/ <用户名> / AppData /地方/ Temp / ArcGISProTemp19324 / a8b12d344fb5de85c96517857bcf6e6e.sde

Public Function GetConnectionPathoftheSDE(ByVal layer As String) As Task(Of String)
返回QueuedTask.Run(函数()
昏暗的featureLayer = TryCast(MapView.Active.Map.FindLayers(layer).First(), BasicFeatureLayer)
昏暗inTable = featureLayer。的名字
/ /设置参数
= table.GetDatastore()
昏暗的connectionString = dataStore.GetPath.ToString()
昏暗的layerAlias = featureLayer。的名字
返回connectionString
结束函数)
结束函数

我需要检索这样的目录路径:c:\用户\用户名\文档\ arcgis \项目\testmap\ server113sde——当我将鼠标悬停在catalog窗格下的层——> . sde连接节点上时,该路径就会显示出来。如何检索这个路径使用Pro .NET SDK?

谢谢

拉克希米

0荣誉
5回复
狼
通过 金宝搏吧
金宝搏吧

在ArcGIS Pro中,.sde路径不会在你通过添加一个特性类到地图上创建一个层后持久化。相反,所有相关的连接属性都是从. sde文件中提取的,如果需要,会提示用户输入密码,然后保存各个连接属性以重新连接该层。您可以在代码中利用层的连接信息,如下面的示例代码片段所示。该代码片段取自按钮的OnClick方法,并使用现有SDE层的数据库连接从该层的geodatabase检索所有特性类。

wolf_0 - 1623885423665. - png

async void OnClick() {var selectedLayer = MapView.Active.GetSelectedLayers().FirstOrDefault();//设置sketch图层属性(以便获得Zs, Ms) if (!)(selectedLayer是BasicFeatureLayer layer)){消息框。显示(“在TOC上先选择一个特性层”);返回;} var lst = await QueuedTask.Run>(() => {var lstFcs = new List();var fc = layer . gettable()作为功能类;//使用层的数据存储访问Geodatabase使用(var gdb = fc.GetDatastore() as Geodatabase) {var fcDefs = gdb. getdefinitions ();foreach (var tableDef in fcDefs) {lstfc . add (tableDef. getname ());}}返回lstFcs;});MessageBox.Show (string.Join(环境。换行符,lst.ToArray ())); }

0荣誉
LakshmiAlaparthi
新的贡献者二世

明白了. .有没有办法从API中找到答案?

如果(不是层。FeatureClass什么都不是)然后
.Alias = layer.FeatureClass.AliasName
.ConnectionPath = CType(层。FeatureClass IDataset) .Workspace.PathName

如果

0荣誉
LakshmiAlaparthi
新的贡献者二世

这是我在ArcObjects .NET中使用的代码

如果(不是层。FeatureClass什么都不是)然后
.Alias = layer.FeatureClass.AliasName
.ConnectionPath = CType(层。FeatureClass IDataset) .Workspace.PathName

0荣誉
LakshmiAlaparthi
新的贡献者二世

你好,

谢谢你的回复。我正在寻找的解决方案检索的路径的.sde文件,功能层属于。一旦我有了sde文件路径,我的代码就可以打开地理数据库了。我正在寻找如何从ArcGIS Pro UI ->层检索.sde文件路径的解决方案,在目录中加载。

0荣誉
狼
通过 金宝搏吧
金宝搏吧

不可能从一个层检索.sde文件路径,因为只有连接属性被层使用,而不是原始的.sde文件。您可以通过删除或重命名.sde文件来验证这一点,并且您仍然能够在地图上查看您的sde数据。但是你可以使用下面的代码来打开Geodatabase:

// layer是来自TOC的Mapmember var fc = layer . gettable () as FeatureClass;//使用图层的数据存储来访问Geodatabase (var gdb = fc.GetDatastore() as Geodatabase){//使用打开的Geodatabase "gdb"(相同的图层的数据源)}

0荣誉