arcpy站点包中常用方法与函数

本文介绍了使用ArcPy进行地理信息系统(GIS)操作的多种实用方法,包括获取要素数量、设置默认网格索引、导入工具箱、加载地图文档、添加字段、创建缓冲区等,并展示了如何通过Python代码实现这些功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

arcpy站点包中常用方法与函数

1.feature class 记录数
    arcpy.GetCount_management("c:/wlgt/pms_gt_l.shp")
2.feature class 默认网格索引(3级)
   arcpy.CalculateDefaultGridIndex_management("c:/wlgt/pms_gt_l.shp")
3.列出系统工具箱
   arcpy.ListToolboxes()
4.列出别名为management的工具
   arcpy.ListTools("*_management")
5.导入自定义开发工具箱
   arcpy.ImportToolbox("c:/PCovertL.tbx")

6.加载mxd文档

   acrpy.mapping.MapDocument()

7.list已知mxd文档中的layername

   arcpy.mapping.ListLayers()

8.list已知mxd文档中失去连接的数据源的layername

   arcpy.mapping.ListBrokenDataSources()

9. 查看对象类型

    type()比较常用在实例化类以后判断属性,方法

10.查看arcpy包中方法的具体参数与描述信息

    arcpy.Usage()

11.查看类,开发包工具箱下的方法种类

    dir()  此处可以参考《定制python脚本环境》(自定义查找函数预加载)




加入字段:

[python]  view plain  copy
 print ?
  1. >>> arc = ['A','B','C','D','E']  
  2. >>> for i in range(5):  
  3. ...     arcpy.AddField_management("idcounty",arc[i],"TEXT")  
给idcounty空间数据批量加入五个字段~


Buffer缓冲区

[python]  view plain  copy
 print ?
  1. arcpy.Buffer_analysis("thermal","buffer","10 kilometers")  
集合面积与几何长度

[python]  view plain  copy
 print ?
  1. >>> arcpy.CalculateField_management("idcounty","ID_Area","!shape.area@squarekilometers!","PYTHON_9.3")  
[python]  view plain  copy
 print ?
  1. >>> arcpy.CalculateField_management("idcounty","ID_Area","!shape.length@kilometers!","PYTHON_9.3")  
改变工作空间

[python]  view plain  copy
 print ?
  1. >>> arcpy.env.workspace = "F:/Data"  
  2. >>> result = arcpy.Buffer_analysis("thermal","t_Buffer","10 kilometers")  
  3. >>> print result  
  4. F:/Data\t_Buffer.shp  
返回要素数目

[python]  view plain  copy
 print ?
  1. >>> result = arcpy.GetCount_management("idcounty")  
  2. >>> print result.getOutput(0)  
  3. 44  
调用工具的方法,就是工具的英文名称,去掉中间的空格,然后下划线,加入工具集的名称

字段名称:

[python]  view plain  copy
 print ?
  1. >>> fieldList = arcpy.ListFields("idcounty")  
  2. >>> for field in fieldList:  
  3. ...     print field.aliasname + field.type  
获取工作空间内所有要素类的字段名:

[python]  view plain  copy
 print ?
  1. >>> fes = arcpy.ListFeatureClasses()  
  2. >>> for fe in fes:  
  3. ...     print fe   
  4. ...     nl = ''  
  5. ...     fs = arcpy.ListFields(fe)  
  6. ...     for f in fs:  
  7. ...         nl = nl + '  ' + f.aliasName  
  8. ...     print nl  

复制(工作空间中的可以直接写名字)

[python]  view plain  copy
 print ?
  1. arcpy.Copy_management("i_Copy.shp","F:/Data/data/qq.shp")  
