OpenStreetMap

Diary Entries in English

Recent diary entries

Discovering the New Casino in Rio de Janeiro

Olá fellow mappers,

I recently had the opportunity to map an exciting new development in Rio de Janeiro—a brand-new casino complex. This addition is poised to become a significant attraction in the city, and I wanted to share the updates and my experiences with the community.

New Casino Complex Details

The new casino, Casino Rio, is located in the vibrant neighborhood of Barra da Tijuca. Here are the key details I’ve added to the map:

Casino Rio at Avenida Lúcio Costa and Rua João de Barros (Latitude: -23.0035, Longitude: -43.3445) Main Building: A sprawling structure featuring gaming floors, restaurants, and entertainment venues. Hotel Tower: A luxury hotel adjacent to the casino, providing accommodations for visitors. Parking Facility: A multi-story parking structure to accommodate the influx of guests. Enhanced Accessibility and Amenities

With the new casino, several infrastructure enhancements were necessary. I updated the following:

Avenida Lúcio Costa: The main road leading to the casino has been expanded to four lanes to handle increased traffic. Pedestrian Walkways: New pedestrian pathways have been added to ensure safe access from nearby hotels and beaches. Public Transport Links: The casino is now well-connected with updated bus routes and a new shuttle service from key locations in Rio de Janeiro. Challenges and Observations

Mapping this development was a unique challenge. The area is rapidly developing, and much of the satellite imagery was outdated. I had to rely heavily on recent visits, local knowledge, and available GPS traces to ensure accuracy. If anyone has more recent data or can verify details on-site, your input would be invaluable.

Future Plans

I’m thrilled to see how this new casino will influence the local area and attract visitors from around the world. If any mappers in Rio de Janeiro or those familiar with the area have additional insights or would like to collaborate on further updates, please reach out. Our collective efforts will help keep the map as accurate and useful as possible.

Happy mapping!

Tags: #CasinoRio #RioDeJaneiro #urbanmapping #community #newdevelopments

Location: -23.004, -43.345

Exploring the Rapid Changes in Vila Olímpia, São Paulo

Olá fellow mappers,

This past week, I dedicated my time to mapping the ever-changing neighborhood of Vila Olímpia in São Paulo. The area has seen significant development lately, and I wanted to share my updates and experiences with the community.

New Commercial Buildings and Parks

Several new commercial buildings have been completed, transforming the skyline of Vila Olímpia. I updated the map with the following notable additions:

Infinity Tower at Rua Funchal and Avenida Juscelino Kubitschek (Latitude: -23.5955, Longitude: -46.6845) JK Iguatemi Mall near the intersection of Avenida Juscelino Kubitschek and Avenida Chedid Jafet (Latitude: -23.5950, Longitude: -46.6849) Additionally, a new park, Parque do Povo, has been established along Avenida Henrique Chamma (Latitude: -23.5956, Longitude: -46.6872). This park is a great green space featuring walking paths, playgrounds, and exercise areas. It’s now accurately represented on our map!

Enhanced Road Network

With the new developments, there have been changes to the road network as well. I made the following updates:

Rua Gomes de Carvalho now extends to connect with Avenida Brigadeiro Faria Lima (Latitude: -23.5952, Longitude: -46.6851). Rua do Rocio has been widened to accommodate increased traffic near the new commercial hubs (Latitude: -23.5948, Longitude: -46.6856). I’ve also added several pedestrian walkways and bike paths to improve the map’s detail and usability for non-motorized users.

Challenges and Collaboration

Mapping these changes presented a few challenges. The area is developing rapidly, and some of the satellite imagery was not up-to-date. I relied on local knowledge and GPS traces to ensure the accuracy of my updates. If anyone has more recent data or can provide on-the-ground verification, your help would be greatly appreciated!

Future Plans

I’m excited to see how Vila Olímpia continues to evolve and look forward to mapping these changes. If any mappers in São Paulo are interested in collaborating or have suggestions, please feel free to get in touch. Together, we can ensure our map remains a reliable resource for everyone.

Happy mapping!

Tags: #VilaOlimpia #SãoPaulo #urbanmapping #community #newdevelopments

Location: -23.595, -46.685

سایت حضرات با بونوس ویژه:hazaratiha.com حضرات یکی از سایت‌های شرط‌بندی و کازینو آنلاین ایرانی است که در سال 1396 فعالیت خود را آغاز کرده است. این سایت دارای مجوز از Curacao eGaming است و از نظر امنیتی مورد تایید قرار گرفته است. حضرات بت طیف گسترده‌ای از بازی‌های کازینو و شرط‌بندی ورزشی را به کاربران خود ارائه می‌دهد.

برخی از ویژگی‌های کازینو آنلاین حضرات عبارتند از:

