Close out the year in style with amenities, boundaries, and more!

As we round out a banner year for OpenHistoricalMap, our development team has just deployed a new version of the main website that incorporates many changes they’ve been working on over the past few months. Here’s a recap of some of the most noticeable changes since the last major style deployment.

Amenities are back

If you’ve been mapping neighborhood-level details, you may have noticed that some common point of interest types were going unlabeled in the Historic layer, including restaurants, banks, and theaters. Some towns were starting to look like ghost towns. Now the labels and icons are back, so neighborhoods look more lively:

More local boundaries

Mappers in some countries have been comprehensively mapping local administrative boundaries. It’s amazing to see the degree of local knowledge and enterprising research that has gone into these boundaries! Now, boundaries with admin_level=7, such as New England towns and Michigan townships, are shown as faint lines and labeled automatically, even if there isn’t an explicit label member.

Performance improvements

This year has seen a huge increase in the amount of information on the map. You’ve probably noticed some painful performance issues as the vector tile generator struggles to keep up with changes and the tile server struggles to serve up ever larger tiles. The team has been tinkering with refactoring the rendering pipeline, as well as testing out alternative infrastructure for generating and caching tiles. You may continue to see some rendering delays and stuck updates as we work out the kinks in the new caching mechanism. Once the dust settles, you should see a much snappier map. You won’t need to wait for the tiler to generate as many new tiles on demand as before.

Whereas we previously relied as heavily as possible on cloud storage and computing, we’re tiptoeing back into relying on physical hardware for some purposes. Rest assured, your contributions are still safe: we’re still storing the database in the cloud. We remember the emotional rollercoaster from several years ago; we’ll prioritize redundant offsite backups if we ever decide to move storage back to physical hardware.

Coming soon: maps in your language

OHM has inherited OSM’s convention of setting name=* to the primary name in the local language. Where possible, we’ve generally gone a step further and interpreted that as the contemporary local language, to avoid anachronisms. Students of history will learn something by seeing Alexandria labeled in Greek or Assyria in Imperial Aramaic. But few students know all the classical languages, so it’s easy to get lost on the map.

We’ve also inherited OSM’s convention of setting name:*=* to names in other languages, such as name:en=* for English, name:ang=* for Old English, name:el=* for Modern Greek, name:grc=* for Ancient Greek, and so on. Compared to the main name=* key, there are fewer restrictions to these subkeys. We know there weren’t any modern English speakers in ancient Mesopotamia, but we can still tag the features there with historiographical names in English or other modern languages, based on the sources we can find.

You can input these multilingual names in the iD editor alongside the primary name. These names show up in Nominatim search results and when inspecting the details of an element on the main website. However, they don’t render on the main map, which is a bummer.

Over the last several months, the team has been working towards upgrading our entire rendering pipeline to expose these localized names to users looking at the homepage. The vector tiles now contain a whopping 410 languages, far more than any OSM-based tileset, including many indigenous and classical languages that commercial OSM data consumers would never care about.

In order to actually render these names, the stylesheets needed to be completely overhauled to replace an older, deprecated syntax with a newer, more powerful syntax known as expressions. This was quite a feat for our designers, who normally author the stylesheets in a visual editor rather than developing source code as programmers would. The changes had knock-on effects for other components, such as the time slider, which weren’t ready for expressions either.

We’re almost there! The last remaining piece is to hook up the map to your openhistoricalmap.org user settings so that it automatically switches to your preferred language. Look for that improvement coming soon. In the meantime, localized labels are already enabled on the OHM embed site. You can use the Share option on the main site to embed this site on your blog or local history website, and it’ll be in the language your readers expect.

A team effort

Endless thanks to @batpad, @danrademacher, @erictheise, Greg Allensworth, @Rub21, @tsinn, @vanessa_GIN, and and anyone I missed for your help this time around! We’ve come a long way since the beginning of the year.

You’re all part of the team too! These improvements only matter to the extent that we all take advantage of them in our mapping. If you’ve never gotten into local history, this is a great time to do a braindump of all the shops and restaurants you remember fondly and ask around for information about how your town’s boundary evolved over time. On the off-chance that you happen to speak a language other than Imperial Aramaic, add localized names to features so your fellow language speakers can find them more easily.

Many of these improvements started out as bug reports and feature requests by astute mappers in this community. Keep the feedback flowing – no one has a better sense of the project’s potential than all of you who are building the project together.

6 Likes

These labels are rather confusing when applied on Europe. Europe has a traditional hierarchy of cities, minor cities, towns, minor towns, villages, minor villages and hamlets. There should be a way to give priority to town (urban settlement) over township (administrative area) as townless townships are quite unsual in Europe. Maybe center=no or nocenter=yes would be a good opportunity to designate townless townships.

In this area, the city of Bayreuth (75’000 inhabitants) is shown equally as the village of Emtmannsberg (1’005 inhabitants).

2 Likes

Thanks for the feedback! I opened the following issue to track a resolution. Feel free to add more details and examples for clarity:

1 Like