列表的一些函数
[python]  view plain  copy
 print ?
  1. >>> a = [1]*10  
  2. >>> for i in range(10):  
  3. ...     a[i] = i  
  4. ...   
  5. >>> a  
  6. [0123456789]  
  7. >>> b = [1]*2  
  8. >>> b  
  9. [11]  
  10. >>> a.extend(b)  
  11. >>>   
  12. >>> a  
  13. [012345678911]  
  14. >>> a + b  
  15. [01234567891111]  
  16. >>> a   
  17. [012345678911]  
  18. >>> a.count(1)  
  19. 3  
  20. >>> a.append(100)  
  21. >>> a  
  22. [012345678911100]  
  23. >>> a.index(100)  
  24. 12  
  25. >>> a.insert(0,'I')  
  26. >>> a  
  27. ['I'012345678911100]  
  28. >>> a.pop(0)  
  29. 'I'  
  30. >>> a  
  31. [012345678911100]  
  32. >>> a.remove(100)  
  33. >>> a  
  34. [012345678911]  
  35. >>> a.reverse()  
  36. >>> a  
  37. [119876543210]  
  38. >>> a.sort()  
  39. >>> a  
  40. [011123456789]  
  41. >>>   

Python数据类型

[python]  view plain  copy
 print ?
  1. >>> type(3)  
  2. <type 'int'>  
  3. >>> type(3.0)  
  4. <type 'float'>  
  5. >>> type(1111111111)  
  6. <type 'int'>  
  7. >>> type(111111111111111)  
  8. <type 'long'>  
  9. >>> type(3.00000000)  
  10. <type 'float'>  
  11. >>> type(3.000000000000)  
  12. <type 'float'>  
  13. >>> type(1+2j)  
  14. <type 'complex'>  
  15. >>> type(True)  
  16. <type 'bool'>  
  17. >>> type('Alex')  
  18. <type 'str'>  
  19. >>> type([2,4])  
  20. <type 'list'>  
  21. >>> type((3,4))  
  22. <type 'tuple'>  
  23. >>>   
详见: http://blog.sina.com.cn/s/blog_4b5039210100e9ya.html

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

------------------------------------------------ ESRI培训 ----------------------------------------------------------------------------------------------------------------------

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

地图文件mxd

[python]  view plain  copy
 print ?
  1. >>> mxd = arcpy.mapping.MapDocument("current")  
  2. >>> print mxd.filePath  
  3. F:\MY_OWN_WORK\Exercise\中国.mxd  

数据框架data frame

[python]  view plain  copy
 print ?
  1. >>> mxd = arcpy.mapping.MapDocument("current")  
  2. >>> dfs = arcpy.mapping.ListDataFrames(mxd)  
  3. >>> for df in dfs:  
  4. ...     print df.name  
  5. ...   
  6. 图层  
  7.   
  8. Data Frame II  
图层layer

[python]  view plain  copy
 print ?
  1. >>> mxd = arcpy.mapping.MapDocument("current")  
  2. >>> df = arcpy.mapping.ListDataFrames(mxd)[0]  
  3. >>> ls = arcpy.mapping.ListLayers(df)  
  4. >>> for l in ls:  
  5. ...     print l   
  6. ...   
  7. Cities (population > 5 Million)  
  8.   
  9. Geogrid  
  10.   
  11. Rivers  
  12.   
  13. Lakes  
  14.   
  15. Continents  
  16.   
  17. Ocean  
[python]  view plain  copy
 print ?
  1. dataframe.extent = layers[0].getSelectedExtent()  

