使用Nominatim进行openstreetmap地址搜索/解析
Nominatim(来自拉丁语,意思是“名称”)是一个可以按名称和地址来搜索OSM中的数据,并生成OSM点的合成地址的工具(反向地理编码)。可用在http://nominatim.openstreetmap.org找到这个工具。Nominatim也用在OpenStreetMap首页的搜索工具栏中,同时也为MapQuest Open Initiative提供搜索支持。
本页面提供了使用说明。要了解关于Nominatim如何工作的细节请查看发展概况以及这个FAQ。这里还有一个关于各个国家的语言代码和各个国家地址格式的列表。
搜索
Nominatim为OSM的数据集中已命名(或编号)的内容,以及其他无名的功能子集(酒吧,旅馆,教堂等)进行了索引。
搜索首先会从左至右进行,如果失败的话会再从右到左搜索。
这两个搜索都会得到结果:皮尔金顿大道,伯明翰 伯明翰,皮尔金顿大道
(逗号是可选的,但加上逗号可以降低搜索的复杂程度并提高搜索精度。)
门牌号码已经被定义了的区域,可以使用:135皮尔金顿大道,伯明翰
特殊的关键词
在搜索中不同的关键字会被翻译成特定OSM标签(例如,酒吧=>市容=酒馆)。这里有一个这样特殊短语的列表。
参数
http://nominatim.openstreetmap.org/search?<params> http://nominatim.openstreetmap.org/search/<query>?<params>
format=[html|xml|json|jsonv2] Output format
json_callback=<string> Wrap json output in a callback function (JSONP) i.e. <string>(<json>)
accept-language=<browser language string> Preferred language order for showing search results, overrides the browser value. Either uses standard rfc2616 accept-language string or a simple comma separated list of language codes.
q=<query> Query string to search for. Alternatively can be entered as:
street=<housenumber> <streetname> city=<city> county=<county> state=<state> country=<country> postalcode=<postalcode> (experimental) Alternative query string format for structured requests. Structured requests are faster and require less server resources. DO NOT COMBINE WITH q=<query> PARAMETER.
countrycodes=<countrycode>[,<countrycode>][,<countrycode>]... Limit search results to a specific country (or a list of countries). <countrycode> should be the ISO 3166-1alpha2 code, e.g. gb for the United Kingdom, de for Germany, etc.
viewbox=<left>,<top>,<right>,<bottom> or viewboxlbrt=<left>,<bottom>,<right>,<top> The preferred area to find search results
bounded=[0|1] Restrict the results to only items contained with the bounding box. Restricting the results to the bounding box also enables searching by amenity only. For example a search query of just "[pub]" would normally be rejected but with bounded=1 will result in a list of items matching within the bounding box.
polygon=[0|1] Output polygon outlines for items found (deprecated, use one of the polygon_* parameters instead)
addressdetails=[0|1] Include a breakdown of the address into elements
email=<valid email address> If you are making large numbers of request please include a valid email address or alternatively include your email address as part of the User-Agent string. This information will be kept confidential and only used to contact you in the event of a problem, see Usage Policy for more details.
exclude_place_ids=<place_id,[place_id],[place_id]> If you do not want certain openstreetmap objects to appear in the search result, give a comma separated list of the place_id's you want to skip.
limit=<integer> Limit the number of returned results.
dedupe=[0|1] No explanation yet.
debug=[0|1] No explanation yet.
polygon_geojson=1 Output geometry of results in geojson format.
polygon_kml=1 Output geometry of results in kml format.
polygon_svg=1 Output geometry of results in svg format.
polygon_text=1 Output geometry of results as a WKT.
示例
http://nominatim.openstreetmap.org/search?q=135+pilkington+avenue,+birmingham&format=xml&polygon=1&addressdetails=1 http://nominatim.openstreetmap.org/search/135%20pilkington%20avenue,%20birmingham?format=xml&polygon=1&addressdetails=1 http://nominatim.openstreetmap.org/search/gb/birmingham/pilkington%20avenue/135?format=xml&polygon=1&addressdetails=1
<searchresults timestamp="Sat, 07 Nov 09 14:42:10 +0000" querystring="135 pilkington, avenue birmingham" polygon="true"> <place place_id="1620612" osm_type="node" osm_id="452010817" boundingbox="52.548641204834,52.5488433837891,-1.81612110137939,-1.81592094898224" polygonpoints="[['-1.81592098644987','52.5487429714954'],['-1.81592290792183','52.5487234624632'],...]" lat="52.5487429714954" lon="-1.81602098644987" display_name="135, Pilkington Avenue, Wylde Green, City of Birmingham, West Midlands (county), B72, United Kingdom" class="place" type="house"> <house>135</house> <road>Pilkington Avenue</road> <village>Wylde Green</village> <town>Sutton Coldfield</town> <city>City of Birmingham</city> <county>West Midlands (county)</county> <postcode>B72</postcode> <country>United Kingdom</country> <country_code>gb</country_code> </place> </searchresults>
反向地理编码/地址查询
反向地理编码由纬度和经度产生一个地址。可选的缩放参数指定用于显示某信息在openlayers上显示的合适的缩放级别。
参数
http://nominatim.openstreetmap.org/reverse?<query>
format=[xml|json] Output format
json_callback=<string> Wrap json output in a callback function (JSONP) i.e. <string>(<json>)
accept-language=<browser language string> Preferred language order for showing search results, overrides the browser value. Either uses standard rfc2616 accept-language string or a simple comma separated list of language codes.
osm_type=[N|W|R] osm_id=<value> A specific osm node / way / relation to return an address for Please use this in preference to lat/lon where possible
lat=<value> lon=<value> The location to generate an address for
zoom=[0-18] Level of detail required where 0 is country and 18 is house/building
addressdetails=[0|1] Include a breakdown of the address into elements
email=<valid email address> If you are making large numbers of request please include a valid email address or alternatively include your email address as part of the User-Agent string. This information will be kept confidential and only used to contact you in the event of a problem, see Usage Policy for more details.
示例
http://nominatim.openstreetmap.org/reverse?format=xml&lat=52.5487429714954&lon=-1.81602098644987&zoom=18&addressdetails=1
<reversegeocode timestamp="Fri, 06 Nov 09 16:33:54 +0000" querystring="..."> <result place_id="1620612" osm_type="node" osm_id="452010817"> 135, Pilkington Avenue, Wylde Green, City of Birmingham, West Midlands (county), B72, United Kingdom </result> <addressparts> <house>135</house> <road>Pilkington Avenue</road> <village>Wylde Green</village> <town>Sutton Coldfield</town> <city>City of Birmingham</city> <county>West Midlands (county)</county> <postcode>B72</postcode> <country>United Kingdom</country> <country_code>gb</country_code> </addressparts> </reversegeocode>
http://wiki.openstreetmap.org/wiki/Zh-hans:Nominatim