仅使用街道名称和国家/地区检索所有可能的邮政编码(德国)

时间:2014-05-14 15:52:12

标签: here-api

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

这种简约搜索似乎可以在here.com地图网站上运行。 here.com网站唯一的问题是它将我定位在一个错误的城市,因此它给我的3个结果与我的位置并不相关。例如,我在柏林和here.com找到我在莱比锡,我正在和#34; Chausseestr。"。

如果只搜索街道名称和国家/地区的地址搜索是否可行? 谢谢!

3 个答案:

答案 0 :(得分:1)

这看起来像是结构化地理编码请求,但不幸的是,仅street地理编码请求过于宽泛而无法返回有效响应。将streetcountry组合在一起的请求也没有。你最好的选择是将德国分成一系列不重叠的bounding box geocoding requests覆盖,说明该国的东北部,西北部和南部,并将结果合并。

此请求在德国东部查找'Hauptstrasse',仅返回100个邮政编码

http://geocoder.cit.api.here.com/6.2/geocode.json?street=hauptstrasse&responseattributes=none&locationattributes=none,ar&app_id=APP_ID&app_code=APP_CODE&gen=3&addressattributes=none,pst&country=deu&mapview=LAT,LONG;LAT,LONG&maxresults=100

  • street设置要查找的街道名称,
  • country=deu将结果限制在德国
  • responseattributes=none会从回复中删除置信度元信息
  • locationattributes=none,ar限制回复仅限地址
  • addressattributes=none,pst限制地址仅发布代码
  • mapview定义请求的边界框的限制。
  • maxresults=100可确保最多返回100个结果。

在德国西部,德国南部等地重复此事。

适用于here.com的内容,可能适用于对话框,是使用places api中的建议结束点。尝试制作一系列建议请求,并填写文本框,设置X-Map-Viewport以涵盖德国:

http://places.cit.api.here.com/places/v1/suggest?X-Map-Viewport=LNG,LAT,LNG,LAT&q=haupt&app_id=APP_ID&app_code=APP_CODE&accept=application/json&size=100

甚至还有一个现成的JavaScript component可以做到这一点。

答案 1 :(得分:0)

你考虑过尝试地理编码吗?并且不仅仅取得第一个结果,我想这就是您在所引用的服务示例中看到的内容。因此,实际上循环遍历所有回复。当然,请参阅您正在使用的API,并确保在进行任何查询之前为最大结果设置了一些不错的数字。

至少在某些HERE产品中,回复数据还包含地址,因此您可以从那里获取邮政编码。

如果它不在那里,那么用获得的位置进行revercegeo查询,那么至少你应该得到它

答案 2 :(得分:0)

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

  1. 安装QGIS(免费)。
  2. 然后"Plugins" - > "Manage and install plugins..." - >安装"OSMDownloader"
  3. 然后"Vector" - > "Openstreetmap" - >在您放大了感兴趣的区域后"Download data"
  4. 当你拥有.xml文件时,使用简单的unix命令行工具来相应地切片和切块。

    快速破解(一个穴居人的解决方案,但为我工作):

    $ 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
    

    output.txt将包含一个大部分准确(需要一些手动清理)文件,其格式为:zipcode#streetname(每行一个)。