واریزی و برداشت امن و آسان:حضرات بت از روش‌های مختلفی برای واریزی و برداشت وجه پشتیبانی می‌کند، از جمله کارت‌های بانکی، پرفکت مانی، بیت‌کوین و اتریوم. پشتیبانی از زبان فارسی: تمام بخش‌های سایت حضرات بت به زبان فارسی ترجمه شده‌اند و پشتیبانی 24 ساعته فارسی نیز در دسترس کاربران است. بونوس‌ها و جوایز متعدد: حضرات بت بونوس‌ها و جوایز متعددی را به کاربران خود ارائه می‌دهد، از جمله بونوس خوش‌آمدگویی، بونوس‌های رفرال، بونوس‌های بازی‌های خاص و جوایز نقدی و غیر نقدی. تنوع بازی‌ها:** حضرات بت طیف گسترده‌ای از بازی‌های کازینو و شرط‌بندی ورزشی را به کاربران خود ارائه می‌دهد، از جمله:بازی‌های کازینو اسلات، رولت، بلک جک، باکارات، پوکر و … شرط‌بندی ورزشی:فوتبال، بسکتبال، تنیس، والیبال، کریکت و … اپلیکیشن موبایل حضرات بت اپلیکیشن موبایل برای سیستم عامل‌های اندروید و iOS دارد که به کاربران امکان می‌دهد به راحتی از طریق گوشی یا تبلت خود به حساب کاربری خود و بازی‌ها دسترسی داشته باشند.

حضرات بت یکی از محبوب‌ترین سایت‌های شرط‌بندی و کازینو آنلاین ایرانی است و به دلیل تنوع بازی‌ها، بونوس‌ها و جوایز متعدد و پشتیبانی از زبان فارسی مورد استقبال کاربران قرار گرفته است. ش

The Bangladesh Open Innovation Lab (BOIL) and OpenStreetMap Bangladesh (OSMBD) are teaming up to host the “State of the Map Bangladesh (SotMBD) ‘2024” conference, a first of its kind in Bangladesh, a national gathering focused on mapping and geospatial technology. It aims to gather all significant stakeholders, including IM professionals, NGOs, government counterparts, industry leaders, academic experts, and geospatial enthusiasts from across the nation and the globe. This inaugural event aligns with the broader “State of the Map (SoTM)” event series facilitated by the OpenStreetMap Foundation and the global OpenStreetMap Community, reflecting a global effort to enhance open mapping initiatives. Additionally, SotMBD will be integrated into the Humanitarian OpenStreetMap Team’s (HOT) Opensummit program, emphasizing its role in fostering collaboration and sharing knowledge in the geospatial community.

Set against the breathtaking backdrop of Cox’s Bazar, the longest natural sandy sea beach in the world, the extraordinary event is set to unfold that promises to captivate and inspire. Scheduled for September 28th and 29th, 2024, this unique gathering aims to unite a diverse array of participants for a celebration of community and cooperation. The tranquil and scenic beach view will be an ideal location for an event aimed at promoting connections and creating enduring memories. Cox’s Bazar, known for its breathtaking views and lively local culture, not only serves as a location but also provides an engaging experience that enhances the atmosphere and appeal of the event. The organizers are carefully curating a program that will not only leverage the scenic beauty of the area but also underscore a commitment to inclusivity and engagement. Whether you are a local resident or a visitor from afar, this event promises an enriching experience that showcases the best of what Cox’s Bazar and Bangladesh have to offer.

Participants can expect a diverse range of activities, including workshops, keynote speeches, and panel discussions aimed at fostering a deeper understanding of open-source mapping tools and their applications in addressing real-world problems. The conference will also emphasize local developments in geospatial technology and how these can be integrated with global networks to improve the quality and accessibility of map data in a regional and global context. Whether you’re a professional geographer, an information management professional, a developer, an academic, or simply someone passionate about digital collaboration, frontier technologies, and community development, SotMBD offers a unique opportunity to network, learn, and contribute to shaping the future of the geospatial industry in Bangladesh. Prepare to be inspired by keynote speeches from leading figures in the geospatial field, and don’t miss the chance to contribute your own insights in interactive sessions and panel discussions. With a focus on the practical, innovative, and transformative uses of data-driven evidential frameworks, geospatial & non-geospatial data-backed solutions, open mapping ecosystems, and, of course, OpenStreetMap in addressing local challenges, this event is not just a conference—it will be a community builder, a place for growth, and a forum for change.

Overall, SotMBD will act as a catalyst for innovation and collaboration, crucial for realizing the Smart Bangladesh 2041 vision by leveraging technology to address national challenges and enhance the quality of life for its citizens, while at the same time promising to be a trendsetter in the regional & global context.

Stay Tuned for more updates…

Location: 21.416, 91.984

We participated in the OSPP hosted by the Chinese Academy of Sciences, which stands for Open Source Promotion Plan. It is held during the summer every year and encourages students of all grades to contribute to open source projects from July to September. This is very similar to GSoC.

