首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在上下文中,如何获得最大允许缩放并相应地设置地图范围

在上下文中,如何获得最大允许缩放并相应地设置地图范围
EN

Stack Overflow用户
提问于 2021-01-16 19:26:02
回答 1查看 756关注 0票数 1

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

什么是最好的方式将缩放设置为最大允许,捕捉点,我正在策划?在下面的代码中,我不知道如何:

我刚刚在第二个绘图中使用了13,因为这是错误的,message)

  • Change在第二个图中的范围--第二个图的范围与第一个图相同;我原以为改变缩放级别会改变范围

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

代码:

代码语言:javascript
复制
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')

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-17 03:57:02

这是被追问者证实的。将选项reset_extent=False添加到ctx.add_basemap(ax2, ... )中将解决在ax2上绘图的问题。

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

代码语言:javascript
复制
# Test if zoom: 28 is valid or not?
retval = ctx.tile._validate_zoom(28, ctx.providers.Esri.WorldShadedRelief, auto=True)

值返回,这里retval表示一个有效的缩放值(小于或等于检查值)。在本例中,28用于检查,但返回13。因此,13表示特定基地图瓷砖图像的最大有效缩放。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65753760

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档