<think>嗯,用户现在明确询问关于arcpy常用函数列表和使用方法。回顾之前的对话,用户已经接触过一些arcpy基本概念,比如NumPy数组转换函数(RasterToNumPyArray/NumPyArrayToRaster)和模块分类(arcpy.sa/arcpy.da等)。这次需要系统性的函数分类说明。用户可能是GIS开发人员或地理信息专业学生,正在学习自动化地理处理脚本编写。从ta特意强调"常用"来看,可能更关注实战应用而非理论,所以应该按工作流逻辑排序函数(数据访问→处理→输出),并突出实际参数示例。要注意上次对话里用户提过栅格转换函数,这次可以深化这块内容但避免重复。引用材料里值得注意的点:引用[1]提到的数组转换函数属于arcpy基础模块;引用[2]的模块分类结构可用作框架;引用[3]的课程链接可能超出用户需求范围不必含。需要补充用户未提及但关键的Describe/游标/arcpy.sa地图代数函数——这些是arcpy真正的核心工具。结构化响应方案:先按工作场景分大类(数据操作/游标管理/地图代数等),每类选3-5个典型函数带参数说明。特别强调游标函数的内存管理和Describe的通用性,因为初学者常在这踩坑。栅格处理环节要复现之前提到的数组函数,但补充说明"需要SpatialAnalyst许可"这种实用限制条件。安全提醒方面:游标必须用with语句这点必须强调,arcgis社区论坛经常有人因忘记del导致锁表。另外函数列表最后补充获取帮助的方式(如dir(arcpy)),让用户能自行探索扩展。</think> 根据ArcPy的功能模块划分,以下是常用函数及典型用法,并整合了栅格数组转换的关键函数: ### 一、核心数据处理函数 1. **数据转换** - `RasterToNumPyArray(in_raster)` 将栅格转为NumPy数组(需配合`arcpy`导入) ```python import arcpy arr = arcpy.RasterToNumPyArray("C:/data/elevation.tif") ``` - `NumPyArrayToRaster(in_array)` 将数组转为栅格(需定义左下角坐标) ```python new_raster = arcpy.NumPyArrayToRaster(arr, arcpy.Point(0,0), 30, 30) ``` 2. **要素操作** - `CopyFeatures_management(in_features, out_features)` 复制要素类 ```python arcpy.CopyFeatures_management("roads.shp", "C:/backup/roads_copy.shp") ``` --- ### 二、空间分析模块 (`arcpy.sa`) > *需Spatial Analyst扩展许可* - `Slope(in_raster)` 计算坡度 ```python from arcpy.sa import * slope_result = Slope("elevation.tif") slope_result.save("C:/output/slope.tif") ``` - `ZonalStatistics(in_zone_data, zone_field, in_value_raster)` 分区统计 ```python zonal_stats = ZonalStatistics("basins.shp", "basin_id", "rainfall.tif", "MEAN") ``` --- ### 三、数据访问模块 (`arcpy.da`) 1. **游标操作** - `SearchCursor()`:只读查询 ```python with arcpy.da.SearchCursor("cities.shp", ["NAME", "POP"]) as cursor: for row in cursor: print(f"城市: {row[0]}, 人口: {row[1]}") ``` - `UpdateCursor()`:可更新记录 ```python with arcpy.da.UpdateCursor("roads.shp", ["TYPE", "SPEED_LIMIT"], "TYPE='HIGHWAY'") as cursor: for row in cursor: row[1] = 120 # 修改限速值 cursor.updateRow(row) ``` 2. **字段管理** `AddField_management()` 添加字段 ```python arcpy.AddField_management("parcels.shp", "Area_m2", "DOUBLE") ``` --- ### 四、元数据函数 - `Describe()` 获取数据描述信息 ```python desc = arcpy.Describe("rivers.shp") print(f"数据类型: {desc.dataType}, 坐标系: {desc.spatialReference.name}") ``` --- ### 五、常用工具函数 | 函数名 | 作用 | 示例 | |--------------------------|-------------------------------|-------------------------------------------| | `ListFeatureClasses()` | 列出工作空间的要素类 | `arcpy.ListFeatureClasses("road_*")` | | `ListRasters()` | 列出栅格数据 | `for rast in arcpy.ListRasters(): print(rast)` | | `GetCount_management()` | 统计要素数量 | `count = arcpy.GetCount_management("points.shp")[0]` | > **重要提示**: > 1. 使用游标时**必须**采用`with`语句,确保释放锁 > 2. 空间分析函数需检查许可:`arcpy.CheckOutExtension("Spatial")` > 3. 完整函数列表可运行:`dir(arcpy)` 或查阅[ArcPy官方文档](https://pro.arcgis.com/en/pro-app/arcpy/)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值