问题描述
我正在使用 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)