在哪里使用pyshp附加点值

2024-04-27 08:11:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我想用shapefile生成一个有五个点的.shp,可通过pyshp获得。但是,当我循环查看列表时,我只得到最后一个值。这是有意义的,因为我没有将任何点附加到空列表(例如new_shp = []

import shapefile as sf
import os

filename2 = 'test/point10'
lis = [(33.21, -122.15, 'france'), (35.31, -122.15, 'germany'), (35.41, -123.15, 'Hawaii'), (30.51, -122.15, 'Philippines'),(32.30, -122.15, 'Texas')]
for l in lis:
    w = sf.Writer(sf.POINT)
    w.point(l[0], l[1])
    w.field('location')
    w.record(l[2], 'Point')
    w.save(filename2)

# create the PRJ file
prj = open("%s.prj" % filename2, "w")
epsg = 'GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["degree",0.0174532925199433]]'
prj.write(epsg)
prj.close()

我假设我必须在for循环中的某个地方追加所有的点,但我不知道如何真正地追加它。如何有效地遍历lis以获得包含所有五个点的.shp文件?在


Tags: import列表newforassfepsg意义
1条回答
网友
1楼 · 发布于 2024-04-27 08:11:08

为了附加到保存文件中,我只需重新排列一些术语。没有需要生成的空追加列表。在

import shapefile as sf
import os

filename2 = 'test/point16'

lis = [(33.21, -122.15, 'france'), (35.31, -122.15, 'germany'), (35.41, -123.15, 'Hawaii'), (30.51, -122.15, 'Philippines'),(32.30, -122.15, 'Texas')]

w = sf.Writer(sf.POINT)
w.field('location')

for l in lis:
    w.point(l[0], l[1])
    w.record(l[2], 'Point')
w.save(filename2)

# create the PRJ file
prj = open("%s.prj" % filename2, "w")
epsg = 'GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["degree",0.0174532925199433]]'
prj.write(epsg)
prj.close()

相关问题 更多 >