我想在多边形(代表地理区域)内生成一个六边形网格,在那里我可以选择每个六边形的颜色。
我做了什么:
这是我想要的网格!
现在我必须将其导出为shapefile,但是我找不到从绘图中获取shapefile的方法?
python代码:
df = gpd.read_file("points.geojson")[['geometry']].to_crs(epsg=3857)
def get_coords(geom, i):
if type(geom) == MultiPoint:
geom = Point(geom[0])
coords = geom.x, geom.y
return coords[i]
df['X'] = df.apply((lambda x: get_coords(x.geometry, 0)), axis=1)
df['Y'] = df.apply((lambda x: get_coords(x.geometry, 1)), axis=1)
def add_basemap(ax, zoom, url='http://tile.stamen.com/terrain/tileZ/tileX/tileY.png'):
xmin, xmax, ymin, ymax = ax.axis()
basemap, extent = ctx.bounds2img(xmin, ymin, xmax, ymax, zoom=zoom, url=url)
ax.imshow(basemap, extent=extent, interpolation='bilinear')
# restore original x/y limits
ax.axis((xmin, xmax, ymin, ymax))
f, ax = plt.subplots(1, figsize=(15, 15))
hexbin = ax.hexbin(df.X, df.Y, gridsize=30, alpha=0.5, cmap='RdYlGn', mincnt=1)
add_basemap(ax, zoom=15)
plt.colorbar(hexbin)
plt.axis('off')
plt.show()
以及生成的地图:
或者,如果您有一种更好的方法绘制这种地图而不必创建很多点,那也很好。