Python 错误 - 'str' 对象没有属性 '_geom'

问题描述

我正在使用 shapely 将包含在 CSV 中的经度和纬度转换为 WKB 格式。 对于上下文,CSV 使用 python AWS Lambda 代码进行解析。

被解析的文件格式如下:

姓名 评论 是/否 纬度 经度
测试_1 这是一个测试 56.872993679521244 -4.141840954280135
测试_2 这是一个测试 没有 55.20394960316738 -2.5378432182396935

然后我尝试通过调用经度/纬度列将这些转换为 WKB

g = ('Point(longitude,latitude)')
new = wkb.dumps(g,hex=True,srid=4326)
print (new)

但我收到错误 'str' object has no attribute '_geom'

我怎样才能克服这个问题? CSV 有 100 行,我不想单独转换每个 long/lat - 我只想调用两列,它会为每个点生成 WKB。

解决方法

您需要将列值传递给 Point 函数,如下所示-

def calculate_wkb(lon,lat):
    g = Point(lon,lat)
    new = wkb.dumps(g,hex=True,srid=4326)
    return new

df['wkb'] = df.apply(lambda x: calculate_wkb(x.Longitude,x.Latitude),axis=1)
,

在转换为wkb之前必须先将点定义转换为wkt,另外坐标必须用空格分隔,而不是冒号。

from shapely import wkb
from shapely import wkt

g = wkt.loads('Point(-4.141840954280135 56.872993679521244)')
new = wkb.dumps(g,srid=4326)
print (new)