Comment utiliser pyshp pour lire et écrire des fichiers shp en python

王林
Libérer: 2023-04-26 13:04:21
avant
1897 Les gens l'ont consulté

    Installer

    pip install pyshp
    Copier après la connexion

    Introduire

    import shapefile
    Copier après la connexion

    Read

    sf=shapefile.Reader("{pathname}",encoding='utf-8') # Lire uniquement

    shapes et shape

    shapes =sf. shape() La valeur de retour est une liste contenant tous les objets "données géométriques" dans le fichier

    shape=sf.shape(0) Shape est le premier objet "données géométriques"

    shapeType renvoie le type de collection

    Renvoie l'attribut de type de données du premier objet

        几何类型
        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)
    Copier après la connexion

    bbox Renvoie la plage de données

    shape.bbox Renvoie la plage de données du premier objet de collection (coordonnées x, y du coin inférieur gauche et coordonnées x, y du coordonnées du coin supérieur droit)

    points Tous les points de coordonnées

    shape.points Renvoie tous les points de coordonnées du premier objet de collection

    parts Renvoie les coordonnées du premier point du ’bloc’ Renvoie le premier Les coordonnées du premier point de chaque "bloc" d'un objet

    records et record

    obtenir la liste d'attributs

    records

    obtenir la liste d'attributs, c'est une fonction

    sf.records ();

    return La valeur est une liste

    record

    Obtenir une donnée

    sf.record(0)
    La valeur renvoyée est class

    shapeRecords

    Obtenir l'enregistrement et la forme en même temps

    # 同时读取geometry and records
    sf.shapeRecords()
    获取所有
    red=sf.shapeRecords()[0]  #获取第一条数据
    print(red.record)  #获取record
    print(red.shape)   #获取shape
    Copier après la connexion

    fields

    Obtenir les champs d'attributs du fichier shp

    print(sf.fields)
    [('DeletionFlag', 'C', 1, 0), ['OBJECTID', 'N', 9, 0], ['BSM', 'C', 12, 0], ['PXZQDM', 'C', 2, 0], ['PXZQMC', 'C', 50, 0]]
    Copier après la connexion

    Write Enter

    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()
    Copier après la connexion

    Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

    Étiquettes associées:
    source:yisu.com
    Déclaration de ce site Web
    Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
    Tutoriels populaires
    Plus>
    Derniers téléchargements
    Plus>
    effets Web
    Code source du site Web
    Matériel du site Web
    Modèle frontal