Arcpy编写过程中几个特别注意事项

Arcpy编写过程中几个特别注意事项

  1. 路径问题:
          只能是单斜杠、双反斜杠、前面加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的单反斜杠
  1. 参数问题:
          列表参数、字符串、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


  1. 性能优化问题:
          操作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)

  1. 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
  1. 模糊查询语句在不同数据类型的中表达不一样:
          除了个人地理数据库,其他数据集(shapefile、文件地理数据库、ArcSDE地理数据库)使用百分号(%)字符表示多个字符而下划线(_)字符来表示单个字符。如果你当前使用的是个人地理数据库,那么星号(*)字符用于匹配多个字符而问号(?)字符来匹配单个字符。
posted @   XYSGIS  阅读(57)  评论(0编辑  收藏  举报
编辑推荐:
· 基于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保姆级教程
点击右上角即可分享
微信分享提示