在ArcGIS Pro .Net SDK中使用插件为不同的文件扩展名添加功能层

135
7
01-03-2023 01:14 am
RITASHKOUL"id=
通过
新贡献者II

我已经成功地实现了多个文件扩展名,作为插件数据源添加到映射作为功能层。其中一些是新类型,一些是Pro可识别的类型(如csv)。对于新的类型,我已经创建了专业自定义项目开始。对于那些可识别的Pro根据文档没有必要。这是根据专业文档

已被ArcGIS Pro使用的文件扩展名(包括门户、在线、地理数据库、工具箱等)不能被自定义项覆盖/扩展。这包括文本文件、xml文件、文件夹、数据库连接文件、层文件、任务文件、mxds、sxds等。在ArcGIS Pro使用的内容类型上定义的自定义项将被忽略。


我还添加了多种方式来添加数据源,如上下文菜单,拖放和使用添加数据在功能区。

这主要是使用接口IMappableItem实现的,并为Custom Item类实现下面的方法

public List OnAddToMap(ArcGIS.Desktop.Mapping. map)地图地图)

但是如何实现这些用例,将其添加为CSV等扩展的特性层。因为对于CSV来说,在Ribbon中添加数据只是添加独立的表。对于CSV,我不知道如何添加自定义上下文菜单实现添加到当前映射和添加到新映射。

所以问题是如何实现ArcGIS Pro已经在使用的文件扩展名的这些用例。

现在将插件添加为CSV的特性层只是使用拖放处理程序。但是如何实现CSV的以下所有用例:

“添加数据”对话框
“从路径中添加数据”对话框
将项目从目录窗口拖放到地图中
将您的项目从目录窗口拖放到TOC中
拖放你的项目从Windows资源管理器到地图
拖放你的项目从windows资源管理器到TOC

标签(1)
0荣誉
7回复
GintautasKmieliauskas"id=
定期贡献者II

你好,

要添加csv作为特性层,您需要执行Xy表到点地理处理工具。

与色带中的“添加数据”-“XY点数据”相同

0荣誉
RITASHKOUL"id=
通过
新贡献者II

因此,我们不能添加自定义代码来添加csv或文本作为功能层,就像使用下面的。net sdk用例的插件数据源一样

“添加数据”对话框
“从路径中添加数据”对话框
将项目从目录窗口拖放到地图中
将您的项目从目录窗口拖放到TOC中
拖放你的项目从Windows资源管理器到地图
拖放你的项目从windows资源管理器到TOC

也作为一个添加到自定义地图和添加到新地图。

因为默认情况下,它只会将其作为一个独立的表添加。

@GintautasKmieliauskas

0荣誉
GintautasKmieliauskas"id=
定期贡献者II

这里有Esri ArcGIS Pro SDK社区示例,精确的csv数据:

https://github.com/Esri/arcgis-pro-sdk-community-samples/tree/master/Map-Authoring/AddToMapCustomIte..。

它在List IMappableItem中添加csv数据。OnAddToMap(Map Map)方法。

0荣誉
RITASHKOUL"id=
通过
新贡献者II

这似乎并不适用于CSV

<内容displayNameAddToMapfileExtensionuxhisContainer关键字AddToMapcontextMenuIDAddToMapCustomItem_AddToMap_ContextMenu>

根据Pro文档,如果我们将为Pro使用的文件扩展名(如CSV或TXT)创建自定义项,自定义项将被忽略。如果自定义项目被忽略,那么就没有使用实现OnAddToMap方法。

以下是提及:

已被ArcGIS Pro使用的文件扩展名(包括门户、在线、地理数据库、工具箱等)不能被自定义项覆盖/扩展。这包括文本文件、xml文件、文件夹、数据库连接文件、层文件、任务文件、mxds、sxds等。在ArcGIS Pro使用的内容类型上定义的自定义项将被忽略。

@GintautasKmieliauskas

0荣誉
GintautasKmieliauskas"id=
定期贡献者II

您可以将文件扩展名更改为csvx或类似的东西。如果文件的内容是csv格式的,那么您可以使用样本中的代码,它使用与我前面提到的完全相同的地理处理工具。

0荣誉
RITASHKOUL"id=
通过
新贡献者II

我仍然不确定为什么要创建自定义项目,如果根据文档,它被提到,它将被忽略。

@GintautasKmieliauskas

0荣誉
GintautasKmieliauskas"id=
定期贡献者II

CSV不是强结构化格式,为什么你可以加载CSV格式的文件使用不同的文件扩展名。例如,csv格式的文件可能有不同的内容。

第一个文件列:X、Y、attribute1、attribute2

第二个文件列:属性、X、Y

等。

因此,每个具有不同字段顺序的csv格式文件必须有不同的插件。对于强格式的文件,不需要使用不同的插件。

0荣誉