绘制基础图上的填充多边形抛出__getItem__错误



我正在努力学习使用基本python映射库中的地理空间数据,这是我第一次使用Shapely/Polygons/baseMap/等。

我有一组多边形,可以描述给定区域中的社区。如果我只想清楚地绘制它们,以下功能可以解决这个问题(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多个比萨店,则红色等)。为此,我像这样创建了一个colormap,配色栏等。

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"]不存在,并且应该是polygon.type;但是,这是在预制的库"笛卡尔"中,所以我对为什么会出现此错误感到困惑。我尝试在笛卡尔搜索此错误,但找不到任何潜在客户。所以我想我在做一些愚蠢的事情。有任何见解?

在记录中,我在经过大量反复试验后解决了这个问题。事实证明,进口订单很重要。在这种情况下,我是通过另一个导入(导入A;内部a。无论出于何种原因,笛卡尔都无法与导入的导入相互作用。因此,通过将进口刻薄地放在我的链条中,然后再进口任何其他进口,它可以起作用。

相关内容

  • 没有找到相关文章

最新更新