OpenStreetMap

EDIT: The app is now available on Github.

https://github.com/IpswichMapper/SwiftAddress/releases

You can find the APK under “assets”.


When I intended wanted to map housenumbers in my area, I found out about the app “Keypad-Mapper 3”. This seems like the most efficient way to map housenumbers, as it is designed for that purpose.

However, after downloading (from F-droid archive repository), I found out that it didn’t work. The app had not been updated in 7 years, so no wonder that was to case. Luckily however, online I found a fork of Keypad-Mapper 3 with hungarian translations which worked.

After doing one giant survey with this app, however, I quickly realised how much of a pain it can become to try and clean up the raw data in JOSM. GPS data isn’t really the most accurate thing, and therefore the positions of housenumber nodes (which are based on your GPS position) collected from Keypad Mapper isn’t that accurate either.

This survey took me multiple weeks and multiple changesets to clean up. It was a mess.

I then started to look for alternatives: Streetcomplete seemed like the best option and I did a few surveys with it. However, mapping housenumbers wasn’t the most efficient thing on this app. So I opened a issue on Streetcomplete’s Github repository to try and improve the app. This lead to a increment button which adds/substracts one number from the previous housenumber you entered.

This was quite useful, but it doesn’t work for both sides of the road. Streetcomplete housenumber mapping also requires that you have drawn buildings first, which can be tedious (here is my diary entry explaining how to speed it up slightly).

Then, I heard about OSMpad. This is an old application which is no longer available. However, I liked the design. OSMpad starts up as a map: you then add a housenumber on the map when surveying.

This would obviously lead to cleaner and more accurate data compared to Keypad Mapper, and would not require adding building data.

So my app designed to work similarly to OSMpad, with a few more features. Here are some screenshots:

Homescreen with some housenumbers added

This shows the main map screen with a few housenumbers & a note added. You use the left arrow to add a housenumber on the left side, and a right arrow to add a housenumber on the right side. The reason for this is incrementing. For example, if you had added “24” on the left side, your next housenumber could automatically increment to “26”.

You can also long press on one of the arrows to automatically add a housenumber. For example, if the last housenumber you had added was “24”, the next housenumber will automatically be “26”.

On the top bar, there are buttons to save, take a photo, take an audio note, change background imagery and undo.

So far, I have not implemented the photo and audio note features, and while the app can change background imagery I haven’t added any satellite imageries there just yet due to concerns over copyright (I need to know what imagery I can use in this application).

Although it isn’t shown here, location can be enabled.

homescreen but showing contents of note

Here you can see the contents of the note after clicking on it.

Keypad

Here is the keypad. You can swipe up on the numbers to add extra characters (for example “a”, “b”, “c” or even a semicolon). The “B1 R0” represents building levels. That means one building level and no roof levels. So when surveying, you can mark housenumbers as well as building levels (Currently I haven’t implemented this feature). The plus and minus buttons allow you to increment the number.

Add note

Long pressing on the map allows you to add a note.


So far those are the features I have added. In the future here are some of the features I think would be useful:

  • Upload directly to openstreetmap
  • Long press on one of the arrows to automatically add a housenumeber which is an increment higher than your previously added number (this could speed up things by a huge amount). For example, if you had added number “24” on the left, long pressing the left arrow would automatically add number 26.
  • Centre to current location
  • Alternative UIs for adding housenumbers that are suited for other countries. This could include alternative alphabets (for example, this would be useful in Russia).
  • Support for creating addr:interpolation ways between two housenumbers you have added. (This would be really useful for quickly collceting housenumbers for places like North America with gridded streets).

Discussion

Comment from Raretrack on 17 January 2021 at 15:12

I’ve taken it upon myself to map all (well, most!) of the buildings in my town, and have been a bit daunted by the thought of addressing them afterwards. This tool will be very helpful with doing that.

How about Housemapper?!

Comment from Strubbl on 17 January 2021 at 16:06

Nice effort so far. I like that you concentrate on the house number mapping first and make it work.

