Python Scripting for ArcGIS

本书介绍了使用Python进行ArcGIS地理处理的详细步骤,包括引用工具函数、设置工作空间、判断文件存在、描述数据类型、处理几何和栅格数据等。重点章节涵盖SearchCursor、InsertCursor和UpdateCursor操作,以及读取和写入几何图形与栅格数据。
摘要由CSDN通过智能技术生成

学习资源: 《面向ArcGIS的Python脚本编程》
英文版更详细 Python Scripting for ArcGIS
练习数据和资源 Esri官方资源

书一共分为四部分,第一部分是Python和地理处理的相关概念(第一章到第四章),第二部分是编写地理处理脚本(第五章到第九章),第三部分是执行地理处理任务(第十章到第十二章),最后一部分是 创建并使用脚本工具(十三到十四章)。核心主要是第二部分。

Part 2 Writing Scripts

Chapter 5 Geoprocessing using Python

引用工具函数的两种方法(推荐第一种)

这里写图片描述

跳过可选参数的三种方法

这里写图片描述

设置工作空间和环境

>>> from arcpy import env
>>> env.workspace = "C:/EsriPress/Python/Data/Exercise05"
>>> env.overwriteOutput = True
>>> env.outputCoordinateSystem = spatial_ref

坐标系类(SpatialReference类)

需要实例化之后使用

>>> prjFile = "C:/EsriPress/Python/Data/Exercise05/facilities.prj"
>>> spatial_ref = arcpy.SpatialReference(prjFile)
>>> arcpy.DefineProjection_management("hospitals", spatial_ref)
The result is <Result 'hospitals'>.
>>> print spatial_ref.name
The result is 
NAD_1983_StatePlane_Texas_Central_FIPS_4203_Feet

显示工具的提示信息

arcpy.Clip_analysis("parks.shp", "zip.shp", "Results/parks_Clip.shp")
print arcpy.GetMessages()
# 输出所有的提示信息
msgCount = arcpy.GetMessageCount()
print arcpy.GetMessage(msgCount-1)
# 输出指定的提示信息

Chapter 6 Exploring spatial data

使用工具前判断文件是否存在(arcpy.exists)

python自带的函数os.path.exist函数主要是判断文件是否存在,也就是必须要写出完整文件的后缀名,而Arcpy中的exists函数则是可以对不同类别的要素进行判断是否存在。

import arcpy
from arcpy import env
env.workspace = "C:/EsriPress/Python/Data/Exercise06"
if arcpy.Exists("cities.shp"):
    arcpy.CopyFeatures_management("cities.shp", "results/cities_copy.shp")

判断数据类型(Describe)

type = arcpy.Describe("cities.shp").shapeType
if type == "Polygon":
    # 需要使用的函数
else:
    print "The feature are not polygons"

数据库中的数据类型非常重要,因为数据库中的户数据元素没有文件扩展名。
文件地理数据库后缀名 .gdb
个人地理数据库后缀名.mdb
企业地理数据库后缀名.sde

>>>import arcpy
>>>element = "C:/Data/study.gdb/final"
>>>desc = arcpy.Describe(element)
>>> arcpy.Describe(element).datasetType
u'FeatureClass'
>>> arcpy.Describe(element).ShapeType
u'Point'

Describe函数返回一个具有很多属性的Describe对象,包含文件路径、目录、路径、文件名称等属性。

>>> mylayer = arcpy.Describe("cities")
>>> mylayer.dataType
#Running the code returns u'FeatureLayer'.
>>> mylayer.shapeType
The result is u'Point'.
----------
>>> mylayer.spatialReference.name
The result is u'GCS_North_American_1983'.
>>> mylayer.spatialReference.type
The result is u'Geographic'.
>>> mylayer.spatialReference.domain
The result is u'-400 -400 400 400'.

列表批处理

import arcpy
from arcpy import env
env.workspace = "C:/Data"
# 列出目录下所有文件名
fclist  =  arcpy.ListFeatureClasses( )
print fclist
# [u'floodzone.shp', u'roads.shp', u'streams.shp', u'wetlands.shp', u'zipcodes.shp']
# 列出以w开头的文件名
fclist  =  arcpy.L
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值