2012-11-15 2 views
0

shapefile을 사용하여 5 개의 포인트가있는 .shp을 pyshp에서 생성하고 싶습니다. 그러나 내 목록을 반복 할 때 마지막 값만 얻습니다. 이것은 내가 빈 목록에 점 하나를 추가하지 않았다 같은 의미 (예를 들어 new_shp = [])포인트 값을 pyshp로 추가 할 수 있습니까

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() 

내가 루프의 어딘가에서 모든 포인트를 추가해야한다는 assumming하고를 만들지 만, 이해가 안 돼요 실제로 그것을 추가하는 방법. lis을 통해 얼마나 효과적으로 루프를 실행하여 5 가지 포인트가 모두 포함 된 .shp 파일을 얻습니까?

답변

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() 
관련 문제