gpt4 book ai didi

geopandas - 如何通过坐标限制 geopandas 图?

转载 作者:行者123 更新时间:2023-12-05 01:14:39 28 4
gpt4 key购买 nike

我使用来自 OpenStreetMap (link) 的形状文件创建了一个简单的 geopandas map 。

import geopandas as gpd

map_gdf = gpd.read_file('path_to_shapefile')
map_gdf.plot()

Out:

Map of Berlin

如何将绘图限制在图像的某个部分,基本上是放大某个位置。我可以通过指定我想以纬度和经度绘制的 map 部分的范围来做到这一点吗?

最佳答案

geopandas.GeoDataFrame.plot() 方法返回一个 Matplotlib Axes 对象。换句话说,您可以简单地将返回的 map 分配给 Axes 对象,然后使用 set_xlimset_ylim控制绑定(bind)值。

例如,让我们使用来自 geopandas 的示例数据集

import geopandas as gpd
import matplotlib.pyplot as plt

# read sample dataset
data = gpd.datasets.get_path('naturalearth_lowres')
gdf = gpd.read_file(data)

# create an Axes object and plot the map
fig, ax = plt.subplots(figsize=(10, 10))
gdf.plot(ax=ax)

返回的默认 map 如下所示:

enter image description here

您可以使用 set_xlimset_ylim 来更改边界。

# create an Axes object and plot the map
fig, ax = plt.subplots(figsize=(10, 10))
gdf.plot(ax=ax)

ax.set_xlim(0, 100)
ax.set_ylim(-50, 50)

这将产生以下 map

enter image description here


如果你想动态改变边界,GeoDataFrame 中的每个几何对象都有一个 total_bounds属性。假设您想专注于澳大利亚,

# create an Axes object and plot the map
fig, ax = plt.subplots(figsize=(10, 10))
gdf.plot(ax=ax)

xmin, ymin, xmax, ymax = gdf[gdf.name == 'Australia'].total_bounds
pad = 5 # add a padding around the geometry
ax.set_xlim(xmin-pad, xmax+pad)
ax.set_ylim(ymin-pad, ymax+pad)

这会得到你

enter image description here

关于geopandas - 如何通过坐标限制 geopandas 图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58014498/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com