[英]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.