ArcGIS插件开发(无源码版)

本文讲述了如何在没有源码的情况下,通过安装VisualStudio和相关版本的ArcGIS,利用ILSpy反编译插件DLL获取源码。同时介绍了重新开发ArcGIS插件的过程,包括安装VisualStudio、SDK以及在VS中创建插件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、在没有源码的情况下

事前准备,先安装Visual studio,和arcgis对应的版本,安装需要改动的插件。

找到插件在arcgis中安装的位置,然后找到插件的同名dll文件(addin插件安装的好像找不到这个dll文件,从右击空白处的列表里选的插件可以找到的dll文件)。使用ILSpy_selfcontained(反编译软件)这个软件将其反编译,然后保存下来,用VS打开,这个就是此插件的源码了。

还有一种查看某种方法的源码:vs中安装ILSpy插件,参考这篇文章。

安装使用反编译工具ILSPY - hushzhang - 博客园 (cnblogs.com)

这样就可以在vs中的cs文件中选择某个的方法,然后右击,就有用ILSpy查看的选项。(但是我没成功,再次验证一下是否正确,dll里面还有没有隐藏的代码)。

二、重新开发

事前准备,先安装Visual studio,和arcgis对应的版本,及sdk。

然后再vs里面创建arcgis插件addin

### ArcGIS 插件开发教程 #### 工具准备 为了进行ArcGIS插件开发开发者需安装Visual Studio以及ESRI提供的针对不同本的ArcGIS SDK。这些工具提供了创建、调试和部署addin所需的功能[^1]。 #### 创建项目 启动Visual Studio并新建一个项目,在模板列表里选择适合于目标ArcGIS本的Add-In模板。这一步骤简化了初始化过程,自动配置好必要的文件结构与依赖关系[^2]。 #### 编写代码逻辑 下面是一个简单的Python脚本例子,用于遍历所有图斑要素类中的每一个要素,并计算其与其他要素之间的公共边界长度: ```python import arcpy def calculate_shared_boundary_length(feature_class): """Calculate shared boundary length between adjacent parcels.""" # 获取要素集合 with arcpy.da.SearchCursor(feature_class, ["SHAPE@", "OBJECTID"]) as cursor: for row in cursor: geom = row[0] # 查询邻接对象 sql_clause = (None, f'"{cursor.fields[1]}" <> {row[1]}') with arcpy.da.SearchCursor(feature_class, ["SHAPE@"], where_clause=sql_clause) as neighbor_cursor: for n_row in neighbor_cursor: n_geom = n_row[0] # 计算交集部分即为共享边界线段 intersection = geom.boundary().intersect(n_geom) if not intersection.isEmpty(): yield { 'parcel_id': row[1], 'neighbor_parcel_id': n_row[cursor.fields.index('OBJECTID')], 'shared_boundary_length': intersection.length } ``` 此函数`calculate_shared_boundary_length()`接收一个要素类作为参数,返回生成器表达式,其中每一项都是字典形式表示的一对相邻地块及其共用边界的长度信息。 #### 配置manifest.xml 在项目的根目录下存在名为`config.xml`或`manifest.xml`的XML文档,它定义了插件的基本元数据(如名称、描述)、UI组件布局以及其他设置。对于上述功能需求而言,可能还需要在此处声明自定义命令按钮或其他交互控件以便触发执行该算法的操作。 #### 测试与发布 完成编码之后可以在本地环境中测试插件的行为是否符合预期;一旦确认无误,则可以通过打包成.esriaddin格式来分发给其他用户安装使用。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值