我正在开发一个项目,需要将一组坐标转换为另一组坐标(从 CRS 229 到 CRS 3857),并且我有一个函数可以在您输入前一个坐标时起作用,但我想这样做我可以在整个列(有 X、Y 和 XY 列)上运行该函数。
这就是代码的样子
from pyproj import Proj, transform, CRS, Transformer
import pandas as pd
import geopandas as gpd
crs_2229 = CRS.from_epsg(2229)
crs_3857 = CRS.from_epsg(3857)
transformer = Transformer.from_crs(crs_2229, crs_3857)
data = {'X': [6481427.400, 6485873.280],
'Y': [1797333.200, 1796834.811],
'XY':[(6481427.400000006,1797333.200000003),(6485873.279835222,1796834.811359349)]}
df = pd.DataFrame(data)
现在如果我运行这个
transformer.transform(6481427.400000006,1797333.200000003)
它带有(-13165144.971136427, 4019524.5726486626)的正确转换。但我怎样才能让它更加自动化呢?
尝试了 lambda 函数,但它作为键值错误不断上升。 试图创建一个 for 循环,但这没有给我任何东西。 在网上搜索功能,但他们没有工作,现在使用谷歌colabs AI工具,它给了我相同的代码,我会尝试作为建议,但他们从来没有工作过。
您可以使用:
df['xy_t'] = transformer.transform(df['X'], df['Y'])
这给出了新的专栏:
0 [-13165144.971136427, -13163513.038053121]
1 [4019524.5726486607, 4019345.0283058006]