是否可以在 x 轴(经度)上移动 geopandas 世界地图?

2023-12-08

我想知道是否有一种方法可以将 geopandas 世界地图集中在特定的经度点上。基本上,只是想将其移动约 5-10 度左右。

上一个问题是几个月前发布的,但没有收到答案。想知道是否有人知道解决方案。 (stackoverflow 上原始问题的链接是here)

world = geopandas.read_file(geopandas.datasets.get_path('naturalearth_lowres'))
fig, ax = plt.subplots()
world.plot(ax=ax, color=(0.8,0.5,0.5))

如果有人可以提供帮助,我将非常感激。

提前致谢


我找到了如何做到这一点:

from shapely.geometry import LineString
from shapely.ops import split
from shapely.affinity import translate
import geopandas

world = geopandas.read_file(geopandas.datasets.get_path('naturalearth_lowres'))

def shift_map(shift):
    shift -= 180
    moved_map = []
    splitted_map = []
    border = LineString([(shift,90),(shift,-90)])
    for row in world["geometry"]:
        splitted_map.append(split(row, border))
    for element in splitted_map:
        items = list(element)
        for item in items:
            minx, miny, maxx, maxy = item.bounds
            if minx >= shift:
                moved_map.append(translate(item, xoff=-180-shift))
            else:
                moved_map.append(translate(item, xoff=180-shift))
    gdf = geopandas.GeoDataFrame({"geometry":moved_map})
    fig, ax = plt.subplots()
    gdf.plot(ax=ax)
    plt.show()
   

第一步,您创建您的世界并将其分割在您预先定义的边界上。 然后,您获取所有元素的边界并检查边界是否与您所需的移位相匹配。然后,将每个大于边界的元素平移到地图的左侧,并将所有其他元素移动到右侧,以便它们对齐 +180°。

This gives you for example: Shifted map by 120°

移动 120° 的地图

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

是否可以在 x 轴(经度)上移动 geopandas 世界地图? 的相关文章

随机推荐