I would suggest the app name: Address Mapping.

Comment from nickjohnston on 17 January 2021 at 19:11

Hi,

This looks like a promising way for improving address coverage in OpenStreetMap. I’d probably lean towards “Address Mapper” or similar as the name. (I’m not sure about the “Housemapper” suggestion since the app presumably isn’t limited to just houses.)

I have a few other comments:

  • The address prediction logic in Vespucci works reasonably well. Have you looked at that?
  • Please support switching to a keyboard so that house names can be entered too.
  • You mention you want to add direct upload to OpenStreetMap. What happens with the data now? Also, I’m unclear if this is just adding markers, or actually changing OSM data directly. (Sorry if I’ve missed something.)
  • For imagery, can you use Editor Layer Index?
  • It would be great if the app could also support splitting buildings (like Terracer, and also splitting on arbitrary points, and at half way along one not necessarily straight edge).

Thanks :)

Comment from IpswichMapper on 17 January 2021 at 19:38

@nickjohnston

You can click on the textbox to open up the keyboard. This is a feature of all basic textboxes in android.

The address prediction logic in Vespucci works reasonably well. Have you looked at that?

As for Vespucci’s prediction logic, I don’t know how it works, but here is how mine works:

If the housenumber is an integer, I simply increment that integer. If it isn’t, I strip the housenumber of all of the non-integer characters, then increment the resulting integer.

This works, for example, to increment “26a” to “27”, but it won’t work for something like “19-100” to “19-101”.

So far, I don’t think that is the most important thing.

You mention you want to add direct upload to OpenStreetMap. What happens with the data now? Also, I’m unclear if this is just adding markers, or actually changing OSM data directly. (Sorry if I’ve missed something.)

It is saved as a “.osm” file on your phone which you can send to your computer and open in JOSM. This is how Keypad-Mapper 3 works as well.

It would be great if the app could also support splitting buildings (like Terracer, and also splitting on arbitrary points, and at half way along one not necessarily straight edge).

This app currently doesn’t work with OSM data, I don’t see much reason for it to right now. Maybe when uploading data to OSM it would be a good idea to check for duplicates, but right now you when you open the osm file in JOSM , JOSM will take care of that.

JOSM also takes care of Terracing, so what reason is there to have this feature in the app?

For imagery, can you use Editor Layer Index?

I’ll look into it since it probably lists all the imageries that can be used to edit OSM data.

Comment from nickjohnston on 17 January 2021 at 20:28

As for Vespucci’s prediction logic, I don’t know how it works, but here is how mine works:

If the housenumber is an integer, I simply increment that integer. If it isn’t, I strip the housenumber of all of the non-integer characters, then increment the resulting integer.

This works, for example, to increment “26a” to “27”, but it won’t work for something like “19-100” to “19-101”.

Thanks for the explanation. Given a few house numbers, the prediction in Vespucci handles odd and even numbers correctly too, which is useful.

This app currently doesn’t work with OSM data, I don’t see much reason for it to right now.

So the output is a .osm file which effectively just contains markers? For example, if I add numbers for three houses in the app, I’ll have to add those numbers to the houses again in JOSM?

Comment from IpswichMapper on 17 January 2021 at 20:35

I went to the Vespucci page you described, and there is a multi-line comment explaining exactly how it works. Again, it seems much more complicated than what I need it to be. Vespucci’s algorithm uses data that already exists in OSM, yet my app won’t download any OSM data just yet.

So the output is a .osm file which effectively just contains markers? For example, if I add numbers for three houses in the app, I’ll have to add those numbers to the houses again in JOSM?

Effectively, yes. The correct OSM terminology is nodes, so it is a file that effectively contains multiple housenumber nodes. However, since they are positioned correctly unlike Keypad-Mapper 3, all that needs to be done in JOSM is download the surrounding OSM data and upload. (The validator will find any errors relating to the housenumbers you mapped).

Comment from nickjohnston on 17 January 2021 at 20:51

