GeoViews:使用 matplotlib 后端添加瓦片底图
GeoViews: adding a tile basemap using matplotlib backend
使用 matplotlib
后端,是否可以将诸如 OSM 的图块底图添加到 GeoViews
图,例如通过某种方式调用 contextily
?使用 Bokeh
后端,这是通过 gv.tile_sources
完成的,然后将其添加到叠加层,但是 mpl
后端是否有类似的功能?
Post-答案编辑
添加一个可重现的例子,假设一个人在后端之间切换,并在 EPSG:4326.
中使用邻域级多边形 gdfs
最初让我认为添加底图是不可能的是 (1) 没有定义 WMTS 缩放级别(导致绘制无法辨认的像素化文本而不是要素),并且在阅读 James 的回答后,(2)最后而不是首先将 tiles 层添加到布局中,这导致 tiles 覆盖多边形层(在 bokeh 后端不是问题,但对于 matplotlib 显然它确实很重要)。
import geoviews as gv
from geoviews import opts
from cartopy import crs as ccrs
gv.extension('bokeh', 'matplotlib')
tiles = gv.tile_sources.OSM()
layout = tiles * gv.Polygons(gdf1, group="group1") * gv.Polygons(gdf2, group="group2")
layout.opts(
opts.Polygons('group1', cmap=['red'], backend="matplotlib"),
opts.Polygons('group2', cmap=['lightgrey'], backend="matplotlib"),
opts.Overlay(backend='matplotlib'),
opts.WMTS(zoom=13, backend='matplotlib'),
projection=ccrs.Mercator()
)
gv.output(layout, size=500, fig='svg', backend='matplotlib')
import geoviews as gv
from geoviews import opts, tile_sources as gvts
gv.extension('matplotlib')
opts.defaults(
opts.Layout(sublabel_format='', vspace=0.1, hspace=0.1, fig_size=200),
opts.WMTS(zoom=0))
(gvts.Wikipedia + gvts.StamenToner + gvts.EsriNatGeo + gvts.EsriImagery +
gvts.EsriUSATopo + gvts.EsriTerrain + gvts.EsriReference + gvts.StamenTerrain).cols(4)
使用 matplotlib
后端,是否可以将诸如 OSM 的图块底图添加到 GeoViews
图,例如通过某种方式调用 contextily
?使用 Bokeh
后端,这是通过 gv.tile_sources
完成的,然后将其添加到叠加层,但是 mpl
后端是否有类似的功能?
Post-答案编辑
添加一个可重现的例子,假设一个人在后端之间切换,并在 EPSG:4326.
中使用邻域级多边形 gdfs最初让我认为添加底图是不可能的是 (1) 没有定义 WMTS 缩放级别(导致绘制无法辨认的像素化文本而不是要素),并且在阅读 James 的回答后,(2)最后而不是首先将 tiles 层添加到布局中,这导致 tiles 覆盖多边形层(在 bokeh 后端不是问题,但对于 matplotlib 显然它确实很重要)。
import geoviews as gv
from geoviews import opts
from cartopy import crs as ccrs
gv.extension('bokeh', 'matplotlib')
tiles = gv.tile_sources.OSM()
layout = tiles * gv.Polygons(gdf1, group="group1") * gv.Polygons(gdf2, group="group2")
layout.opts(
opts.Polygons('group1', cmap=['red'], backend="matplotlib"),
opts.Polygons('group2', cmap=['lightgrey'], backend="matplotlib"),
opts.Overlay(backend='matplotlib'),
opts.WMTS(zoom=13, backend='matplotlib'),
projection=ccrs.Mercator()
)
gv.output(layout, size=500, fig='svg', backend='matplotlib')
import geoviews as gv
from geoviews import opts, tile_sources as gvts
gv.extension('matplotlib')
opts.defaults(
opts.Layout(sublabel_format='', vspace=0.1, hspace=0.1, fig_size=200),
opts.WMTS(zoom=0))
(gvts.Wikipedia + gvts.StamenToner + gvts.EsriNatGeo + gvts.EsriImagery +
gvts.EsriUSATopo + gvts.EsriTerrain + gvts.EsriReference + gvts.StamenTerrain).cols(4)