OpenStreetMap logo OpenStreetMap

Users' Diaries

Recent diary entries

UMBRAOSM Brazilian Openstreetmap Mappers Union provides several video classes on its YouTube channel. Access our content and enjoy mapping!

Video lessons for mapping objects in OpenStreetMap.

How to map buildings using the Buildings_Tools plugin in the Josm Editor

https://www.youtube.com/watch?v=nVPdf9MjvjQ

How to map a neighborhood boundary in OpenStreetMap with a custom background layer.

https://www.youtube.com/watch?v=sTe-1N2QvLY&t=2s

How to map in OpenStreetMap with the help of Mapillary images using the ID editor.

https://www.youtube.com/watch?v=dmDW5LhfQpk&t=52s

How to customize the colored painting style to offset street names in the JOSM Editor.

https://www.youtube.com/watch?v=4jOnFjtuI10&t=57s

Enabling remote control and expert mode in the JOSM editor

https://www.youtube.com/watch?v=H8qL_l18f7c

UMBRAOSM, the Union of Brazilian OpenStreetMap Mappers, has been creating video lessons for beginner mappers, and even experienced mappers can use the video lessons for mapping neighborhood boundaries, mapping buildings in JOSM, and installing plugins, as well as using Mapillary. Visit our channel on YOUTUBE. https://www.youtube.com/@umbraosm

Umbraosm, the Union of Brazilian OpenStreetMap Mappers https://www.youtube.com/@umbraosm

Access our Telegram channel https://t.me/grupoumbraosm

Posted by ChicoXXX on 17 March 2025 in Spanish (Español).

Con motivo del Open Data Day de este año invité a diferentes instituciones educativas de la Comarca Lagunera para recibir talleres de mapeo básico entre el 1 y el 7 de marzo.

Logo Open Data Day

El taller “Mapeando tu escuela” lo impartí en:

Espero más universidades se sumen a este evento el siguiente año.

En un reciente análisis publicado en mi blog, exploré la distribución de piscinas en Santa Cruz de la Sierra utilizando datos de OpenStreetMap. La hipótesis detrás del estudio es que la presencia de piscinas privadas puede ser un indicador del nivel socioeconómico de una zona, considerando los costos asociados a su construcción y mantenimiento. Puedes leer más sobre esto en el artículo completo aquí: ¿Dónde están las piscinas?

Densidad de piscinas en la ciudad de Santa Cruz, Bolivia

Previo al análisis, dediqué aproximadamente tres semanas a mapear alrededor de xxxx piscinas en el área metropolitana de la ciudad, utilizando JOSM para la edición de datos. Este esfuerzo fue clave para mejorar la cobertura de OSM en la región y asegurar que la base de datos reflejara con mayor precisión la distribución real de estas infraestructuras. Durante este proceso, utilicé imágenes satelitales (Imágenes aéreas de ESRI mundial).

Para el análisis espacial, empleé exclusivamente software libre. La extracción de datos se realizó con el complemento QuickOSM en QGIS, lo que permitió filtrar rápidamente las entidades etiquetadas con leisure=swimming_pool. Luego, mediante técnicas de geoprocesamiento, se analizaron patrones espaciales y su relación con la estructura urbana de la ciudad.

La visualización de los datos en mapas temáticos mostró una fuerte concentración de piscinas en ciertas zonas, alineándose con las áreas de mayor poder adquisitivo según otras fuentes de referencia. Este tipo de análisis basado en datos abiertos resalta el potencial de OSM no solo para la cartografía colaborativa, sino también como insumo para estudios de geomarketing y planificación urbana.

El uso de OpenStreetMap y herramientas de software libre como QGIS abre muchas posibilidades para la investigación aplicada. Si tienes interés en análisis similares o en mejorar la cobertura de datos en tu ciudad, contribuir a OSM con más detalles sobre equipamiento urbano es una excelente manera de fortalecer la base de datos.

Si tienes comentarios o experiencias similares usando datos de OSM para análisis espaciales, ¡me encantaría conocerlos!

Location: La Adobería, Centro, Municipio Santa Cruz de la Sierra, Provincia Andrés Ibáñez, Santa Cruz, Bolivia
Posted by kumakyoo on 14 March 2025 in English.

Please note: This blog post is part of a series of blog posts about the new OSM file format “OMA”. This is the second post. At the end of the article you’ll find links to the other blog entries.

 

This time I will give you an example of how to query Oma files. I wrote a prototype of a library for working with Oma files. I called it OmaLibJava.

To explain how to use this library, let’s say, we want to create an overview map of all the power facilities in a certain town.

 

The Classical Approach

The classical approach with OSM files would be, to first reduce the size of the file by creating a smaller file containing only the data of interest. This is typically done in two steps: remove everything that is not a power facility / remove everything that is not in the town. The order of these two steps is not important for the result, but might have a huge impact on the duration of the process.