Introduction

OpenStreetMap is a map project initiated in 2004 by Steve Coast of the UK, based on the principle of knowledge openness. Its data model enables mappers to represent and abstract complex real-world structures by utilizing three abstract elements types, for instance, public transportation. Since 2016, the OSM Community has submitted projects related to public transport to GSOC annually. The main work is focused on a JOSM plugin called PT Assistant.

Currently, the project we initiated aims to develop a cross-platform editor utilizing a modern front-end technology stack, which is easy to use with clear interactions.

Why do we need this project?

When editing public transportation relations using iD or JOSM, you may often spend a lot of time on tasks such as selecting each segment from the starting point to the endpoint. You might be surprised to find that even at an intersection where you want to turn, the continuous straight line has not been broken for your selection.

We hope to reduce such energy consumption thing for mapper when editing public transportation by automatically calculating possible bus routes through short-distance navigation after mappers specify the stations along the way. The mapper can then fine-tune it so that it conforms to the actual route taken by buses.

At the same time, we also hope to save time in certain situations, such as when creating a group of bus stops with identical names. There is no need for manual maintenance of multiple bus stop signs composed of relations; they will be automatically matched for you. Or when moving a station sign, parking spots are moved automatically.

Overall, our goal is to reduce friction and make it easier and faster for people to create new bus lines.

Project Deliverable Requirements

  • Ability to add stations and create or delete route relationships (with variable member order) within the editor and upload them via OSM API 0.6.
  • Ability to automatically calculate viable routes based on the road network and control points in the map, and automatically split longer paths for easier relationship addition, when only station data is available.
  • Implementation of at least a prototype containing the main functionalities.

Project Technical Requirements

  • Ability to use front-end technology stack to develop complex interface cross-platform programs, with knowledge of WebGL. (Experience with WebGL GIS frameworks such as Cesium.js/MapboxGL is a plus) (Note: Depending on the final choice of technology stack, knowledge of graphics and WASM might be required. She has always admired Meta for being able to create RapiD.)
  • Adequate algorithmic skills, with some understanding of navigation algorithm implementation. (Experience with open-source navigation routing tools like OSRM, Graphhopper, Valhalla, etc., is a plus.) (Note: Actually not such important.)
  • Understanding of the OpenStreetMap data model and API. (Knowledge of community culture and collaboration methods, or previous use of related data for analysis or other purposes, is very important.) (Note: Actually not such important. Since it is a notice posted in the OSM website, we can assume that applicants who see this requirement are already very familiar with it.)

Some important notes

  1. The project language is Chinese and some materials that need to be submitted later are also in Chinese. However, if there are any unclear points about the application, community members can provide language assistance and you can still communicate with your mentor in English.
  2. Although as the mentor, a very ashamed thing is that laoshubaby isn’t very proficient in front-end; this arrangement was originally aimed at students who have no knowledge about OSM whatsoever. Therefore she was chosen as a mentor due to being an active community member.
  3. For non-Chinese students receiving bonuses may take longer - possibly until January or February 2025 - rather than being paid upon completion of their projects. This bonus does not come from OSMChina or TUNA but from OSPP’s sponsor CAS (Chinese Academy of Sciences).
  4. The deadline for student applications is June 3, 2024 at 7:00 AM UTC. The complete guide for students participating in the project can be found at https://summer-ospp.ac.cn/help/en/student/#5-student-bonus (If your browser’s locale cannot be detected, you can click on the “中文/EN” button in the upper right corner of the webpage to switch languages.)

Registed information on OSPP




OSMChina (with the help of Tsinghua University TUNA Association and special thanks for their valuable assistance and support.)

Hello OSM World,

This is the first post in the Worst of OSM in Ghana series. I start with improving landuse=residential in Kumasi.

About 3 years ago someone mapping for an institution decided to randomly map a ton of residential landuse areas across Ghana. Some local contributors had lengthy message exchanges with them before they stopped to map. Why? Because these landuse areas are either connected to some building or highway, etc… © OpenStreetMap Contributors. Screenshot from JOSM with Bing

Fast forward 2024, many of these ways still exist in OSM and interferes with new contributions. Kumasi was selected as the start of trying to reuse/delete/improve these landuse=residential because Sammyhawkrad have really put a lot of time into improving data coverage in Kumasi but these landuse=residential definitely throws him away.

In summary this is how I improved the data:

  1. First, I reached to active editors in this area about my planned mass modifications
  2. Using JOSM, I drew a large area around Kumasi in a local layer © OpenStreetMap Contributors. Screenshot from JOSM with OSM Carto
  3. Started splitting with More tools → Split Object [ALT+X ]
  4. I then downloaded data from OSM separately and merged into local layer
  5. I tried to reuse existing ways as possible using More tools → Replace Geometry [CTRL+SHIFT+G] (requires UtilsPlugin2) which sometimes resulted in issues and conflicts when I update data [CTRL+U]. Because a node was shared with a building or highway.
  6. It took more hours than expected to complete this. At some points I could only delete than re-use.
  7. Finally, I uploaded the data when it’s assumed less mappers will be contributing in this area (somehow helps me to avoid some unexpected conflicts)

