【问题标题】:Contextily, how to get max zoom allowable and set map extents accordingly根据上下文,如何获得允许的最大缩放并相应地设置地图范围
【发布时间】:2021-01-16 19:26:02
【问题描述】:

使用 Python 3.8、GeoPandas 和 Contextily,我在不同区域以不同的缩放级别绘制了许多地图(循环遍历 GeoDataFrame 中的点列表)。不同的缩放级别适用于不同的全局区域。

将缩放设置为允许的最大值,捕捉我正在绘制的点的最佳方法是什么?在下面的代码中,我不知道如何:

  1. 返回允许的最大缩放(我在第二个图中只使用了 13,因为那是错误消息)
  2. 更改第二个地块的范围——第二个地块的范围与第一个相同;我原以为更改缩放级别会改变范围

我认为我已经正确设置了 EPSG,这是类似问题 here 的答案的要点。

代码:

import pandas as pd
import geopandas as gpd
%matplotlib inline 
import matplotlib.pyplot as plt
import contextily as ctx
from shapely.geometry import Point
plt.style.use('seaborn-whitegrid')

long, lat = [(-118.02, -118.051, -118.04), (39.499, 39.512, 39.501)]
df = pd.DataFrame(list(zip(lat, long)), columns =['lat', 'long'])
gdf = gpd.GeoDataFrame(df, geometry=gpd.points_from_xy(df['long'], df['lat']))
gdf.crs = "EPSG:4326"

fig = plt.figure(figsize=(10,7.5), constrained_layout=True)
gs = fig.add_gridspec(1, 2)
ax1 = fig.add_subplot(gs[0, 0])
ax2 = fig.add_subplot(gs[0, 1])

gdf.plot(ax = ax1)
ctx.add_basemap(ax1, crs='epsg:4326', source=ctx.providers.Esri.WorldShadedRelief)
ax1.tick_params('x', labelrotation=90)
ax1.set_aspect('equal')
ax1.set_title('Auto-Zoom')

gdf.plot(ax = ax2)
ctx.add_basemap(ax2, crs='epsg:4326', source=ctx.providers.Esri.WorldShadedRelief, zoom = 13)
ax2.tick_params('x', labelrotation=90)
ax2.set_aspect('equal')
ax2.set_title('Defined Zoom')

【问题讨论】:

  • 将选项 reset_extent=False 添加到 ctx.add_basemap(ax2, ... ) 并再次运行。
  • 成功了,谢谢。你知道如何提取消息框中的缩放范围吗?它并不总是“13”,它会有所不同

标签: zooming geopandas contextily


【解决方案1】:

正如提问者所确认的那样。将选项reset_extent=False 添加到ctx.add_basemap(ax2, ... ) 将解决在ax2 上绘图的问题。

用于在实际使用之前检查可能的缩放值。使用这个

# Test if zoom: 28 is valid or not?
retval = ctx.tile._validate_zoom(28, ctx.providers.Esri.WorldShadedRelief, auto=True)

返回值,这里retval代表一个有效的缩放值(小于或等于校验值)。在这种情况下,28 用于检查,但返回 13。因此,13 表示该特定底图切片图像的最大有效缩放。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-10
    • 1970-01-01
    相关资源
    最近更新 更多