Here api 检索仅包含街道名称和国家(德国)的所有可能的邮政编码

Here api 检索仅包含街道名称和国家(德国)的所有可能的邮政编码,here-api,Here Api,尝试构建一个对话框,其中只有一个文本框,用户可以(除其他外)只输入德国的街道名称,然后该对话框应显示该街道名称在整个德国可能的所有邮政编码(PLZ)列表。因此,基本上我需要一份德国所有PLZ+街道名称组合的列表,首先按大城市的街道排序(如果可能的话,先按大街道排序)。我尝试了几种不同的HERE API,但在仅使用街道名称进行搜索时,如果国家设置为德国,则无法产生任何结果。如果我另外填写城市(streetname+city),那么我会得到一个很好的回复,并提供我所需要的一切。那么,对于只包含街道名

尝试构建一个对话框,其中只有一个文本框,用户可以(除其他外)只输入德国的街道名称,然后该对话框应显示该街道名称在整个德国可能的所有邮政编码(PLZ)列表。因此,基本上我需要一份德国所有PLZ+街道名称组合的列表,首先按大城市的街道排序(如果可能的话,先按大街道排序)。我尝试了几种不同的HERE API,但在仅使用街道名称进行搜索时,如果国家设置为德国,则无法产生任何结果。如果我另外填写城市(streetname+city),那么我会得到一个很好的回复,并提供我所需要的一切。那么,对于只包含街道名称和国家(where country='DEU')且不包含任何城市的查询,是否有任何方法可以获得结果?搜索需要是位置不可知的,唯一的假设是用户在德国

这种极简搜索似乎在here.com地图网站上起作用。在here.com网站上唯一的问题是它把我定位到了一个错误的城市,因此它给我的3个结果与我的位置并不相关。例如,我在柏林,而here.com在莱比锡找到了我,我正在用“Chaussester”搜索

如果只搜索街道名称和国家的地址是可行的,你有什么想法吗?
谢谢

你考虑过试试地理编码吗?不仅仅是第一个结果,我想这就是您在参考的服务示例中看到的结果。因此,确实要遍历所有回复。当然,请查看您正在使用的API,并确保在执行任何查询之前为max results设置了一些好的数字

至少在这里的一些产品中,回复数据还包括地址,因此您可以从那里获取邮政编码


另外,如果它不在那里,则使用获得的位置进行混响地理查询,然后至少您应该得到它

这看起来像是一个结构化地理编码请求,但不幸的是,
街道
仅地理编码请求太宽,无法返回有效响应。将
街道
国家
相结合的请求也不存在。你最好的选择是将德国分割成一系列不重叠的区域,比如东北部、西北部和南部,并合并结果

此请求在德国东部查找“Hauptstrasse”,最多只返回100个邮政编码

  • 街道
    设置要查找的街道名称
  • country=deu
    将结果限制在德国
  • responseattributes=none
    从响应中删除信任元信息
  • locationattributes=none,ar
    仅将响应限制为地址
  • addressattributes=none,pst
    仅将地址限制为邮政编码
  • mapview
    定义请求的边界框的限制
  • maxresults=100
    确保最多返回100个结果
对西德、南德等国重复这一点

适用于并且可能适用于您的对话框的是使用来自的建议端点。当文本框被填充时,尝试提出一系列建议请求,设置
X-Map-Viewport
覆盖德国:


甚至有一种现成的方法可以做到这一点。

回答这样的问题永远不会太迟

  • 安装QGIS(免费)
  • 然后
    “插件”
    ->“管理和安装插件…”->安装
    “OSMDownloader”
  • 然后
    “Vector”
    ->
    “Openstreetmap”
    ->
    “下载数据”
    在您放大到感兴趣的区域后
  • 当您有
    .xml
    文件时,请使用简单的unix命令行utils来相应地进行切片

    快速破解(有点像穴居人的解决方案,但对我有效):


    $grep-A1'addr:post'OSM_input.xml | egrep-v'^--$'| sed'N;s/\n/'| grep'addr:street'| awk-F'v=“'{print$2'#“$3}”| sed's/“\/>编辑您的问题可能是个好主意。虽然很清楚你想做什么,但不清楚你是怎么做的,或者你在哪里遇到了麻烦。是Javascript吗?是数据库代码吗?添加一些源代码,说明您遇到的问题,并删除不必要的解释。这些不必要的解释只会让你的问题变得清晰。这使这篇文章很难读。
    
    $ grep -A1 'addr:post' OSM_input.xml | egrep -v '^--$' | sed 'N;s/\n/ /'  | grep 'addr:street' | awk -F'v="' '{print$2"#"$3}' | sed 's/"\/>     <tag k="addr:street" //' | sed 's/"\/>/,/' > output.txt