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

the*_*nd0 3 python matplotlib geopandas

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

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

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))
Run Code Online (Sandbox Code Playgroud)

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

提前致谢

小智 5

我发现如何做到这一点:

\n
from shapely.geometry import LineString\nfrom shapely.ops import split\nfrom shapely.affinity import translate\nimport geopandas\n\nworld = geopandas.read_file(geopandas.datasets.get_path(\'naturalearth_lowres\'))\n\ndef shift_map(shift):\n    shift -= 180\n    moved_map = []\n    splitted_map = []\n    border = LineString([(shift,90),(shift,-90)])\n    for row in world["geometry"]:\n        splitted_map.append(split(row, border))\n    for element in splitted_map:\n        items = list(element)\n        for item in items:\n            minx, miny, maxx, maxy = item.bounds\n            if minx >= shift:\n                moved_map.append(translate(item, xoff=-180-shift))\n            else:\n                moved_map.append(translate(item, xoff=180-shift))\n    gdf = geopandas.GeoDataFrame({"geometry":moved_map})\n    fig, ax = plt.subplots()\n    gdf.plot(ax=ax)\n    plt.show()\n   \n
Run Code Online (Sandbox Code Playgroud)\n

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

\n

例如,这给你:\n将地图移动 120\xc2\xb0

\n

移动了 120\xc2\xb0 的地图

\n

  • 顺便说一句,忘了说谢谢!这是一个很棒的答案,并提供了我需要的确切细节! (2认同)