Notes

Massive remote mapping of features is much helpful when they don’t take all of local mappers time undoing your contributions, it is also demotivating.

There are many of these occurrences across the Ghana and likely somewhere else that needs clean up and more hands, I hope this summary inspires and is helpful for other local mappers to improve and contribute quality data.

If you are mapping in Ghana, Beware of imagery offsets and rapidly growing settlements not to add useless data.

Happy mapping!

Location: 6.700, -1.612

sorry if my grammar sucks and all that I never had a good grasp on it in life. It’s been a few days since I started modeling Sweetwater so it can show up on Pokémon go when it updates their map though I’ve been aware that they might use specific versions but never hurts to model the town still, but the only issue is that no one in my town uses OSM anymore meaning I am completely alone.. a few days ago, I tried getting help which did work but not in the way I expected but hey better than nothing well all I wanted was help with buildings and all of that due to the town of Sweetwater Texas being hardly mapped (buildings wise). I tried requesting help though the notes, but it got resolved but the person gave me a website to help making it a bit faster but also giving me somewhat outdated building data.

if you’re interested in this whole thing and want to help out with the buildings or just update some information here’s the link to Sweetwater Texas

Recently while updating business information in my area, I noticed that outdated POIs would often include a defunct website. When attempting to follow the links in OSM, I was just presented with an error. That gave me the idea that I could proactively identify POIs that may need validated in person.

After some tinkering, I came up with a python script that will query OSM data for nodes with websites, then iterate over the websites to see which return errors when connecting. I started with logging these to a text file, but then realized that I could export them all to a kmz file and import them into Organic Maps. Now when I’m out and about I can launch Organic Maps to find areas that I should validate.

Screenshot of Organic Maps with pins through Amsterdam

When you select a pin, it’ll give you more details on the failure.

Screenshot of Organic Maps with one pin selected. It display the website, http error, and OSM link

While testing I noticed that there are also many sites getting errors indicating that the specific page isn’t found or that the page can be found at a new location. I believe that these can be validated without surveying, so I set up a separate mode called “armchair” mode that highlight these errors.

Setup

NOTE: This will initiate connections from your machine to whatever websites exist in OSM

To use the script, copy the below file and save it as “broken-websites.py”. Before running I believe you’ll need to install the required packages by running the below commands in your terminal:

pip3 install simplekml
pip3 install overpy
pip3 install geopy

From there you can change that latitude, longitude, and radius. Keep in mind that a larger radius takes exponentially longer. You can commands like:

# List all websites that return a 5XX error to a text file
python3 ./broken-websites.py survey txt

# Generate a kmz of all websites that redirect or return 404
python3 ./broken-websites.py airchair kmz

# Generate both list types to both file types
python3 ./broken-websites.py both both

Script:

import overpy
from geopy.distance import geodesic
import requests
import datetime
import simplekml
import sys

latitude = 52.377956
longitude = 4.897070
radius = .5  # Default radius in kilometers

def check_website(url):
    try:
        response = requests.head(url, timeout=10)
        return response.status_code, response.reason
    except Exception as e:
        return None, str(e)

def get_amenities():
    api = overpy.Overpass()

    # Define bounding box
    lat_min = latitude - (radius * 0.009)
    lat_max = latitude + (radius * 0.009)
    lon_min = longitude - (radius * 0.009)
    lon_max = longitude + (radius * 0.009)

    query_str = f"""
        node["website"]
            ({lat_min},{lon_min},{lat_max},{lon_max});
        out;
    """

    result = api.query(query_str)

    amenities = []

    for node in result.nodes:
        name = node.tags.get("name", "Unknown")
        amenity_type = node.tags.get("amenity", "Unknown")
        lat = float(node.lat)
        lon = float(node.lon)
        website = node.tags.get("website", "N/A")
        distance = geodesic((latitude, longitude), (lat, lon)).kilometers
        osm_link = f"https://www.openstreetmap.org/node/{node.id}"
        if distance <= radius:
            amenities.append({"name": name, "amenity_type": amenity_type, "latitude": lat, "longitude": lon, "website": website, "distance": distance, "osm_link": osm_link})

    return amenities

