【Arcpy】SHP点转CSV

1. Tips

python2.x版本中,python默认的编码方式是ASCII编码,当程序中出现非ASCII编码时,程序会报错 

需要在脚本头部中添加:

reload(sys)

Python的sys库是一种内建模块,可对Python的运行环境进行访问和操作。

2. 实例

# -*- coding:utf-8 -*-
import arcpy, os
import sys
import glob

 # 重载编码
reload(sys)
sys.setdefaultencoding('utf-8') 

 # 设置工作路径
path = r'E:\cutpart_test\BuchongPoint\BuchongPoint' 
arcpy.env.workspace = path
# CSV输出路径
outPath = r'E:\cutpart_test\BuchongPoint\BuchongCSV'  

# glob库获取工作路径下的shp文件列表
list = glob.glob(*.shp')  
name_num = len(path)
suffix = '.csv'  # 为输出的文件加后缀
print(list)

# 遍历shp文件夹
for lis in list:  
    print(lis[name_num+1:-4])#输出文件名
    try:
        # 读取属性表中的字段,先解码再编码
        table = arcpy.ListFields(unicode(lis, 'GBK').encode('UTF-8'))
        print(table)
 
        if len(table) != 0:  # 如果字段长度不为空 则继续
            # 输出:路径+文件名+csv后缀
            outcsv = outPath +os.sep+ lis[name_num+1:-4] + suffix
            f = open(outcsv, 'w')  # 打开csv没有则创建,w 可写
            # 同样先解码再编码 让属性表里的中文顺利被记录,利用游标读取属性表里的每一条数据
            with arcpy.da.SearchCursor(unicode(lis, 'GBK').encode('UTF-8'),
                                       '*') as cursor:  
                for row in cursor:
                    f.write(str(row).replace("(", "").replace(")", "") + '\n')
                # 读取出来的每个字段属性用双括号分割,故把括号变成空格 ,每记录一行加回车
            f.close()
    except Exception as e:
        print (e)
print("Well done!")

  • 17
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
以下是使用arcpy将shapefile换为txt的步骤: 1. 导入arcpy模块: ``` import arcpy ``` 2. 设置工作空间: ``` arcpy.env.workspace = "path/to/folder/containing/shapefile" ``` 3. 定义要素类: ``` fc = "name_of_shapefile.shp" ``` 4. 定义输出txt文件的路径和名称: ``` output_file = "path/to/output_file.txt" ``` 5. 使用arcpy.da.SearchCursor迭代要素类中的所有要素: ``` with arcpy.da.SearchCursor(fc, ["field1", "field2", "field3"]) as cursor: with open(output_file, "w") as f: for row in cursor: f.write(str(row[0]) + "," + str(row[1]) + "," + str(row[2]) + "\n") ``` 在此代码中,我们使用SearchCursor迭代要素类,并将要素的每个字段的值写入txt文件中。我们使用“,”作为字段值之间的分隔符,并在每行的末尾添加换行符“\n”。 6. 运行代码并检查输出txt文件。 完整的代码如下: ``` import arcpy # 设置工作空间 arcpy.env.workspace = "path/to/folder/containing/shapefile" # 定义要素类 fc = "name_of_shapefile.shp" # 定义输出txt文件的路径和名称 output_file = "path/to/output_file.txt" # 使用arcpy.da.SearchCursor迭代要素类中的所有要素 with arcpy.da.SearchCursor(fc, ["field1", "field2", "field3"]) as cursor: with open(output_file, "w") as f: for row in cursor: f.write(str(row[0]) + "," + str(row[1]) + "," + str(row[2]) + "\n") ``` 请注意,此代码仅适用于具有三个字段的要素类。如果您的要素类具有不同数量的字段,请相应地更改代码。此外,您可以更改分隔符和行结束符,以使输出文件符合您的要求。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值