ArcPy学习入门(一):基础知识

     ArcPy 由一系列模块支持,包括数据访问模块 (arcpy.da)、制图模块 (arcpy.mapping)、ArcGIS Spatial Analyst 扩展模块 模块 (arcpy.sa) 以及 ArcGIS Network Analyst 扩展模块 (arcpy.na)。

1、路径 
      Python将反斜线 (\) 用作转义字符。例如,\n 表示换行符,\t 表示制表符。指定路径时,可使用正斜线 (/) 代替反斜线。使用两条反斜线(而不是一条)以避免语法错误。也可通过在包含反斜线的字符串前放置字母 r(以便正确解释)来使用字符串文本。

import arcpy
arcpy.GetCount_management("E:/pythondata/shengdao.shp")
arcpy.GetCount_management("E:\\pythondata\\shengdao.shp")
arcpy.GetCount_management(r"E:\pythondata\shengdao.shp")

输出结果:

            <Result '1509'>

 

2、可选参数 

--添加字段

# 将可选参数设置为一组空双引号 ("")
arcpy.AddField_management("c:/data/streets.shp", "Address", "TEXT", "", "", 120)
# 将可选参数设置为带双引号的井号 ("#")
arcpy.AddField_management("c:/data/streets.shp", "Address", "TEXT", "#", "#", 120)
# 明确指定要使用的参数名称及其值(忽略除已命名参数以外的所有参数)
arcpy.AddField_management("c:/data/streets.shp", "Address", "TEXT", field_length=120)

      可选参数具有默认值。如果为可选参数输入带引号的 #(井号)、""(一对双引号)、''(一对单引号)或者 Python None,将会使用默认参数值。

 

3、多值参数 
      工具参数可接受单个值或多个值,这取决于参数本身。当可接受多个值时,参数值可指定为一个 Python 列表。

--***字段工具可接受多个要***的字段。

arcpy.DeleteField_management("E:/pythondata/shengdao.shp",["Address","Address1"])

--联合(Union)

arcpy.env.workspace=r"E:\pythondata\FileGDB.gdb\MyFeatureSet"input_list = [["mian", 1], ["feature", 2]]
arcpy.Union_analysis(input_list,r"E:\pythondata\FileGDB.gdb\MyFeatureSet\union3")

参数约定,一般来说: 
(1)所有输入数据集的参数名都带有前缀 in_,而所有输出数据集的参数名都带有前缀 out_。 
(2)输入数据集通常为第一个参数,输出数据集通常为最后一个必需参数。其他必需参数位于输入和输出数据集之间。 
(3)可选参数始终位于必需参数之后。

 

4、设置环境

      在 ArcPy 中,地理处理环境被组织为 ArcPy 类 env 下的属性。

>>> print arcpy.env.overwriteOutput
False
>>> print arcpy.env.workspace
C:\Users\Admin\Documents\ArcGIS\Default.gdb
>>> arcpy.env.workspace = "E:\pythondata">>> arcpy.env.overwriteOutput = True
>>> print arcpy.env.overwriteOutput
True
>>> print arcpy.env.workspace
E:\pythondata

     ArcPy 函数 ResetEnvironments 可用于恢复默认环境值。

>>> print arcpy.env.workspace
E:\pythondata
>>> arcpy.ResetEnvironments()
>>> print arcpy.env.workspace
C:\Users\Admin\Documents\ArcGIS\Default.gdb

     ArcPy 函数 ListEnvironments 可用于创建所有地理处理环境的列表。该列表可用于访问并输出所有环境及其当前值。

environments = arcpy.ListEnvironments()for environment in environments:
  envSetting = eval("arcpy.env." + environment)
  print "%-30s: %s" % (environment, envSetting)

输出结果:

newPrecision                  : SINGLE
autoCommit                    : 1000
XYResolution                  : None
XYDomain                      : None
scratchWorkspace              : None
cartographicPartitions        : None
terrainMemoryUsage            : False
MTolerance                    : None
compression                   : LZ77
coincidentPoints              : MEAN
randomGenerator               : 0 ACM599
outputCoordinateSystem        : None
rasterStatistics              : STATISTICS 1 1
ZDomain                       : None
transferDomains               : False
resamplingMethod              : NEAREST
snapRaster                    : None
projectCompare                : NONE
cartographicCoordinateSystem  : None
configKeyword                 : None
outputZFlag                   : Same As Input
qualifiedFieldNames           : True
tileSize                      : 128 128
parallelProcessingFactor      : None
pyramid                       : PYRAMIDS -1 NEAREST DEFAULT 75 NO_SKIP
referenceScale                : None
extent                        : None
XYTolerance                   : None
tinSaveVersion                : CURRENT
nodata                        : NONE
MDomain                       : None
spatialGrid1                  : 0.0
cellSize                      : MAXOF
outputZValue                  : None
outputMFlag                   : Same As Input
geographicTransformations     : None
spatialGrid2                  : 0.0
ZResolution                   : None
mask                          : None
spatialGrid3                  : 0.0
maintainSpatialIndex          : False
workspace                     : None
MResolution                   : None
derivedPrecision              : HIGHEST
ZTolerance                    : None
scratchGDB                    : C:\Users\Admin\AppData\Local\Temp\scratch.gdb
scratchFolder                 : C:\Users\Admin\AppData\Local\Temp\scratch
packageWorkspace              : None
addOutputsToMap               : True

--设置工作空间环境

>>> arcpy.env.workspace = "c:/data/Portland.gdb"

>>> arcpy.Buffer_analysis("streets", "streetBuf", "500 METERS")


5、创建工作流

--用于检索要素类和字段并生成字段值的唯一列表

import arcpyfeatureclass = r"E:\pythondata\FileGDB.gdb\shengdao"field = "KIND"valueList = []
rows = arcpy.da.SearchCursor(featureclass, [field])for row in rows:
    valueList.append(row[0])uniqueSet = set(valueList)
uniqueList = list(uniqueSet)
uniqueList.sort()

print(uniqueList)
--用 ListFeatureClasses 函数生成工作空间中的所有要素类的列表,然后使用 GetCount 工具输出该列表中的各个要素类中包含的要素数。

输出结果:

bianjie.shp,1
gaosu.shp,1158
guodao.shp,840
shengdao.shp,1509
xian.shp,8

--用创建要素类工具基于该对象创建包含该指定空间参考的新要素类rivers.shp。
inputWorkspace = r"E:\pythondata"outputName =  "rivers.shp"spatialRef = arcpy.SpatialReference(4326)
arcpy.CreateFeatureclass_management(inputWorkspace,outputName,"POLYLINE","","","",spatialRef)
 
6、创建函数
   在 Python 中,定义函数的方法是使用 Python 的 def 关键字后接函数名和参数列表。
--创建函数 listFieldName,返回某一个表或要素类的字段名称列表
def listFieldNames(table, wildcard=None, fieldtype=None):
    fields = arcpy.ListFields(table, wildcard, fieldtype)
    nameList = []for field in fields:
        nameList.append(field.name)return nameList
    
--调用函数    
fieldNames = listFieldNames(r"E:\pythondata\shengdao.shp")


输出结果:


[u'FID', u'Shape', u'OBJECTID', u'NAME', u'KIND', u'Shape_Leng', u'Address3']

 
 
 

     本文转自stock0991 51CTO博客,原文链接:http://blog.51cto.com/qing0991/1422744,如需转载请自行联系原作者





  • 3
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值