Python 3.x 在python中更改多边形坐标的long、lat值

Python 3.x 在python中更改多边形坐标的long、lat值,python-3.x,pandas,numpy,shapefile,geopandas,Python 3.x,Pandas,Numpy,Shapefile,Geopandas,我有一个美国各州的基本形状文件,可以在这里找到 我想编辑夏威夷和阿拉斯加两个州的位置,我想改变夏威夷州的坐标,使其大致位于内华达州之下,我还想改变阿拉斯加州,使其更小。。而且它大概位于加利福尼亚州和亚利桑那州的下方,包括一张图片,这样就可以看到我的想法。。 如你所见,阿拉斯加和夏威夷位于美国大陆的左下角,就在前面提到的各州之下 我知道为了实现这一点,我需要使用地理坐标仪等更改这两个州的经度和纬度坐标 所以我从夏威夷州开始,开始使用numpy访问多边形坐标。 下面是到目前为止的代码片段 imp

我有一个美国各州的基本形状文件,可以在这里找到

我想编辑夏威夷和阿拉斯加两个州的位置,我想改变夏威夷州的坐标,使其大致位于内华达州之下,我还想改变阿拉斯加州,使其更小。。而且它大概位于加利福尼亚州和亚利桑那州的下方,包括一张图片,这样就可以看到我的想法。。

如你所见,阿拉斯加和夏威夷位于美国大陆的左下角,就在前面提到的各州之下

我知道为了实现这一点,我需要使用地理坐标仪等更改这两个州的经度和纬度坐标

所以我从夏威夷州开始,开始使用numpy访问多边形坐标。 下面是到目前为止的代码片段

import pandas as pd
import geopandas as gpd
from shapely.geometry import Point
import matplotlib.pyplot as plt
from shapely.geometry import Polygon
from shapely.geometry import Point, Polygon
import numpy as np

poly_States = gpd.read_file("states.shp")
hawaii = poly_States[poly_States.STATE_ABBR == "HI"]
coords = [i for i in hawaii.geometry]

all_Coords = []
for b in coords[0].boundary:
    coords = np.dstack(b.coords.xy).tolist()
    all_Coords.append(*coords)

for cord_1 in all_Coords:
    for cord2 in cord_1:
        cord2[0] = cord2[0] + 54.00000000000000
我的想法是以数组形式访问坐标,并通过添加54来更改纬度坐标,因此基本上将整个州向右移动,使其位于新墨西哥州下方

我的问题在于实际将这些更改返回到shapefile本身中的多边形对象。 我觉得可能有一种更简单的方法,可以通过访问多边形的属性或使用某种外部软件,但我相信,如果我能够正确地访问长纬度值并更改它们,我应该能够在我需要的位置和大小上进行更改

提前感谢。

您可以像这样使用和指定新几何体:

m = poly_States.STATE_ABBR == "HI"
poly_States[m] = poly_States[m].set_geometry(poly_States[m].translate(54))
结果:

与缩放和移动阿拉斯加的方式相同:

m = poly_States.STATE_ABBR == "AK"
poly_States[m] = poly_States[m].set_geometry(poly_States[m].scale(.2,.2,.2).translate(40, -40))

thx,这对我也有帮助。虽然我不明白为什么两者都需要:poly_States[m]=和set_几何体,但从语言学角度看,似乎只有一个是应该的necessary@RubeRad
m
是一个掩码,用于选择设置几何体的
poly_状态中的哪些行。所有其他行保持不变。