Although it is not necessary – or even counterproductive – this can easily be done with Oma files too. For example, the following small Java program extracts all power facilities of Germany:

import java.io.*;
import de.kumakyoo.omalibjava.*;

public class ExtractPower
{
    public static void main(String[] args) throws IOException
    {
        Extractor e = new Extractor("germany.oma");
        e.addExtract(new BlockFilter("power"),"power.oma");
        e.run();
    }
}

Running this program on germany.oma on my computer takes 8.5 seconds. It creates the file power.oma, which is about 22MB in size and contains all power facilities of Germany.1

Let’s have a closer look at the program: the library contains a class called Extractor, which reads an Oma file (here germany.oma) and writes several extracts simultaneously (here only one, called power.oma).

An important part is the filter BlockFilter("power"). This tells the extractor to keep only elements with the key power. I’ll tell you more on filters in a moment. But first I want to show you why you don’t need this step.

 

The Oma Way

Here is a rough sketch of a program that draws power facilities of the town Trossingen:

public class DrawPower
{
    public static void main(String[] args) throws IOException
    {
        OmaReader r = new OmaReader("germany.oma");

        Filter f1 = new BlockFilter("power");
        Filter f2 = new LifecycleFilter();
        Filter power = new AndFilter(f1,f2);

        Filter f3 = new TagFilter("name","Trossingen");
        Filter f4 = new BlockSliceFilter("boundary","administrative");
        Filter f5 = new AndFilter(f3,f4);
        Filter town = new PolygonFilter(new Polygon(r,f5));

        r.setFilter(new AndFilter(power, town));

        while (true)
        {
            Element e = r.next();
            if (e==null) break;

            // do something with e
        }
    }
}

This time we will use a class called OmaReader. This class provides access to the elements in an Oma file. As we are not interested in all elements, we provide a Filter with r.setFilter(...). After having setup the filter, the elements that pass the filter can be queried in a simple loop.

The filter combines two other filters: One (called power) for the power facilities and one (called town) for the town (here Trossingen).

These two filters are very efficient, that is, almost only the parts of the Oma file need to be read in that contain the data we are interested in. On my computer, the above program only takes 1.4 seconds. That’s why we do not need an extract – the program wouldn’t be any faster if we used an extract containing only the power facilities of Trossingen.

 

Filters

Let’s take a closer look at the filters: The power filter is a combination of two other filters: The BlockFilter, which we already know from above and a LifecycleFilter.

A short remark on this second one: OSM data can contain a lifecycle prefix on every tag. If such a tag exists on the key of an element, it is removed in Oma files and added as a separate tag with the key lifecycle. The advantage of this is faster access. The disadvantage is that all elements now pass a BlockFilter, even those with a lifecycle prefix. That’s where the LifecycleFilter jumps in: It prevents elements with lifecycle prefix from being passed, because we do not want to show demolished or planned power facilities.

The town filter is more complicated: First, two filters are combined: One that looks for elements with the name “Trossingen” and one that looks for administrative boundaries. Combined, this results in the boundaries of Trossingen.2

This filter is used to create a Polygon. Here, something very important happens under the hood: This polygon is not created from a poly file (that would also be possible) or provided in another way. No, it’s extracted directly from germany.oma using the same OmaReader that we’re going to use to extract the power facilities.

Please note that this would not have been possible if you had extracted power.oma in a first step using the classical approach, because the boundaries would have been lost in this case.

The result is a Polygon3, which is passed to a PolygonFilter. This PolygonFilter provides access to all the elements that are inside of the polygon.

All together this results in the following graph:4

A graph of all used filters

 

Do some Drawing

I cannot go into all the details of drawing a map. For a first impression, I will just draw a small circle for each node, a line for each way and an area for, well, each area.

For a map, you often draw some background areas first. The second step is to add the ways and finally some icons for the nodes.

One might be tempted to read in all the power elements first, sort them and draw them in whatever order seems appropriate. Unfortunately this could take up a lot of memory.

Another approach would be to query the elements in the order you need them. This is shown in the following sketch of a program:

Filter power_of_town = new AndFilter(power, town);

r.setFilter(new AndFilter(power_of_town, new TypeFilter("A")));
while (true)
{
    Area a = (Area)r.next();
    if (a==null) break;

    // draw area
}

r.setFilter(new AndFilter(power_of_town, new TypeFilter("W")));
while (true)
{
    Way w = (Way)r.next();
    if (w==null) break;

    // draw way
}

r.setFilter(new AndFilter(power_of_town, new TypeFilter("N")));
while (true)
{
    Node n = (Node)r.next();
    if (n==null) break;

    // draw node
}

