版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、文档来源为 :从网络收集整理 .word 版本可编辑 .欢迎下载支持初学入门ArcGIS中Python脚本的使用By:飞天小猪目录写在前面的话 错误 ! 未定义书签。前言 错误 !未定义书签。一、PYTHON语言基础 错误!未定义书签。1 数学运算符 错误!未定义书签。2 字符串操作 错 误 ! 未定义书签。3 模块的使用( MODULES) 错误!未定义书签。4使用DEF构建函数错误!未定义书签。5 流程控制结构: IF,WHILE,FOR 错误!未定义书签。6 简单输入和输出 错误!未定义书签。二、ARCGIS&PYTHON 错误!未定义书签。1 如何创建地理处理对象( GEOPROCES
2、SOR OBJ)EC.T 错误!未定义书签。2 获取地理处理帮助 错误!未定义书签。2.1 举例:如何使用 Geoprocessor Programming Model 中的 Lists 错误! 未定义书签。3使用地理处理工具 TOOLBOXE和 ALIASES错误!未定义书签。4 在建模中使用脚本( SCRIPTS INMODELBUILDER) 错误!未定义书签。5在PYTHONWIN里调试地理处理脚本 错误!未定义书签。5.1 调试选择和消息 错误!未定义书签。5.2PythonWin 的调试工具 错误!未定义书签。5.3 地理处理工具举例 错误!未定义书签。6使用描述(DESCRIB)
3、和存在(EXISTS获取数据信息 错误!未定义书签。6.1 描述 错误!未定义书签。6.2 存在( Exists) 错误!未定义书签。6.3 在循环中使用描述和存在 错误!未定义书签。7在PYTHON脚本中使用地图代数( MAPALGEBRA 错误!未定义书签。8 数据管理和指针( DATAMANAGEMENT ANDCURSORS 错误!未定义书签。8.1 数据管理( Data Management ) 错误! 未定义书签。8.2 指针( Cursors) 错误 ! 未定义书签。附录 1:地理处理脚本中输入 &输出方法指南 错误!未定义书签。附录 2:其他 错误 !未定义书签。写在前面的话一
4、直想学习 ArcGIS中的Python脚本,大四下半学期终于有了时间,可是想找到这么一 本好的教材不容易。茫茫互联网,终于找到了,对其中如获至宝,独乐乐不如众乐乐, 现在将其教程翻译并结合自己的学习情况给出总结。希望能够给更多想学习Python 的同学一个参考。另外,在我刚开始接触 Python 时,是看了,在此致谢。我想从两个大部分总结:一、Python语言基础;二、ArcGIS&Python。其中第一部分参考了、等书籍文献。对于多数读者来说,可能或多或少有一些编程基础,所以理解起 来应该不成问题。文中多数来自Jerry Davis教授的主页,放在C:prog ”目录下,为了直观,我将运算结
5、 果一并编辑,方便参考。值得一提的是ArcGIS的在线帮助文档,一个实时更新的GIS宝库,很多专业性知识都可 以找到答案,点击链接、。获取更过脚本例子来学习:ESRI的是个不错的选择。由于我也是初次接触,翻译或者心得难免有纰漏之处,希望同仁们可以多多交流!.、八、一前言在GIS建模或GIS数据管理中,你可能经常需要处理一系列步骤才可以完成的工作;你 可能有一个工作目录下的数据需要重投影、 裁剪到研究区域, 或者用某种方法组合成期望的 结果; 我们也经常需要根据不同情形用不同方法处理数据,因此我们需要作出选择, 而高质量的决策需要考虑很多低水平的决策,这可以通过脚本程序模型辅助完成。脚本编程的主
6、要目的是使枯燥的处理数据工作自动化,通过逻辑来指挥处理过程。 我想自动化和逻辑是关键,它们区别于我们多数使用计算机时的交互活动。我们发E-mail,写文章或者设计地图, 都需要和计算机交互, 而处理一系列数据, 我们需要自动化和利用逻辑来 指导自动化。在地理处理脚本逻辑中, 我们需要在允许我们做的事情中作出决定, 比如, 处理栅格数 据不同于矢量数据, 或为没投影的数据设置投影, 或处理仅在特定时间搜集的数据集。 对于 重要的GIS工作来说,脚本以及其他形式的程序是必需的,而非可有可无。在接下来的联系中,我们会探索 Python的使用以及创建脚本来使用 ArcGIS里众多的地 理处理工具。所有
7、你能在 ArcToolbox 或 Model 中使用的工具都能够用在 Python 脚本中,这 些脚本可以生成脚本工具,像其他地理处理工具一样使用。2文档来源为 :从网络收集整理 .word 版本可编辑 .欢迎下载支持TodBASETo: ijeod#!To asterP ftSOltu RasterP DEM to Raster/ Feirtre to Rato4 Hpi.b-I M 白rfa*Feiat ut eToF t eo mlanduse ly-code lurJg ArtZW:* “3OAr*M* Mu delL rH X# LO al FF 砂丄 M .lugrld - JBJ
8、?t Uurlt: -u/j a ,rpei.d-丄idwian.duse polgan = L : n . i k -pz:c _: p:_ et, i .n j ilj l- po 1 y j ,rModel 珅E 邯評* iiMndiM HelpH tf| *| 创 IHdI聶ll 创曰|p| *1# Frccesj: Feature to AsEer.gp=aregigseripcing.create(5.3) 牙p皿口匚兀亍戸冃匚:=匚二/1?匸口/血窗总匸匕耳 gp.ove匚障匸i匸巳匸口uc=lD . c o p 7f e at ur es_nianaeiri e n c (r,
9、 st-re aids/.- gp . buffer analysis (rrtr. shprr=_ gp , C1 ip analysis (Ncfec 1 shp r ,Fstbi.iff 2乡 dipstreamsZOiO.py安装 PythonWin,在ArcGisDesktop9.3.isoDesktopPythonWin目录下可以找到F面介绍Python的一些简单语法和规则。1数学运算符Python提供了多样化的通用数学运算符一一多数编程语言的特征,以及许多通过 import的modules提供的符号。常用的有 +,-,*,/,*(幕),取模,即除后的余数)。下面的表格显示了整型(
10、Integer)和浮点型(Float)各种组合运算的结果,记住 条规则,只要参与运算的有浮点型,则结果为浮点型;全为整型时,结果才为整型。输入表达式结果Notes2+35整型结果2.+35.02.是浮点型,结果浮点型2-3-12*36整型结果2.*36.0浮点型5/22整型5./22.55%21取模Az=270Newaz=az+180Print newaz%36090取模的用途之一方位角加180后逆转方向5*22525*0.55.0没有sqrt()功能,除非添加math模块2字符串操作注:使用 Python帮助:有超过 30种内置方法来处理字符,请到Sequenee Types下的String
11、 Methods寻找帮助!字符串是一串字母,比如an Fran cisco;字符串下标从0开始。学习字符串语法的最好方法是自己动手尝试,下标展示之:输入结果Notesprin t zhulj.capitalize()s=zhuprint s.capitalize()Zhuljs.capitalize()即将 capitalize()方法用于 sprint s0zs1=s1 print s1hStri ngs可以像一个字母列表一样处理,第一个字 母下标为0,某个字符段可以用1:3来格式化:从 第1个的开头到第3个的开头,不包括下标为 3 的字母;s-1表示倒过来第一个,相当于slen(s)-1p
12、rint s-2:ljprint s2:3uprint s2:4ulprint s2:,s:5ulj zhuljs2=s.upper() print s2ZHULJ我们可以将字符串方法的结果赋给新的变量s3=s+s2 print s3zhuljZHULJ字符串组合用“ +print s*3zhuljzhuljzhulj字符串重复用“ *”,后为重复次数selstr=elev1000print selstrelev1000字符串可以使用单引号或双引号,跨行时用双引othersel= elev 1000 ” print othersele!ev 1000号。print s.isupper()Fal
13、se一些方法返回值为布尔型(True或False), 一些print s2.isupper()True返回索引值(下标值)p=d:/work/lu.shpprint p.find(.10print p.find( /)2plist=p.split(/) print plistd:, work,lu.shp你可以用split()方法解析出不同的字符串片段,并创建一个列表(List),我们可以使用其中不同的丿元糸prin t plist0d:prin t plist1workp2=d:worksoil.shpprint p2d:worksoil.shp反斜线“ ”和某些字母一起有特殊用法,如 n
14、为换行,“ ”为转义字符,如“ ”则表示“ ”prin t Jerrys KidsJerrys Kidsprin t JerrysnKidsJerrysKidsp3=rd:worksoil.shpprint p3d:worksoil.shp字符串前加“ r”则强制“ ”代表其本身,而非 转义字符,这对于文件路径的操作很方便3模块的使用(Modules)Python提供了一系列内置的方法(大量依赖于模块)用于通用编程。Python安装时自带了大量 Modules,最常用的有 math,sys,random,array 以及 os.path。当然还有好多 Modules可以下载,比如数字处理(Nu
15、meric)numpy,可在或里搜索。页面中列举了一些。使用Module前,必须import之。通常我们会将一行import 90:sunan gle=180-s unan gle azimuth=0print sunan gle,azimuth上面的例子中lat和decl强制赋了值。有三种流程控制操作:if仅在一个特定情形下才执行语句;while当一种情形存在下,持续执行语句for遍历一系列值这些语法和def有些相似:初始语句后加顿号、需要执行的语句块有缩进。这三个结构的一些重要的公共特征: if、while、for语句均以冒号结尾,接下来是缩进的代码块,用于if、while、for定义的情
16、形。在脚本编写窗口,你会发现,你在一行末尾打上冒号后,下一行自动缩进,在接下来的一行按下退格键取消缩进。 如果你只需做一件事情,你可以在冒号后面同一行添加简短的语句,比如:if x0: print 比 0 大print下一行不要缩进了。if ( continued)接下来,我们会探索一下另一个方便的模块:os.path:开始之前,在d:/下创建一个testfolder ”文件夹,然后新建一个“ test.txt ”文件; 尝试以下代码段,确保print语句前有缩进。import os.pathif d:/testfolder/test.txt):print 测试文件夹存在”print txt文
17、件存在”elif d:/testfoldeL):print 测试文件夹存在”print 测试文件夹存在,但txt文件不存在”else:print 两者都不存在可选探索示例接下来的例子做的事情对GIS非常重要,但是实际上不用任何地理处理代码。USGS7.5米分辨率DEM (数字高程模型)是文本文件(USGSDEM文件),投影为UTM, UTM北向和东向单位是米,但是高程单位可能是英尺( feet)或米(meters )。因此在获取垂直或水平距 离信息时会有问题,比如坡度可以通过垂直距离/水平距离获得。如果你不在使用Z值之前设置为0.3048,将会出现错误结果。但是不幸的是,你可能不知道 DEM文
18、本文件的垂直单 位是英尺还是米。这些信息保存在第539个字符里,“1”代表英尺,“ 2”代表米,所以可以通过读取这个文件判断。下面的脚本演示了上述内容:import file in putin file=rc:progpe ndatawoodside.demfirstl in e=file in put. in put(i nfile)0un itchar=firstli ne539un it=(u nknown:n ot a 7.5 DEM?)if un itchar=1:u nit=feetif un itchar=2:u ni t=metersprin t nElevation in+
19、+u nitfile in put.close()输出结果:Elevatio n in feetwhile ( continued)?运行下面的代码,说明了一种while循环:x=1while x10:print xx=x+1屏幕依次输出19F面说明一下“=”(等于)的概念:x=5x=5z=x=4z=x=5print zprint z输出False输出True“=”是逻辑运算符之一,其他有 “”(大于)、“=”(大于或等于) “ =”(小于或等于)、“ ”(不等于)。使用逻辑运算符计算得到结果为布尔型:true ( 1)和false( 0)。下面例子简单体会一下布尔型表达式:x=1while
20、x10:print xx=x+1表达式x10”结果是true或false,所以这样允许我们在计算完一种情况时运行 一系列代码。许多情况下我们需要使用条件代码。while循环的一个优点是允许我们跳过整个部分,如果条件不满足初始情况。由于 while提供一种容易结束循环的方法,我们甚至用它代替if语句。当循环一个数据集时(GIS中很常用的工作)while循环很有用。在后面地理处理中我们会接触一些 例子。for尝试下面代码,演示了for循环:for x in 1,2,3,4:(注:1,2,3,4用 range(1,5)代替是一样的)msg=hello worldprint str(x)+ +msg
21、(注:当我们希望一个数字 x和字符串连接时,必须先 对数字进行格式转换即str(x),否则系统报错)下面的代码创建并输出指定文件夹内shp文件名列表(每个都以.shp 结尾)import os ws=c:/prog/hmbareailist=os.listdir(ws)#创建一个列表保存工作文件夹内的文件 fcs=#创建一个空列表,保存结尾为.shp 的文件for i in ilist:if i.en dswith(.shp): fcs.appe nd(i) for fc in fcs: print fc (输出结果如右图所示)s是标准差这两个是geol.shp_stiplanduseshp
22、stbuf C200. shfjStue ains . s hp water shp0.05左右,即统计结果下面这个例子的循环较多次数。变量mu是算术平均数,random.gauss()用到的参数,可以尝试改变 n的值查看结 果!import ran dommu=50s=10z5=mu-s*1.96 z95=mu+s*1.96coun t=0n=100000for i in ran ge( n):x=ra ndom.gauss(mu,s)if xz95:co un t=co un t+1print float(count)/n (每次运行的结果都不同,但都在在5%左右)6简单输入和输出我们现在
23、利用前面计算太阳角代码的片段,之前是直接指定参数值,现在我们有很多种方法提供输入参数,现在我们用sys方法。尝试下面的代码,点击/ ( run运行)之后,在对话框中函数自变量(Arguments) 栏填入:40 23.44,如下图:import syslat=float(sys.argv1)decl=float(sys.argv2)# 使用 arguments( argv)方法从Arguments ”一栏中获取输入 参数,并指定一个浮点型转换将字符型输入值传递给lat和declsunan gle=90-lat+declazimuth=180 if sunan gle90:sunan gle=1
24、80-s unan gleazimuth=0print 正午太阳角=+str(sunangle)print方位角=+str(azimuth)(结果:正午太阳角 =73.44 方位角=180)二、ArcGIS&Python1如何创建地理处理对象(geoprocessor object )所有 geoprocessing 的 Python 脚本都可以通过 import arcgisscripting 或者 win32com 去穿 件 geoprocessor object。下面的例子显示二者区另U:arcgisscripting module 需要在;通过win32com创建的geoprocess
25、or可以在不同的 Python版本上运行。#9.3 import arcgisscript inggp=arcgisscripti ng.create(9.3)gp.workspace= c:/T on gassgp.clip_analysis( “tandb4 CclipcovCstandb4_clip CPOLYC1.25) #Dispatchimport win 32com.clie ntgp=gp.workspace= c:/T on gassgp.clip_analysis( “tandb4 Cclipcov”standb4_clip ,POLYC1.25”)理解ArcGIS中数据多
26、样性格式对我们理解地理处理工具很有帮助。比如,特征数据可能是单个shp文件;geodatabase (地理数据库,我们可能指定地理数据库为 工作空间):多边形、弧或点要素的coverage数据。当我们想遍历工作空间里的coverage 文件时,应使用 ListDatasets 而不是 ListFeatureClasses2获取地理处理帮助如果你基本熟悉了Python的语法,便可以开始熟悉ArcGIS的Geoprocessing啦,获取这些方法帮助的途径有两个: ArcGIS 帮助系统, Go To Geoprocess in g/Automati ng your work with scrip
27、ts/Scripti ng object:Properites and Methods.这里你会看到 Geoprocessor Object,这个能让你很方便地获得所有对你有用的条目、 设置和其他操作文档。比如,你想得到特定类型的文件,就找到listfeatureclasses方法: fcList=gp.ListFeatureClasses(w* ”polygon”注:此方法的语法为:object.ListFeatureClasses(wildCard As String, FeatureTypeAs String) As Python List = optional wildcard为通配符
28、,和星号(*)组合使用,如果没有通配符则返回 工作目录下的所有 feature classes。 ,包含方法(左箭头表示)、属性(可读写的表示为杠铃形,只读的表示为部分杠铃 形)2.1 举例:如何使用 Geoprocessor Programming Model 中的 ListsLists (列表)及其属性和方法在图表中用紫色标出,如下:T_l IndeaV :iejds Pythor L sJFWI4=也咲2強 Do产谄in EdCli4. BhIM1 BNuiaca:1自薛曲岀n icrthi Type BCM Pre-:-4- Z卑mu说 DCs I -dw* 倉环4nlyp tiS-T
29、iKhrti&us iTcQiNsniv* -_ r jjIVjt! 胡2匚;PyJ-or LisVriklCardZ Fytnor LI就4Cl-If I i-*- -II -I i- Jj 勺斗4- LMtalHiQtaBM MttM DnvWTKHfc 帼nn mi LiMHlparTyipek 頁贰颐 Lin4-二吨 f-.lhr I LaCt IJMWblHlIMMI ChIMCMLPffhflfi L. rEr/irzrmws 出ilz:匚) . - * LMTWboei-Pyl性+ iMTM.LMt 屮 u ,啣从-dC- 凸呻w i let现在我们试着编写一段脚本列举出属性表中
30、所有属性值(Fields)(以hmbarea栅格下)DatJ SourceDmtm Type: 匚oiverags: heature Clms;Coverage datura 匚:rogUlPCiar east r earns rc e wecf iLe (1 showFieldsDEsc . py 1 ) 丄目竝涓uuu启匚Dn匸冃目二匚;Rowid OIDVALU! Integer匚COTJT IntegerLU-DESC String土地利用为例,文件存在c:proghmbareaimport arcgisscripting, sysgp = arcgisscripti ng.creat
31、e(9.3) gp.workspace = c:/prog/hmbarea fieldList = gp.ListFields(la nduse, *, all)dsc=gp.describe(la nduse)prin t la nduse+ +dsc.DataType+:for field in fieldList:. print field.Name, field.Type (此时输 出结果如右图)3使用地理处理工具Toolboxes和Aliases总所周知,地理处理工具在脚本中的使用和ArcToolbox中相同,但是需要提供工具名称来使用它们。但是记住一个名称可能有好几个工具,比如,裁
32、剪工具(Clip )在Coverage-Analysis-Extract 工具集里,另一个是在 Data Management Tools 下的 Raster 工 具集下。区别是每个工具适用不同的数据类型,但是我们如何在脚本中区分它们呢?在ArcToolbox中,我们可以随意选择要使用的工具,但在脚本里就必须在某些方面 加以区分。因此我们使用 Aliases (别名)一一已经成为工具名称的一部分。每一个工具都有自己的别名,我们可以通过右键- 属性来查看:AliaseToolbox3d”3D An alystan alysisAn alysisarcCoverageman ageme ntDat
33、a Man ageme ntcartography ”Cartographya?con vers ionCon versio ngeocodi ngGeocodi nga ?gaGeostatistical An alyst“r ”Lin ear Refere ncinga ?saSpatial An alyststats cSpatial Statistics21现在我们用一段脚本来解释:import arcgisscripti ng,sysgp=arcgisscripti ng.create(9.3)gp.Workspace=c:/prog/hmbarea ”gp.overwriteout
34、put=1 #OverWriteOutput:Boolea n, 为 1 表示允许覆盖已存在文件#将streams/arc转换为shp文件gp.copyfeatures_ma nageme nt(streams/arc, streams.shp)#利用转换后的shp文件,做200米的缓冲gp.buffer_analysis(streams.shp, stbuff200.shp, 200)#用做过缓冲的shp裁剪gp.Clip_analysis(geol.shp, stbuff200.shp, geolstr200.shp)注:上面脚本用“ #”注释的中文内容不要出现在脚本文件中,否则会出现错误
35、 结果截图:如果你一次使用一个工具集中的若干工具,可以通过环境设置省下一些文字:gp.Toolbox = An alysisgp.Buffer(streams.shp, stbuff200.shp, 200)gp.Clip(geol.shp, stbuff200.shp, geolstr200.shp)4在建模中使用脚本(Scripts in ModelBuilder )首先,需要记住的很重要的一点是,ArcToolbox里相当数量的工具实际上都是(Spatial Staistics tools)脚本。脚本都有一个一|图标。比如,空间统计分析工具-I Spatial Statistics Tc
36、ols三 Analyzing Patterns 書 Average: Nearest Neigh 毬 Ugh/Lo Clustering (& 嚴 Multi-Distance spatial C/ 倉 5patil /Xutocorrelation _毎 & Mapping dustersPython脚本(一些是模型中使用了脚本+ 酝 Mfta5Lirrig G&ogr-sphic Distr J 几乎都是-紿 Rendering1 S:- Cluster/OJtlier Analysis)CJIect Events with Rer畫 Count kenderinci:Jk Hot Spo
37、t Aralyas 刨th I亠盞/ S化罚如吨丄)。实际上,我们可以复制并编辑这些脚本作为其他用途。为了在ModelBuilder中使用脚本或将脚本当做 ArcToolbox中工具使用,我们需 要考虑如何给它输入值以及让其设置输出值。仍然以太阳角计算代码为例,我们给 其加上两句引用,四句输入输出语句,就可以用作Modelbuilder中的一个步骤了。编辑下面的脚本,不过不要再PythonWin中运行之,因为 getparameterastext和 setparameterastext 只能用在脚本工具(ArcToolbox或 Modelbuilder )中。import arcgisscri
38、pt inggp=arcgisscripti ng.create(9.3)lat=float(gp.getparameterastext(0)decl=float(gp.getparameterastext(1)sunan gle=90-lat+declazimuth=180if sunan gle90:sunan gle=180-s unan gleazimuth=0gp.setparameterastext(2,str(s unan gle)gp.setparameterastext(3,str(azimuth)这段代码中的“新面孔”:getparameterastext :是 Pytho
39、n 传递给 geoprocessor (我们称之为 gp)的一个 方法,允许工具提供输入参数。每次你运行这个工具时,都会看到一个对话框,提示输入参数,这个方法允许你在接下来的程序中使用。索引0和1指第一个和第二个参数。setparameterastext :和 getparameterastext 相反,它传递第二个条目(比如 str(sunangle)的值)给指定的输出参数。前两个参数索引为0和1,所以接下来输出参数的索引为2和3。然后,我们需要将脚本加进工具(Maki ng a script into a tool),那样才能在ArcToolbox或ModelBuilder或Comma n
40、d line中使用。如前面提到的那样,这个脚本 只能用于工具,包括输入/输出方法是PythonWin不能处理的,但这些是多数工具必 需的。在ArcCatalog里,定位到Python脚本保存的文件夹,最好和数据在一个盘里,右 键-新建toolbox。当然也可以使用之前创建的toolbox。在ArcToolbox里,右键toolbox,选添加-scripts,填写如下图:- 注意:脚本文件是一个脚本工具的参考!非常重要的一点, 你使用脚本创建了一个脚本工具,但是脚本本身并没有和工具一起保存,脚本工具作为toolbox的一部分保存在“ *.tbx ”文件中。你也可以右键脚本工具点击“编辑”,出现P
41、ythonWin或其他任何IDE窗口,这看起来好像是脚本存在于工具中。所以, 记得移动时将脚本工具文件和脚本本身一起拷贝。“下一步”后是参数配置页面,如下图设置各参数如表格所示:Display NameData typeDirectionDefaultLatitudeDoublein put0Decli nati onDoublein put0Sun An gleDoubleoutput35AzimuthDoubleoutput300现在可以运行此toolbox 了,对话框提示你输入 latitude和declination。工具是否正确运行呢?如果是的话,你应该可以看到“ Completed
42、 ”,你可能会看到有一黑色窗体一闪而过,不用担心。那么,它是干什么的呢?还记得结果是输出两个数字参数,那么,这些数字哪去了呢?很好的问题,这仅能说明你能创建一个工具,但是不能想ArcToolbox那样运行。比如输出一种数据,栅格或特征数据(.shp)之类的。但是它能在作为 Modelbuilder工具正常运行,下面我们将使用它的输出参数创建一个 hillshade。在你的toolbox中新建一个 model,将刚才创建的脚本工具(script tool )拖进来。 双击工具,输入参数,初始化之。打开Sun Angle”和Azimuth ”发现它们还是默认值,说明此脚本工具还没有运行。右键单击工
43、具,选择Ru n,然后发现两个输出参数已经改变!Open.Edit Edit Do匚umentation,需要注意的是:latitude范围是-9090, declination范围是-23.4423.44。尝试输入 latitude -70,declination 23.5,你会得到什么?为什么?确保你已经得到值域内的太阳角和方位角,它们将是构建hillshade的输入参数。首先,添加hillshade工具,双击指定一个elevation栅格数据(这里我选择了 marbles 文件夹下的elevation ),用下拉条指定 azimuth和altitude值为azimuth和sun angl
44、e。 运行,然后右键单击输出文件,选Add to Display ”在ArcMap里查看结果。11-firnnFsllatFi探索1 :如果你想通过日期获取太阳倾角,该怎么做呢?尝试下面代码,保存为getnoonsunfromdata.py,现在有五个参数,如下表进行正确设置:Display NameData typeTypeDirectio nDefaultMon thLo ngRequiredin put1DateLo ngRequiredin put1LatitudeDoubleRequiredin put0Sun An gleDoubleDerivedoutput35AzimuthDoubleDerivedoutput300import win 32com.clie nt,sys,math gp=esriGeoprocess in g.GpDispatch.1)#构建两个函数,首先判断输入月/日的合法性,然后获取是一年中的第几天def jdate(im, id):#通过年月日起返回一年中的第几天lastD = 31,28, 31,30, 31,30, 31,31,30, 31, 30, 31jd = 0, 31,59, 90, 120, 151, 181,212, 243, 273, 304, 334if (im 0)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026中国华电集团有限公司河南公司招聘4人笔试备考试题及答案解析
- 2026内蒙古行政执法(阿拉善盟岗位)“兼通蒙古语言文字”岗位蒙古语言文字翻译水平加试笔试备考试题及答案解析
- 2026中国科学院广州地球化学研究所蚁瑞钦研究员与林莽研究员博士后招聘(广东)笔试备考题库及答案解析
- 2026湖北武汉东湖新技术开发区消防救援大队招聘政府专职消防员30人笔试备考题库及答案解析
- 2026广东中山市神湾镇中心幼儿园第一期招聘编外人员4人笔试备考试题及答案解析
- 2026年芜湖职业技术学院单招职业技能考试参考题库含详细答案解析
- 2026福建龙岩新罗区大池中心幼儿园招聘3人笔试备考试题及答案解析
- 2026福建厦门市集美区博雅实验幼儿园非在编人员招聘2人笔试备考题库及答案解析
- 2026年上半年洛阳新安县城镇公益性岗位招聘56名笔试备考题库及答案解析
- 2026年芜湖臻鑫智镁科技有限公司公开招聘笔试备考题库及答案解析
- 学习走好中国特色金融发展之路建设金融强国心得体会、交流研讨
- 【课件】2025年危险化学品典型事故分析-终版
- 医院精神科患者风险评估标准
- 5.1《四大地理区域的划分》教案-2025-2026学年湘教版地理八年级下册
- 雨课堂学堂在线学堂云国际关系:理论与实践西安外国语大学单元测试考核答案
- 个人投资业务管理办法
- 空调延长质保协议书
- 仓库转正述职报告
- 《危险货物运输》课件
- 询问供应商放假通知范文
- 系统servo guide mate常用调整项目入门指导
评论
0/150
提交评论