python怎么使用pyshp读写shp文件

王林
发布: 2023-04-26 13:04:21
转载
2297人浏览过

    安装

    pip install pyshp
    登录后复制

    引入

    import shapefile
    登录后复制

    读取

    sf=shapefile.reader("{路径名}",encoding='utf-8') # 仅仅读取

    shapes与shape

    shapes=sf.shapes()  返回值是一个列表,包含该文件中所有的”几何数据”对象

    shape=sf.shape(0) Shape是第1个”几何数据”对象

    shapeType返回集合类型

    返回第1个对象的数据类型属性

    立即学习Python免费学习笔记(深入)”;

        几何类型
        NULL = 0
        POINT = 1
        POLYLINE = 3
        POLYGON = 5
        MULTIPOINT = 8
        POINTZ = 11
        POLYLINEZ = 13
        POLYGONZ = 15
        MULTIPOINTZ = 18
        POINTM = 21
        POLYLINEM = 23
        POLYGONM = 25
        MULTIPOINTM = 28
        MULTIPATCH = 31
       print(shape.shapeType)
    登录后复制

    bbox 返回数据范围

    shape.bbox    返回第一个集合对象的数据范围(左下角的x,y坐标和右上角的x,y坐标)

    points 所有坐标点

    shape.points   返回第一个集合对象的所有坐标点

    parts 返回’块’的第一个点坐标

    shape.parts 返回第一个对象的每个”块”的第一个点坐标

    Content at Scale
    Content at Scale

    SEO长内容自动化创作平台

    Content at Scale 154
    查看详情 Content at Scale

    records与record

    获取属性列表

    records

    获取属性列表,是个函数

    sf.records();

    返回的值是个list

    record
    获取一条数据

    sf.record(0)
    返回的值是class

    shapeRecords

    同时获取record和shape

    # 同时读取geometry and records
    sf.shapeRecords()
    获取所有
    red=sf.shapeRecords()[0]  #获取第一条数据
    print(red.record)  #获取record
    print(red.shape)   #获取shape
    登录后复制

    fields

    获取shp文件属性字段

    print(sf.fields)
    [('DeletionFlag', 'C', 1, 0), ['OBJECTID', 'N', 9, 0], ['BSM', 'C', 12, 0], ['PXZQDM', 'C', 2, 0], ['PXZQMC', 'C', 50, 0]]
    登录后复制

    写入

    import shapefile
    outshp = 'a.shp'
     
     landlist=[ '84.60212,45.03658,84.60794,45.03938,84.61473,45.04151,84.62442,45.04375,84.62727,45.03632,84.63939,45.0367,84.64906,45.03277,84.63886,45.02233',
        '84.58063,45.05523,84.57974,45.04717,84.59864,45.04792,84.60078,45.05523,84.58758,45.05473,84.58223,45.05523'
    ]
    def tramform(lat_lng):
        str =lat_lng
        str = str.split(',')
        arr = []
        for i in range(len(str) - 1):
            # 第一列,第二列作为经纬度(x,y)创建点
            if i % 2 == 0:
                arr.append([float(str[i]), float(str[i + 1])])
        return arr
    fileWrite = shapefile.Writer("create/1.shp",encoding='utf-8')  # 新建数据存放位置
    
    # shp文件属性字段 Fid,Shape会自动生成。
    fileWrite.field('landid')
    fileWrite.field('landName')
    
    for i in range(len(landlist)):
        # 第一步:塞入形状
        ## 这个形状指的就是那些点的集合
        ## 由于源码中要求的输入是列表,因此就算只塞入一个,也要套一个列表
        arr=[]
        arr=tramform(landlist[i])
        #[[84.60212, 45.03658], [84.60794, 45.03938], [84.61473, 45.04151], [84.62442, 45.04375], [84.62727, 45.03632], [84.63939, 45.0367], [84.64906, 45.03277], [84.63886, 45.02233]]
        #poly 写入面,点线面使用不同函数
        fileWrite.poly([arr])
    
        # 第二步:塞入属性值
        fileWrite.record(str(i), '地块')
    # 保存结束
    fileWrite.close()
    登录后复制

    以上就是python怎么使用pyshp读写shp文件的详细内容,更多请关注php中文网其它相关文章!

    相关标签:
    python速学教程(入门到精通)
    python速学教程(入门到精通)

    python怎么学习?python怎么入门?python在哪学?python怎么学才快?不用担心,这里为大家提供了python速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

    下载
    来源:亿速云网
    本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
    最新问题
    开源免费商场系统广告
    热门教程
    更多>
    最新下载
    更多>
    网站特效
    网站源码
    网站素材
    前端模板
    关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
    php中文网:公益在线php培训,帮助PHP学习者快速成长!
    关注服务号 技术交流群
    PHP中文网订阅号
    每天精选资源文章推送

    Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号