10
2020
06

python批量shp文件转json文件

任务说明:需要将shp文件转换为json坐标数据文件,然后加载到地图中,使用python中的pyshp批量完成

第一步:安装pyshp

pip install pyshp

第二步:编写代码

import os
import codecs
import shutil
import shapefile


def shp2json(fn_in, fn_out):
    shps = shapefile.Reader(fn_in)
    # print(shps.shapeRecord())
    i_len = len(shps.shapes())
    print(shps.shpLength)
    print('len:%s' % i_len)

    for i_index in range(i_len):
        fn_out_temp = fn_out
        if i_len > 1:
            fn_out_temp = fn_out[:-5] + '_' + str(i_index + 1) + '.json'
        if os.path.exists(fn_out_temp):
            print('find:%s' % fn_out_temp)

        s = '{"data":[\n%s\n]}'
        s_data = ''
        r = shps.shape(i_index)
        print('shapeTypeName:%s' % r.shapeTypeName)
        ls_p = r.points
        print('point count:%s' % len(ls_p))
        i = -1
        for p in ls_p:
            i += 1
            # print(p[0])

            if i > 0:
                s_data += ',\n'
            s_data += '[%s,%s]' % (p[0], p[1])

        s = s % s_data

        f = open(fn_out_temp, 'w')
        f.write(s)
        f.close()
        print('save:%s' % fn_out_temp)
10
2020
06

python调用ArcGIS批量生成缓冲区(多边形等距离放大)

任务说明:需要对地图文件进行要素转面,绘制缓冲区,最后面转线,需要处理的文件有一百多个,手工处理费时费力,写一个脚本,批量自动转换

import os
import time
import arcpy
from arcpy import env

readme = '''批量绘制三级防御圈v1.0.1'''
'''
运行环境ArcGis10.7,python版本2.7
'''


# 要素转面
def l2a(fn_in, fn_out):
    if os.path.exists(('%s.shp' % fn_out).decode('utf-8')):
        print('find:%s.shp' % fn_out)
        return

    if not fn_in.endswith('.shp'):
        fn_in += '.shp'
    arcpy.FeatureToPolygon_management(fn_in, fn_out, "", "NO_ATTRIBUTES", "")