Effectively, yes. The correct OSM terminology is nodes, so it is a file that effectively contains multiple housenumber nodes.

OK, I see. I usually place house numbers on the building ways themselves (it seems neater to me), so I suppose your app won’t be able to do that until if/when you start using OSM data. I understand that complicates things though.

Comment from IpswichMapper on 17 January 2021 at 20:55

You can pretty easily do this in JOSM though. Simply select all the housesnumbers and buildings on a street using free-select, then press Ctrl-Shift-J to merge all the ADDRESS nodes with buildings.

I described this in more detail in my first diary entry

Comment from nickjohnston on 17 January 2021 at 21:38

You can pretty easily do this in JOSM though. Simply select all the housesnumbers and buildings on a street using free-select, then press Ctrl-Shift-J to merge all the ADDRESS nodes with buildings.

Are you referring to this diary entry? I see the bit about free-select / lasso, but not about joining address nodes to building ways. Did I miss it?

In my version of JOSM, Ctrl-Shift-J switches to rotation mode. I have utilsplugin2 enabled.

Comment from IpswichMapper on 18 January 2021 at 11:53

Yes, you are correct, the diary entry didn’t go over merged addresses with buildings. The shortcut is probably different for you, but you can find the tool by going to top menu bar and then: “Data” –> Merge Address Points

Comment from westnordost on 18 January 2021 at 12:43

How does the app decide what is left and what is right? From current view direction (compass)? If yes, this means that the map also rotates with the compass? This might turn out to be a bit jittery.

I have a few suggestions on the interface: * When pressing < or >, does the keypad come up on fullscreen immediately? If yes, I’d suggest to have only a minimal interface with +/- buttons first (it looks like this is the case in your first screenshot) * If the +/- are to increase/decrease the housenumber that is currently being added: the +/- could show in place of the < and > buttons because those should have no function while in the process of adding a new housenumber

On the name: * Address Pad * IpswichPad * Left And Right * 3LR (look left, look right) * LRPad * Address Mapper * or if KeyPad Mapper is not taken anymore…

Comment from westnordost on 18 January 2021 at 12:43

sheesh, the list formatting doesn’t really work, does it? :-/

Comment from Mateusz Konieczny on 18 January 2021 at 13:02

FastAddress

MapAdddress

AddAddressToOSM

Comment from IpswichMapper on 18 January 2021 at 13:02

How does the app decide what is left and what is right?

It doesn’t. The only functional purpose of the left and right buttons is to remember the previous housenumber you entered on that side of the road so that you can increment it.

For example, if I entered “24” on the left side, pressing the left button again will show “24” as a hint in the textbox. You can then increment up to “25” by pressing the plus button (and pressing it again to go to “26”). That works like streetcomplete.

Housenumbers are placed on the map underneath the crosshair. You position the crosshair to where the house actually is, then add the address. (This is why alternative background imageries to the default osm-carto is useful, so that you can see where the houses are even if they aren’t drawn in OSM).

I have a few suggestions on the interface: * When pressing < or >, does the keypad come up on fullscreen immediately? If yes, I’d suggest to have only a minimal interface with +/- buttons first (it looks like this is the case in your first screenshot)

It comes up as fullscreen immediately, however, my solution to that is to implement onFling and long press actions for those buttons.

  • Long press will automatically add a housenumber to the map that is a set increment higher/lower than your previous housenumber. For example, if your increment is 2, and your previous housenumber is “24”, long pressing will automatically add “26” with the same housenumber.
  • Swipe action does this same thing, however it also adds the previous Building levels. This is in case the address you want to add has the same building levels as the previous address.
  • The increment & streetname can be set in the Keypad. This is useful because you can check the increment and change the streetname when you change streets, and then use the longpress or swipe features for all the other housenumbers on the street.

Comment from IpswichMapper on 19 January 2021 at 12:06

https://stackoverflow.com/questions/65791074/failed-to-query-the-value-of-property-packagename-manifest-file-does-not-exis