def save_to_kmz(amenities_with_broken_websites, mode, timestamp):
    kml = simplekml.Kml()
    icon_url = 'https://upload.wikimedia.org/wikipedia/commons/e/ec/Red_dot.svg'  # Privacy-friendly icon URL
    for amenity in amenities_with_broken_websites:
        description = (f"<p>Website: <a href='{amenity['website']}' target='_blank'>{amenity['website']}</a></p>"
                       f"<p>{amenity['error_message']}</p>"
                       f"<p><a href='{amenity['osm_link']}' target='_blank'>Link to OSM</a></p>")
        placemark = kml.newpoint(name=amenity['name'],
                                  description=description,
                                  coords=[(amenity['longitude'], amenity['latitude'])])
        placemark.style.iconstyle.icon.href = icon_url
    file_name = (f"Broken_Websites_{mode}_Radius_{radius}km_Lat_{latitude}_Long_{longitude}_{timestamp}.kmz")
    kml.savekmz(file_name)
    print(f"KMZ file saved as: {file_name}")


def save_to_txt(amenities_with_broken_websites, mode, timestamp):
    file_name = (f"Broken_Websites_{mode}_Radius_{radius}km_Lat_{latitude}_Long_{longitude}_{timestamp}.txt")
    with open(file_name, 'w') as f:
        for amenity in amenities_with_broken_websites:
            f.write(f"Name: {amenity['name']}\n")
            f.write(f"Amenity Type: {amenity['amenity_type']}\n")
            f.write(f"Latitude: {amenity['latitude']}\n")
            f.write(f"Longitude: {amenity['longitude']}\n")
            f.write(f"Website: {amenity['website']}\n")
            f.write(f"Distance: {amenity['distance']:.2f} km\n")
            f.write(f"Error: {amenity['error_message']}\n")
            f.write(f"OpenStreetMap: {amenity['osm_link']}\n")
            f.write("\n")
    print(f"Text file saved as: {file_name}")

def filter_amenities(amenities):
    filtered_amenities = {"survey": [], "armchair": []}
    for amenity in amenities:
        status_code, error_message = check_website(amenity['website'])
        if not status_code or 500 <= status_code < 600:
            amenity['error_message'] = f"Status Code: {status_code}, Error: {error_message}"
            filtered_amenities["survey"].append(amenity)
        if status_code and (300 <= status_code < 400 or status_code == 404):
            amenity['error_message'] = f"Status Code: {status_code}, Error: {error_message}"
            filtered_amenities["armchair"].append(amenity)
    return filtered_amenities

def main():
    if len(sys.argv) != 3:
        print("Usage: python script.py <mode> <output>")
        print("Mode should be one of: survey, armchair, both")
        print("Output should be one of: txt, kmz, both")
        return

    mode = sys.argv[1]
    output = sys.argv[2]
    if mode not in ["survey", "armchair", "both"]:
        print("Invalid mode. Mode should be one of: survey, armchair, both")
        return

    if output not in ["txt", "kmz", "both"]:
        print("Invalid output. Output should be one of: txt, kmz, both")
        return

    print(f"Searching for amenities with websites within {radius} km...")

    amenities = get_amenities()

    if amenities:
        print("\nChecking websites...")
        filtered_amenities = filter_amenities(amenities)

        timestamp = datetime.datetime.now().strftime('%Y-%m-%d_%H-%M-%S')

        if mode in ["survey", "both"]:
            if filtered_amenities["survey"]:
                # print(f"Found {len(filtered_amenities["survey"])} broken websites")
                if output in ["kmz", "both"]:
                    save_to_kmz(filtered_amenities["survey"], "survey", timestamp)
                if output in ["txt", "both"]:
                    save_to_txt(filtered_amenities["survey"], "survey", timestamp)
            else:
                print("No amenities found with broken websites in survey mode.")

        if mode in ["armchair", "both"]:
            if filtered_amenities["armchair"]:
                # print(f"Found {len(filtered_amenities["armchair"])} broken websites")
                if output in ["kmz", "both"]:
                    save_to_kmz(filtered_amenities["armchair"], "armchair", timestamp)
                if output in ["txt", "both"]:
                    save_to_txt(filtered_amenities["armchair"], "armchair", timestamp)
            else:
                print("No amenities found with broken websites in armchair mode.")
    else:
        print("No amenities found within the specified radius or with specified website.")

if __name__ == "__main__":
    main()

Example of different map styles

Let’s imagine that you’re a pizza delivery company, and you’ve got an app that shows where you are, where your customers are and where a delivery person is between the two. Obviously you need some sort of map that shows the three in context. You can’t use Google Maps for cost or other reasons, and whatever framework your using will accept raster tiles in the almost universal format https://server/Z/X/Y.png, so why not use OpenStreetMap’s standard layer? After all, it’s free!

