Python 从爱尔兰横轴墨卡托(ITM)投影到WGS84经纬度

Python 从爱尔兰横轴墨卡托(ITM)投影到WGS84经纬度,python,geopandas,pyproj,Python,Geopandas,Pyproj,不幸的是,我从爱尔兰横轴墨卡托(ITM)到WGS84纬度经度的投影似乎出现了错误,因为绘制的坐标与都柏林地图不一致(见下文) 转换后的数据来源于,ITM X&Y坐标被输入一个从a改编的函数中,该函数使用geopandas的内置points\u from_xy方法在坐标参考系之间转换坐标: def create_geodf_from_GPS (df, latitude, longitude, crs): locations = gpd.points_from_xy(longitude,

不幸的是,我从爱尔兰横轴墨卡托(ITM)到WGS84纬度经度的投影似乎出现了错误,因为绘制的坐标与都柏林地图不一致(见下文)

转换后的数据来源于,ITM X&Y坐标被输入一个从a改编的函数中,该函数使用geopandas的内置points\u from_xy方法在坐标参考系之间转换坐标:

def create_geodf_from_GPS (df, latitude, longitude, crs):

    locations = gpd.points_from_xy(longitude, latitude)
    geo_df = gpd.GeoDataFrame(df, geometry=locations)
    geo_df.crs = crs

    return geo_df


VO_geo = create_geodf_from_GPS(VO, VO[" X ITM"], VO[" Y ITM"], crs = 'epsg:2157')
VO_geo = VO_geo.to_crs('epsg:4326')

有人知道这里可能出了什么问题吗?

非常简单的修复方法,感谢@joris

使用x&y作为gpd.points_的参数,而不是以前混淆的经度和纬度,修改了函数:

def create_geodf_from_GPS (df, x, y, crs):

   locations = gpd.points_from_xy(x, y)
   geo_df = gpd.GeoDataFrame(df, geometry=locations)
   geo_df.crs = crs

return geo_df
现在,在WGS84经纬度中绘制数据的工作原理与预期一致:

VO_geo = create_geodf_from_GPS(VO, x=VO[" X ITM"], y=VO[" Y ITM"], crs = 'epsg:2157')
VO_geo.to_crs('epsg:4326').plot()
注意:必须使用geopandas(gpd)空间连接功能过滤掉非都柏林数据,以清除明显的异常值

VO_geo_clean = gpd.sjoin(VO_geo.to_crs('epsg:4326'), map_of_Dublin)
结果:

您切换了纬度和经度:该函数首先获取纬度,但您首先传递X,这真是难以置信!这就是诀窍!谢谢@joris(不幸的是,我的SO声誉太低,无法支持你的评论)