Arcpy编写过程中几个特别注意事项
Arcpy编写过程中几个特别注意事项
- 路径问题:
只能是单斜杠、双反斜杠、前面加r的单反斜杠;
import arcpy
arcpy.GetCount_management("c:/temp/streams.shp")//单斜杠
arcpy.GetCount_management("c:\\temp\\streams.shp")//双反斜杠
arcpy.GetCount_management(r"c:\temp\streams.shp")//前面加r的单反斜杠
- 参数问题:
列表参数、字符串、ValueTable;
import arcpy
from arcpy import env
env.workspace = "C:/base/data/gdb"
arcpy.DeleteField_management("roads", ["STREET_NAM", "LABEL", "CLASS"])//列表
arcpy.DeleteField_management("roads", "STREET_NAM;LABEL;CLASS")//字符串
vt = arcpy.ValueTable()
vt.addRow("STREET_NAM")
vt.addRow("LABEL")
vt.addRow("CLASS")
arcpy.DeleteField_management("roads", vt)//ValueTable
- 性能优化问题:
操作arcpy.da.InsertCursor、arcpy.da.SearchCursor、arcpy.da.UpdateCursor时尽量采用with 方式,这种方式不仅性能高而且内存自动释放;
//第一种尽量不采用
import arcpy
cursor = arcpy.da.SearchCursor(fc, ['fieldA', 'fieldB'])
for row in cursor:
print(row)
//第二种最好采用
import arcpy
with arcpy.da.SearchCursor(fc, ['fieldA', 'fieldB']) as cursor:
for row in cursor:
print(row)
- SQL中where条件书写问题:
SQL 表达式中使用的字段分隔符因所查询数据的格式而异。例如,文件地理数据库(也可以不需要)和 shapefile 使用双引号 (" "),个人地理数据库使用方括号 ([ ]),企业级地理数据库不使用字段分隔符。该函数可免去为确保与 SQL 表达式一起使用的字段分隔符的正确性而进行的推测过程;
(1)第一种:
improt arcpy
fc="c:/Data/study.gdb/roads"
qry = "SVCAREA" = 'North'//shapefile、文件地理数据库、ArcSDE地理数据库
cursor=arcpy.da.SearchCursor(fc,["NAME","CLASSCODE"],qry )
for row in cursor:
print row[0]
del row
del cursor
(2)第二种:
improt arcpy
fc="c:/Data/study.gdb/roads"
qry = [SVCAREA] = 'North'//个人地理数据库(*.mdb)
cursor=arcpy.da.SearchCursor(fc,["NAME","CLASSCODE"],qry )
for row in cursor:
print row[0]
del row
del cursor
(3)第三种:包含第一第二两种用法.
improt arcpy
fieldname="SVCAREA"
fc="c:/Data/study.gdb/roads"
delimfield=arcpy.AddFiledDelimiters(fc,fieldldname)
cursor=arcpy.da.SearchCursor(fc,["NAME","CLASSCODE"],delimfield+"= 'LONGWOOD'")
for row in cursor:
print row[0]
del row
del cursor
- 模糊查询语句在不同数据类型的中表达不一样:
除了个人地理数据库,其他数据集(shapefile、文件地理数据库、ArcSDE地理数据库)使用百分号(%)字符表示多个字符而下划线(_)字符来表示单个字符。如果你当前使用的是个人地理数据库,那么星号(*)字符用于匹配多个字符而问号(?)字符来匹配单个字符。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· Vue3状态管理终极指南:Pinia保姆级教程