搜档网
当前位置:搜档网 › arcgis中Python脚本的使用【简明教程】

arcgis中Python脚本的使用【简明教程】

arcgis中Python脚本的使用【简明教程】
arcgis中Python脚本的使用【简明教程】

[初学入门]ArcGIS中Python脚本的使用

By:飞天小猪

目录

写在前面的话 (2)

前言 (2)

一、PYTHON语言基础 (3)

1数学运算符 (3)

2字符串操作 (4)

3模块的使用(M ODULES) (5)

4使用DEF构建函数 (6)

5流程控制结构:I F,W HILE,F OR (7)

6简单输入和输出 (9)

二、ARCGIS&PYTHON (10)

1如何创建地理处理对象(GEOPROCESSOR OBJECT) (10)

2获取地理处理帮助 (11)

2.1举例:如何使用Geoprocessor Programming Model中的Lists (11)

3使用地理处理工具——T OOLBOXES和A LIASES (12)

4在建模中使用脚本(S CRIPTS IN M ODEL B UILDER) (13)

5在P YTHON W IN里调试地理处理脚本 (19)

5.1 调试选择和消息 (20)

5.2PythonWin的调试工具 (21)

5.3地理处理工具举例 (22)

6使用描述(D ESCRIBE)和存在(E XISTS)获取数据信息 (22)

6.1描述 (23)

6.2存在(Exists) (24)

6.3在循环中使用描述和存在 (24)

7在P YTHON脚本中使用地图代数(M AP A LGEBRA) (27)

8数据管理和指针(D ATA M ANAGEMENT AND C URSORS) (28)

8.1数据管理(Data Management) (28)

8.2指针(Cursors) (29)

附录1:地理处理脚本中输入&输出方法指南 (32)

附录2:其他 (33)

写在前面的话

一直想学习ArcGIS中的Python脚本,大四下半学期终于有了时间,可是想找到这么一本好的教材不容易。茫茫互联网,终于找到了旧金山州立大学Jerry Davis教授的个人主页,对其中《Geoprocessing Scripts With Python》如获至宝,独乐乐不如众乐乐,现在将其教程翻译并结合自己的学习情况给出总结。希望能够给更多想学习Python的同学一个参考。

另外,在我刚开始接触Python时,是看了台湾辅仁大学一位老师的视频课件,在此致谢。

我想从两个大部分总结:一、Python语言基础;二、ArcGIS&Python。其中第一部分参考了《Python精要参考(第二版)》、《Python编程金典(读书笔记)》等书籍文献。对于多数读者来说,可能或多或少有一些编程基础,所以理解起来应该不成问题。

文中多数数据来自Jerry Davis教授的主页,放在“C:\prog”目录下,为了直观,我将运算结果一并编辑,方便参考。

值得一提的是ArcGIS的在线帮助文档,一个实时更新的GIS宝库,很多专业性知识都可以找到答案,点击链接ArcGIS10中文帮助、ArcGIS9.3.1或9.3英文帮助。获取更过脚本例子来学习:ESRI的地理处理模型和脚本工具库是个不错的选择。

由于我也是初次接触,翻译或者心得难免有纰漏之处,希望同仁们可以多多交流!

前言

在GIS建模或GIS数据管理中,你可能经常需要处理一系列步骤才可以完成的工作;你可能有一个工作目录下的数据需要重投影、裁剪到研究区域,或者用某种方法组合成期望的结果;我们也经常需要根据不同情形用不同方法处理数据,因此我们需要作出选择,而高质量的决策需要考虑很多低水平的决策,这可以通过脚本程序模型辅助完成。

脚本编程的主要目的是使枯燥的处理数据工作自动化,通过逻辑来指挥处理过程。我想自动化和逻辑是关键,它们区别于我们多数使用计算机时的交互活动。我们发E-mail,写文章或者设计地图,都需要和计算机交互,而处理一系列数据,我们需要自动化和利用逻辑来指导自动化。

在地理处理脚本逻辑中,我们需要在允许我们做的事情中作出决定,比如,处理栅格数据不同于矢量数据,或为没投影的数据设置投影,或处理仅在特定时间搜集的数据集。对于重要的GIS工作来说,脚本以及其他形式的程序是必需的,而非可有可无。

在接下来的联系中,我们会探索Python的使用以及创建脚本来使用ArcGIS里众多的地理处理工具。所有你能在ArcToolbox或Model中使用的工具都能够用在Python脚本中,这些脚本可以生成脚本工具,像其他地理处理工具一样使用。

一、Python语言基础

安装PythonWin,在…\ArcGisDesktop9.3.iso\Desktop\PythonWin目录下可以找到PythonWin的安装程序,默认

是不安装的,

。同时会安装win32com以及

允许任何脚本在基于Dispatch

的地理处理过程中工作。

ArcGIS10中引入了全新的

Python Window来增强内嵌的

Python体验。

警告:不要尝试更新随

ArcGIS安装的Python到一个新

的版本!

下面介绍Python的一些简

单语法和规则。

1数学运算符

Python提供了多样化的通用数学运算符——多数编程语言的特征,以及许多通过import的modules提供的符号。常用的有+,-,*,/,**(幂),%(取模,即除后的余数)。

下面的表格显示了整型(Integer)和浮点型(Float)各种组合运算的结果,记住一条规则,只要参与运算的有浮点型,则结果为浮点型;全为整型时,结果才为整型。

2字符串操作

注:使用Python帮助:有超过30种内置方法来处理字符,请到Sequence Types 下的String Methods寻找帮助!

字符串是一串字母,比如’San Francisco’,字符串下标从0开始。学习字符串语法的最好方法是自己动手尝试,下标展示之:

3模块的使用(Modules)

Python提供了一系列内置的方法(大量依赖于模块)用于通用编程。Python安装时自带了大量Modules,最常用的有math,sys,random,array以及os.path。

当然还有好多Modules可以下载,比如数字处理(Numeric)——numpy,可在https://www.sodocs.net/doc/1a2622057.html,或https://www.sodocs.net/doc/1a2622057.html,里搜索。https://www.sodocs.net/doc/1a2622057.html,/moin/NumericAndScientific 页面中列举了一些。

使用Module前,必须import之。通常我们会将一行import 放在程序顶部,比如:

import arcgisscripting

当然,这不必成为你程序的第一行,但必须在使用它里面方法之前。

当要引用多个模块是,中间用逗号分隔,比如:

import arcgisscripting,sys,string,os,math

我们也可以自己为频繁使用的方法创建Module,下面,我们开始体验内置的Modules。

math和random模块

很多常用的数学计算功能都可以通过math找到,比如三角计算或对数计算,如果要使用复杂数字,就使用cmath模块。

和之前一样,通过以下表格来体现模块的使用:

4使用def构建函数

有点像Module,但更简单,函数是一个自己定义功能,用在之后的代码中,并且提供任何你想要使用的参数。这个函数从此可像变量那样在程序中使用,结合例子更容易理解。接下来的代码定义了一个将度转换为弧度的简单函数,同时也定义了一个弧度转换为度的函数,它们和Excel内置的函数类似。

import math

def radians(angdeg):

return angdeg*math.pi/180

def degrees(angrad):

return angrad*180/math.pi

print math.sin(radians(45))

print degrees(math.acos(0.5))

运行之,得到结果:0.707106781187 60.0

5流程控制结构:If,While,For

任何脚本或编程语言的一个重要特征就是执行一系列不同情形语句的能力。

你想要创建一系列山影栅格来代表夏天、冬天和春秋分。山影(hillshade)工具需要有太阳高度角和方位角作为输入参数。

接下来是一段相当简单的代码,通过太阳倾角(太阳光线正午垂直照射的纬度)获取太阳角和方位角以及纬度。输入两个参数:lat(研究区域的纬度,南半球为负)和decl(太阳倾角),由此得到sunangle和azimuth:

lat=30

decl=20

sunangle=90-lat+decl

azimuth=180

if sunangle>90:

sunangle=180-sunangle

azimuth=0

print sunangle,azimuth

上面的例子中lat和decl强制赋了值。

有三种流程控制操作:

if仅在一个特定情形下才执行语句;

while当一种情形存在下,持续执行语句

