【问题标题】:ValueError: Must be a coordinate pair or PointValueError:必须是坐标对或点
【发布时间】:2019-09-03 10:42:26
【问题描述】:

我想将我的纬度和经度值传递给我的烧瓶路线,但每次我收到此错误:ValueError: Must be a coordinate pair or Point

但是我已经尝试过这个并且它工作正常:

from flask import Flask, render_template 
from geopy.geocoders import Nominatim


app = Flask(__name__)

geolocator = Nominatim()



@app.route('/location')
def lang_and_lat():
    location = geolocator.reverse("21.0943, 81.0337")

    address = location.address

    return render_template('ip.html', address=address)


if __name__ == '__main__':
    app.run(debug=True)
from flask import Flask, render_template 
from geopy.geocoders import Nominatim


app = Flask(__name__)

geolocator = Nominatim()



@app.route('/location/<lat>/<lang>')
def lang_and_lat(lat, lang):
    location = geolocator.reverse(lat, lang)

    address = location.address

    return render_template('ip.html', address=address)


if __name__ == '__main__':
    app.run(debug=True)

【问题讨论】:

  • 在第一个 sn-p 中,您传递一个 str 类型的位置参数,表示用逗号分隔的纬度和经度,而在第二个中,您传递两个 str 类型的位置参数。跨度>
  • 我想将纬度和经度值作为参数传递给我的烧瓶路线
  • 您正在调用 API 中的函数。你不能只是按照你想要的方式传递值;您必须以 API 函数准备接受它们的方式传递它们。我见过的所有 geolocator.reverse 示例都采用一个字符串,其中两个值用逗号分隔。您收到的错误消息表明您应该能够将两个值放在一个 Point 对象中并传递它,但我还没有看到任何这样的例子。
  • 然后这样做,然后按照geolocator.reverse() 的预期将它们加入单个str
  • 我发现了这个:programcreek.com/python/example/93521/geopy.Point,它显示了如何创建 geopy.Point 对象:origin = geopy.Point(latitude=lat, longitude=lon)

标签: python-3.x flask geopy


【解决方案1】:

你需要做 location = geolocator.reverse(f'{lat}, {lang}')

location = geolocator.reverse(Point(lat, lang)) 在第二种情况下,您需要from geopy.point import Point

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-03-16
  • 1970-01-01
  • 2019-11-29
  • 2021-10-18
  • 1970-01-01
  • 2020-04-04
  • 2021-02-13
相关资源
最近更新 更多