- OpenStreetMap Nominatim API Lib for Nim, Async & Sync, Pull Requests welcome.
nimble install nominatim
From Nim code:
import nominatim
# Sync Client.
let openstreetmap_client = Nominatim(timeout: 5)
# Searching OpenStreetMap Example.
echo openstreetmap_client.search(query="135+pilkington+avenue,+birmingham").pretty
# Lookup on OpenStreetMap Example.
echo openstreetmap_client.lookup(osm_ids="R146656,W104393803,N240109189").pretty
# Reverse query on OpenStreetMap Example.
echo openstreetmap_client.reverse(lat = -34.44076, lon = -58.70521).pretty
## Async client.
proc async_nominatim() {.async.} =
let
async_nominatim_client = AsyncNominatim(timeout: 9)
async_response = await async_nominatim_client.search(query="135+pilkington+avenue,+birmingham")
echo async_response.pretty
wait_for async_nominatim()
Search as a command line app:
$ ./nominatim --color --lower --timeout=9 --search "135 pilkington avenue, birmingham"
Lookup as a command line app:
$ ./nominatim --color --lower --lookup "R146656,W104393803,N240109189"
Reverse as a command line app:
$ ./nominatim --color --lower --lon=-58.70521 --lat=-34.44076 --reverse "reverse"
- None.
- The
timeout
argument is on Seconds. - All the responses are JSON,
JsonNode
type. - OpenStreetMap API limits the length of all key and value strings to a maximum of 255 characters.
- For Proxy support define a
Nominatim.proxy
orAsyncNominatim.proxy
ofProxy
type. - No OS-specific code, so it should work on Linux, Windows and Mac. Not JS.
search*(this: Nominatim | AsyncNominatim, query: string, api_url = api_url)
this
isNominatim(timeout=int8)
for Synchronous code orAsyncNominatim(timeout=int8)
for Asynchronous code.query
is an Nominatim query,string
type, required.api_url
is an Nominatim HTTP API URL,string
type, optional.
lookup*(this: Nominatim | AsyncNominatim, osm_ids: string, addressdetails = true, extratags = true, namedetails = true, email = "", accept_language = "EN", api_url = api_url)
this
isNominatim(timeout=int8)
for Synchronous code orAsyncNominatim(timeout=int8)
for Asynchronous code.osm_ids
is an Nominatim OpenStreetMap IDs,string
type, comma separated, max 50 items, required.addressdetails
Set totrue
to show address details,bool
type, optional, defaults totrue
.extratags
Set totrue
to show extra tags,bool
type, optional, defaults totrue
.namedetails
Set totrue
to show name details,bool
type, optional, defaults totrue
.email
Set to your email address (for massive heavy use of the API),string
type, defaults to""
, optional.accept_language
Set output spoken language,string
type, defaults to"EN"
, optional.api_url
is an Nominatim HTTP API URL,string
type, optional.
reverse*(this: Nominatim | AsyncNominatim, lat: float, lon: float, osm_ids = "", osm_type = ' ', zoom: range[-1..18] = -1, addressdetails = true, extratags = true, namedetails = true, email = "", accept_language = "EN", api_url = api_url)
this
isNominatim(timeout=int8)
for Synchronous code orAsyncNominatim(timeout=int8)
for Asynchronous code.osm_ids
is an Nominatim OpenStreetMap IDs,string
type, comma separated, max 50 items, required.addressdetails
Set totrue
to show address details,bool
type, optional, defaults totrue
.extratags
Set totrue
to show extra tags,bool
type, optional, defaults totrue
.namedetails
Set totrue
to show name details,bool
type, optional, defaults totrue
.email
Set to your email address (for massive heavy use of the API),string
type, defaults to""
, optional.accept_language
Set output spoken language,string
type, defaults to"EN"
, optional.api_url
is an Nominatim HTTP API URL,string
type, optional.zoom
is the Zoom, a positive integer between-1
and18
,range[-1..18]
type, defaults to-1
,-1
means disabled, optional.lat
is the Latitude,float
type, required.lon
is the Longitude,float
type, required.