for遍历一系列值

这些语法和def有些相似:初始语句后加顿号、需要执行的语句块有缩进。

这三个结构的一些重要的公共特征:

①if、while、for语句均以冒号结尾,接下来是缩进的代码块,用于if、while、for定义的情形。在脚本编写窗口,你会发现,你在一行末尾打上冒号后,下一行自动缩进,在接下来的一行按下退格键取消缩进。

②如果你只需做一件事情,你可以在冒号后面同一行添加简短的语句,比如:

if x>0: print ‘x 比0大’

print ‘下一行不要缩进了。。。’

if(continued)

接下来,我们会探索一下另一个方便的模块:os.path:

开始之前,在d:/下创建一个“testfolder”文件夹,然后新建一个“test.txt”文件;

尝试以下代码段,确保print语句前有缩进。

import os.path

if os.path.exists("d:/testfolder/test.txt"):

print "测试文件夹存在"

print "txt文件存在"

elif os.path.exists("d:/testfolder"):

print "测试文件夹存在"

print "测试文件夹存在,但txt文件不存在"

else:

print "两者都不存在"

可选探索示例

接下来的例子做的事情对GIS非常重要,但是实际上不用任何地理处理代码。USGS7.5米分辨率DEM(数字高程模型)是文本文件(USGSDEM文件),投影为UTM,UTM北向和东向单位是米,但是高程单位可能是英尺(feet)或米(meters)。因此在获取垂直或水平距离信息时会有问题,比如坡度可以通过垂直距离/水平距离获得。如果你不在使用Z值之前设置为0.3048,将会出现错误结果。但是不幸的是,你可能不知道DEM文本文件的垂直单位是英尺还是米。这些信息保存在第539个字符里,“1”代表英尺,“2”代表米,所以可以通过读取这个文件判断。

下面的脚本演示了上述内容:

import fileinput

infile=r"c:\prog\pendata\woodside.dem"

firstline=fileinput.input(infile)[0]

unitchar=firstline[539]

unit="(unknown:not a 7.5' DEM?)"

if unitchar=="1":unit="feet"

if unitchar=="2":unit="meters"

print "\nElevation in"+" "+unit

fileinput.close()

输出结果:Elevation in feet

while(continued)

运行下面的代码,说明了一种while循环:

x=1

while x<10:

print x

x=x+1

屏幕依次输出1~9

“<=”(小于或等于)、“<>”(不等于)。

使用逻辑运算符计算得到结果为布尔型:true(1)和false(0)。

下面例子简单体会一下布尔型表达式:

x=1

while x<10:

print x

x=x+1

表达式“x<10”结果是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 world"

print str(x)+" "+msg(注:当我们希望一个数字x和字符串连接时,必须先对数字进行格式转换即str(x),否则系统报错)

下面的代码创建并输出指定文件夹内shp文件名列表(每个都以‘.shp’结尾)import os

ws="c:/prog/hmbarea"

ilist=os.listdir(ws)#创建一个列表保存工作文件夹内的文件

fcs=[]#创建一个空列表,保存结尾为‘.shp’的文件

for i in ilist:

if i.endswith(".shp"):

fcs.append(i)

for fc in fcs:

print fc(输出结果如右图所示)

下面这个例子的循环较多次数。变量mu是算术平均数,s是标准差——这两个是

random.gauss()用到的参数,可以尝试改变n的值查看结

果!

import random

mu=50

s=10

z5=mu-s*1.96

z95=mu+s*1.96

count=0

n=100000

for i in range(n):

x=random.gauss(mu,s)

if xz95:count=count+1

print float(count)/n(每次运行的结果都不同,但都在0.05左右,即统计结果在5%左右)

6简单输入和输出

我们现在利用前面计算太阳角代码的片段,之前是直接指定参数值,现在我们有很多种

方法提供输入参数,现在我们用sys方法。尝试下面的代码,点击(run运行)之后,在对话框中函数自变量(Arguments)一栏填入:40 23.44,如下图:

import sys

lat=float(sys.argv[1])

decl=float(sys.argv[2])#使用arguments(argv)方法从“Arguments”一栏中获取输入参数,并指定一个浮点型转换将字符型输入值传递给lat和decl

sunangle=90-lat+decl

azimuth=180

if sunangle>90:

sunangle=180-sunangle

azimuth=0

print "正午太阳角="+str(sunangle)

print "方位角="+str(azimuth)(结果:正午太阳角=73.44 方位角=180)

二、ArcGIS&Python

1如何创建地理处理对象(geoprocessor object)

所有geoprocessing的Python脚本都可以通过import arcgisscripting或者win32com去穿件geoprocessor object。下面的例子显示二者区别:arcgisscripting module需要在Python2.5.1版本上创建并且需要此版本创建geoprocessor;通过win32com创建的geoprocessor可以在不同的Python版本上运行。

#9.3

import arcgisscripting

gp=arcgisscripting.create(9.3)

gp.workspace=”c:/Tongass”

gp.clip_analysis(“standb4”,”clipcov”,”standb4_clip”,”POLY”.”1.25”)

#Dispatch

import win32com.client

gp=win32com.client.Dispatch(“esriGeoprocessing.GpDispatch.1”)

gp.workspace=”c:/Tongass”

gp.clip_analysis(“standb4”,”clipcov”,”standb4_clip”,”POLY”.”1.25”)

理解ArcGIS中数据多样性格式对我们理解地理处理工具很有帮助。比如,特征数据可能是①单个shp文件;②geodatabase(地理数据库,我们可能指定地理数据库为

工作空间);③多边形、弧或点要素的coverage数据。当我们想遍历工作空间里的coverage文件时,应使用ListDatasets而不是ListFeatureClasses。

2获取地理处理帮助

如果你基本熟悉了Python的语法,便可以开始熟悉ArcGIS的Geoprocessing啦,获取这些方法帮助的途径有两个:

①ArcGIS帮助系统,Go To Geoprocessing/Automating your work with scripts/Scripting

object:Properites and Methods.

这里你会看到Geoprocessor Object,这个能让你很方便地获得所有对你有用的条目、设置和其他操作文档。比如,你想得到特定类型的文件,就找到listfeatureclasses方法:fcList=gp.ListFeatureClasses(“w*”,”polygon”)

注:此方法的语法为:object.ListFeatureClasses({wildCard} As String, {FeatureType} As String) As Python List

{} = optional wildcard为通配符,和星号(*)组合使用,如果没有通配符则返回工作目录下的所有feature classes。

②Geoprocessor Programming Model(PDF),包含方法(左箭头表示)、属性(可读写

的表示为杠铃形,只读的表示为部分杠铃形)

2.1举例:如何使用Geoprocessor Programming Model中的Lists

Lists(列表)及其属性和方法在图表中用紫色标出,如下:

现在我们试着编写一段脚本列举出属性表

中所有属性值(Fields)(以hmbarea栅格土地利

用为例,文件存在c:\prog\hmbarea下)

import arcgisscripting, sys

gp = arcgisscripting.create(9.3)

gp.workspace = " c:/prog/hmbarea"

fieldList = gp.ListFields("landuse", "*",

"all")

dsc=gp.describe("landuse")

print "landuse"+" "+dsc.DataType+":"

for field in fieldList:

... print https://www.sodocs.net/doc/1a2622057.html,, field.Type (此时输出结果如右图)

3使用地理处理工具——Toolboxes和Aliases

总所周知,地理处理工具在脚本中的使用和ArcToolbox中相同,但是需要提供工具名称来使用它们。但是记住一个名称可能有好几个工具,比如,裁剪工具(Clip)在Coverage->Analysis->Extract工具集里,另一个是在Data Management Tools下的Raster工具集下。区别是每个工具适用不同的数据类型,但是我们如何在脚本中区分它们呢?

在ArcToolbox中,我们可以随意选择要使用的工具,但在脚本里就必须在某些方面加以区分。因此我们使用Aliases(别名)——已经成为工具名称的一部分。

每一个工具都有自己的别名,我们可以通过右键->属性来查看:

现在我们用一段脚本来解释:

import arcgisscripting,sys

gp=arcgisscripting.create(9.3)

gp.Workspace=”c:/prog/hmbarea”