First, all power elements of type area are queried and painted. Then the ways and finally the nodes. This takes about the same time as querying them all together.

And this is, what the result might look like (took 1.4 seconds to generate):

A map of all power facilities in Trossingen

I was asked how this scales. If we were to draw all the power facilities of whole germany, how long would it take? For this, replace “Trossingen” by “Deutschland” in the program above. It took 5.7 seconds on my computer and this is the result:

A map of all power facilities in Germany

 

See also


  1. For comparison: osmium needs 2:24 minutes for this job (on a pbf file) and osmfilter uses 1:47 minutes (on an o5m file). All three results differ: First of all, osmfilter adds more than 40,000 wrong elements. Oma adds power elements with life-cycle-prefixes, while the other two omit them. Omitting them with Oma would be easy (see later in the main text), but adding them with the other two is more difficult. And finally, there are a lot of differences on how Oma files handle areas and relations. 

  2. You should make sure, that there is only one “Trossingen” in your file. If there are several such areas, you will have to take some other measures to characterise, which “Trossingen” you are interested in. Fortunately, there is only one “Trossingen” in Germany. 

  3. It’s actually a collection of areas (with holes), which is optimized for fast inside queries and useless for almost everything else. 

  4. The graph contains a TypeFilter that is implicitly added in the constructor of Polygon, restricting the result of the query to areas. 

Objectif

Sur une idée de benoitdd, faire des stats sur les changeset ayant modifié des adresses en France en 2024

Méthodo

Sur OSMCha, préparation d’un filter (une requête) avec :

  • filtre sur la modification de tag addr:street ou type=associatedStreet
  • filtre sur la France
  • filtre sur date pour récupérer 1 seule journée (sinon retour trop gros, pb de timeout + limitation à max 500 changeset dans le retour de toute façon)

Puis avec un script ruby, en utilisant l’api OSMCha :

  • boucle sur les jours du 01/01/2024 au 31/12/2024
  • mise à jour des dates de début date__gte et de fin date__lte dans la requête “aoi” grâce à l’endpoint PATCH aoi_partial_update
  • récupération des changesets grâce à l’endpoint GET aoi_changesets_list
  • lecture du geojson pour extraction en tsv des infos intéressantes

Puis traitement sur excel

Résultats

Le tableur des données brutes est dispo ici : https://lite.framacalc.org/osmfr-adresses-2024-adcm

j’y ai cru mais ça ne marche pas !!!!!

Par exemple le filtrage par type=associatedStreet ne trouve pas les changesets avec des créations de relation, uniquement les modifications, bizarre. Sur un autre exemple, le filtrage par addr:street=* inclut un changeset créant 3 nodes, mais qui n’ont pas ce tag dans leur version #1, bizarre aussi.

Bon, ben on continue avec ces updates relativement au hasard 😅

Ce mappeur OpenStreetMap DÉNONCE certaines mauvaises utilisations de ces panneaux à Seraing - Une petite sortie live écourtée où je montre des panneaux “zone de rencontre” mal utilisés aux Biens Communaux. J’avais prévu quelque chose d’un peu plus long au départ, mais un des panneaux avait été rectifié entretemps et je me suis retrouvé bien con lorsque je l’ai vu sur place 😅

Améliorons Seraing (sur OpenStreetMap) - Épisode 42 (Entre mise au point et trottoirs) - Une session OSM classique qui était plus un prétexte pour parler des derniers mois d’un point de vue personnel et d’annoncer quelques changements prévus pour la chaîne Youtube

Projet OSM #1 : ce mappeur AMÉLIORE le Domaine d’Épinlieu à Mons (sur OpenStreetMap) - Première (et pour le moment seule, j’y viens) vidéo d’un nouveau concept où je prends un quartier ou quoi et montre toutes les modifications que je fais dessus jusque la fin du “projet”

Le “problème” de ce concept est que avant de faire cette vidéo, j’ai effectué un boulot conséquent à Chapelle-lez-Herlaimont pour mettre à jour principalement des bâtiments qui étaient mappés assez sommairement (des rangées de maisons étaient simplement de gros blocs avec aucune adresse, mauvais tags, bâtiments manquants, etc) et ça a pris un bon lot d’updates et évidemment de temps pour arriver à mon but initial. C’est de ce projet hors écran que m’est venu l’idée d’enregistrer certains projets plus modestes pour Youtube et montrer un avant/après.

