繁体   English   中英

Geopandas 每行不同的 crs?

[英]Geopandas each row different crs?

我有不同的形状文件,其中包含不同坐标系上的多边形。 当我将它们合并到 GeoDataFrame 中时,未设置 crs 属性。 这是一种为我的 GeoDataFrame 中的每一行设置不同的 crs 的方法吗?

我找到了一个 postgis 方式 SRID=312;POINTM(-126.4 45.32 15) 但我不确定它是否适用于 GeoPandas

GeoPandas 不支持不同行的不同 CRS。 GeoDataFrame 的几何列只能有一个 CRS。

如果您可以将每一行的 CRS 引用为一列,那么以下内容将完成这项工作。

不过,您必须选择一个通用的 CRS,因为正如另一个答案中所述,每个几何列只允许一个 CRS:

def to_crs_from_crs_col(df, crs_col, target_crs, group_keys=True):
    return df.groupby(crs_col, sort=False, group_keys=group_keys).apply(
        lambda df: df.set_crs(df[crs_col].iloc[0])
        .to_crs(target_crs)
        .drop(crs_col, axis=1)
    )

另一种使用 for 循环而不是apply编写它的方法,但它不允许使用group_keys

def to_crs_from_crs_col(df, crs_col, target_crs):
    return pd.concat(
        [
            df_.set_crs(crs).to_crs(target_crs).drop(crs_col, axis=1)
            for crs, df_ in df.groupby(crs_col, sort=False)
        ],
    ).sort_index()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM