【问题标题】:Projecting from Irish Transverse Mercator (ITM) to WGS84 latitude-longitude从爱尔兰横轴墨卡托 (ITM) 投影到 WGS84 经纬度
【发布时间】:2023-03-30 23:19:02
【问题描述】:

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

My transformed coordinates plotted on a map of Dublin

转换后的数据来自Irish Valuation Office,ITM X 和 Y 坐标被输入到一个改编自 previous stackoverflow discussion 的函数中,该函数使用 geopandas 的内置 points_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')

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

【问题讨论】:

  • 你切换了经纬度:函数先取纬度,但你先传X
  • 难以置信!这样就行了!谢谢@joris
  • (很遗憾,我的 SO 声誉太低,无法支持您的评论)

标签: python geopandas pyproj


【解决方案1】:

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

使用 x 和 y 作为 gpd.points_from_xy 的参数的更改函数,而不是之前混合的经度和纬度:

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)

结果: VO data plotted over a map of Dublin

【讨论】:

    猜你喜欢
    • 2022-08-15
    • 2023-04-06
    • 1970-01-01
    • 2012-07-04
    • 2012-12-29
    • 2021-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多