您的位置:首页 > 游戏 > 手游 > ArcGIS Pro SDK (五)内容 3 地理数据库内容

ArcGIS Pro SDK (五)内容 3 地理数据库内容

2024/10/7 4:35:50 来源:https://blog.csdn.net/szy13323042191/article/details/139915487  浏览:    关键词:ArcGIS Pro SDK (五)内容 3 地理数据库内容

ArcGIS Pro SDK (五)内容 3 地理数据库内容

目录

  • ArcGIS Pro SDK (五)内容 3 地理数据库内容
    • 1 浏览对话框中的地理数据库内容
    • 2 目录中的地理数据库内容

环境:Visual Studio 2022 + .NET6 + ArcGIS Pro SDK 3.0

1 浏览对话框中的地理数据库内容

var openDlg = new OpenItemDialog
{Title = "Select a Feature Class",InitialLocation = @"C:\Data",MultiSelect = false,BrowseFilter = BrowseProjectFilter.GetFilter(ArcGIS.Desktop.Catalog.ItemFilters.GeodatabaseItems_All)
};//显示浏览对话框
bool? ok = openDlg.ShowDialog();
if (!ok.HasValue || openDlg.Items.Count() == 0)return;   //没有选择项await QueuedTask.Run(() =>{//获取项var item = openDlg.Items.First();//查看项是否有数据集if (ItemFactory.Instance.CanGetDataset(item)){//获取数据集using (var ds = ItemFactory.Instance.GetDataset(item)){//访问某些属性var name = ds.GetName();var path = ds.GetPath();//如果它是一个featureclassif (ds is ArcGIS.Core.Data.FeatureClass fc){//创建图层var featureLayerParams = new FeatureLayerCreationParams(fc){MapMemberIndex = 0};var layer = LayerFactory.Instance.CreateLayer<FeatureLayer>(featureLayerParams, MapView.Active.Map);//继续}}}});

2 目录中的地理数据库内容

//订阅事件
ProjectWindowSelectedItemsChangedEvent.Subscribe(async (ProjectWindowSelectedItemsChangedEventArgs args) =>
{if (args.IProjectWindow.SelectionCount > 0){//获取第一个选中的项var selectedItem = args.IProjectWindow.SelectedItems.First();await QueuedTask.Run(() =>{//数据集类型var dataType = ItemFactory.Instance.GetDatasetType(selectedItem);//获取数据集定义if (ItemFactory.Instance.CanGetDefinition(selectedItem)){using (var def = ItemFactory.Instance.GetDefinition(selectedItem)){if (def is ArcGIS.Core.Data.FeatureClassDefinition fcDef){var oidField = fcDef.GetObjectIDField();var shapeField = fcDef.GetShapeField();var shapeType = fcDef.GetShapeType();}else if (def is ArcGIS.Core.Data.Parcels.ParcelFabricDefinition pfDef){string ver = pfDef.GetSchemaVersion();bool enabled = pfDef.GetTopologyEnabled();}}}//获取数据集if (ItemFactory.Instance.CanGetDataset(selectedItem)){using (var ds = ItemFactory.Instance.GetDataset(selectedItem)){if (ds is ArcGIS.Core.Data.FeatureDataset fds){//在要素数据集中打开featureclasses//var fcPoint = fds.OpenDataset<FeatureClass>("Point");//var fcPolyline = fds.OpenDataset<FeatureClass>("Polyline");}else if (ds is FeatureClass fc){var name = fc.GetName() + "_copy";//创建var featureLayerParams = new FeatureLayerCreationParams(fc){Name = name,MapMemberIndex = 0};LayerFactory.Instance.CreateLayer<FeatureLayer>(featureLayerParams, MapView.Active.Map);}else if (ds is Table table){var name = table.GetName() + "_copy";var tableParams = new StandaloneTableCreationParams(table){Name = name};//创建StandaloneTableFactory.Instance.CreateStandaloneTable(tableParams, MapView.Active.Map);}}}});}
});

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com