gp.overwriteoutput=1 #OverWriteOutput:Boolean,为1表示允许覆盖已存在文件

# 将streams/arc转换为shp文件

gp.copyfeatures_management("streams/arc", "streams.shp")

#利用转换后的shp文件,做200米的缓冲

gp.buffer_analysis("streams.shp", "stbuff200.shp", 200)

# 用做过缓冲的shp裁剪

gp.Clip_analysis("geol.shp", "stbuff200.shp", "geolstr200.shp")

注:上面脚本用“#”注释的中文内容不要出现在脚本文件中,否则会出现错误结果截图:

如果你一次使用一个工具集中的若干工具,可以通过环境设置省下一些文字:gp.Toolbox = "Analysis"

gp.Buffer("streams.shp", "stbuff200.shp", 200)

gp.Clip("geol.shp", "stbuff200.shp", "geolstr200.shp")

4在建模中使用脚本(Scripts in ModelBuilder)

首先,需要记住的很重要的一点是,ArcToolbox里相当数量的工具实际上都是脚本。脚本都有一个图标。比如,空间统计分析工具(Spatial Staistics tools)

几乎都是Python脚本(一些是模型中使用了脚本

)。实际上,我们可以复制并编辑这些脚本作为其他用途。

为了在ModelBuilder中使用脚本或将脚本当做ArcToolbox中工具使用,我们需要考虑如何给它输入值以及让其设置输出值。仍然以太阳角计算代码为例,我们给其加上两句引用,四句输入输出语句,就可以用作Modelbuilder中的一个步骤了。

编辑下面的脚本,不过不要再PythonWin中运行之,因为getparameterastext 和setparameterastext只能用在脚本工具(ArcToolbox或Modelbuilder)中。

import arcgisscripting

gp=arcgisscripting.create(9.3)

lat=float(gp.getparameterastext(0))

decl=float(gp.getparameterastext(1))

sunangle=90-lat+decl

azimuth=180

if sunangle>90:

sunangle=180-sunangle

azimuth=0

gp.setparameterastext(2,str(sunangle))

gp.setparameterastext(3,str(azimuth))

这段代码中的“新面孔”:

getparameterastext:是Python传递给geoprocessor(我们称之为gp)的一个方法,允许工具提供输入参数。每次你运行这个工具时,都会看到一个对话框,提示输入参数,这个方法允许你在接下来的程序中使用。索引0和1指第一个和第二个参数。

setparameterastext:和getparameterastext相反,它传递第二个条目(比如str(sunangle)的值)给指定的输出参数。前两个参数索引为0和1,所以接下来输出参数的索引为2和3。

然后,我们需要将脚本加进工具(Making a script into a tool),那样才能在ArcToolbox或ModelBuilder或Command line中使用。如前面提到的那样,这个脚本只能用于工具,包括输入/输出方法是PythonWin不能处理的,但这些是多数工具必需的。

在ArcCatalog里,定位到Python脚本保存的文件夹,最好和数据在一个盘里,右键->新建toolbox。当然也可以使用之前创建的toolbox。

在ArcToolbox里,右键toolbox,选添加->scripts,填写如下图:

注意:脚本文件是一个脚本工具的参考!非常重要的一点,你使用脚本创建了

一个脚本工具,但是脚本本身并没有和工具一起保存,脚本工具作为toolbox 的一部分保存在“*.tbx”文件中。你也可以右键脚本工具点击“编辑”,出现PythonWin或其他任何IDE窗口,这看起来好像是脚本存在于工具中。所以,记得移动时将脚本工具文件和脚本本身一起拷贝。

“下一步”后是参数配置页面,如下图设置各参数如表格所示:

现在可以运行此toolbox了,对话框提示你输入latitude和declination。工具是否正确运行呢?如果是的话,你应该可以看到“Completed”,你可能会看到有一黑色窗体一闪而过,不用担心。那么,它是干什么的呢?

还记得结果是输出两个数字参数,那么,这些数字哪去了呢?

很好的问题,这仅能说明你能创建一个工具,但是不能想ArcToolbox那样运行。比如输出一种数据,栅格或特征数据(.shp)之类的。

但是它能在作为Modelbuilder工具正常运行,下面我们将使用它的输出参数创建一个hillshade。

在你的toolbox中新建一个model,将刚才创建的脚本工具(script tool)拖进来。 双击工具,输入参数,初始化之。打开“Sun Angle”和“Azimuth”发现它们还是默认值,说明此脚本工具还没有运行。右键单击工具,选择Run,然后发现两个输

出参数已经改变!

需要注意的是:latitude范围是-90~90,declination范围是-23.44~23.44。尝试输入latitude -70,declination 23.5,你会得到什么?为什么?

确保你已经得到值域内的太阳角和方位角,它们将是构建hillshade的输入参数。

首先,添加hillshade工具,双击指定一个elevation栅格数据(这里我选择了marbles 文件夹下的elevation),用下拉条指定azimuth和altitude值为azimuth和sun angle。

运行,然后右键单击输出文件,选“Add to Display”在ArcMap里查看结果。

?探索1:

如果你想通过日期获取太阳倾角,该怎么做呢?尝试下面代码,保存为

gp=win32com.client.Dispatch("esriGeoprocessing.GpDispatch.1")

#构建两个函数,首先判断输入月/日的合法性,然后获取是一年中的第几天

def jdate(im, id):

# 通过年月日起返回一年中的第几天

lastD = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]

jd = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334]

if ((im > 0) and (im < 13)):

if ((id > 0) and (id <= lastD[im - 1])):

return jd[im - 1] + id

else:

print "Date not in month"

return 0

else:

print "Month should be between 1 and 12 inclusive"

return 0

#计算倾角的函数

def declin(day):

rad = math.pi / 180

xlong = 279.164 + 0.985647 * day

xanom = 356.381 + 0.985600 * day

g = xanom * rad

elong = xlong + 1.915 * math.sin(g) + 0.02 * math.sin(2 * g)

elong = elong * rad

oblecl = 23.44 * rad

return math.asin(math.sin(oblecl) * math.sin(elong)) / rad

#主程序

month = int(sys.argv[1])

date = int(sys.argv[2])

lat = float(sys.argv[3])

decl = declin(jdate(month, date))

sunangle = 90 - lat + decl

azimuth = 180

if sunangle > 90:

sunangle = 180-sunangle

azimuth = 0

gp.setparameterastext(3,str(sunangle))

gp.setparameterastext(4,str(azimuth))

我们在思考远一点,如何根据一天内的任何时间而不是正午时间,获取太阳角和方位角呢?

感兴趣的可以从本文开头的链接中下砸相应代码学习。

探索2:

如何在PythonWin里运行这个脚本?首先我们得明确几个点:①我们将把hillshade 作为脚本的一部分使用,并为其提供输入参数:一个高程栅格(elevation raster);

②GetParameterastext仅在用作工具时起作用。

下表为脚本工具的参数设置:

代码如下:

import win32com.client, sys, math

gp = win32com.client.Dispatch("esriGeoprocessing.GPDispatch.1")

#函数定义,同上,下面仅给出函数名称:

def jdate(im, id):

def declin(day):

# 主程序,使用sys.argv[]代替getparameterastext()

month = int(sys.argv[1])

date = int(sys.argv[2])

lat = float(sys.argv[3])

gp.Workspace = sys.argv[4]#输入时注意,路径应为反斜杠“\”

elev = sys.argv[5]

hillsh = sys.argv[6]#给输出hillshade指定文件名

decl = declin(jdate(month, date))

sunangle = 90 - lat + decl

azimuth = 180

if sunangle > 90:

sunangle = 180-sunangle

azimuth = 0

gp.addmessage("about to try")

try:

gp.OverwriteOutput = 1

gp.addmessage("after overwriteoutputs setting, " + gp.workspace + "/" + hillsh)

gp.CheckOutExtension("spatial")

gp.addmessage(gp.workspace + "/" + hillsh)

gp.HillShade_sa (elev, gp.workspace + "/" + str(hillsh), azimuth, sunangle)

gp.addmessage("done with hillshade")

gp.CheckInExtension("spatial")

except:

## print gp.getmessages()

gp.addmessage(gp.getmessages())

