Atom Feed

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.

Read more …


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.

Read more …


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.

Read more …


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.

Read more …


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.

Read more …


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.

Read more …


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?

Read more …


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.

Read more …


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.

Read more …


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.

Read more …


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.

Read more …


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?

Read more …


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.

Read more …


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.

Read more …


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.

Read more …


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.

Read more …


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.

Read more …


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.

Read more …


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.

Read more …


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.

Read more …


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.

Read more …


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.

Read more …


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.

Read more …


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.

Read more …


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.

Read more …


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?

Read more …


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.

Read more …


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.

Read more …


Nominatim 3.7.2 released

Jun 1, 2021

There is now a bug fix release 3.7.2 of Nominatim available.

Read more …


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.

Read more …


Nominatim 3.7.1 released

May 5, 2021

There is now a bug fix release 3.7.1 of Nominatim available.

Read more …


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.

Read more …


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.

Read more …


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/.

Read more …


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.

Read more …


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.

Read more …


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.

Read more …


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.

Read more …


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.

Read more …


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.

Read more …