2016-06-16 7 views
1

베이스 맵으로 일부 맵을 생성 한 후 열정이 생겼습니다. 셰이프 파일 정보를 통합하고 싶습니다. 다각형이라고합시다. 그러나 몇 가지 문제가 있습니다. 여기 바이에른 마을의 경계선을 다운로드 : 시각화하는베이스 맵 셰이프 파일

https://www.arcgis.com/home/item.html?id=b752861d1a08489b9a40337668d4367e

지금 내가위한 다각형을 통합의 말 레 겐스 부르크을 수 있도록합니다. 나는이 코드를 사용하여 정보를 가져올 수 있어요,하지만 난 몇 가지 문제

#!/usr/bin/env python 

from mpl_toolkits.basemap import Basemap 
import matplotlib.pyplot as plt 
import shapefile 

map = Basemap(projection='merc', 
       resolution='l', 
       area_thresh=0.01, 
       llcrnrlon=9.497681, llcrnrlat=47.827908, 
       urcrnrlon=12.683716, urcrnrlat=50.408517) 

map.drawcountries(color="gray") 
map.fillcontinents(color='#c8dfb0', lake_color='#53BEFD') 
map.drawmapboundary(color='black', linewidth=0.5, fill_color='#53BEFD') 

sf = shapefile.Reader("BY_Gemeinden/BY_Gemeinden_WM.shp") 
shapes = sf.shapes() 
records = sf.records() 
for record, shape in zip(records, shapes): 
    if record[3] == "Regensburg": 
     print(shape.shapeType) 
     lons, lates = zip(*shape.points) 
     print(record) 
     print(lons) 
     print(lates) 

plt.savefig("foo.eps") 

출력은 다음과 같습니다 있습니다

5 
[797, 'BY', '6001', 'Regensburg', 'Regensburg', 'Freistaat 
Bayern','Oberpfalz', '09362000', '6.42920556908e+004', 
'8.05927936478e+007'] 
1350746.04018 
6287601.12826 

내 질문 :

  1. 내가 lon[1],lon[1]을한다고 가정을 하숙인의 한 지점입니다. 분명히 훨씬 더 많습니다.
  2. 파일의 내용을 어떻게 찾을 수 있습니까? shapeType은 무엇입니까? records 안에있는 번호는 무엇입니까?
  3. 좌표가 "표준"WGS84에없는 것처럼 보입니까? 이게 뭐야?
  4. 다각형을 빠르게 그리는 방법이 있습니까?

고맙습니다.

답변

1

저는 최근 Basemap으로지도를 작성하는 블로그 게시물을 작성했으며 그 안에 shapefile을 사용하여 영국과 웨일즈의 우편 번호 지역을 그립니다. 도움이 될 수도 있습니다. http://www.jamalmoir.com/2016/06/creating-map-visualisations-in-python.html

기본적으로 셰이프 파일을 사용하여 PatchCollection을 만든 다음 PatchCollection을 색칠 할 수 있습니다. 그런 다음지도에 추가하고 Bob의 삼촌을 추가 할 수 있습니다.

이 예제에서는 새 집 개수를 사용하여 각 영역을 색칠하지만 원하는대로 할 수 있습니다.