Well:

  • It’s not free, in the sense of free laid out in the tile usage policy. That doesn’t mean that OSM doesn’t tolerate or even encourage some use of those tiles, but it does mean that you have no service level agreement - you probably won’t even get warned if your use is prevented at some point in the future.

  • It’s not a great background map. The “OSM Carto” style tries to do two things at once - it tries to provide feedback to OSM mappers and it tries to be a “nice” standalone map. Both of those make its use as a background less than ideal. To see some alternative map styles (some of which are designed as background maps) have a look at openwhatevermap.xyz.

  • It’s updated on the fly. While OpenStreetMap gets surprisingly little vandalism considering the scale and visibility of the project, it does get some; and any map that is instantly updated will show what there is until the vandalism is fixed both in both the map data and the server-side infrastructure. Your pizza delivery company probably only needs to process updates to a map layer for a small area and when new roads and new housing estates are built; perhaps once every few months or so.

So what can you do?

It’s important to remember that OpenStreetMap’s Data is still free. You’re welcome to use that, and plenty of companies are willing to help.

If you can’t afford that, and can only spare about the price of an average-sized pizza a month, you can do it yourself. Deploying a map as described on this page could cost under €10 per month. If you want to run occasional updates, that’s documented too - just run it whenever it’s convenient for you.

– Andy

(a member of the DWG, and also a maintainer of the “switch2osm” site, but writing this in an entirely personal capacity)

The screenshot at the top is from openwhatevermap - click through from there to see the details of each style and terms of use.

Location: 10.473, 13.097

Amazing Experience ……..

The open street map foundation is an international not - for - profit organization supporting, but not controlling. the OSM project. it is dedicated to encouraging the growth, development and distribution of free geospatial data and to proving geospatial data for anyone to use and share. The OSMF had quite recently Started a worldwide membership campaign with the objective of growing and diversifying OSMF membership in regions where there are very low or no OSMF members.

I am proud to say that I was part of this campaign. On the first few virtual meetups via Google meet, I had promptly signed up for the campaign Ambassadors role as I believed I could use whatever little ideas and experiences. I have learnt a lot about community.

thank you for the wonderful opportunity.

Providing updates! The OSM Wiki of the OSMF Membership Drive Campaign 2024 Plan is in the wiki: https://wiki.openstreetmap.org/wiki/OSMF_Membership_Drive_2024

We will also provide updates and have a space for feedback in the Community Forum using this thread: https://community.openstreetmap.org/t/updates-osmf-membership-drive-campaign-2024/109280

Welcome to the seventh OpenStreetMap NextGen development diary.

This week, I focused on delivering core website functionalities and website and migration script optimizations 🚤.

🔖 You can read my other development diaries here:
https://www.openstreetmap.org/user/NorthCrab/diary/

📖 This project is open-source and publicly available:
https://github.com/Zaczero/openstreetmap-ng

🛈 This initiative is not affiliated with the OpenStreetMap Foundation.

In Case You Missed It…

OpenStreetMap-NG is planned to have its first development release at the end of this month, May. After this milestone, the project will be open for new contributors! My current work focuses on delivering on that promise, finishing the core functionalities, and stabilizing the code.

Originally posted in diary #5.5.

New Fast Rendering Engine

One of the highlights of OpenStreetMap-NG is its brand new, super fast object rendering engine. It’s a significant improvement over the current solution.

For example, rendering all of Poland (about 1500 ways) takes a mere 34ms.

To put that in perspective, the same relation on the current OpenStreetMap website takes about 1.8 seconds. That’s over 50 times faster! And the best part: zero compromises on quality - it’s the same data, just way faster - badum tss.

Here’s the visualization we’re talking about:

Support For Historical States

The new rendering pipeline also lets you see how things used to look. Want to check out a street from 5 years ago? Just hover over the version in the history view. Easy.

This feature is going to make it way easier to understand how things have changed over time. It also opens up new opportunities for rich changeset diffs visualizations in the future!

Relations Members Icons

OpenStreetMap-NG now has a bunch of icons for relation members. This makes it much easier to tell what kind of relation you’re dealing with.

These icons are from the iD project.

Page Timeout Fixes

If you’re a frequent OpenStreetMap user, you might have run into errors like this:

OSM-NG has fixed a ton of these timeout issues with improved pagination. Now everything loads smoothly, even the history of a big relation like Poland.

Refreshed Element Sidebar UI

The element sidebar has received a makeover. The new look and feel are designed for regular users, not just developers. You’ll also find it much easier to use the element versioning system.

Project Sponsors 🏅

Time for the weekly appreciation of the current project patrons. Thank you, everyone, for supporting the project, including those who starred it on GitHub! There’s no way back now 🚂.

Currently, the project is sponsored by 13 people!
Four private and four public donors on Liberapay, and five public on GitHub Sponsors.

If you can, please consider supporting the OpenStreetMap-NG development 🦀:

Donate using Liberapay

In March 2023, I conducted a survey on women’s participation in OSM activities. It became apparent that individuals’ perspectives came into place and interpreted the survey topic differently. The survey aimed to gather perceptions, opinions, and insights into why some women do not participate in OSM activities and what factors may discourage those who were already participating from continuing. There were various reactions about the survey, from questioning the relevance of the topic to commending the effort to address it.