I’ve uploaded my code to github. Can’t get the app to build, so I can’t generate a signed apk. (However the app can run however). Above is the github issue I created. If I can get it to work, I will release a signed apk.

Comment from IpswichMapper on 21 January 2021 at 20:25

I’ve now releases the app on github:

https://github.com/IpswichMapper/SwiftAddress/releases

You can find the APK under “assets”

Comment from BrackoNe on 23 January 2021 at 13:06

Hi!

I have to tell you that I’m amazed by your project (positively, of course!) I was involved in a similar project years ago, but it was a private project at that time.

Anyway, I really like your app. However, here’s some feedback that I hope you will find useful: - if you are using the app in portrait mode, and once you switch to landscape, it loses your location and shows the initial zoom level; - North orientation is missing. There should be a button to put the map in 2D North orientation; - there should be a button to zoom at your position automatically; - when you try to decrease the house number by pressing the ‘-‘ (minus) button, it doesn’t work - nothing happens; - the app doesn’t keep the name of the street. It would be VERY useful to use reverse geocoding to get street names around you. I said ‘VERY’ because in bilanguage countries, streets must be written in Cyrillic - when you have English settings on your phone, it might be a tough task; - there is no button for houses without house numbers (more info: nohousenumber=yes); - if you have the last number ‘192a’, and you press the ‘+’ button, the app crashes; - my android is using dark mode, but numbers are not visible (at all) in dark mode, but the letters ‘a’, ‘b’, etc. are visible since these are silver.

I hope you will find it useful, and it will help you make your app even better!

All the best, Nemanja

Comment from IpswichMapper on 23 January 2021 at 13:42

if you are using the app in portrait mode, and once you switch to landscape, it loses your location and shows the initial zoom level

I have disabled landscape mode completely now. The Keypad does not fit at all in landscape mode, there is no point trying to get it to work.

he app doesn’t keep the name of the street.

I have just fixed that, it will work in the next release (v0.1.2)

I said ‘VERY’ because in bilanguage countries, streets must be written in Cyrillic - when you have English settings on your phone, it might be a tough task;

The old “Keypad Mapper 3” had this feature. It is definately something I will implement soon, it would be really useful not having to type out the street-name every time you change street.

There are a list of missing features on the github page.

there is no button for houses without house numbers (more info: nohousenumber=yes);

Currently in the keypad there is a swipe up option for “housename” but that hasn’t been implemented. If there is no housenumber or housename or any form of address there, you can leave a note and add that in a desktop editor. At that point there isn’t really an address there anyway.

f you have the last number ‘192a’, and you press the ‘+’ button, the app crashes;

The plus button is crashing for me also, I’ll fix this.

Comment from IpswichMapper on 23 January 2021 at 17:42

Just added street prediction using reverse geocoding & fixed the increment buttons in the latest release.

Comment from SGorskiy on 25 January 2021 at 05:07

it would be great if the author publishes the application on f-droid and google play.

Comment from zorque on 27 January 2021 at 15:00

Thank you so much! I loved OSMPad many years ago when I did house number mapping, then I didn’t have the need for a while. Now I’m back in an area with lots of numbers missing so I was looking out so exactly that! (I even thought about starting my own app project with absolutely no experience)

Two things I noticed right after opening the app. It doesn’t show GPS. In OSMPad I liked how you could follow it, then place your marker and it would jump back to GPS afterwards. Also with my fat fingers, I’d appreciate if I could fix the orientation.

But even as it is now it’ll help me big time!

Comment from IpswichMapper on 27 January 2021 at 16:09

Also with my fat fingers, I’d appreciate if I could fix the orientation.

Yes, I plan to add this

In OSMPad I liked how you could follow it, then place your marker and it would jump back to GPS afterwards.

Wouldn’t this be annoying? For example, if you have a terrace of 4 housenumbers, you could add them in quick succession (long pressing on the arrow adds a housenumber that is 2 integers higher than the previous one. This increment of “2” can be changed in the keypad using “modify increment”). However, if the map snapped back to your location, that would be quite annoying. You would have to go back to the terrace everytime.

