在pyspark代码中
pip install geopy
from geopy.geocoders import Nominatim
geolocator = Nominatim(user_agent = 'app')
import pandas as pd
from pyspark.sql.functions import col, udf
from pyspark.sql.types import StringType
def direccion_func(lat, lon):
dir = geolocator.reverse(lat, lon).address
return dir
direccion = udf(direccion_func, StringType())
paradasRuta1DF = paradasRuta1DF.withColumn('Direccion', direccion_func(F.col("Latitud"), F.col("Longitud")))
我得到错误-〉TypeError:reverse()接受2个位置参数,但给出了3个
我不明白,因为我有两个参数,纬度和经度
多谢帮忙
我也试过:
def direccion_func(coordenadas):
dir = geolocator.reverse(coordenadas)
return dir.address
direccion = pandas_udf(direccion_func, returnType = StringType())
paradasRuta1DF =
paradasRuta1DF.withColumn('Direccion',direccion_func(F.col("LatLong")))
并显示错误:TypeError:无法从列创建Point示例
2条答案
按热度按时间hsvhsicv1#
我认为你得到这个错误的原因是因为reverse函数应该把一个元组或者一个包含给定坐标的列表作为参数。
juzqafwq2#
对于userAgent“app”我不知道,但是对于userAgent“GetLoc”,lat和long在reverse()方法中位于同一字符串中,如下所示
这对我很有效,至少对“GetLoc”userAgent是这样