Rumah > pembangunan bahagian belakang > Tutorial Python > Bagaimana untuk menggunakan pyshp untuk membaca dan menulis fail shp dalam python

Bagaimana untuk menggunakan pyshp untuk membaca dan menulis fail shp dalam python

王林
Lepaskan: 2023-04-26 13:04:21
ke hadapan
1942 orang telah melayarinya

    Pasang

    pip install pyshp
    Salin selepas log masuk

    Perkenalkan

    import shapefile
    Salin selepas log masuk

    Baca

    sf=shapefile.Reader(" { nama laluan}", encoding='utf-8') # Hanya baca

    bentuk dan bentuk

    shapes=sf.shapes() Nilai pulangan ialah senarai yang mengandungi fail Semua "geometrik data" objek

    shape=sf.shape(0) Shape ialah objek "data geometri" pertama

    shapeType mengembalikan jenis koleksi

    Pengembalian atribut jenis data objek pertama

        几何类型
        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)
    Salin selepas log masuk

    bbox Mengembalikan julat data

    shape.bbox Mengembalikan julat data objek koleksi pertama ( x, y koordinat sudut kiri bawah dan koordinat x, y sudut kanan atas)

    mata Semua titik koordinat

    shape.points Mengembalikan semua koordinat objek koleksi pertama Titik

    bahagian mengembalikan koordinat titik pertama bagi ’blok’

    bentuk.bahagian mengembalikan titik pertama setiap "blok" objek pertama Koordinat titik

    rekod dan rekod

    Dapatkan senarai atribut

    rekod

    Dapatkan senarai atribut, ia adalah fungsi

    sf.records();

    Nilai yang dikembalikan ialah senarai

    rekod
    Dapatkan sekeping data

    sf.record(0 )
    Nilai yang dikembalikan ialah kelas

    shapeRecords

    Dapatkan rekod dan bentuk pada masa yang sama

    # 同时读取geometry and records
    sf.shapeRecords()
    获取所有
    red=sf.shapeRecords()[0]  #获取第一条数据
    print(red.record)  #获取record
    print(red.shape)   #获取shape
    Salin selepas log masuk

    medan

    Dapatkan atribut fail shp medan

    print(sf.fields)
    [('DeletionFlag', 'C', 1, 0), ['OBJECTID', 'N', 9, 0], ['BSM', 'C', 12, 0], ['PXZQDM', 'C', 2, 0], ['PXZQMC', 'C', 50, 0]]
    Salin selepas log masuk

    Tulis

    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()
    Salin selepas log masuk

    Atas ialah kandungan terperinci Bagaimana untuk menggunakan pyshp untuk membaca dan menulis fail shp dalam python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

    Label berkaitan:
    sumber:yisu.com
    Kenyataan Laman Web ini
    Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
    Tutorial Popular
    Lagi>
    Muat turun terkini
    Lagi>
    kesan web
    Kod sumber laman web
    Bahan laman web
    Templat hujung hadapan