gp.CheckInExtension("spatial")

阅读代码发现,第一个输入参数不适用的getparameterastext(0),而是sys.argv[1],这是因为getparameterastext()方法只在工具中起作用,而sys.argv[]有同样的效果,索引从1而不是0开始,当然,这需要首先引用sys模块。这里我们直接指定输出

文件在输入数据文件夹内,省去了setparameterastext()方法,当然这个方法在

PythonWin中也无法运行。

尝试输入参数如下图,得到右下结果:

5 在PythonWin里调试地理处理脚本

既然我们已经认真地学会了从Python中创建并运行地理统计工具,那么现在需要考虑如何调试我们的程序了。我们需要经常在Python和添加的地理处理系统引用之间调试程序。当一个地理处理工具运行失败后,我们需要从Pythonwin中得到一个丰富的消息,而不是“未知错误”。

5.1 调试选择和消息

Python优于AML的优点之一是它有更好的调试方法,调试程序有很多选择,这里不能一一列举。

打印语句(Print statements)

一开始就养成良好的调试方法是:将变量的当前值或脚本的处理过程打印在屏幕上。

比如,对之前的一段脚本加以修改:

import arcgisscripting,sys

gp=arcgisscripting.create(9.3)

gp.Workspace="c:/prog/hmbarea"

gp.overwriteoutput=1

gp.copyfeatures_management("streams/arc", "streams.shp")

gp.Toolbox="Analysis"

gp.buffer("streams.shp", "stbuff200.shp", 200)

print "Finished Buffer.Now Cliping..."

gp.Clip("geol.shp", "stbuff200.shp", "geolstr200.shp")

可以看出成功运行脚本!

然而当在工具中运行时,print语句不会产生错误,但也不会输出任何东西,因此,我们用gp.addmessage("Finished Buffer.Now Cliping...")代替print语句。那么,如果想无论在工具中或Pythonwin中都可以显示消息,就可以这两句都写上。我喜欢的做法是定义一个‘sendmsg’函数来输出消息:

def sendmsg(msg):

print msg

gp.addmessage(msg)

….

sendmsg("Finished Buffer.Now Cliping...")

获取工具消息和(try:…except:)

上面的方法很有用,但当我们运行我们并不了解很多信息的地理处理工具时就显得

无能为力了。如果在Pythonwin中运行Buffer时出现错误,比如输入文件不存在等,

只能看到“未知错误”的提示,这就引出了GetMessage上的方便!

现在我们要体验两种调试技巧:①GetMessages地理处理方法;②Python语言的错

误处理程序:try…except。

①现在我们添加GetMessages查看错误信息:

还是上面的代码,把“streams.shp”修改为“stream.shp”,查看错误信息:

gp.Toolbox="Analysis"

gp.buffer("stream.shp", "stbuff200.shp", 200)

gp.Clip("geol.shp", "stbuff200.shp", "geolstr200.shp")

运行之,查看错误信息,然后修改代码如下:

try:

gp.Toolbox="Analysis"

arcgis中Python脚本的使用【简明教程】

[初学入门]ArcGIS中Python脚本的使用 By:飞天小猪 目录 写在前面的话 (2) 前言 (2) 一、PYTHON语言基础 (3) 1数学运算符 (3) 2字符串操作 (4) 3模块的使用(M ODULES) (5) 4使用DEF构建函数 (6) 5流程控制结构:I F,W HILE,F OR (7) 6简单输入和输出 (9) 二、ARCGIS&PYTHON (10) 1如何创建地理处理对象(GEOPROCESSOR OBJECT) (10) 2获取地理处理帮助 (11) 2.1举例:如何使用Geoprocessor Programming Model中的Lists (11) 3使用地理处理工具——T OOLBOXES和A LIASES (12) 4在建模中使用脚本(S CRIPTS IN M ODEL B UILDER) (13) 5在P YTHON W IN里调试地理处理脚本 (19) 5.1 调试选择和消息 (20) 5.2PythonWin的调试工具 (21) 5.3地理处理工具举例 (22) 6使用描述(D ESCRIBE)和存在(E XISTS)获取数据信息 (22) 6.1描述 (23) 6.2存在(Exists) (24) 6.3在循环中使用描述和存在 (24) 7在P YTHON脚本中使用地图代数(M AP A LGEBRA) (27) 8数据管理和指针(D ATA M ANAGEMENT AND C URSORS) (28) 8.1数据管理(Data Management) (28) 8.2指针(Cursors) (29) 附录1:地理处理脚本中输入&输出方法指南 (32) 附录2:其他 (33)

运维必备Python基础入门到精通

运维必备Python基础入门到精通 视频课程汇总

Python函数中文手册 函数列表 1、取绝对值 abs(x) Return the absolute value of a number. The argument may be a plain or long integer or a floating point number. If the argument is a complex number, its magnitude is returned. 如果你不知道绝对值什么意思,那就要补一下小学数学了! 基本用法 2 all(iterable)

Return True if all elements of the iterable are true (or if the iterable is empty). Equivalent to: 3 any(iterable) Return True if any element of the iterable is true. If the iterable is empty, return False. Equivalent to: 4 basestring() This abstract type is the superclass for str and unicode. It cannot be called or instantiated, but it can be used to test whether an object is an instance of str or unicode. isinstance(obj, basestring) is equivalent to isinstance(obj, (str, unicode)). 是字符串和字符编码的超类,是抽象类型。不能被调用或者实例化。可以用来判断实例是否为字符串或者字符编码。 5、二进制转换 bin(x) Convert an integer number to a binary string. The result is a valid Python expression. If x is not a Python int object, it has to define an __index__() method that returns an integer. 转换成二进制表达

Python基础教程(自学记录)精编版

第一章快速改造:基础知识 1.2交互式解释器 在IDLE编辑器,在提示符后输入help然后按回车;也可以按下F1获得有关IDLE的帮助信息 1.4数字和表达式 1/2返回0,整除除法;1.0/2返回0.5,用一个或者多个包含小数点的数字参与计算。另外改变除法的执行方式:from_future_import division //可以实现整除,1.0//2.0返回0.0 %取余数;**幂运算; >>> 1/2

>>> 1.0/2 0.5 >>> 1.0//2.0 0.0 >>> 10%3 1 >>> 9**(1/2) 1 >>> 9**(1.0/2) 3.0 >>> 2.75%0.5 0.25 >>> -9%4 3 >>> -3%2 1 >>> -3/2 -2 1.4.1长整数 普通整数不能大于2147483647也不能小于-2147483648,若更大的数,可以使用长整数。长整数结尾有个L,理论上小写也可以,不过为了便于识别,尽可能用大写。

1.4.2十六进制和八进制 0XAF返回175 ,十六进制; 010返回8,八进制 >>> 0xAF 175 >>> 010 8 1.5变量 包含字母、数字和下划线。首字母不能是数字开头。 1.8函数 Pow计算乘方:pow(2,3),2**3均返回8;pow等标准函数称为内建函数。 Abs(-10)求绝对值,返回10;round(1.0/2.0)返回1.0,把浮点数四舍五入为最接近的整数值。 >>> pow(2,3) 8 >>> 2**3 8 >>> abs(-10) 10 >>> round(1.0/2.0) 1.0

python入门免费教程分享

python入门免费教程分享 通过Python入门爬虫比较简单易学,不需要在一开始掌握太多太基础太底层的知识就能很快上手,而且很快就能做出成果,非常适合小白一开始想做出点看得见的东西的成就感。你在学习Python?Python入门免费教程分享给你:python全新基础视频教程 https://https://www.sodocs.net/doc/1a2622057.html,/s/1i5kvG5f python课程教学高手晋级视频h ttps://https://www.sodocs.net/doc/1a2622057.html,/s/1htJW4KG python高级视频教程https://https://www.sodocs.net/doc/1a2622057.html,/s/1nvf3NOt 那么,你是否清楚Python工程师在企业里面的定位是什么?主要有四个重要的定位:验证算法、快速开发、测试运维、数据分析。 1、验证算法:就是对公司一些常见设计算法或者公式的验证,公式代码化。 2、快速开发:这个大家应该都比较熟悉,快速开发,就是用成熟框架,更少的代码来开发网站; 3、测试运维:做运维同学应该清楚,在Linux运维工作中日常操作涵盖了监控,部署,网络配置,日志分析,安全检测等等许许多多的方面,无所不包。python可以写很多的脚本,把“操作”这个行为做到极致。

