기본 파이썬 매핑 라이브러리에서 지형 공간 데이터를 사용하여 길을 터득하고 있습니다. Shapely/Polygons/Basemap/등으로 작업 한 것은 이번이 처음입니다.베이스 맵에 채워진 다각형을 그리면 __getitem__ 오류가 발생합니다.
주어진 영역의 주변을 설명하는 다각형 세트가 있습니다. 난 그냥 보통으로 그들을 잡아하려면, 아래의 기능은 (hood_map이 지역의 수집 및 관련 다각형입니다 내지도 그냥베이스 맵 객체 인) 트릭을 수행합니다
이def drawNeighborhoods(mymap,hood_map):
for hood in hood_map.neighborhoods:
lon,lat = hood.polygon.exterior.coords.xy
x,y = mymap(lon,lat)
mymap.plot(x,y,'-k',color='lightgrey')
이 잘 작동이 나는 윤곽을 얻을 지도상의 각 지역의 그러나 이제 각 이웃에 대한 외부 데이터 (예 : 피자 가게가 없으면 흰색, 100+ 피자 가게가 있으면 빨간색)를 기반으로 이웃을 음영 처리하고 싶습니다. 이렇게하기 위해, 나는 colormap, colorbar 등을 만든다. 그런 다음
cmap = cm.get_cmap('Reds')
norm = Normalize(vmin=0, vmax=max(number_of_pizza_joints))
cb = ColorbarBase(ax, cmap=cmap, norm=norm)
I이 (이 예 https://gist.github.com/urschrei/6436526 기반으로) 않습니다 여기
def drawNeighborhoods(mymap,hood_map):
patches = []
for hood in hood_map.neighborhoods:
color = cmap(norm(hood.number_of_pizza_joints))
lon,lat = hood.polygon.exterior.coords.xy
x,y = mymap(lon,lat)
poly = Polygon(zip(x,y))
patches.append(PolygonPatch(poly,fc=color, ec='#555555', alpha=0.5, zorder=4))
ax.add_collection(PatchCollection(patches, match_original=True))
, 나는 오류 얻을 :
Traceback (most recent call last):
File "colorHoodsByPizza.py", line 103, in <module>
drawNeighborhoods(mymap,hood_map)
File "colorHoodsByPizza.py", line 52, in drawNeighborhoods
patches.append(PolygonPatch(poly,fc='#cc00cc', ec='#555555', alpha=0.5, zorder=4))
File "/Users/zach/anaconda2/lib/python2.7/site-packages/descartes/patch.py", line 87, in PolygonPatch
return PathPatch(PolygonPath(polygon), **kwargs)
File "/Users/zach/anaconda2/lib/python2.7/site-packages/descartes/patch.py", line 53, in PolygonPath
ptype = polygon["type"]
TypeError: 'Polygon' object has no attribute '__getitem__'
내 생각 엔이를 그 의 getItem polygon [ "type"]이 존재하지 않으며 polygon.type이어야하기 때문에 오류가 발생할 가능성이 높습니다. 그러나 이것은 미리 만들어진 라이브러리 'descartes'에 있습니다. 그래서이 오류가 왜 발생하는지 혼란 스럽습니다. 내가 descartes에서 발생하는이 오류에 대한 주위를 검색 해봤지만, 어떤 단서를 찾을 수 없습니다; 그래서 나는 바보 같은 짓을하고 있다고 가정합니다. 어떤 통찰력?
이 기능에 대해 다른 전화가 : '# 패치 패치 geo_interface__ .__ = 다각형 지역에 # 1에서 다각형의 GeoJSON 틱 딕셔너리 형태 우회전 = PolygonPatch (지역, facecolor = '#cccccc', edgecolor = '# 999999') ax.add_patch (패치) ' –
그의 예를 확인하십시오. 전화는 약간 다릅니다. 저자가 주어진 입력을 기대하는지 모르겠다 –
안녕하세요 @PiotrKamoda, 입력에 감사드립니다. GeoJSON 객체의 경우에도 마찬가지지만 shapely/matplotlib 폴리곤의 경우 호출은이 변환 없이도 충분합니다. 여기에있는 예를 참조하십시오. https://bitbucket.org/sgillies/descartes/src/4333a49e7339eeeb277c8fa7346b175597a8951c/examples/patches.py?at=default&fileviewer=file-view-default – Zach