惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

美团技术团队
T
Troy Hunt's Blog
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
S
Schneier on Security
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Cisco Talos Blog
Cisco Talos Blog
AWS News Blog
AWS News Blog
NISL@THU
NISL@THU
The Hacker News
The Hacker News
Know Your Adversary
Know Your Adversary
L
Lohrmann on Cybersecurity
SecWiki News
SecWiki News
S
Security Affairs
www.infosecurity-magazine.com
www.infosecurity-magazine.com
Help Net Security
Help Net Security
L
LINUX DO - 热门话题
Application and Cybersecurity Blog
Application and Cybersecurity Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
I
Intezer
S
Secure Thoughts
罗磊的独立博客
Attack and Defense Labs
Attack and Defense Labs
G
GRAHAM CLULEY
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
博客园_首页
Cyberwarzone
Cyberwarzone
IT之家
IT之家
T
Threatpost
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
The Cloudflare Blog
博客园 - 叶小钗
Cloudbric
Cloudbric
量子位
Scott Helme
Scott Helme
N
News | PayPal Newsroom
L
LINUX DO - 最新话题
O
OpenAI News
C
Cyber Attacks, Cyber Crime and Cyber Security
Security Archives - TechRepublic
Security Archives - TechRepublic
C
Cybersecurity and Infrastructure Security Agency CISA
J
Java Code Geeks
有赞技术团队
有赞技术团队
月光博客
月光博客
大猫的无限游戏
大猫的无限游戏
W
WeLiveSecurity
宝玉的分享
宝玉的分享
P
Privacy International News Feed
A
Arctic Wolf
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
云风的 BLOG
云风的 BLOG

WSH

凑数日子 2026年,大概将会是最后一个人口保持在14亿以上的年份 感谢之人 数字经济中的注意力交易 突然的噩耗 一株洋瓜藤 再见到姑妈 港澳掠影 Miniflux 中文搜索能力增强 慢慢吹~~~轻轻送~~~ 房子梦 探索云南-大理 证书过期导致的错误 过年被追问工资 在秋天开始 水里的鱼 斩断联系1 云南壮族婚恋 我有一颗乳牙 世界的底色是争,抢,偷 无题4 无题3 人来人往 AI见闻 无题2 滇池掠影 WebGIS 三维空间分析之参考超图实现的天际线分析 我原来是个同步单线程 往事如烟1 净月潭之行 一万次悲伤 开源丑闻的碎碎念 提高开发幸福感所做的举措之构建前端基础设施 浏览器标签页进程引发的性能问题 山的那边 想回到过去去去去去去去去去去去去~ WebGIS开发之glsl支持 WebGIS三维空间分析之坡度计算 WebGIS 三维分析之阴影率分析 幸福(或我的女儿叫波兰) 最后一课 Markdown解析高亮及Mermaid 上海掠影 Cesium/QGIS加载图新地球LRC自定义图层 端午粽子 如何清晰地写作 清明扫墓 自编写,自用的开源工具 饮食 AI在GIS领域的实践之QGIS-MCP 燕南飞 WebGIS 三维空间分析之剖面线分析 WebGIS三维开发中的面积量测 WebGIS空间分析之坡向分析的实现 收藏自由-新的书签工具 月夜杂谈 花海,指弹版 三维之Cesium分屏显示 请验证您是真人 GIS数据转换——从点到栅格 自定义「ONE · 一个」订阅源 西湖美人峰徒步 给开源RSS服务应用Miniflux添加「标题翻译」 五一青山湖骑行 将chatGPT集成到微信机器人 动手更换旧手机——google pixel3的电池 Vue组件检测无效属性 两件关于博客网站变更的事情 Vue开发个人守则 账户注销后遗症 《纳瓦尔宝典 财富与幸福》前两章的一些摘录 听一首黄歌—Yellow 坏事总是成双 出差消小记 cesium-控高分析 当你孤单你会想起谁 穿越城市-青山湖 Harry Browne关于个人金融安全17条黄金守则—财富之道 批量裁剪矢量数据的几种途径 小而美的软件 想回到过去 热!热!热! 那么近,又那么远——遥望 为什么win笔记本触摸板没有mac好用呢 一只猫 二月份的检讨 自定义Cesium缩放控件 线段简化的几种算法 今天看球了吗? HDF转为GeoTIFF QGIS插件编写 乐高风格地图 基于Python的遥感可视化记录 使用Python提取遥感影像中的土壤线 接触pandas QQ音乐评论可视化 拆分-应用-联合 阳光打在我身上 淘宝商品信息可视化
ArcGIS复杂插件处理
WSH · 2024-03-03 · via WSH

目录

    • 前言
    • 实现方式
      • python加载项
      • 自定义工具箱
      • 命令行程序
    • 效果

前言

近期收到一个工作任务,为项目编写涉及处理空间数据相关的工具,要求必须集成到当前用户工作流里,不脱离ArcGIS环境。大概了解业务之后认为解决该需求最好的方式是将此工具作为ArcGIS的一个插件(扩展),因为它其提供了多种方式来扩展自身功能,1.python加载项(官方这么叫),2.是自定义工具箱脚本,3.写一个第三方命令行程序。

实现方式

我简单查阅后得知,上述三种方式都不能直接将问题解决。

python加载项

python我很熟悉,各种空间操作库手到擒来,按理说不一会就能写完,但是我查阅一番后发现,插件不适合做复杂输入工作,原因如下:

  • 版本兼容。不管新旧,ArcGIS内置python版本皆为2.7,这是一个古老版本,发布至今已14年,有些库当前用不了,另外如果仅学过3.x的语法,写2.7会出现兼容性问题,代码量小其实问题不算大,但复杂逻辑代码量大写着会很恼火。
  • 输入类型受限。插件仅支持简单输入,如点击,文字,下拉选项等。
  • 无法解析数据格式。当前没有第三方库能解析公司专有的数据格式,这是一个大难点,因为所有的后续工作都依赖于解析成果。

自定义工具箱

相较于加载项,工具箱的输入类型丰富太多,在功能不相上下的情况下安装方式更简单,但是加载项所列出的第2、3缺点依然无法解决。

命令行程序

针对专有数据格式解析,现写一个python解析库时间来不及,求助产品部门的同事,幸亏他们提供有C++和C#的SDK,可以解燃眉之急。其实不仅仅是Python, C#也可以编写ArcGIS插件且功能更为强大,但是它更接近底层,所需要的工作量也异常多,要装一大堆依赖的同时还必须熟悉ArcGIS的SDK以及对象模型等。 我以前接触AE(ArcGIS Engine)的时候有系统学习过,但是毕业后已经几乎要忘光了,因此该工具不打算单独用C#实现,而是将三者耦合。

首先用C#编写主要逻辑,编译成一个命令行程序,然后用python编写ArcGIS加载项和工具箱脚本,目的是在ArcMap里,接收用户输入后调用这个命令行程序执行具体业务。

arcgis_walktool

流程

效果

具体编写过程在这里就不展开,主要是理清思路和方向,最后的效果如下(其中的一个功能)。

walkbox.gif

其中一个功能效果