与此同时,python在服务器管理工具上非常丰富,配置管理(saltstack) 批量执行( fabric, saltstack) 监控(Zenoss, nagios 插件) 虚拟化管理 ( python-libvirt) 进程管理(supervisor) 云计算(openstack) ...... 还有大部分系统C库都有python绑定。 4、数据分析:Python有三大神器:numpy,scipy,matplotlib,其中numpy很多底层使用C语言实现的,所以速度很快,用它参加各种数学建模大赛,完全可以替代r语言和MATLAB。spark,Hadoop都开了Python的接口,所以使用Python做大数据的mapreduce也非常简单,加上py对数据库支持都很好,或者类似sqlalchemy的orm也非常强大好用。 了解完Python工程师在企业里面的定位,大家或许还需要找一家培训中心进行学习。 1.权威资深师资阵容,Python业内极具责任心、懂教学、拥有超强技术、有大型项目经验实战派讲师授课,由业内知名专家及企业技术骨干组成; 2.自主研发QFTS教学系统,拥有自主知识产权的Python开发培训课程体

Python入门教程

Python 入门教程1 ---- Python Syntax 1 Python是一个高效的语言,读和写的操作都是很简单的,就像普通的英语一样 2 Python是一个解释执行的语言,我们不需要去编译,我们只要写出代码即可运行 3 Python是一个面向对象的语言,在Python里面一切皆对象 4 Python是一门很有趣的语言 5 变量:一个变量就是一个单词,只有一个单一的值 练习:设置一个变量my_variable,值设置为10 [cpp] #Write your code below! my_variable = 10 3 第三节 1 Python里面有三种数据类型 interage , floats , booleans 2 Python是一个区分大小写的语言 3 练习 1 把变量my_int 值设置为7 2 把变量my_float值设置为1.23 3 把变量my_bool值设置为true [python] #Set the variables to the values listed in the instructions! my_int = 7 my_float = 1.23 my_bool = True

6 Python的变量可以随时进行覆盖 2 练习:my_int的值从7改为3,并打印出my_int [python] #my_int is set to 7 below. What do you think #will happen if we reset it to 3 and print the result? my_int = 7 #Change the value of my_int to 3 on line 8! my_int = 3 #Here's some code that will print my_int to the console: #The print keyword will be covered in detail soon! print my_int 7 Pyhton的声明和英语很像 8 Python里面声明利用空格在分开 3 练习:查看以下代码的错误 [python] def spam(): eggs = 12 return eggs print spam() 9 Python中的空格是指正确的缩进 2 练习:改正上一节中的错误

实验三 ARCGIS PYTHON脚本编程

实验三ArcGIS Python脚本编程 姓名:班级:学号: 实验目的 1、熟练掌握ArcGIS Python脚本编程,熟悉如何根据空间数据某个属性值选择数 据点,并用空间统计算法进行处理,保存并进行可视化; 2、熟悉空间核密度估计方法(Kernel Density Estimate) 数据准备 1.解压Experiment3.zip文件,打开ArcMap,将数据students_wgs84.shp添加到一个新地空地图文件中,如下图所示 数据为NUIM在校生学籍注册地址,坐标系为WGS84,即所使用地为经纬度,打开属性表:

主要属性名称含义如下: ●County:学生所在郡/县,如DUBLIN为爱尔兰首都都柏林; ●ED:Electrol District,爱尔兰最小地行政单元,直译为“选举区”,隶属于 County; ●ED_ID:ED地区分编号; ●INITIAL_AD:入学前家庭地址 ●TYPE:此处均为STUDENT ●COUNTY_ID:郡县编号 第一部分 在Sublime中新建task_Part1.py,并保存到与数据相同地文件夹下,输入以下代码:

这个代码就是将来自于DUBLIN、MEATH、LOUTH三个郡(County)的学生取出来,如用 counties=["DUBLIN","MEATH","LOUTH"] 定义的循环体。然后将取出的这些记录存储在一个临时地文件temp_lyr中:result=arcpy.MakeFeatureLayer_management(input_fc,temp_layer,"\"COUNTY\" ='"+unit+"'") 最后将这些抽取地点地坐标值分别按照所属地郡存储至“data_DUBLIN.csv”、“data_LOUTH.csv”、“data_MEATH.csv”三个CSV文件中,可以在当前文件夹下的子文件夹csvdata去查看这些文件地内容: Longitude,Latitude -6.68536404605,53.6525262979 -6.66472854007,53.6483054369 -6.24173854864,53.6820175854 ... 第一部分任务 1)编辑上面地代码,要求通过“ED”的值,选取来自于LEIXLIP、CELBRIDGE、KILCOCK三个区域的学生,并将学生地坐标值分别存储为名称为data_LEIXLIP、data_CELBRIDGE、data_KILCOCK的CSV文件,存储到csvdata子文件夹下; 2)任选上面一个CSV坐标文件,写一个python脚本,创建一个KML文件,要求将坐标文件中的每个坐标都存储为一个个地标,KML文件中地单个地标格式为: Simple placemark

python入门基础教程必学的11个知识点

python入门基础教程必学的11个知识点 Python被誉为全世界高效的编程语言,同时也被称作是“胶水语言”,那它为何能如此受欢迎,下面我们就来说说Python入门学习的必备11个知识点,也就是它为何能够如此受欢迎的原因。 1、Python适用于哪些应用场景? 这个没有固定答案,很多人都说Python不适合开发GUI的程序,但Python 自己的IDE——IDEL和第三方的IDE——Eric就是Python写的。 目前看到的更多的人是拿来写Web,使用如Django、web.py框架,没记错Flask也是。 也有一个情况用的比较多,用Python当胶水,与各种语言结合,共同完成某软件功能,注意观察也许你会发现在安装一些软件的时候会有Python的身影。 我个人还拿Python模拟过端口转发和DNS服务等,所以真的是要看真么用,而不是能怎么用。

另外大数据分析Python也是比较适合的,从载入到分析,再到保存结果等,Python有一整套的模块应对。 2、Python能够胜任大数据吗? Python很适合做大数据相关的分析,内置的C编译的模块能应对常见的操作,个别极端的算法建议用C重写相关模块。 Python本身的特点更多的是高效率的开发和简单的维护,速度交给C去吧,更多的问题其实出自写代码的人没有更好的使用,而不是效率不够高。比如排序,本来Python有非常高效的内置C编译的模块,却非要自己写算法,这样的结果不慢都是奇怪的。 另外还要看需求是CPU密集型,还是IO密集型,如果是CPU密集型建议这部分操作由C实现,IO密集型的效率不会因为Python而有多少改变。 C的效率是高,但框架搭起来也费劲,所以还是结合着来吧,也因此,Python 被称为胶水语言。 3、Python是否可以完全代替Shell? 完全可以,Shell的功能Python均可实现,而且代码量更少、结构更优、可阅读性更好,而Python可实现的功能Shell却不一定能,如运维中会用到的用于网络通信的Socket模块、用于WEB的Django框架、用于性能采集的psutil 模块等,而且Shell对操作系统的命令依赖性较强,Python可在更大程度上规避。 在一个Shell的IDE是个很大的问题,虽然Python的原生IDE不怎么样,但第三方的IDE还是功能十分强大的,虽然不能和微软的Virtual Studio相媲美,但也是能完全满足Python的开发需求的。

Python基础入门教程

Python基础入门教程 你可能已经听说过很多种流行编程语言,比如非常难学的C语言,非常流行的Java语言,适合初学者的Basic语言,适合网页编程的JavaScript语言,那么你知道Python是一种怎样的计算机程序设计语言吗?下面应广大读者需求,给大家呈上一篇Python基础入门教程的文章。 Python 是由Guido van Rossum 在八十年代末和九十年代初,在荷兰国家数学和计算机科学研究所设计出来的。 Python 本身也是由诸多其他语言发展而来的,这包括ABC、Modula-3、C、C++、Algol-68、SmallTalk、Unix shell 和其他的脚本语言等等。 像Perl 语言一样,Python 源代码同样遵循GPL(GNU General Public License)协议。 现在Python 是由一个核心开发团队在维护,Guido van Rossum 仍然占据着至关重要的作用,指导其进展。 Python 特点