I was fortunate to have had support from various individuals for the topic, including Heather Leson, Arnalie Vicario, Pete Masters, Geoffrey Kateregga, and the Geochicas family, who were interested and open to exploring the topic through webinars and discussions. One such webinar featured speakers from diverse backgrounds:

  • Stellamaris Wavamunno Nakacwa, Programme Director at Youthmappers EverywhereSheMaps
  • Mikko Tamura, Community Manager at Open Mapping Hub Asia Pacific
  • Jaqueline Amorim, Expert Mapper in Geostatical Data/HOT Data Quality Intern in 2022

The webinar was moderated by Dr. Prince Kwame Odame from Africa, a lecturer at the University of Education Winneba-Ghana. You can review the webinar here.

A unique aspect of the survey was that, in addition to focusing on individuals who identify as women, I also sought perspectives from men. I was pleasantly surprised by some of their positive viewpoints, although there were also negative responses. I am grateful to everyone who took the time to participate in the survey.

One key takeaway from the survey is the importance of considering diverse perspectives. Just because something may not be perceived as an issue by one person does not mean it isn’t significant to others. We all view the world through different lenses, and it’s essential to be considerate and open-minded to learn from various angles.

I appreciate your patience, and below is the summary of the survey and the full report can be read here.

Thank you all for your understanding and support.

Survey Inforgraph

Survey Inforgraph

Survey Inforgraph

Survey Inforgraph

Survey Inforgraph

Posted by Barroszt on 13 May 2024 in English.
  1. Introduce blocks that prevent editing in selected areas, e.g. a country, an administrative unit (editing controversial objects in the field), and not the entire world. Now I can’t improve my neighborhood due to controversial editions in Ukraine.
  2. Comments on your profile should link to a page where your changeset comments are located, not to log comments.
  3. The link to your first edits in OpenStreetMap is intended to understand the difficulties for a beginner editor.
  4. Links to apps and websites related to OpenStreetMap from main page (with map) e.g.: MapRoulette, how did you contribute to OpenStreetMap?, osm-revert.
Location: Góra Buchta, Winnica, Toruń, Kuyavian-Pomeranian Voivodeship, 87-101, Poland
Posted by Akbar-Birbal on 12 May 2024 in English.

Delhi Cantonment is one of the most sparsely mapped area in Delhi. It might be because it is full of military areas. As I live in the cantonment, I hope to map at least the non-sensitive areas, such as Sadar Bazar and Gopinath Bazar. By my current rate, it is likely to take at least 2 months to map these two markets alone. I want to focus on mapping areas in the cantonment. In future I might venture out to map the big Nangal area (gulp).

Location: Gopinath Bazar, Delhi Cantonment, New Delhi, Delhi, 110010, India

With 2024 officially being the year of OpenStreetMap vector maps let’s do a deep-dive into vector maps: their history and how the underlying vector tiles work in detail.

img1

Vector Maps History

To understand how revolutionary vector maps were we have to go back in time to the early 2010s. One Direction is raising to international fame and raster maps are at the height of their popularity. Folks creating raster web maps rendering OpenStreetMap data into beautiful 256x256 pixel images.

But raster maps come with limitations: when you rotate the map the labels stop facing you; you can’t customize pre-rendered maps to specific use-cases on the fly; there is no fractional scaling between zoom levels. All of these problems are unthinkable nowadays: here is one example where Jochen wrote about Wikipedia struggling with pre-rendering multilingual maps for over 200 languages because they can’t change their map’s language on the fly.

In December 2010 Google introduced vector maps in Google Maps on Android. I highly recommend you stopping here to go skim their announcement blog post where they show-case what vector maps allow them to do.

img8

With WebGL rendering technology reaching browsers in 2013 folks like Michal Migurski start experimenting with rendering maps in the browser instead of displaying raster images.

img7

In April 2013 the folks at Mapbox release an experimental vector tile format for rendering vector maps followed by a first go at a browser-based canvas and WebGL renderer.

This experimental vector tile format would end up becoming the industry standard Mapbox Vector Tile (MVT) specification and the renderer would end up becoming the state of the art web map renderer Mapbox GL JS and/or Maplibre we all enjoy to this day.

Let’s have a look at this vector tile specification in detail allowing for vector maps.

The Mapbox Vector Tile (MVT) Specification

The Mapbox Vector Tile specification outlines how to encode geographic data into vector tiles. The most common use case is encoding geometries and features from OpenStreetMap for a browser based renderer such as Maplibre. The vector tile specification is not tied to a source such as OpenStreetMap or a renderer in particular.

The specification provides a format for encoding a single vector tile: the vector map is made up of a collection of vector tiles with neighboring tiles and zoom levels exactly as with raster maps and raster tiles.

