ArcGIS Pro SDK (八)地理数据库 2 定义

server/2024/9/23 5:40:28/

ArcGIS Pro SDK (八)地理数据库 2 定义

文章目录

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

1 从地理数据库获取定义

public async Task ObtainingDefinitionFromGeodatabase()
{await ArcGIS.Desktop.Framework.Threading.Tasks.QueuedTask.Run(() =>{using (Geodatabase geodatabase = new Geodatabase(new DatabaseConnectionFile(new Uri("path\\to\\sde\\file\\sdefile.sde")))){// 对于企业级数据库,必须使用数据库名和用户名限定数据集名称。TableDefinition enterpriseTableDefinition = geodatabase.GetDefinition<TableDefinition>("LocalGovernment.GDB.CitizenContactInfo");// 无论数据集是否在 FeatureDataset 中,都没有关系。FeatureClassDefinition featureClassDefinition = geodatabase.GetDefinition<FeatureClassDefinition>("LocalGovernment.GDB.FireStation");// 获取 RelationshipClass 的定义。RelationshipClassDefinition relationshipClassDefinition = geodatabase.GetDefinition<RelationshipClassDefinition>("LocalGovernment.GDB.AddressPointHasSiteAddresses");// 获取 FeatureDataset 的定义。FeatureDatasetDefinition featureDatasetDefinition = geodatabase.GetDefinition<FeatureDatasetDefinition>("LocalGovernment.GDB.Address");}});
}

2 从地理数据库获取定义列表

public async Task ObtainingDefinitionsFromGeodatabase()
{await ArcGIS.Desktop.Framework.Threading.Tasks.QueuedTask.Run(() =>{using (Geodatabase geodatabase = new Geodatabase(new DatabaseConnectionFile(new Uri("path\\to\\sde\\file\\sdefile.sde")))){var enterpriseDefinitions = geodatabase.GetDefinitions<FeatureClassDefinition>();IEnumerable<Definition> featureClassesHavingGlobalID = enterpriseDefinitions.Where(definition => definition.HasGlobalID());var featureDatasetDefinitions = geodatabase.GetDefinitions<FeatureDatasetDefinition>();bool electionRelatedFeatureDatasets = featureDatasetDefinitions.Any(definition => definition.GetName().Contains("Election"));var attributedRelationshipClassDefinitions = geodatabase.GetDefinitions<AttributedRelationshipClassDefinition>();var relationshipClassDefinitions = geodatabase.GetDefinitions<RelationshipClassDefinition>();}});
}

3 从地理数据库获取相关定义

public async Task ObtainingRelatedDefinitionsFromGeodatabase()
{await ArcGIS.Desktop.Framework.Threading.Tasks.QueuedTask.Run(() =>{using (Geodatabase geodatabase = new Geodatabase(new DatabaseConnectionFile(new Uri("path\\to\\sde\\file\\sdefile.sde")))){// 对于 RelationshipClass,必须使用数据库名限定名称。RelationshipClassDefinition enterpriseDefinition = geodatabase.GetDefinition<RelationshipClassDefinition>("LocalGovernment.GDB.AddressPointHasSiteAddresses");IReadOnlyList<Definition> enterpriseDefinitions = geodatabase.GetRelatedDefinitions(enterpriseDefinition, DefinitionRelationshipType.DatasetsRelatedThrough);FeatureClassDefinition enterpriseAddressPointDefinition = enterpriseDefinitions.First(defn => defn.GetName().Equals("LocalGovernment.GDB.AddressPoint")) as FeatureClassDefinition;FeatureDatasetDefinition featureDatasetDefinition = geodatabase.GetDefinition<FeatureDatasetDefinition>("LocalGovernment.GDB.Address");IReadOnlyList<Definition> datasetsInAddressDataset = geodatabase.GetRelatedDefinitions(featureDatasetDefinition, DefinitionRelationshipType.DatasetInFeatureDataset);FeatureClassDefinition addressPointInAddressDataset = datasetsInAddressDataset.First(defn => defn.GetName().Equals("LocalGovernment.GDB.AddressPoint")) as FeatureClassDefinition;RelationshipClassDefinition addressPointHasSiteAddressInAddressDataset = datasetsInAddressDataset.First(defn => defn.GetName().Equals("LocalGovernment.GDB.AddressPointHasSiteAddresses")) as RelationshipClassDefinition;}});
}

4 从层获取表定义

// GetDefinitionFromLayer - 这段代码即使在图层连接了另一个表的情况下也能正常工作
private TableDefinition GetDefinitionFromLayer(FeatureLayer featureLayer)
{// 从图层获取要素类FeatureClass featureClass = featureLayer.GetFeatureClass();// 确定要素类是否连接了另一个表if (featureClass.IsJoinedTable()){// 从要素类获取连接Join join = featureClass.GetJoin();// 从连接中获取源表Table originTable = join.GetOriginTable();// 从连接的源表返回要素类定义return originTable.GetDefinition();}else{return featureClass.GetDefinition();}
}

http://www.ppmy.cn/server/59474.html

相关文章

每天一个数据分析题(四百二十一)- 一元线性回归模型

关于一元线性回归的求解过程说法正确的是&#xff1f; A.一元线性回归只需要求解出两个参数系数即可 B.对于新来的样例&#xff0c;建立好的一元线性回归模型可以做出准确的预测 C.一元线性回归模型的基本形式是YAxe&#xff0c;其中A为系数&#xff0c;e为随机误差 D.一元线性…

STM32-SPI和W25Q64

本内容基于江协科技STM32视频学习之后整理而得。 文章目录 1. SPI&#xff08;串行外设接口&#xff09;通信1.1 SPI通信简介1.2 硬件电路1.3 移位示意图1.4 SPI时序基本单元1.5 SPI时序1.5.1 发送指令1.5.2 指定地址写1.5.3 指定地址读 2. W25Q642.1 W25Q64简介2.2 硬件电路2…

aws课程,认证,学习方法

AWS学习方法和途径: 官方文档学习 深入阅读AWS官方文档,包括服务概述、架构最佳实践、安全指南等 关注AWS What’s New博客,了解最新服务更新和功能 学习AWS Well-Architected Framework,掌握设计高效、安全、可靠系统的原则 动手实践 使用AWS免费套餐创建账户,探索各项服务…

形态学图像处理

1 工具 1.1 灰度腐蚀和膨胀 当平坦结构元b的原点是(x,y)时&#xff0c;它在(x,y)处对图像f的灰度腐蚀定义为&#xff0c;图像f与b重合区域中的最小值。结构元b在位置(x,y)处对图像f的腐蚀写为&#xff1a; 类似地&#xff0c;当b的反射的原点是(x,y)时&#xff0c;平坦结构元…

ChatGPT提问获取高质量答案的艺术PDF下载书籍推荐分享

ChatGPT高质量prompt技巧分享pdf&#xff0c; ChatGPT提问获取高质量答案的艺术pdf。本书是一本全面的指南&#xff0c;介绍了各种 Prompt 技术的理解和利用&#xff0c;用于从 ChatGPTmiki sharing中生成高质量的答案。我们将探讨如何使用不同的 Prompt 工程技术来实现不同的目…

力扣-dfs

何为深度优先搜索算法&#xff1f; 深度优先搜索算法&#xff0c;即DFS。就是找一个点&#xff0c;往下搜索&#xff0c;搜索到尽头再折回&#xff0c;走下一个路口。 695.岛屿的最大面积 695. 岛屿的最大面积 题目 给你一个大小为 m x n 的二进制矩阵 grid 。 岛屿 是由一些相…

前后端如何实现非对称加解密-使用RSA为例讲解!

写在最前面&#xff0c;RSA是一种非对称加密算法&#xff0c;使用不同的公钥和私钥进行加密和解密。 下面是使用RSA进行加密和解密的代码示例&#xff1a; 前端&#xff1a;使用CryptoJS进行RSA加密 在前端JavaScript中&#xff0c;使用jsencrypt库来进行RSA加密&#xff1a…

09.C2W4.Word Embeddings with Neural Networks

往期文章请点这里 目录 OverviewBasic Word RepresentationsIntegersOne-hot vectors Word EmbeddingsMeaning as vectorsWord embedding vectors Word embedding processWord Embedding MethodsBasic word embedding methodsAdvanced word embedding methods Continuous Bag-…