python与arcgis
❶ python、arcgis求解辐射力范围
基于主成分所得的综合评价值,在ArGIS的Generate方法下,用fishnet模块直接生成5km×5km的格网及对应的label点。起初选用1km*1km格网,但数据量过大,难以操作。利用长三角及京津冀城市群边界图裁切,得到相应地区格网图,并分别计算各城市到格网点的距离。后续计算过程通过编写python程序完成:利用引力模型计算各网格受区域内各个城市的辐射值,按照“取大”的原则确定各网格的被辐射值及归属城市。最后将计算结果链接到ArcGIS中,通过分层设色,按颜色深浅表示辐射的强弱作出辐射强度图。由于辐射值过小,为了便于显示结果,统一乘1000000。利用唯一值法表示,则可以说明各城市的辐射范围[借鉴自潘竟虎文章]。
❷ arcgis Python加载项鼠标事件
arcgisPython加载项鼠标事件如下
加载项提供了一种向最终用户分发自定义用户界面的简便方式。不需要安装程序。只要将一个扩展名为.esriaddin的压缩文件复制到一个已知文件夹中,其他工作交给ArcGIS来处理。为了能够进一步简化开发过程,ESRI还提供了一个Python加载项向导。你可以从Esri官网下载安装向导。这也是本章要介绍的第一个案例。
我们还可以创建多个类型的加载项。按钮和工具是最为简单的加载项。点击按钮来执行业务逻辑操作。工具与按钮非常相似,不过工具需要先与地图窗口进行交互后再执行业务逻辑操作。组合框则提供了选项列表让用户进行选择。
❸ Arcgis Engine二次开发用python可以吗
1.自定义工具箱是什么
就像名字一样,自定义工具箱是由个人创建的工具箱,就像下面这样,可以理解成一个 .tbx 后缀的压缩包,每一个工具箱中都可以添加多个工具集、脚本工具甚至模型构建器工具。
一大堆工具箱
1.1如何添加自定义工具箱(熟悉可跳过)
第一步:右键点击 ArcToolbox -> 添加工具箱
第二步:在打开的添加工具箱窗口中选中需要添加的工具,然后点击右下角的打开即可。
添加工具箱到 Arcmap
1.2如何创建自定义工具箱
点击右上角的红色工具箱符号,可以新建并重命名一个工具箱。
我们这里新创建了一个海怪工具箱,用于之后的教程演示。
新建工具箱
1.3添加一个脚本工具
新创建的工具箱就像一个大箱子,箱子呢是用来装工具的,你可以直接在工具箱中右键,然后点击添加,再点击脚本,进而创建一个脚本工具;
亦或是右键,点击新建,再点击工具集,创建一个可以自定义名称的工具集,然后在工具集里新建一个脚本工具。
这里添加的脚本工具只是一个空壳,我们后面会继续完善。
新建的工具箱位于 ../Chapter7/海怪工具箱.tbx。
2.工具箱的封装
工具箱由三部分组成,其中有两部分需要我们来控制:
一是输入界面:确定工具箱输入界面的参数定义和设置;
二是 Python 源代码:功能的实现,为 .py 后缀的脚本文件;
三是对参数行为提供额外控制的可选验证代码,其位于工具箱中(这部分自带,基本上不用修改)。
所以下面的重点就是输入界面和 Python 源代码。
2.1工具箱输入界面
工具箱输入界面,或者说图形交互界面(GUI),就像下面的几张图一样,从该界面我们可以控制工具的行为,自定义输入界面然后配合 Python 脚本,可以实现多种客制化的功能。
简单来说,你可以认为输入界面是依托于 Arcmap 的“前端”,脚本代码就是负责运行的“后端”。
导入导出工具:
为方便演示,制作一个非常简单的工具箱,它的功能呢就是把输入的要素类(数据库或者 shp )再导出来而已,是完全没有用的导入导出功能啦,不过作为演示还是非常不错的。
制作完成后的导入导出工具的界面
第一步:
在工具箱中,右键点击添加,再点击脚本,然后修改名称,修改成你想要的名字,勾选存储相对路径名,然后点击下一页。
修改名称
第二步:
然后添加脚本文件,添加该脚本文件 ../Chapter7/toolscript/input_and_output.py,读者可以在最后的下载包中找到该文件。
然后点击下一页。
链接python脚本
第三步:
控制用户交互界面。ArcGIS 在这里内置了一整套简单但是实用的图形控件,比如输入菜单、下拉框、多选框、单选等,借由这些图形控件我们可以控制脚本工具的图形交互界面。
我们这里使用的脚本功能非常简单,上面也有说到:输入一个矢量要素类,不做任何处理,然后输出一个矢量要素类。
为了匹配这个脚本,我们需要设置一个输入图层的控件,同时为了能顺利的输出,也需要一个输出图层的控件,注意一个是输入一个是输出。
从下图可以看到,左边(左边的橙色框)是显示名称,其中输入输出控件的名称以及输入控件的名称,这里命名为输入要素和输出要素;然后在右边(右边的橙色框)的数据类型下拉框中,我们选择要素图层,这里只能做选择,不能任意输入。
设置名称和数据类型
那么输入输出是如何区分的呢?
选中输入要素(变成蓝色),然后可以看到下方(下方橙色框)的参数属性设置选项卡,这里可以对参数进行调整。
参数选项
① 类型:有三种,一般只会用到 Required 和 Optional,表示必须和可选,用于控制参数是否可以忽略不填;
② 方向: 两种,Input 和 Output,表示输入和输出,大部分情况都是使用 Input 来获得参数,Output 用于获得最后的成果数据,像是矢量、栅格或者图表;
③ 多值:Yes 或者 No,用于输入多个相同类型的数据,工具打开后就是下面这样,在输入要素中可输入多个要素类;
④ 默认:设置一个控件的默认值,直接输入即可。可配合多值一同使用,使用 ; (英文的分号)分开,
结果如下,可以看到一打开该工具就已经填充上了预设的多个默认值(报错是因为数据类型不是要素图层);
⑤ 环境:工具箱的环境设置,比如掩膜、容差范围、默认数据库位置等,一般不预先设置;
⑥ 过滤器:选择文件类型可以在选择文件时只显示特定格式的文件;
⑦ 获取自:指定数据的获取源。这是个什么意思呢?比如我们想要获取图层A的某个字段,获取源就是图层A。
以下面这种图作为例子,新增名为字段的控件(上方的橙色框),数据类型也是字段,然后参数属性中获取自选择输入要素(下方橙色框)。
设置字段控件
点击完成后,打开脚本工具。在输入要素框中选择一个图层,然后再点击获取字段,如下就可以选择图层中的字段了。
获取图层的字段
⑧ 符号系统:在最下面还有一个符号系统,通常只能作用于输出的矢量图层(方向:Output),可为输出图层指定设置好的 lyr 文件样式。
设置符号系统
第四步:
点击右下方的完成,那么脚本工具的输入界面就完成了。
2.2 Python 脚本
工具箱输入界面和 Python 代码要相互配合才行,工具箱界面中的输入、输出以及各种各样的参数,在 Python 脚本文件中都得一一对应上,将输入界面中的各个参数传给 Python 脚本,这样才能让 Python 脚本按照预期的效果正常运行。
看上去有点麻烦,但实际上 arcpy 中提供了现成的函数就可以直接获得参数。
①参数对接(获取)
至于如何对接参数,我们使用刚刚的那个脚本文件举例:
../Chapter7/toolscript/input_and_output.py
# -*- coding:utf-8 -*-
import arcpy
#▶1◀
input_lyr = arcpy.GetParameterAsText(0)
output = arcpy.GetParameterAsText(1)
if __name__ == '__main__':
lyr = arcpy.mapping.Layer(input_lyr)
arcpy.CopyFeatures_management(lyr, output)
▶1◀:arcpy 提供了 GetParameterAsText(index) 函数,该函数根据输入界面的排序号码获得指定的参数。比如 GetParameterAsText(0) 获得的就是输入图层参数, GetParameterAsText(1) 获得的就是第二个参数,也就是输出图层参数。
如果有更多参数,以此类推。
②参数对接中应该注意的情况
GetParameterAsText(index) 从输入界面获得的参数都会转变成字符串,没错都是字符串。
如果你只是输入输出地址这种,那么没有问题,因为地址本来就是字符串,但是如果你设置了一个选择长度范围的长整型的控件、亦或是某种布尔值选择,最后输入到 python 脚本这里都会变成字符串。
整数变成字符串,使用 int(str) 规避;
布尔型变成字符串,True 变成了 "True",False 变成了 "False",这样就不能判断真假了,需要写一个判断语句或者随便你,方法很多;
还有就是一个输入控件多值的情况,所有值根据先后连接成一个字符串,中间由 、(英文分号)间隔,可以使用 split 函数分开;
❹ arcgis中打开python后,如何编程
此功能和Python的编辑模式是一样的:
1.
编写一行,运行一行;
2.
最大的的好处是,可以很方便的调用ArcGIS的接口,处理GIS数据;
3.
当然也可以使用ArcGIS
Toolboxes:
❺ 怎么用python制作ArcGIS断裂点插件
方法/步骤
新建一个txt文本,在文本中写入如下代码代码作用是根据纬度和太阳倾角获取正午太阳高度角和方位角。
将第一步的txt文本保存为*.py文件。
在
ArcToolbox
里,右键
toolbox,选添加->scripts,填写如下图文本(9.3版本界面):
单击“下一步”后是参数配置页面:Latitude、Declination是输入参数,Sun
Angle、Arimuth是输出参数,完成脚本参数设置。
5
运行脚本出现如下所示对话框,设置好输入参数即可被Python脚本getparameterastext语句获,以进行更多的后续操作。这实际上实现了Python与用户的交互。
6
最后,将脚本工具拖动到模型构建器里(如下图),脚本工具的输出参数又可以作为其他处理过程的输入参数,进而建立工作流模型。
❻ 怎么用python开发arcgis
在Pyhton写的一些代码,用户交互不方便,用户体验比较差,不方便重用。在ArcGIS中可以将用写的Python代码导入到ToolBox中,这样用起来就比较方便了。这里用按要素裁剪栅格的Python来演示如何导入ArcGIS中。代码如下:
import sys
reload(sys)
sys.setdefaultencoding( "utf-8" )
import arcpy
import string
from arcpy.sa import *
try:
raster = arcpy.GetParameterAsText(0) #要裁剪的栅格
clip_feat = arcpy.GetParameterAsText(1) #裁剪要素类
field = arcpy.GetParameterAsText(2) #命名字段
outworkspace = arcpy.GetParameterAsText(3) #命名字段裁剪后输出目录
for row in arcpy.SearchCursor(clip_feat):
mask=row.getValue("Shape")
outPath=outworkspace+"\\"+str(row.getValue(field))
outExtractByMask = ExtractByMask(raster,mask)
outExtractByMask.save(outPath)
except arcpy.ExecuteError:
print arcpy.GetMessages() 在用户工具箱中新建工具箱(在系统工具箱中不能新建),在工具箱右键,添加脚本;
输入名称、标签、描述等信息。下一步,选择脚本文件。(这里需要注意的是:一定要勾选"存储相对路径名"这个选项)
设置参数,这是最重要的一步。其中参数即代码中GetParameterAsText(n),并选择合适的数据类型,在参数属性中也可以进行相关设置。如果输出栅格名称按裁剪要素中的某个字段,需要设置"获取息"属性,还要进行过滤一下。
设置好一切参数过后,就可以来进行测试了。在本机上测试通!
接下来便是怎样移植到其他电脑了的问题了。前面我说说过要存储为相对路径,否则,将报错00576:脚本工具使用的脚本未处于所需位置。创建脚本工具时,有一个选项用于存储相对路径名(而不是绝对路径名)。设置此选项后,脚本的相对位置和保存脚本工具的工具箱必须保持不变。执行工具时移动两者中的任何一个都会出现此错误。
但改为相对路径后,在其他电脑上也能正常运行,但弹出了警告窗口。原因是客户机上没有勾选扩展模块相应的功能。这个示例需要勾选空间分析模板,因为使用了按掩膜提取这个工具。这个脚本实现的详情参考:使用Python脚本批量裁切栅格
发布给他人,涉及到个人知识产权的问题,怎样让他人使用工具,又不能看到脚本代码?如果编辑调试完成了,在脚本工具右键可导入脚本。
设置密码后,即可。
❼ arcgis 怎么用python做统计分析
方法/步骤
1
打开arcmap软件,点击工具栏上的ArcToolbox工具箱,在工具箱里面选择要进行数据处理的工具(工具的选择视数据处理的内容而定),本文选择了“Define Projection”定义投影的工具进行说明。
双击此工具,在弹出的工具窗口点击右下角的“Show Help>>”按钮。
2
点击“Tool Help”按钮,此时就打开了软件的帮助文档并定位到了此工具(define projection)对应的页面,往下拉动滚动条,定位到此工具的python脚本的内容:
Syntax 介绍了此工具脚本的语法
Code Sample 介绍了脚本使用的例子
拷贝脚本使用例子里面的代码。
3
在软件的主界面点击“Geoprocessing”菜单-->点击“Python”菜单项,即出现内嵌在arcigis中的python工具窗口。
python工具窗口的左边是代码编辑区域,右边是信息提示区域。
4
把第2步拷贝的代码语句粘贴到python工具窗口的左边区域,修改一下工具脚本的参数(视具体工具和数据而定),连续点击两下回车键。
5
等待脚本程序的执行完成,完成之后在桌面右下角会弹出提示信息,同时pythong工具窗口的右边区域也会有具体的工具脚本执行信息。
6
执行完成之后,在arcmap加载处理过的数据,右键查看属性,可以看到通过此工具脚本(define projection)进行投影定义的数据已经具有了投影参数。
http://jingyan..com/article/eae07827ba96a51fec548513.html