? 1.易于学习:Python有相对较少的关键字,结构简单,和一个明确定义的语法,学习起来更加简单。 ? 2.易于阅读:Python代码定义的更清晰。 ? 3.易于维护:Python的成功在于它的源代码是相当容易维护的。 ? 4.一个广泛的标准库:Python的最大的优势之一是丰富的库,跨平台的,在UNIX,Windows和Macintosh兼容很好。 ? 5.互动模式:互动模式的支持,您可以从终端输入执行代码并获得结果的语言,互动的测试和调试代码片断。 ? 6.可移植:基于其开放源代码的特性,Python已经被移植(也就是使其工作)到许多平台。 ?7.可扩展:如果你需要一段运行很快的关键代码,或者是想要编写一些不愿开放的算法,你可以使用C或C++完成那部分程序,然后从你的Python程序中调用。 ?8.数据库:Python提供所有主要的商业数据库的接口。 ?9.GUI编程:Python支持GUI可以创建和移植到许多系统调用。 ?10.可嵌入: 你可以将Python嵌入到C/C++程序,让你的程序的用户获得"脚本化"的能力。

python入门基础教程网盘下载

python入门基础教程网盘下载 不知你是否听说,Python是面向企业和第一流项目的、基于生产的语言,而且它几乎可以完成任何事情。既能创建一个树莓派应用,又能用Python来写桌面程序的脚本,还能通过Python来配置服务器。也许你刚想学Python,也许你观望了很久,但小编觉得这篇python入门基础教程可以帮到 你。 千锋Python基础教程:https://www.sodocs.net/doc/1a2622057.html,/s/1qYTZiNE Python课程教学高手晋级视频总目录: https://www.sodocs.net/doc/1a2622057.html,/s/1hrXwY8k Python课程windows知识点:https://www.sodocs.net/doc/1a2622057.html,/s/1kVcaH3x Python课程linux知识点:https://www.sodocs.net/doc/1a2622057.html,/s/1i4VZh5b Python课程web知识点:https://www.sodocs.net/doc/1a2622057.html,/s/1jIMdU2i Python课程机器学习:https://www.sodocs.net/doc/1a2622057.html,/s/1o8qNB8Q Python课程-树莓派设备:https://www.sodocs.net/doc/1a2622057.html,/s/1slFee2T 对初学者来说,Python是很好的语言。许多新开发人员都在用它,经验丰富的开发人员也并没有放弃它。因为使用Python还有许多可做的事情。

Python是一门通用的语言,被设计得极易读写。此外,由于它被认为是真正通用的、可满足多种开发需求的语言,所以也为程序员提供了各式各样的选择。Python可以被用作系统操作、Web开发、服务器和管理工具、科学建模等。 千锋教育人工智能+Python全栈是真正的Python全栈开发,包含Python项目,爬虫、服务集群、网站后台、微信公众号开发,Python机器学习与数据挖掘,数据分析框架与实战,Python物联网树莓派的开发等。 千锋Python培训班的讲师,可以说是业界难以超越的讲师天团。尹老师,刘老师,杨老师均是清华大学毕业的高材生,精通多门编程语言,拥有丰富的开发经验,多年IT名企工作经验以及丰富的项目实战经验。 抓紧机会参加千锋教育人工智能+Python全栈课程吧。免费的,真正不花一分钱。千万不要错过!

千锋教育Python入门教程

千锋教育Python入门教程 有人说,看着Python简单易学,想尝试自学,打算找些入门教程自学Python,不知道哪的视频好。现在,你可来对地方了,接下来附上千锋教育Python入门教程的链接。 千锋Python基础教程:https://www.sodocs.net/doc/1a2622057.html,/s/1qYTZiNE Python课程教学高手晋级视频总目录: https://www.sodocs.net/doc/1a2622057.html,/s/1hrXwY8k Python课程windows知识点:https://www.sodocs.net/doc/1a2622057.html,/s/1kVcaH3x Python课程linux知识点:https://www.sodocs.net/doc/1a2622057.html,/s/1i4VZh5b Python课程web知识点:https://www.sodocs.net/doc/1a2622057.html,/s/1jIMdU2i Python课程机器学习:https://www.sodocs.net/doc/1a2622057.html,/s/1o8qNB8Q Python 看完视频,建议你了解一下Python可以做什么: 1.网站后端程序员:使用它单间网站,后台服务比较容易维护。如:Gmail 、Youtube、知乎、豆瓣;

2.自动化运维:自动化处理大量的运维任务; 3.数据分析师:快速开发快速验证,分析数据得到结果; 4.游戏开发者:一般是作为游戏脚本内嵌在游戏中; 5.自动化测试:编写为简单的实现脚本运用在Selenium/lr,可实现自动化; 6.网站开发:借助django,flask框架自己搭建网站; 7.爬虫获取或处理大量信息:批量下载美剧、运行投资策略、爬合适房源、系统管理员的脚本任务等。 千锋教育Python培训课程共23周10大阶段力造Python全栈工程师,直击月薪15000!内容包括3.Python语言基础2.7.3、Python 3.x 进阶与python第三方库、PyQt开发、Linux指令、Linux Shell、Linux python运维自动化、KaliLinux 安全课程、Linux 网站后台-python开发、Python 数据库MySQL Oracle开发、HTML5基础CSS基础。 当然,没说完,还有Java-Script JQuery基础、Python项目爬虫,服务集群,网站后台,微信公众号开发、Python机器学习与数据挖掘,数据分析

在ArcGIS下基于Python的矢量数据处理方法

测绘技术装备 第18卷 2016年第4期 技术交流 63 在ArcGIS 下基于Python 的矢量数据处理方法 林璐 王爽 李海泉 侯兴泽 马鹏刚 (国家测绘地理信息局第二地形测量队 陕西西安 710054) 摘 要:在ArcGIS 中地理处理可以通过Python 脚本语言来具体实现。通过Python 串联Arcgis 的地理处理工具,实现工作流自动化完成,同时,实践批处理过程,解放人工的机械重复工作,提高效率,进而保证数据质量。现以地形图中示坡线的正确、严谨表达为实践案例,介绍了在ArcGIS 下利用Python 处理矢量数据,为矢量数据处理的高效、自动化提供解决方法。 关键词:Python ARCGIS 地理处理 示坡线 1 引言 地理处理是GIS 用户应用的重要组成部分,ArcGIS 的ArcToolbox 窗口为GIS 用户提供了数百个地理处理。对于数据处理人员在使用ArcGIS 地理处理工具时,就会遇到这样的难题,如何将几个简单的地理处理工具串联起来,自动化地完成一个简单工作流,使得人工操作转换为自动化的程序批处理 过程[1] 。 Python 是一种不受局限、跨平台的开源编程语言,它功能强大且简单易学。同时,它可伸缩程度高,适于大型项目或小型的一次性程序(称为脚本), 并且可嵌入(使ArcGIS 可脚本化)。目前,Python 已延伸到ArcGIS 中,成为了一种用于进行数据分析、数据转换、数据管理和地图自动化的语言。运用 Python 语言可以实现对地理数据的批处理,从而有 助于提高工作效率[2] 。 2 开发案例说明 示坡线,是指示斜坡降落的方向线,它与等高线垂直相交。一般表示在谷地、山头、鞍部、图廓边及斜坡方向不易判读的地方。凹地的最高、最低 一条等高线上也应表示示坡线[3] 。在测绘4D 产品之一的数字线划图(DLG)中,示坡线一般以有向点或有向线(长度为定值的线段)的方式表达。其中,有向点应严格捕捉相应等高线,通过填写要素角度属性项表达所示方向;有向线为线段,起始节点应严格捕捉相应等高线,终止节点指向所示方向,线段长度为规范要求长度。 图1 山丘、山峰和盆地、洼地的示坡线示意图 一般在DLG 制作过程中,特别是中小比例尺地形图,通常利用立体测图系统,在恢复立体影像相对模型的情况下,人工判断地貌,并采集示坡线。采集时要求在对应等高线采集第一点,沿斜坡的方向采集第二点。为提高生产效率及生产工序技术要求,此时采集的示坡线,不符合前述DLG 拓扑规范要求。存在未严格捕捉等高线,造成悬挂和相交的拓扑问题;或示坡线要素长度不定,不符合技术要求;亦或示坡线采集图形上看正确,实际上刚好与要求相反,是由斜坡降落方向向等高线采集。这些情况致使下工序矢量数据编辑处理时,需要人工核对、修改,工作量大且繁琐(尤其是在沙漠、特殊丘陵地区,1幅1∶10000比例尺地形图可能需要上千个示坡线表示地貌形态),如果作业人员责任心不足还易造成质量隐患。 3 处理方案设计 3.1 方案设计思路 数据要素处理的关键是两点:一是解决拓扑问题,二是实现示坡线角度正确表达。因此解决思路是:首先,要满足拓扑要求,即相应要素之间严格