Peu de temps après la vidéo sur Épinlieu, j’ai remarqué qu’un utilisateur (coucou Le_Sharkoïste 👋 ) était repassé sur Chapelle-lez-Herlaimont pour effacer une bonne partie de ce que j’avais fait et importer… la même chose, parfois avec des erreurs de tags (des immeubles d’appartements sont devenus des corps de ferme par exemple 🤷‍♂️ ). Bref, ma motivation pour faire quoi que ce soit dans le Hainaut est plus ou moins au zéro absolu depuis lors, d’autant plus que la même personne est passé par Épinlieu également. Au moins mon travail n’a pas été effacé ce coup-ci, mais ça reste de l’import bien peu utile quand je me souviens du nombre de zones où les bâtiments sont mappés grossièrement sans adresse voire même pas du tout (et je te vois à Angleur, détricoter des maisons qui n’en avaient pas besoin 👀 ).

Pour être clair, je n’ai rien contre les imports massifs et comprends bien que c’est parfois un mal nécessaire parce que les ajouts “à la main” comme je le fais prendrait des plombes, mais autant le faire pour des zones qui en ont vraiment besoin et pas récemment mises à jour par exemple (ou où ce n’est pas nécessaire et même un retour en arrière comme à Angleur).

Où j’en étais moi 😅 ?

Améliorons Seraing (sur OpenStreetMap) - Épisode 43 (Le boulevard urbain est enfin continu!) - Une session où je mets à jour le nouveau tronçon du boulevard urbain après une passage rapide en moto

Ce mappeur OpenStreetMap FAIT DU PSEUDO URBEX dans le quartier de la Chatqueue à Seraing - Une sortie où je visite quelques anciens sentiers vicinaux et fait quelques trouvailles que je rajoute sur OSM par la suite

Ce mappeur OpenStreetMap corrige la réserve de Rognac, puis vous montre un SECRET sur Mapillary - Une session où je corrige le tracé de la réserve de Rognac suite à une note… du précédent mappeur 😅 , puis vous montre le tracé de l’ancien tram vicinal 713 dans le bois de la Neuville et la réserve (tous les deux privés) grâce à Mapillary

Améliorons Seraing (sur OpenStreetMap) - Épisode 44 (Première sortie VTT de 2025) - Une session où je fais quelques petites modifications suite à ma première sortie VTT de l’année

Voilà pour ce long update et mon coup de gueule. Pour le moment, je n’ai pas vraiment de plan précis pour être honnête et j’attends surtout de nouvelles images satellite du SPW pour reprendre certains projets comme les trottoirs.

A+ 😄

Location: Les Biens Communaux, Ougrée, Seraing, Liège, Wallonie, 4100, Belgique
Posted by coteyka on 13 March 2025 in Russian (Русский). Last updated on 14 March 2025.
Зачем же? Поправить мои правки!

Не так давно я добавил магазины сети Батон на карту, а сейчас начал расставлять магазины сети Русский Разгуляйка.
Проблема? Я расставлял POI с точностью до адреса дома, а не до двери. Поэтому, если кому то нечего делать, приглашаю вас рассмотреть мои пакеты правок[3][4], и обращаясь к Яндекс Панорамам (или любым другим источникам данных) разметить POI’шки точнее, к дверям.
Буду рад помощи, и спасибо!

upd 14.03.2025

самостоятельно поправил магазины сети “Батон”

Location: Покровка, Центральный район, Красноярск, городской округ Красноярск, Красноярский край, Сибирский федеральный округ, 660000, Россия

Went back to Henderson to finalize the updates. I think i updated all i could with out starting to assume details. Also some mappers suggested straightening out the roads, so i did that across the entire town.

Henderson, Nebraska

Final Edit: henderson nebraska after

as a reminder, this is how it started:

Henderson nebraska Before

As a side note, bing was working on JOSM for a minute and then stopped again.

Location: Henderson, York County, Nebraska, United States
Posted by JanezPavelZebovec_import on 11 March 2025 in Slovenian (Slovenščina). Last updated on 17 March 2025.

在博客中查看

这个OpenStreetMap变更集的范围原本应是12*8km,范围不超过福州四区的福马路部分。但在我编辑地图期间有人修改了台州部分的104国道,八杆子打不着的地方硬是因为一个104国道的“关系”需要在发布变更时选择使用本次编辑亦或是使用上个版本的编辑(放弃这次修改)。这两个选择极具迷惑性,不会有超出选项栏提示字以外的更多解释。且ID编辑器没有第三个选项,你不能同步后再修改。

相同的逻辑,如果我分解了连霍高速连云港路段作为路堤,但在我发布这些修改前有人在伊犁的连霍高速入口增加了收费站路段分割车道。我的变更集范围岂不是就扩大到半个中国了?这时候,任何人,在伊犁以东南,连云港以西,徐州以北的范围点击网站顶部导航栏的“历史”就能看到这个本应该是连云港范围的变更集莫名其妙的就出现在了历史列表里?

(变更集163353046)

(在账户三百余个变更集中脱引而出的巨大的变更集范围)

Location: 上岐村, 福州市, 福建省, 350015, 中国