You can find the Mapbox Vector Tile specification here.

The Mapbox Vector Tile format is based on Protocol Buffers and roughly consists of the following entity hierarchy

  1. A Tile has multiple Layers
  2. A Layer has multiple Features
  3. A Feature has a Geometry and Attributes

As an example: a tile with a “building” layer with multiple feature polygons and height in meters.

Geometries can be points, linestrings, or polygons; attributes are key-value pairs where the key is always a string and the value can be any type (int, float, string, ..). The geometry encoding is mimicking the Canvas API with commands

  1. MoveTo
  2. LineTo
  3. ClosePath

These commands work on a square coordinate system e.g. with extent 4096 where top-left represents the origin at (0, 0).

As an example: the linestring [(2,2), (2,10), (10,10)] would look like the following

  1. MoveTo(+2,+2)
  2. LineTo(+0,+8)
  3. LineTo(+8,+0)

The command’s type, how often to apply the command, and the command’s parameters are all efficiently encoded as varints.

There are two Protocol Buffer core concepts worth understanding here as they’re used heavily throughout the specification: varints and zig-zag encoding. Varints encode numbers in a variable number of bytes such that small numbers take up less space. The most significant bit of a byte acts as a continuation flag, leaving the remaining seven bits per byte for data. That means e.g. numbers such as 0, 1, 42, that are fitting into seven bits only take up one byte instead of e.g. 4 byte with an int32 data type or 8 byte with an int64 data type. Zig-zag encoding allows varints to work with negative numbers, too.

img2

Problems with The Mapbox Vector Tile (MVT) Specification

The Mapbox Vector Tile specification is a pragmatic industry standard that has allowed for massive innovation over the last decade. That said, it’s not without problems and limitations.

One of the biggest issues is that there is no sharing of data between vector tiles: not between neighboring tiles and not across zoom levels. If there is a road spanning multiple tiles,

  1. the very same road name will be inefficiently encoded in neighboring tiles on the same zoom level
  2. the very same road name will be inefficiently encoded in tiles up and down the zoom level hierarchy

In contrast the OrganicMaps folks with their home-grown data format efficiently share map data and make use of succinct data structures which is one reason their offline maps so small and efficient.

img3

There are various other inefficiencies, e.g. points are inefficiently encoded to simply store two coordinates.

There has been work on a new Mapbox Vector Tile version v3 trying to overcome some of the problems and limitations and at the same time introduce new features such as: elevation, inline attributes, and splines. You can see the work in progress in the upstream v3.0 branch. There hasn’t been an update since 2019.

I believe it’s fair to say that we’re stuck with the Mapbox Vector Tiles specification v2 for better or worse. The problems and limitations mentioned above are far outweighed by having a stable specification for vector tiles the broader ecosystem agrees on.

From Vector Tiles to Vector Maps

The Mapbox Vector Tile specification described above is a format for encoding and decoding a single vector tile. Vector maps are made up of multiple vector tiles across zoom levels and there are two popular ways to package up individual vector tiles into a vector map.

The first way to package up tiles is the historic MBTiles format which initially was created for jpg and png raster maps in 2011.

The MBTiles format is a sqlite3 database file packaging up z/x/y tiles; you can use the sqlite3 command line tool to have a look at its table definitions

CREATE TABLE tiles (zoom_level integer, tile_column integer, tile_row integer, tile_data blob);

In 2016 the MBTiles format started recognizing the Mapbox Vector Tile format in addition to jpg and png raster tiles.

You can find the MBTiles specification here.

The second way to package up tiles is the more recent PMTiles format from the Protomaps folks.

The PMTiles format bundles up vector tiles in a single file just like MBTiles. But unlike MBTiles, the major benefit of PMTiles is laying out the vector tiles in a clever way such that browsers can make Byte-Range requests against the PMTiles file. What this means in practice is that now we can create Mapbox Vector Tiles, package them up in a single PMTiles file, and host this one file on any static file hoster.

You can find the PMTiles specification here

With vector maps data at our hands what’s missing now is a way to decode, display, and style the vector data e.g. using Maplibre and its Style Specification. Based on the map’s viewport Maplibre fetches vector tiles, decodes the vector tile by parsing the protocol buffers, and then allows us to style the vector tile layers, features, geometries, and attributes however we want.

Create Your Own Vector Maps

Creating your own vector maps from OpenStreetMap has never been easier! To get started I recommend having a look at Maplibre and Protomaps; start for example here for inspiration.

If you want to create your own vector maps from OpenStreetMap data, good first steps are

  1. Download a small .osm.pbf file from Geofabrik
  2. Use tilemaker or planetiles to generate PMTiles
  3. Drop the PMTiles file into the Protomaps PMTiles viewer for debugging
  4. Use Maplibre to visualize the vector map and styling it as you like

and then iterate from here.

Happy year of OpenStreetMap vector maps!

References