PythonWeb开发基础教程教案PDF版进店另有word版或PPT版

教案 课程名称Python Web开发基础教程课程代码 系(部) 教研室(实验室) 授课教师 职称 年月

课程 名称 Python Web开发基础教程总计: 62 学时课程 类别 专业课课程代码 授课教师学分 讲授: 44 学时 实验: 22 学时 其他:学时 授课对象教材 和主要参考资料教材:夏帮贵《Python Web开发基础教程》人民邮电出版社 2019.12 参考资料:[美] Julia Elman(茱莉亚·埃尔曼),[美] Mark Lavin(马克·拉温)著,侯荣涛,吴磊译《轻量级Django》,中国电力出版社,2016.10 课程简介 Python 因其功能强大、简单易学、开发成本低廉,已成为深受广大应用程序开发人员喜爱的程序设计语言之一。Python 被广泛应用到各种领域,从简单的文字处理,到Web 应用和游戏开发,甚至于数据分析、人工智能和航天飞机控制,Python 都能胜任。随着网络的广泛普及,Web 应用开发已成为开发人员的必备技能之一。Python 具备上百种Web 开发框架,使用Web 框架在Python 中开发Web 应用,可以极大地提高开发效率。 Django 是Python 世界中成熟的Web 框架。Django 功能全面,各模块之间紧密结合。由于Django 提供了丰富、完善的文档,因此开发人员可以快速掌握Python Web 开发知识并及时解决学习中遇到的各种问题 《Python Web开发基础教程》课程作为Python Web开发入门教学课程,讲授内容主要包括:开发环境配置、Django 配置、URL 分发、模型和数据库、视图、模板、表单、Django 工具等内容。 本课程是一门实践性非常强的课程,因此在教学过程中应注重理论紧密联系实际和加强实习环节的教学,通过实验要掌握Python Web开发方法技巧。 教学难点重点第 1 章Python Web 开发起步第 2 章Django 配置 第 3 章URL 分发 第 4 章模型和数据库 第 5 章视图 第 6 章模板 第7 章表单 第8 章Django工具 第9 章Python在线题库

ArcGISPython实习指导

实习一Python基础学习 1.什么是python Python是一种不受局限、跨平台的开源编程语言,它功能强大且简单易学。因而得到了广泛应用和支持。 ArcGIS 9.0社区中引入了Python。此后,Python被视为可供地理处理用户选择的脚本语言并得以不断发展。每个版本都进一步增强了Python体验,从而为您提供更多的功能以及更丰富、更友好的Python体验。 ESRI已将Python完全纳入ArcGIS中,并将其视为可满足用户需求的语言。下面仅介绍Python的部分优势: ?易于学习,非常适合初学者,也特别适合专家使用 ?可伸缩程度高,适于大型项目或小型的一次性程序(称为脚本) ?可移植,跨平台 ?可嵌入(使ArcGIS可脚本化) ?稳定成熟 ?用户社区规模大 Python已延伸到ArcGIS中,成为了一种用于进行数据分析、数据转换、数据管理和地图自动化的语言,因而有助于提高工作效率。 2.在ArcGIS中使用Python (1)打开ArcMap,在工具栏中点击“”按钮,位置如图1-1所示,即可打开Python编辑窗口。

图1-1 (2)Python程序为解释运行,输入一行代码,按“回车”键后即可运行,如图1-2。 图1-2

3.行和缩进 学习Python与其他语言最大的区别就是,Python的代码块不使用大括号({})来控制类,函数以及其他逻辑判断。python最具特色的就是用缩进来写模块。(1)缩进的空白数量是可变的,但是所有代码块语句必须包含相同的缩进空白数量,这个必须严格执行。在Python窗口中输入如图1-3所示的代码块并运行,该代码块是严格缩进的。 图1-3 (2)以下代码将会执行错误,如图1-4: 图1-4

python爬虫入门到实战的学习顺序

https://www.sodocs.net/doc/1a2622057.html, python爬虫入门到实战的学习顺序 Python是一种常见的爬虫语言,可以抓取网络的大部分数据。比如证券交易数据、天气数据、网站用户数据等等,另外python内含很多用来做数据分析的包,拿到这些数据之后你就可以做详细的数据分析工作。正是因为python如此强大,所以越来越多的朋友开始学习python爬虫,下面为大家介绍python爬虫如何入门。 一、Python基础学习。 首先,我们要用Python写爬虫,肯定要了解Python的基础。下面推荐知乎用户Crossin的python自学方法: 关于自学python,个人最大的3点经验: 1、找一本浅显易懂,例程比较好的教程,从头到尾看下去。不要看很多本,专注于一本。把里面的例程都手打一遍,搞懂为什么。我当时看的是《简明python 教程》,不过这本书不是非常适合零基础初学者。零基础推荐《与孩子一起学编程》,或者看我写的教程Crossin的编程教室-Python入门。 2、去找一个实际项目练手。我当时是因为要做一个网站,不得已要学python。这种条件下的效果比你平时学一门新语言要好很多。所以最好是要有真实的项目做。可以找几个同学一起做个网站之类。注意,真实项目不一定非要是商业项目,你写一个只是自己会用的博客网站也是真实项目,关键是要核心功能完整。 3、最好能找到一个已经会python的人。问他一点学习规划的建议(上知乎也是个途径),然后在遇到卡壳的地方找他指点。这样会事半功倍。但是,要学会搜索,学会如何更好地提问。没人愿意帮你写作业或是回答“一搜便知”的问题。 所以除了前面说的3点经验,给初学编程者的额外建议: 1、首先要有信心。虽然可能你看了几个小时也没在屏幕上打出一个三角形,或者压根儿就没能把程序运行起来。但相信我,几乎所有程序员一开始都是这么折腾过来的。

Python基础教程视频全集下载

Python基础教程视频全集下载 现在大数据,量化分析,科学技术,人工智能,游戏很多方面都用到Python,目前国内Python人才需求量上升非常快,薪资也水涨船高。也有同学考虑找些Python基础教程视频进行学习,请看以下链接: 千锋Python基础教程:https://www.sodocs.net/doc/1a2622057.html,/s/1qYTZiNE Python课程教学高手晋级视频总目录: https://www.sodocs.net/doc/1a2622057.html,/s/1hrXwY8k Python课程windows知识点:https://www.sodocs.net/doc/1a2622057.html,/s/1kVcaH3x Python课程linux知识点:https://www.sodocs.net/doc/1a2622057.html,/s/1i4VZh5b Python课程web知识点:https://www.sodocs.net/doc/1a2622057.html,/s/1jIMdU2i Python课程机器学习:https://www.sodocs.net/doc/1a2622057.html,/s/1o8qNB8Q Python课程-树莓派设备:https://www.sodocs.net/doc/1a2622057.html,/s/1slFee2T

