【问题标题】:input must be an array, list, tuple or scalar pyproj输入必须是数组、列表、元组或标量 pyproj
【发布时间】:2021-04-18 08:55:06
【问题描述】:

我有一个 DF,我正在尝试将东/北转换为长/纬度。我的 df 看起来像这样:

import pandas as pd
import numpy as np
import pyproj

    Postcode    Eastings    Northings
0   AB101AB     394235      806529
1   AB101AF     394181      806429
2   AB101AG     394230      806469
3   AB101AH     394371      806359
4   AB101AL     394296      806581

我正在使用众所周知的代码块将东向和北向转换为 long/lats,并将这些 long/lats 作为新列添加到 df:

def proj_transform(df):
    bng = pyproj.Proj("+init=EPSG:27700")
    wgs84 = pyproj.Proj("+init=EPSG:4326")
    lats = pd.Series()
    lons = pd.Series()
    for idx, val in enumerate(df['Eastings']):
        lon, lat = pyproj.transform(bng, wgs84, df['Eastings'][idx], df['Northings'][idx])
        lats.set_value(idx, lat)
        lons.set_value(idx, lon)
    df['lat'] = lats
    df['lon'] = lons
    return df

df_transform = proj_transform(my_df)

但是,我不断收到以下错误,“输入必须是数组、列表、元组或标量”。有没有人知道我在哪里出错了?

【问题讨论】:

    标签: pandas numpy geopandas pyproj


    【解决方案1】:

    这是最快的方法:

    https://gis.stackexchange.com/a/334307/144357

    from pyproj import Transformer
    
    trans = Transformer.from_crs(
        "EPSG:27700",
        "EPSG:4326",
        always_xy=True,
    )
    xx, yy = trans.transform(my_df["Eastings"].values, my_df["Northings"].values)
    my_df["X"] = xx
    my_df["Y"] = yy
    

    也有助于参考:

    【讨论】:

      【解决方案2】:

      您可以将DataFrame.applyaxis=1 一起使用,并更改如下功能:

      def proj_transform(x):
          e = x['Eastings']
          n = x['Northings']
          bng = pyproj.Proj("+init=EPSG:27700")
          wgs84 = pyproj.Proj("+init=EPSG:4326")
          lon, lat = pyproj.transform(bng, wgs84, e, n)
      
          return pd.Series([lon, lat])
      
      my_df[['lat','lon']] = my_df.apply(proj_transform, axis=1)
      

      【讨论】:

        猜你喜欢
        • 2021-11-14
        • 1970-01-01
        • 2019-08-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-06-14
        • 2014-08-07
        • 2021-12-21
        相关资源
        最近更新 更多