Nominatim Blog
Nominatim 4.5.0
Sep 12, 2024
We are happy to announce the release of version 4.5.0 of Nominatim. This is a transition release, helping you to prepare the move towards the upcoming Nominatim 5.0, which will be a pure Python application.
New Wikimedia-based scoring file available
Aug 7, 2024
Nominatim tries to assign each place in its database a base “importance” score number to answer the question “If 30 places have the name ‘Berlin’, which one is the most likely a user meant?” For Berlin that’s the one in Germany. We humans say “of course” but that’s not how computers work.
Nominatim 4.4.0 and Photon 0.5.0 released
Mar 8, 2024
We are happy to announce that this week new versions of Nominatim and its ElasticSearch frontend Photon have been released.
The Roadmap to Nominatim 5
Dec 19, 2023
The version 4.x series of Nominatim has seen some major changes to the code. Both, the database import and the search frontend have received major updates and refreshed algorithms. As we go into 2024, it is time to consolidate and regroup. The goal is that the next version 5 is leaner and even more easy to use than previous versions. This requires some changes to how Nominatim is installed and used. Learn in this post how this affects you and how you can upgrade.
Nominatim lite, part 2: Forward Geocoding
Dec 13, 2023
In last month’s post we’ve looked into using a SQLite database for reverse geocoding. This is the second part of the post which looks into forward search.
Bugfix releases for Nominatim 4.3 and 4.2
Nov 20, 2023
Today we have released versions 4.3.2 and 4.2.4 of Nominatim. They fix a low-risk SQL injection issue in the nominatim CLI tool.
Nominatim lite, part 1: Reverse Geocoding
Oct 25, 2023
The Nominatim Python library, that was added in the last release, makes it quite a bit easier to work with geocoding on your local machine. Still, the library needs access to a PostgreSQL database. And setting this up can be tedious. This is the first of two posts discussing the question: can a geocoding database be squeezed into a SQLite file?
Nominatim 4.3 released
Oct 7, 2023
This week we have released Nominatim 4.3.1, the first bug fix release in the new 4.3 release series.
New frontend available on nominatim.openstreetmap.org
Aug 13, 2023
The rewritten search frontend of Nominatim has just been rolled out on OSM’s main instance https://nominatim.openstreetmap.org. Give it a try.
Python Progress Reports: Tuning SQLAlchemy
Jul 24, 2023
In this previous post we have looked into the performance of the new Python frontend and learned that it is well worth having a look into optimizations early on. The following post takes a deep dive into performance tweaks for SQLAlchemy. This means looking at a rather detailed level at the technical implementation. I hope that if you plan to play with SQLAlchemy yourself, you might find one or two good pieces of advice to avoid performance pitfalls in your own code.
Python Progress Reports: Refreshing the Search Algorithms
Apr 27, 2023
Forward search is the last and biggest part of Nominatim to get ported to Python. Rewriting the search algorithm in Python was also an opportunity to review its design and correct some of the long-standing short-comings. This post looks into some of the changes made.
Python Progress Reports: A first glimpse at performance
Apr 3, 2023
In the last month, I have ported the reverse geocoding function to the new Python framework. This allows us to have a first look at the question that will be important for the entire project: can Python match the performance of PHP?
Bugfix releases for Nominatim 4.2, 4.1, 4.0 and 3.7
Feb 21, 2023
Today we have released versions 4.2.1, 4.1.2, 4.0.2 and 3.7.3 of Nominatim which fix a cross-site scripting issue in the API.
NominatimLite - the database
Feb 6, 2023
Quite a bit has happened in the last years to make Nominatim work well with with less powerful hardware. One aspect of this is keeping its database small. But is it small enough that Nominatim fits into a tiny SQLite database? With the newly introduced SQLAlchemy, we can find out.
Frontend renovations
Dec 8, 2022
The search frontend code is one of the oldest remaining code parts of Nominatim. I’m happy to announce that NGIZero Entrust has accepted a proposal to refurbish this part of Nominatim. The goal is modernize code and algorithms and make Nominatim ready for another use-case: offline geocoding.
Feature preview: osm2pgsql flex output
Nov 28, 2022
The latest release of Nominatim has received experimental support for the osm2pgsql flex output. This gives not only more flexibility in the future how OpenStreetMap data is read and interpreted but also unlocks an often requested feature: running geocoding and tile rendering from the same database.
Nominatim 4.2.0 released
Nov 25, 2022
We are happy to announce a new release 4.2.0 of Nominatim. This release brings two new experimental features: importance ranking for all places and support for osm2pgsql’s flex output.
Nominatim 4.1.1 released
Nov 20, 2022
We are happy to announce a new release 4.1.1 of Nominatim. This is a bugfix release which resolves some smaller issues around updates of databases and search.
Introducing the Nominatim Cookbook
Aug 6, 2022
Many people know Nominatim simply as a web service, while in fact it is a powerful geocoding software. There are many ways to adapt your personal installation to your specific needs. To make it easier to use the full potential of Nominatim, the website now has a new Cookbook section.
Nominatim 4.1.0 released
Aug 5, 2022
We are happy to announce a new release 4.1.0 of Nominatim. After many months of stress testing in production, the ICU tokenizer introduced in the last release is now the default. The release also brings improved handling for house numbers and postcodes.
Increasing code quality: Static typing for Python Code
Jul 19, 2022
When porting the Nominatim’s data importer to Python last year, code quality played an important role. There are unit tests for every function and a linting tool runs regularly as part of the continuous integration to find the little code smells that are the first sign of bigger issues with the code. Now we have added an additional level of quality checks: static type checking.
The state of postcodes
Jun 26, 2022
Postcodes are a curious thing. Not every country in the world has them. But where they do, postcodes tend to play an important role for locating areas. If you are in a country with postcodes, you likely know your home postcode by heart and will be regularly asked for it. And because you have to remember it, it makes sense to also use it when searching for places. It’s much shorter and more precise than a full address. Time to take stock of postcodes in OpenStreetMap to see how useful they are for geocoding.
Experimental Dumps for Photon
May 3, 2022
We’ve made it easier for you to test out the latest features of Photon. The download server for Photon dumps now offers experimental dumps made from the latest development version of Photon.
Security Audit for Nominatim
Feb 23, 2022
The NLNet foundation offers a number of service for projects that it sponsors. One of those services is a security quick-scan of the software. The friendly people at RadicallyOpenSecurity (ROS) had a look at the Nominatim codebase to evaluate it in terms of security.
Nominatim 4.0.0 released
Nov 3, 2021
We are happy to announce a new release of Nominatim. It concludes a year-long reorganization of the code around how Nominatim parses and indexes names of places. The result is a new, more flexible approach to handling how places can be searched, which is the base for the version 4 of Nominatim.
Detecting languages
Oct 10, 2021
In the post about abbreviations we briefly touched on the importance of knowing the language of the names you are looking for. The literature on search strongly agrees on that. The most effective techniques for searching (stemming, stop words, compound analysis etc.) strongly rely on knowing about some fundamental properties of the underlying language. Geographic search is no different. Every language has its own particularities when it comes to expressing addresses. So how do we handle this with OpenStreetMap data?
Abbreviations
Jul 3, 2021
The blog post on normalization mentioned briefly the importance of handling abbreviations in geocoding. This post looks at abbreviations in more detail.
Nominatim tech talk: Finding places
Jun 11, 2021
Last month I was invited by CodeOp to give a technical introduction to geocoding and Nominatim to their students. This talk is now available online.
Nominatim 3.7.2 released
Jun 1, 2021
There is now a bug fix release 3.7.2 of Nominatim available.
The importance of normalization
May 6, 2021
Normalization is the process of transforming a text into a form that only contains the information relevant for search. It is an essential part of the search process and has a huge influence on the quality of results. Time to have a closer how it works in Nominatim and how we plan to improve it.
Nominatim 3.7.1 released
May 5, 2021
There is now a bug fix release 3.7.1 of Nominatim available.
Nominatim 3.7.0 released
Apr 10, 2021
This week we have released version 3.7.0 of Nominatim. The two biggest changes of this release have already been introduced in previous blog posts: the new nominatim tool and the change in how Nominatim is installed. To make transition and updating easier for you, 3.7.0 is a transitional release that still supports the old way of installing and running the admin tools. The old PHP scripts will be removed in the next release.
Release preview: Installation and Software Updates
Mar 8, 2021
In our mission to make Nominatim easier to install and use, there are two more features we are working on for the next release: making Nominatim installable and adding automatic migrations.
Nominatim-UI v3.0
Feb 27, 2021
With Nominatim 3.6 we have split off the HTML website into a separate project nominatim-ui. Going forward the API will only return JSON, XML, geoJSON data while you can install nominatim-ui to visualize results and aid debugging. For openstreetmap.org it is installed on https://nominatim.openstreetmap.org/ui/.
Introducing the Nominatim command-line tool
Feb 25, 2021
Installing and running Nominatim has for a long time involved handling a couple of PHP scripts. Those scripts will go away with the next release. A new one-stop tool ‘nominatim’ is going to take their place. Installation, updates, maintenance can all be done using the same simple command-line tool. Switching tools is also a great opportunity to clean up the historical baggage that has piled up in the existing scripts. This post describes some of the changes that come with the new tooling.
Happy new year
Jan 2, 2021
The end of last year saw the release of the 3.6.0 version of Nominatim. It concludes last years effort to improve the address information that is returned to you when you search for something. We have gradually changed how Nominatim organises address information and how it interprets information on OSM place nodes and administrative boundaries. The new system also takes into account that today the existence of administrative boundaries is rather the norm in OSM than the exception. When the original code was written years ago, this was still different. There is still some work to do to look through the data of each country and adapt the ranking system now in place to the local customs but these are more smaller changes we can do gradually.
Place nodes and boundaries
Nov 11, 2020
Geocoding doesn’t just mean to throw a number of place names into a database and then search for them. To make search truly useful, the geocoder needs to add some context to each place, commonly referred to as the place’s address. In the past year, we have gradually reworked how Nominatim determines the address of a place going from an unstructured to a more structured approach. This post describes how the new algorithm works and what that means for the places you have mapped in OSM.
Weekly country extracts for Photon
Oct 21, 2020
The download server for Photon now offers ready-to-use database dumps for over 200 countries. Setting up your own geocoding server was never easier.
Nominatim and the address tags
Oct 7, 2020
OpenStreetMap has a well defined schema how to add addresses into the
database. There is a whole set of addr:*
tags
that allow to specify every part of the address in a structured way.
When mappers have entered such an address, they naturally expect to be able
to search their place later by entering exactly the same terms in the
search box. Sometimes they are disappointed.
Quo Vadis
Sep 14, 2020
This year Nominatim celebrates its 11th birthday. On Nov 11th 2009 the OpenStreetMap (OSM) homepage used Nominatim as its main search engine for the first time. Since then OSM has grown enormously and with it the need for a geocoder based on OSM data. The OSM Nominatim servers alone now serve more than 30 million queries per day. In addition, there are many private installations out there.