arcpy 诸多操作教程代码 读取shp保存到mxd等

1. 解决途径

        【1】arcgis帮助文档10.2链接,对于有对应工具箱中的tool,那么直接在arcgis软件中点击帮助查看即可,然后再组合。对于一些工具箱中不存在的,需要专门搜索arcpy中对应的函数。

        【2】百度(不一定有合适的)

        【3】chatgpt,由于国外网站的内容质量相较更高一些,并且arcpy的网站也正规,因此chatgpt的arcpy的代码生成质量很高,改动的较小。

        由于arcgis10.x系列均使用python2.7,python2.7采用ASCII编码格式,不像python3采用utf-8,因此写代码时需要特别注意。

2. arcpy的一些使用

       【1】读取mxd中有那些layer

       【2】读取shp,并将shp写入mxd图层

        【3】按属性选择,并导出shp

        【4】读取shp、要素图层的属性字段信息内容

        ......

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

        【1】读取mxd中有那些layer

# -*- coding: utf-8 -*-

'''python独立脚本,推荐采用vscode'''

import os
import time
import arcpy
import sys
reload(sys)
sys.setdefaultencoding('utf8')

mxd = arcpy.mapping.MapDocument(ur"***.mxd")
# df = arcpy.mapping.ListDataFrames(mxd)[0]  # 可不使用
# layers = arcpy.mapping.ListLayers(mxd, "", df)

layers = arcpy.mapping.ListLayers(mxd)
for layer in layers:
    print(layer.name)
    if layer.name=="中文layer名字".decode("utf-8"):
        print(222222)
        break
# 获取此layer的数据源
print(layer.dataSource)

        【2】读取shp,并将shp写入mxd图层

# -*- coding: utf-8 -*-

'''python独立脚本,推荐采用vscode'''

import os
import time
import arcpy
import sys
reload(sys)
sys.setdefaultencoding('utf8')

mxd = arcpy.mapping.MapDocument(mxd_path)
df = arcpy.mapping.ListDataFrames(mxd)[0]

# mxd打开时自动将对应路径的shp添加进arcgis界面,推荐shp_path为相对mxd路径
layer = arcpy.mapping.Layer(shp_path)
arcpy.mapping.AddLayer(df, layer)

# 保存; 删除内存mxd
mxd.save()
del mxd

        【3】按属性选择,并导出shp

# -*- coding: utf-8 -*-

'''python独立脚本,推荐采用vscode'''

import os
import time
import arcpy
import sys
reload(sys)
sys.setdefaultencoding('utf8')


# 按属性查找 sql语句类似如下 不论中英文
sql = "%s='%s'" % (sql_field, k)
# sql = '%s=\'%s\''% (sql_field, k)
# sql = "{}='{}'".format(sql_field, k)

# 创建1个图层layer 即导入shp内容 图层名称为lyr
arcpy.MakeFeatureLayer_management(shp_path, "lyr")

# 在lyr图层上 根据sql 新建内容 相当于重写lyr
arcpy.SelectLayerByAttribute_management("lyr", "NEW_SELECTION", sql)

# 将最新的lyr导出成shp
arcpy.CopyFeatures_management("lyr", os.path.join(save_shp_root, "***.shp"))

time.sleep(1)  # 由于arcpy底层处理可能是异步的 可能阻塞 因此睡一会 要不就容易for遍历程序死掉

# 删除图层layer
arcpy.Delete_management("lyr") 

        【4】读取shp、要素图层的属性字段信息内容

# -*- coding: utf-8 -*-

'''python独立脚本,推荐采用vscode'''

import os
import time
import arcpy
import sys
reload(sys)
sys.setdefaultencoding('utf8')

sql_field = "NAME"
# 若要查询多个字段则在 [] 中填写多个,若全部返回 则写"*",也可去掉[]-没有第2个参数即可arcpy.SearchCursor(shp_path)
# 推荐使用arcpy.da.SearchCursor 其与arcpy.SearchCursor参数有所不同 查看官网文档即可使用
# https://resources.arcgis.com/en/help/main/10.2/index.html#//018w00000011000000
shp_rows = arcpy.SearchCursor(shp_path, [sql_field])

# 遍历每一行 字段内容
while True:
    row = shp_rows.next()
    if not row:
        break
    # name = row.NAME # 不推荐这样使用
    name = row.getValue(sql_field)
    print(name)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值