以上是千锋Python视频全集,希望对你有帮助。如果你对于千锋Python 培训的内容感兴趣,请继续阅读。 千锋Python培训的主要学习内容包括三大模块,十大部分: 一、Python初级开发工程师 1.python语言基础(可以python基础语法入门和项目实践); 2.python语言高级(能够利用python进行一般的数据处理和爬虫); 3.python全栈工程师前端(掌握常用的前端技术); 4.python全栈工程师后端(学会企业级后端框架Django,并可完成大型网站构建); 二、Python高级开发工程师 5.python全栈工程师后端高级(目标是掌握两种轻量级和实时后端框架Flask和Tornado,完成两个实际项目); 6.Linux基础(懂得Linux常用命令和shell开发技术); 7.Linux运维自动化开发(清楚Linux运维自动化开发原理,并完成相应项目实践); 三、Python大神级数据分析师 8.python数据分析(学会python数据分析与可视化,了解数据统计和进入数据分析的原理,完成相应项目);

python基础教程至60课(2.7版本)整理

python基础教程至60课整理 2014年7月10日:(整理前几天内容) 1.疑惑:a. for score in data[1:]: 解答:将score一一赋data中从1号(第二个)开始到最后一个元素的值 b. for I in range(3): 解答 : 将i赋予从零到三的值。 2.配置系统环境变量:在Path变量中把Python安装路径,加到它的结尾。注意, 要用英文分号和前面已有的内容隔开。配置后在cmd中输入python检验是否 成功。 3.Print:print “想输入的文字”(2.7版本) print (“想输入的文字”)(3.0版本) 4.Input : python有一个接收命令行下输入的方法:input() 注意,和print不同的是,这次我们必须得加上()了,而且得是英文字符的括号。 python还有一个输入的方法:raw_input(),它把所有的输入都直接当作一串字 符,于是就可以不用加引号. 5.逻辑符号: >:大于 <:小于 >=:大于等于 <=:小于等于 ==:等于。比较两个值是否相等。用两个等号,是为了和变量赋值区分开来。 !=:不等与 not:逻辑“非”。如果x为True,则not x为False and:逻辑“与”。如果x为True,且y为True,则x and y为True or:逻辑“或”。如果x、y中至少有一个为True,则x or y为True 6.If语句: a) if 条件: (此处有一个缩进,即tab键)选择执行的语句 特别说明:条件后面的冒号不能少,同样必须是英文字符。 特别特别说明:if内部的语句需要有一个统一的缩进,一般用4个空格。 b) if 条件: 执行语句 Elif 条件:

鱼c小甲鱼零基础学python全套课后题

第一节课 0. Python 是什么类型的语言? Python是脚本语言 脚本语言(Scripting language)是电脑编程语言,因此也能让开发者藉以编写出让电脑听命行事的程序。以简单的方式快速完成某些复杂的事情通常是创造脚本语言的重要原则,基于这项原则,使得脚本语言通常比C语言、C++语言或Java 之类的系统编程语言要简单容易。 也让脚本语言另有一些属于脚本语言的特性: ?语法和结构通常比较简单 ?学习和使用通常比较简单 ?通常以容易修改程序的“解释”作为运行方式,而不需要“编译” ?程序的开发产能优于运行性能 一个脚本可以使得本来要用键盘进行的相互式操作自动化。一个Shell脚本主要由原本需要在命令行输入的命令组成,或在一个文本编辑器中,用户可以使用脚本来把一些常用的操作组合成一组串行。主要用来书写这种脚本的语言叫做脚本语言。很多脚本语言实际上已经超过简单的用户命令串行的指令,还可以编写更复杂的程序。 1. IDLE 是什么? IDLE是一个Python Shell,shell的意思就是“外壳”,基本上来说,就是一个通过键入文本与程序交互的途径!像我们Windows那个cmd窗口,像Linux那个黑乎乎的命令窗口,他们都是shell,利用他们,我们就可以给操作系统下达命令。同样的,我们可以利用IDLE这个shell与Python进行互动。 2. print() 的作用是什么? print() 会在输出窗口中显示一些文本(在这一讲中,输出窗口就是IDLE shell 窗口)。 3. Python 中表示乘法的符号是什么? Python中的乘号是*(星号)。 4. 为什么>>>print('I love https://www.sodocs.net/doc/1a2622057.html, ' * 5) 可以正常执行, 但>>>print('I love https://www.sodocs.net/doc/1a2622057.html, ' + 5) 却报错?

Python入门教程 超详细1小时学会Python精编版

Python入门教程超详细1小时学会Python 为什么使用Python 假设我们有这么一项任务:简单测试局域网中的电脑是否连通.这些电脑的ip范围从192.168.0.101到192.168.0.200. 思路:用shell编程.(Linux通常是bash而Windows是批处理脚本).例如,在Windo ws上用ping ip 的命令依次测试各个机器并得到控制台输出.由于ping通的时候控制台文本通常是"Reply from ... " 而不通的时候文本是"time out ... " ,所以,在结果中进行字符串查找,即可知道该机器是否连通. 实现:Java代码如下: String cmd="cmd.exe ping "; String ipprefix="192.168.10."; int begin=101; int end=200; Process p=null; for(int i=begin;i

reader.close(); p.destroy(); } 这段代码运行得很好,问题是为了运行这段代码,你还需要做一些额外的工作.这些额外的工作包括: 1.编写一个类文件 2.编写一个main方法 3.将之编译成字节代码 4.由于字节代码不能直接运行,你需要再写个小小的bat或者bash脚本来运行. 当然,用C/C++同样能完成这项工作.但C/C++不是跨平台语言.在这个足够简单的例子中也许看不出C/C++和Java实现的区别,但在一些更为复杂的场景,比如要将连通与否的信息记录到网络数据库.由于Linux和Windows的网络接口实现方式不同,你不得不写两个函数的版本.用Java就没有这样的顾虑. 同样的工作用Python实现如下: import subprocess cmd="cmd.exe" begin=101 end=200 while begin

ARCGIS与PYTHON

arcgis与python(zz) ESRI软件中的脚本语言一直使用两种模式。 第一种为AML宏语言,该模型显示了PrimOS系统特性。输出为文件格式,数据处理基于目录和文件系统,代码是线性的。 第二个模式是AVENUE语言,继承了Smalltalk的特性。对象响应是调用方法名称,处理事物不必是线性的,有时会引起I/O冲突,集成啦其他语言的混合包。两种语言都有各自的弊端。 随着ArcGIS8的出现,基于地理视图的脚本语言开始引入,基于接口的编程要求用户使用“真正的”编程语言,如,C++,VB,访问ArcGIS8的功能。没有脚本语言自动完成该系列任务。这用户必须写可执行程序,在复杂的接口树和对象里找到需要的工具,并汇编成DLLs动态库和类型库来使用自定义功能。 ArcGIS9版本的面世,ESRI再次提供了访问该软件的新的脚本语言。ESRI意识到,许多用户并不想或不必是个开发者,但还想使用工具解决他们遇到的问题。这些工具包括,友好一致的界面,脚本对象,用于自定义功能所必须的细致入微的编程工具。 满足这些需要,ESRI提供了多种脚本语言-使用ArcObjects-开始空间处理框架。Python,ESRI支持的脚本语言之一,是一种开源的,编译性的,动态类型的,面相对象的脚本语言之一。Python包含在ArcGIS9中,典型的安装与其他组件一起安装。本篇文章总体介绍如何利用P ython的资源帮助大家的GIS编程以及集成ESRI工具。 1Python简介 Python第一次公开发行是1991年,作者是CWI(阿姆斯特丹国家数学和计算机科学研究所)的研究员Guido van Rossum。名字来源于Guido喜欢的喜剧连续剧“Monty Pytho n”,python继承了许多其他语言的特征,如ABC,Modula,LISP,以及Haskel,这些包括很高级的特征,如元类(metaclass),生成器,列表综合(list comprehension)。但更多的程序员需要的仅仅是python的基本类型,如,列表,字典,字符串。 虽然,已经有13年的发展,目前的版本是2.3。这反映了Guido慈善的独裁者设计哲学,以及开发组的精益求精。他们努力增加新的内容,并保持向后的兼容性,当必要时,重新设计在以前发现有问题的地方。 2python设计 Python语言被设计成易于使用,易于学习的动态脚本语言,这意味着用户不需要编译,交互式的方式可以让用户学习到许多执行层次。 Python的设计哲学,Tim Peter在The Zen of Python描述的最清晰,python程序员遵照这些哲学指导他们学习这门语言,帮助他们编写代码,以保持python的一贯风格。

相关主题