首页 > 编程问答 >“featuretype”参数似乎在 geopy 包中不起作用。知道为什么吗?

“featuretype”参数似乎在 geopy 包中不起作用。知道为什么吗?

时间:2024-07-30 12:14:28浏览次数:9  
标签:python geocoding geopy

我有一个位置数据框,我想获取其坐标。为此,我使用 geopy 包和 Nominatim API。尽管我已指定 featuretype 参数仅返回城市、定居点和村庄,但它仍然为我提供了高速公路、建筑物和其他不相关内容的坐标。代码的其余部分工作正常,但我需要准确的坐标,因为它是整个国家的位置列表。以下是我正在使用的地理定位器的片段。

geolocator = Nominatim(user_agent="my_geocoder", timeout=None)
location = geolocator.geocode(place_name, extratags=True, 
featuretype=['state', 'city', 'settlement', 'village'])

感谢您的帮助!


featuretype 参数不是 geopy 库中的有效参数,这就是它不起作用的原因。 geopy 库是一个地理编码和反向地理编码的 Python 客户端,它本身并不定义地理编码服务的功能。它充当不同地理编码服务的包装器,例如 Nominatim、Google Maps 和 Bing。

Nominatim 的限制

正在使用 Nominatim 地理编码器,它不完全支持 featuretype 作为查询参数。虽然 Nominatim 的搜索确实允许使用更具体的特征类型(可以在此处查看文档:https://nominatim.org/release-docs/develop/api/Search/),但无法保证结果中仅包含这些类型。

可能的解决方案

  1. 结果过滤: 可以通过检查返回的地址组件来过滤地理编码结果。 geopy location.raw['address'] 为提供了一个字典,其中包含有关该位置的信息。可以检查此字典以查找诸如 city village state 等键,并根据的标准过滤结果。

python location = geolocator.geocode(place_name, extratags=True) if location: address = location.raw.get('address', {}) if address.get('city') or address.get('village') or address.get('state'): # 处理位置 else: # 跳过该位置,因为它不符合的标准

  1. 使用其他地理编码服务: 某些地理编码服务可能提供更精细的过滤器,以获取所需类型的特征。可能需要探索其他地理编码提供商(例如 Google Maps 地理编码 API),这些提供商可能提供对 featuretype 或类似参数的更直接支持。请注意,这些服务通常会有使用限制和定价。

  2. 查询增强: 通过在查询中包含诸如“城市”、“州”或“村庄”之类的附加信息,可以提高获得所需结果的可能性。例如,可以改为搜索“[地点名称] 城市”或“[地点名称] 州”。

请记住,即使使用这些方法,Nominatim 还是可能会返回并非专门要求的特征类型。地理编码的准确性和相关性取决于地理编码服务提供的数据质量及其搜索算法。

标签:python,geocoding,geopy
From: 78807238

相关文章

  • 在家用电脑上设置 Python 和 Jupyter,尝试打开 Jupyter 笔记本并显示错误,无法获取
    我有最新的Python版本3.12.4和以下版本的Jupyter:SelectedJupytercorepackages...IPython:8.26.0ipykernel:6.29.5ipywidgets:notinstalledjupyter_client:8.6.2jupyter_core:5.7.2jupyter_server:2.14.2jupyterlab......
  • Python - Reloading a module
    Eachmoduleisloadedintomemoryonlyonceduringaninterpretersessionorduringaprogramrun,regardlessofthenumberoftimesitisimportedintoaprogram.Ifmultipleimportsoccur,themodule’scodewillnotbeexecutedagainandagain.Suppose......
  • vscode python 3.7 pylance debugpy 插件 vsix
    可能报错  crashed5timesinthelast3minutes.Theserverwillnotberestarted.  ---pylance 可能报错  cannotreadpropertiesofundefinedreadingresolveEnvironment   --- debugger可能      vscodepython3.7调试没有反应......
  • Python获取秒级时间戳与毫秒级时间戳的方法[通俗易懂]
    参考资料:https://cloud.tencent.com/developer/article/21581481、获取秒级时间戳与毫秒级时间戳、微秒级时间戳代码语言:javascript复制importtimeimportdatetimet=time.time()print(t)#原始时间数据print(int(t))......
  • CEFPython
    在Tkinter界面中直接嵌入Selenium的浏览器视图并不是一件直接的事情,因为Selenium本身并不提供图形界面嵌入的功能。Selenium主要用于自动化web浏览器,但它并不直接控制浏览器窗口的显示方式,而是依赖于WebDriver来与浏览器交互。然而,你可以使用一些替代方案来在Tkinter应用中模拟或......
  • 《最新出炉》系列初窥篇-Python+Playwright自动化测试-58 - 文件下载
    1.简介前边几篇文章讲解完如何上传文件,既然有上传,那么就可能会有下载文件。因此宏哥就接着讲解和分享一下:自动化测试下载文件。可能有的小伙伴或者童鞋们会觉得这不是很简单吗,还用你介绍和讲解啊,不说就是访问到下载页面,然后定位到要下载的文件的下载按钮后,点击按钮就可以了。其实......
  • Python - Function Annotations
     deffunc(s:str,i:int,j:int)->str:returns[i:j]Theparametersissupposedtobeastring,soweplaceacolonaftertheparameternameandthenwritestr.Parametersiandjaresupposedtobeintegerssowewriteintforthem.Returntypeis......
  • 使用带有 pythonKit XCODE 的嵌入式 Python,在 iOS 应用程序中与 OpenCV-python 签名不
    我根据Beewares使用指南在XCODE中将Python嵌入到我的iOS项目中https://github.com/beeware/Python-Apple-support/blob/main/USAGE.md运行时,我得到pythonKit找不到由ultralytics导入的cv2错误。当我将OpenCV-python添加到我的app_packages文件夹时......
  • Python - Arguments and Parameters
    ParametersinFunctionDefinitionA.deffunc(name):MatchbypositionorbynameB.deffunc(name=value):DefaultargumentC.deffunc(*args):CollectextrapositionalargumentsintuplenamedargsD.deffunc(**kwargs):Collectextrakeywordargumentsi......
  • Python MySQL 无法连接,原因不明
    当我尝试使用python连接到我的MySQL数据库时,由于未知原因显示错误:dTraceback(mostrecentcalllast):File"/usr/local/bin/flask",line8,in<module>sys.exit(main())^^^^^^File"/usr/local/lib/python3.12/site-packages/flask/cli.py&......