It doesn’t show GPS.

I don’t understand what the probelm with the GPS is. I used the default code provided by OSMdroid to add a location overlay, and it seems to work fine for me.

What type of location are you getting? Are you only getting Internet/Bluetooth based location (e.g. Google Location Services)? Are you getting location from your built in GPS sensor?

Comment from BrackoNe on 27 January 2021 at 17:15

@zorque Please make sure that you’re using the latest version. Currently the latest is v0.1.3.

Comment from zorque on 27 January 2021 at 17:27

Thanks for your quick reply.

IIRC in OSM Pad you could follow/unfollow the GPS. When you followed and panned the map it would snap back to the GPS position after a few seconds. Enough time to place a note, even the next one. While you walked for a bit to the next (detached) house it would centre on GPS again. Actually for regular patterns of numbers I only took a note at junctions or any irregularities… I’m lazy after all. I do the actual work in JOSM anyways.

GPS is working now, no idea what was wrong earlier, I had a signal in other apps. I would have been surprised if that was missing. I can’t see a focus on GPS button tho!? Upon first opening my map was centered on a different part of the world.

Thinking of it, I start liking the option to rotate the map :)

Comment from IpswichMapper on 27 January 2021 at 20:33

I can’t see a focus on GPS button tho

Just added this feature. You will be able to use it in the next release (v0.1.4)

Upon first opening my map was centered on a different part of the world.

Currently the app centers to your location when you open the app.(provided you don’t tap on the map while it is centering). This has worked for other people, so I don’t know what the problem is here. If you want to try and see that working, make sure to remove the app from your recents and try opening it again.

Comment from zorque on 27 January 2021 at 20:55

Great stuff, thanks again.

I believe the map was centered on the last location I was looking at (in a different app). As it didn’t pick up my position it remained there. Works perfectly now! Can’t wait to go out and survey :)

Comment from IpswichMapper on 27 January 2021 at 20:57

Just releeased a new version with the zoom, recent and reorient buttons :)

Comment from BrackoNe on 27 January 2021 at 21:21

I’m having a problem to get .osm file. Can you please give me a direct path where the app is saving the files. I do not have SwiftAddress in root of internal service. However, there is Android/data/com.mapitall.SwiftAddress, but again there is no save file.

Can you make a dialog to ask the usere where to save the file?

Comment from IpswichMapper on 27 January 2021 at 21:46

Check if there is a folder called “keypad mapper”.

Otherwise there is probably some bug

Comment from IpswichMapper on 27 January 2021 at 21:47

If there is a bug please open a github issue instead of trying to explain it here. It will be more organised there.

Comment from IpswichMapper on 20 February 2021 at 16:02

Hello everyone. If anyone is still reading thia, I’d like to mention that I have just released version 0.2 of the app, with lots of new features.

There are a few more features left to add, but after that, if there aren’t any major bugs, I’ll ask F-droid to package the app.

So it would be great if people cpuld try and test the app to see if it works. If you are going to survey, please only do short surveys in case something goes wrong

Thanks, IpswichMapper

Comment from BrackoNe on 20 February 2021 at 17:35

By reading release notes, it seems to be a GREAT update!

Comment from stephan75 on 10 March 2021 at 20:13

We have a page about SwiftAddress in the OSM wiki now:

https://wiki.openstreetmap.org/wiki/SwiftAddress

Comment from Strubbl on 10 March 2021 at 20:37

It’s confusing, that in the source code of the wiki page it’s price=free, but in the rendered version it’s “License: (free of charge)”. Although the license is GPLv3 and the price is free

Comment from MaggusK on 21 March 2021 at 21:10

I did some surveys and tested Version 0.2.1 with

  • Nokia 5.1, Android 10
  • Huawei P20 Lite, Android 9
  • Samsung S3 Mini, LinageOS 14.1 (Android 7.1.2)

Everything worked great. Keep on your good work!

Log in to leave a comment