正确可视化俄罗斯地区

发布于 2025-01-12 17:16:45 字数 448 浏览 3 评论 0 原文

我应该制作俄罗斯的具体地图,但我坚持了第一步:我无法正确地想象整个区域。为此,我使用该代码:

import geopandas as gpd
import matplotlib.pyplot as plt
path = 'C:\\Users\\sashk\\Python_projects\\Data_map_based\\data\\RUS_adm2.shp'
Map = gpd.read_file(path)
print(Map.shape)
Map.plot()
plt.show()

所以我得到:

Russia

请,如果有人知道如何修复它,请帮助

数据结构: 坐标

I should make specific map of Russia but I stucked on first step: I can't visualize the whole area correctly. For this I use that code:

import geopandas as gpd
import matplotlib.pyplot as plt
path = 'C:\\Users\\sashk\\Python_projects\\Data_map_based\\data\\RUS_adm2.shp'
Map = gpd.read_file(path)
print(Map.shape)
Map.plot()
plt.show()

And so I get:

Russia

Please, if someone know how to fix it, help

Data structure:
coords

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

怪我入戏太深 2025-01-19 17:16:45

我找到了答案并且有效:

import matplotlib.pyplot as plt
import geopandas as gpd
from shapely.geometry import LineString
from shapely.ops import split
from shapely.affinity import translate
def shift_geom(shift, gdataframe, plotQ=False):
    shift -= 180
    moved_geom = []
    splitted_geom = []
    border = LineString([(shift,90),(shift,-90)])

    for row in gdataframe["geometry"]:
        splitted_geom.append(split(row, border))
    for element in splitted_geom:
        items = list(element)
        for item in items:
            minx, miny, maxx, maxy = item.bounds
            if minx >= shift:
                moved_geom.append(translate(item, xoff=-180-shift))
            else:
                moved_geom.append(translate(item, xoff=180-shift))

    # got `moved_geom` as the moved geometry            
    moved_geom_gdf = gpd.GeoDataFrame({"geometry": moved_geom})

    # can change crs here
    if plotQ:
        fig1, ax1 = plt.subplots(figsize=[8,6])
        moved_geom_gdf.plot(ax=ax1)
        plt.show()

    return moved_geom_gdf

path = 'C:\\Users\\sashk\\Python_projects\\Data_map_based\\data\\RUS_adm2.shp'
Map = gpd.read_file(path)

# shift geometry of Russia
new_rus = shift_geom(90, Map, False)
# restore the geometry to original geo-location
# ... geometry now in 1 piece
# ... option True --> make a plot
_ = shift_geom(-90, new_rus, True)

I've found the answer and it's works:

import matplotlib.pyplot as plt
import geopandas as gpd
from shapely.geometry import LineString
from shapely.ops import split
from shapely.affinity import translate
def shift_geom(shift, gdataframe, plotQ=False):
    shift -= 180
    moved_geom = []
    splitted_geom = []
    border = LineString([(shift,90),(shift,-90)])

    for row in gdataframe["geometry"]:
        splitted_geom.append(split(row, border))
    for element in splitted_geom:
        items = list(element)
        for item in items:
            minx, miny, maxx, maxy = item.bounds
            if minx >= shift:
                moved_geom.append(translate(item, xoff=-180-shift))
            else:
                moved_geom.append(translate(item, xoff=180-shift))

    # got `moved_geom` as the moved geometry            
    moved_geom_gdf = gpd.GeoDataFrame({"geometry": moved_geom})

    # can change crs here
    if plotQ:
        fig1, ax1 = plt.subplots(figsize=[8,6])
        moved_geom_gdf.plot(ax=ax1)
        plt.show()

    return moved_geom_gdf

path = 'C:\\Users\\sashk\\Python_projects\\Data_map_based\\data\\RUS_adm2.shp'
Map = gpd.read_file(path)

# shift geometry of Russia
new_rus = shift_geom(90, Map, False)
# restore the geometry to original geo-location
# ... geometry now in 1 piece
# ... option True --> make a plot
_ = shift_geom(-90, new_rus, True)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文