-3

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

被解析的文件格式如下:

姓名 注释 是/否 纬度 经度
测试_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。

4

2 回答 2

0

您需要传递列值才能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)
于 2021-06-18T17:46:16.767 回答
0

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

from shapely import wkb
from shapely import wkt

g = wkt.loads('Point(-4.141840954280135 56.872993679521244)')
new = wkb.dumps(g, hex=True, srid=4326)
print (new)
于 2021-06-18T17:57:27.037 回答