0

を使用して、5つのポイントで.shpを生成したいと思いshapefileます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ループのどこかにすべてのポイントを追加する必要があると思いますが、実際に追加する方法がわかりません。lis5つのポイントすべてを含む.shpファイルを取得するために効果的にループするにはどうすればよいですか?

4

1 に答える 1

0

保存ファイルに追加するには、いくつかの用語を再配置する必要がありました。作成する必要のある空の追加リストはありません。

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()
于 2012-11-15T21:59:46.220 に答える