私は基本的なPythonマッピングライブラリで地理空間データを使用する方法を学んでいます。これはShapely/Polygons/Basemap /などで初めての作業です。ベースマップ上に塗りつぶしたポリゴンを描く__getitem__エラー
私は、ある領域内の近隣を表すポリゴンのセットを持っています。私ははっきりそれらを描きたい場合は、以下の機能がトリック(mymapというだけのベースマップオブジェクトである、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以上のピッツェリアがある場合は赤など)。これを行うために、私はカラーマップ、カラーバーなどを作成します。その後
cmap = cm.get_cmap('Reds')
norm = Normalize(vmin=0, vmax=max(number_of_pizza_joints))
cb = ColorbarBase(ax, cmap=cmap, norm=norm)
私はこれ(この例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ポリゴン["type"]は存在しないため、ポリゴン型である必要があります。しかし、これは既成の図書館「descartes」にあるので、なぜこのエラーが出てくるのか混乱しています。私はdescartesで発生するこのエラーの周りを検索しようとしましたが、任意のリードを見つけることができません。だから私は何か愚かなことをやっていると思う。どんな洞察?
この機能のために異なる呼び出しがある: '#パッチ GEO =ポリゴンに#1からポリゴンのにGeoJSONっぽい辞書形を回し.__ geo_interface__ パッチ= PolygonPatch(GEO、のFaceColor = '#cccccc'、edgecolor = '#999999') ax.add_patch(patch) ' –
彼の例を確認してください。呼び出しは少し異なります。私は著者が入力を受け取ったかどうかわからない –
こんにちは@PiotrKamoda、ありがとう入力します。これはGeoJSONオブジェクトに当てはまりますが、shapely/matplotlibポリゴンの場合、この変換を行わないと呼び出しで十分でなければなりません。以下の例をご覧ください:https://bitbucket.org/sgillies/descartes/src/4333a49e7339eeeb277c8fa7346b175597a8951c/examples/patches.py?at=default&fileviewer=file-view-default – Zach