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

26 篇文章 8 订阅

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地理数据库)使用百分号(%)字符表示多个字符而下划线(_)字符来表示单个字符。如果你当前使用的是个人地理数据库,那么星号(*)字符用于匹配多个字符而问号(?)字符来匹配单个字符。
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梅里雪山GIS

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值