ArcGisPro脚本工具【5】——标准测绘txt文件转矢量要素

该工具主要用于将包含坐标信息的TXT测绘文件转换为面要素,支持批处理多个文件。它读取TXT中的地块属性和坐标,生成点要素,然后构建面要素,并将属性信息赋值给新要素。转换后的面要素会按照指定坐标系存储,不使用SHP格式。工具提供了一个Python脚本来实现这一功能,并提供了下载链接。
摘要由CSDN通过智能技术生成

混进有

工具介绍

在测绘数据中,有一类txt文件,如下图:

文件中记录了要素的坐标系、地块名称、用地性质、折点坐标等信息。

通过提取坐标点信息,转化成折点,再生成面要素,并且将要素信息提取到要素的字段里,就是本工具的主要功能。

考虑到一般情况下,需要转换多个 txt文件,因此工具做成批处理的方式。

参数设置

参数有3个。

1、【输入文件夹位置】——输入包括txt文件的文件夹。工具通过读取文件夹下的txt文件来获取测绘文件,因此该文件夹下不要有其他乱七八糟的文件

 

2、【输入转换后坐标系】——输入生成要素所定义的坐标系,要和txt文件里的坐标信息一致

3、【输出要素】——输出生成的面要素的位置,建议放在数据库里,不要用shp

脚本编写

主要思路

通过提取坐标点信息,转化成折点,再生成面要素,并且将要素信息提取出来,分离,并赋值给新生成的面要素,以字段的形式保存下来。

完整代码如下:

import arcpy
import os

arcpy.env.overwriteOutput = True

filePath = arcpy.GetParameterAsText(0)
coordinate = arcpy.GetParameterAsText(1)
output_feature = arcpy.GetParameterAsText(2)
files = os.listdir(filePath)


def Txt_to_Feature():
    list_Polygon = []
    for i in range(len(files)):
        # 读取txt测绘文件
        arcpy.AddMessage('转换文件-----' + str(i+1) + '-----:' + files[i])
        f = open(filePath + '\\' + files[i])
        txt = f.read()
        # 截取地块属性和坐标点文字
        sp_txt = txt[txt.find('[地块坐标]'):].split('@')
        for k in range(1, len(sp_txt)):
            main_txt = sp_txt[k-1].split('\n')[-1] + sp_txt[k]

            area_txt = main_txt.split('\n')[0].split(',')
            p_index = area_txt[2]
            p_name = area_txt[3]
            p_type = area_txt[6]

            poi_txt = main_txt[main_txt.find('J1'):].split('\n')
            # 生成点要素
            list_point = []
            names = locals()
            for j in range(len(poi_txt)-1):
                if len(poi_txt[j]) > 0:
                    x = float(poi_txt[j].split(',')[3])
                    y = float(poi_txt[j].split(',')[2])
                    names['n' + str(i)] = arcpy.Point(x, y)
                    list_point.append(names['n' + str(i)])
            # 生成面要素
            array = arcpy.Array(list_point)
            polygon = arcpy.Polygon(array)
            output_polygon = arcpy.CopyFeatures_management(polygon, r'memory\output_poly' + str(i) + str(k))
            # 字段赋值
            arcpy.management.AddField(output_polygon, '编号', 'TEXT')
            arcpy.management.AddField(output_polygon, '项目名称', 'TEXT')
            arcpy.management.AddField(output_polygon, '类型', 'TEXT')

            with arcpy.da.UpdateCursor(output_polygon, ['编号', '项目名称', '类型']) as cursor:
                for row in cursor:
                    row[0] = p_index
                    row[1] = p_name
                    row[2] = p_type
                    cursor.updateRow(row)
            # 生成面加入列表
            list_Polygon.append(r'memory\output_poly' + str(i) + str(k))

    # 多个要素合并
    arcpy.management.Merge(list_Polygon, output_feature)
    # 定义坐标系
    arcpy.management.DefineProjection(output_feature, coordinate)


if __name__ == '__main__':
    Txt_to_Feature()

结果展示

转换结果如下:

 

工具下载

最后,贴上工具下载地址:

工具下载:标准txt测绘文件转面要素icon-default.png?t=MBR7https://pan.baidu.com/s/1OLxiUhoNYx01ksYhFqHPyg?pwd=pj6f

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

规划GIS会

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

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

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

打赏作者

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

抵扣说明:

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

余额充值