Users' Diaries
Recent diary entries
Introduction
The purpose of this document is to explore the possibilities of the Segment Anything Model (SAM) Segment Anything developed by Meta in OpenStreetMap mapping. SAM is a promising model in the field of image segmentation, and its potential application to fAIr could enable the tracing of various features on maps. This document provides an overview of SAM’s working mechanism, test cases conducted with SAM, and two potential integration ideas for utilizing SAM
SAM Working Mechanism
SAM operates directly on images and generates individual masks based on the training datasets used during model training. Unlike object detection models, SAM focuses on segmenting all elements present in an image, regardless of their nature, based on texture, color, and points of difference from the background and several others can be found on their research doc
### Advantages of SAM for fAIr and OSM Mapping
- SAM can run inference on the user’s browser, ensuring accessibility and reducing server-side processing.
- SAM allows excellent automatic tracing of individual features based on user mouse-over interactions, enhancing user interaction and customization which can be used on OSM editors
Test Cases with SAM
Test cases were conducted using drone images to evaluate SAM’s performance in tracing various features. The following results were observed:
Initial Impressions:
SAM excels in accurately tracing features, as demonstrated in the test case. It demonstrates the impressive ability to identify and trace objects with precision.
However, SAM struggles with line features, as evidenced by the poor performance in detecting and identifying road masks
SAM’s Classification Abilities:
SAM can classify polygons, making it applicable to land use features in OpenStreetMap (OSM). The output may vary depending on the zoom level, such as generating a polygon enclosing all building features at zoom level 19 and tracing individual buildings at zoom level 21.
### Retraining SAM:
SAM is often misconstrued as a model that can be retrained for object detection purposes. However, SAM’s primary function is segmentation rather than object detection. While additional training datasets can enhance the accuracy of segmentation classes, the base model of SAM already performs excellently, making retraining less preferred for OSM use cases
Integration Ideas for SAM
Two promising integration ideas for incorporating SAM are proposed:
Idea 1: SAM as Tracer
By leveraging the spatial utilities and satellite images, SAM can be used to trace features on maps. The workflow involves:
- Utilizing SAM for feature tracing on the map
- Assigning labels manually and refining polygons if necessary
- Running conflation to convert the traced features into OSM XML format
- Pushing the converted features to OpenStreetMap
GIF illustration demonstrates the ability of SAM’s creating masks in mouse hover which can later integrated with osm editors
Idea 2: Integrating SAM with Object Detection Models
SAM can be combined with object detection models, such as Grounding Dino and MMDetection, to achieve improved segmentation accuracy. GroundingDINO, an open-set object detection model, recently added support for SAM. Object detection models are employed to classify objects on the map, which are then segmented using SAM. GroundingDINO is retrainable and can be used as a base model alongside SAM. For this test i have used groundingdino but several others good performing object detection models can be used
Test Cases with GroundingDINO:
Test cases were conducted using SAM in conjunction with GroundingDINO on aerial images. The following observations were made:
Example: Tracing Sea , Buildings block , Trees , Vehicle
SAM, combined with GroundingDINO, successfully identified and traced a yellow vehicle in the image. This demonstrates the potential for promising performance when trained with relevant data.Currently, GroundingDINO lacks understanding of buildings and swimming pools in drone images. However, when trained with local data specific to these features, it can become highly beneficial. The role of SAM in this context is to precisely trace the located features, resulting in accurate segmentation.
TODO: Since GroundingDINO is also still in research, inference code is available but training is not (it’s on their checklist though) once training code is available of grounding dino , it would be better to test training with local datasets
Screenshots Respectively : Detecting trees only with object detection model , Building Blocks , GroundingDIno output for sea , SAM mask for sea supplied from bbox of object detection model and finally the pond on bing image
## Application of SAM in OSM
The utilization of SAM within the OSM and fAIr project presents several opportunities:
* SAM can be individually implemented as tracer for existing OSM editors a simple webUI platform that can load OAM and start tracing features would be beneficial to apply this idea or as a plugin in JOSM
* Buildings: While there are still some deficiencies in using SAM for building tracing, an existing high-quality basemodel, RAMP, can be employed. For other features such as swimming pools, land use, natural elements, and sea ponds, SAM can be utilized, working with user-provided datasets in the fAIr project.
* Alignment with fAIr (HOTOSM) approach: The proposed SAM + object detection model integration aligns with the fAIr approach, but further research is required to address performance considerations, determining the computational requirements for retraining Object detection models, and estimating the time required for training and inference processes.
Conclusion
The Segment Anything Model (SAM) developed by Meta shows great promise in the field of image segmentation. Its ability to segment various features based on texture, color, and points of difference presents opportunities for integration into the fAIr project. Through test cases and evaluation, SAM’s strengths and limitations have been identified. Integration ideas, including SAM as a tracer and combining SAM with object detection models, have been proposed. These integration possibilities can enhance feature tracing, classification, and segmentation within the OSM and fAIr project. Further research and testing is necessary to find a good object detection model, optimize performance and determine the practical implementation of SAM within the fAIr framework.
fAIr is a free and open source AI project initiated by HOTOSM. Know more :https://github.com/hotosm/fair
Resources & Credits : https://github.com/IDEA-Research/Grounded-Segment-Anything , https://github.com/facebookresearch/segment-anything , https://github.com/UX-Decoder/Segment-Everything-Everywhere-All-At-Once , https://github.com/RockeyCoss/Prompt-Segment-Anything , https://github.com/opengeos/segment-geospatial , https://github.com/IDEA-Research/GroundingDINO , https://github.com/OptimalScale/DetGPT
Collab test notebooks : Segmentanything2osm :https://colab.research.google.com/drive/1n4OgMZX0JkoFGh_j-NDCqafHtyqnRFfL?usp=sharing Segmentanything2osm class based https://colab.research.google.com/drive/1vIsvkkki_EeMWUkxZuQ5HXhU2N9usV4F?usp=sharing Segment any anomaly https://colab.research.google.com/drive/1gneKlzWxNTFKsil45IFU6cYxgTq9HYYi?usp=sharing Grounded sam https://colab.research.google.com/drive/1kNu7zW2AOJsllvF-ROmVne9Uh7X5iswu?usp=sharing
Thanks to planetiler, it is possible to run your own OpenMapTiles vector tile server on Amazon Web Services (AWS) for less than $20 per month. This guide describes the process that I used to stand up tile.ourmap.us for the OSM Americana project, and it does require some knowledge of AWS. However, I taught myself how to use AWS, and I’ve tried to include enough details here to assist someone trying to stand up their own tileserver.
There are many different ways to do this, including different storage, hosting, and tileserver setups. This is just one option that worked for me for what I was trying to do.
The architecture
This setup in this guide assumes that infrequent planet updates is acceptable for your use case. So, we will spin up a powerful server to update the map only when needed, and use a low-powered server to run the HTTPS tile server on an ongoing basis. If you require more frequent map updates, this is probably not a good solution and you should consider dedicated hardware. The main advantage of AWS in this use case is the ability to rent a high-performance computer for a short period of time.
Additionally, this setup assumes that you already own a domain name that you can use to point to the tile server. If you don’t have one, you can purchase one on Google Domains for $12 per year.
In our setup, we will render a planet to a large file in .mbtiles format, and use tileserver-gl to serve that .mbtiles as an HTTPS server.
Another advantage of using AWS is that they host a locally-mirrored copy of the planet file. Therefore, it is posible to download the planet in a few minutes, which reduces the amount of time that we have to rent that high-powered server to render the planet.
When we say “render the planet,” it means the following operation:
In this setup, I’ve chosen AWS’s Elastic File System (EFS) to store my planet file. EFS is just an expandable file system that can we can mount using NFS. With EFS, you pay only for the amount of storage you use. This cost ($13/mo) is the largest recurring cost of running a tileserver. I will note that AWS’s s3 storage is much cheaper than EFS (2.3 cents / GB) and is worth exploring as an even cheaper alternative.
Thus, our setup looks something like this, when the Render Server running only when we need to update the planet:
Setting it up
The following is an approximate step-by-step guide to setting up the tile server and performing a single planet render. Some of this is from memory, I’m glossing over some of it, and I may be missing steps, so be prepared to adjust. However, this should be a rough recipe, and I did all of this in AWS’s point-and-click GUI.
- Set up a Virtual Private Cloud (VPC) to host your tileserver network, and assign a subnet, route table, and gateway allowing it to access the Internet.
- Create an Elastic File System (EFS) volume. Take note of the volume identifier.
- Create an EC2 instance, of type
t4g.micro
. Be sure to tick the box that assigns a public IP address. - Create security groups to:
- Permit NFS access to and from the EFS volume (ports 111/2049 on TCP and UDP).
- Permit port 443 (HTTPS) access to and from the tile server
- Log into the tileserver and install:
- docker
- an NFS client
- nginx
- Create a mount point, and mount the EFS share:
mkdir -p /mnt/efs sudo mount -t nfs4 -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport your_filesystem_id.efs.us-east-2.amazonaws.com:/ /mnt/efs
- Spin up a render server! Be careful with the step, because this server is expensive to run. Ensure that you can attend to it while it’s running. Create a
c6g.16xlarge
EC2 Spot Instance, log into it and run through the following steps to render the planet and save it to the EFS share. Depending on your setup, you may need to configure a security group for your render server once it’s running in order for it to access the EFS share and/or to log into it. - Install the required software packages:
sudo apt update -y sudo apt install -y pyosmium sudo snap install docker
- Format and mount the local SSD disk:
sudo mkfs.xfs /dev/nvme1n1 mkdir /home/ubuntu/build sudo mount -t xfs /dev/nvme1n1 /home/ubuntu/build cd /home/ubuntu/build
- Download the planet and other data sources (including Wikidata and Natural Earth):
sudo docker run -e JAVA_TOOL_OPTIONS='-Xmx80g' -v "$(pwd)/data":/data \ ghcr.io/onthegomap/planetiler:latest --area=planet --bounds=world --download --download-threads=20 --download-chunk-size-mb=500 \ --only-fetch-wikidata
- (Optional) update the planet file to current. Note this operation can take 30-40 minutes to complete.
sudo pyosmium-up-to-date -vvvv --size 10000 data/sources/planet.osm.pbf
- Render the planet! Be sure to list the languages you’re interested in (for example, “en,de,pt” will render tiles with English, German, and Portuguese). In addition there are a few options in the command below based on what I use in Americana; consult the Planetiler docs in order to appropriately customize the render for your use case.
sudo docker run -e JAVA_TOOL_OPTIONS='-Xmx30g' -v "$(pwd)/data":/data \ ghcr.io/onthegomap/planetiler:latest --area=planet --bounds=world \ --mbtiles=/data/planet.mbtiles \ --transportation_name_size_for_shield \ --transportation_name_limit_merge \ --boundary-osm-only \ --storage=mmap --nodemap-type=array \ --building_merge_z13=false \ --languages=list_of_languages
- Copy the rendered .mbtiles file from the local disk to the EFS share
cp /home/ubuntu/build/data/planet.mbtiles /mnt/efs/planet.mbtiles
- Terminate the render server. Time is money! Do not forget to stop that server if you’re doing a one-time render.
- Configure a domain name to point to the IP address of your tileserver. For example, something like tile.your_domain.com would work.
- Log back into the tileserver configure tileserver-gl. Create a basic config.json in the same location as your planet mbtiles. Replace your domain name in the indicated spot:
{ "options": { "paths": { "root": "/data", "fonts": "fonts", "sprites": "sprites", "styles": "styles", "mbtiles": "." } }, "domains": [ "tile.your_domain_name.com:8080" ], "styles": { }, "data": { "v3": { "mbtiles": "planet.mbtiles" } } }
- Launch tileserver-gl. It should run without errors and be accessible via HTTP on port 8080 if your security group allows access from the Internet.
docker stop $(docker ps -aq) docker run -it --restart always -v /mnt/efs/:/data -p 8080:8080 maptiler/tileserver-gl
- Next, we need to set up HTTPS. Configure an nginx site with SSL certificates using Certbot. The nginx configuration should end up looking something like something like this:
server { listen 443 ssl; ssl on; ssl_certificate /etc/letsencrypt/live/tile.yourserver.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/tile.yourserver.com/privkey.pem; server_name ; access_log /var/log/nginx/nginx-ourmap.vhost.access.log; error_log /var/log/nginx/nginx-ourmap.vhost.error.log; location / { proxy_pass http://localhost:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-Proto https; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Ssl on; } } server { if ($host = ) { return 301 https://$host$request_uri; } listen 80; server_name ; return 301 https://$host$request_uri; }
- Start nginx with
service start nginx
. That should make your tileserver accessible via HTTPS at the address you configured in DNS.
Cost Analysis
This cost analysis is based on the US East (Ohio) zone, which I found to be the cheapest of all the US-based alternatives.
Overall:
- $19.75 base recurring cost
- $1.64 - $3.28 each time the planet is updated
- $0.09 for each million tiles served
Base Recurring Costs:
- One EC2 node, t4g.micro type. On-demand Cost: $6.13/mo. This cost further can be reduced by up to 40% by purchasing a reserved instance.
- One Elastic File System shared drive. Cost: $0.16/GB per month x 82Gb = $13.12/mo
- One Route 53 Hosted Zone DNS table. Cost: $0.50/mo
Bandwidth Costs:
- Average tile size (per OpenMapTiles CI): 1,039.7 bytes/tile
- 1GB = 1,032,036 tiles
- $0.09/GB bandwidth costs
- Approximately 9 cents per million tiles
Rendering Costs (per planet update):
- One on-demand c6g.16xlarge instance at $2.18 per hour
- Approximately 45 minutes to render a planet from the current planet.pbf ($1.64)
- Approximately 90 minutes to update and render a planet. ($3.28)
Useful links
- AWS instance pricing: https://instances.vantage.sh/
The startling regularity of these posts amazes even me. Today I went for a bit of a walk with my brother Joe’s dog, Pumpkin. It’s an embarrassing name. Joe and his kids seem to shorten it to Pumpki. My mouth and memory struggle with that so I have been trying Pumki, Pumpi and Punki. Pumpkin does not respond to anything I say so I have tended toward Dog or Hey You. I resorted to buying a packet of dog treats in a mildly successful effort to be noticed.
OSMAnd has been very handy as usual to find my way. I found a broken bit on the map and tried to fix it but I don’t really know what I’m doing. I did record my track, hopefully that’ll help someone.
For some months now, Champs-Libres has been working for the NMBS/SNCB, the national railway company of Belgium, for reusing OSM data of Belgian stations. The NMBS/SNCB has an interest in OSM data for improving some services to travelers regarding accessibility data, especially for bicycles. Have a look at the wiki page for more insights!
The first diary entry was about the basic data on the Belgian stations and platforms. In this second diary post, we’ll show how to map access to the railway platforms.
What is the access to a railway platform?
A traveler, with or without a bike, can walk to/leave a platform by several means of access. We’ll call these “access objects”, which can all be mapped in OSM. Here is how to map these access objects and how they are mapped in the Belgian train stations. We hereby focus on travelers walking through stations with their bikes.
Elevators
Elevators are represented in OSM with a single node (most of the time) and the tag highway=elevator. The following overpass query https://overpass-turbo.eu/s/1pm1 gives 90 elevators that are strictly to and from the platforms. They are mostly found in the larger train stations. However, we noticed that some elevators were not identified by this query because they were slightly outside of the platform area. This should be corrected in most cases.
An elevator in Gembloux station, a little bit too small for most bikes
To specify that the elevator can be used with a bicycle or not, we should add the tag “bicycle=yes/no” (sometimes the value bicycle=dismount is preferred over bicycle=yes. It denotes that you can put your bike in the elevator but obviously you won’t ride your bike inside the elevator!).
We can also add tags that give precise information about the dimensions of the elevator cab (width, length) or of the elevator door, like in this example: https://www.openstreetmap.org/node/10837651647. For this, you can use a laser measurement device or a regular ruler.
Conveying, aka escalators
Conveying ramps, aka escalators are represented as a way and tagged with highway=steps + conveying=*. The query https://overpass-turbo.eu/s/1pm4 gives 198 conveying objects around the Belgian train platforms (within a distance of 10 m).
There is a debate among cyclists and train station managers if these access objects are well suited for travelers walking through a station with their bikes. Depending on the bike, this can help going from one level to another.
Steps
Steps are represented as a way and tagged with highway=steps. The query https://overpass-turbo.eu/s/1vLu gives 531 steps strictly connected to the platforms.
Steps in Ottignies station
Footways, direct access
Most of the time in small stations, platforms are directly accessible from the street without having to take some steps or elevators. The way to map this type of access is to draw a line connecting the platforms to the adjacent street, pedestrian area or the train station building. Then, this line should be tagged with highway=footway (sometimes the values “path” or “pedestrian” are used). The tag incline=* can also be added to denote that the footway is, well, inclined but without steps.
Initially, we thought that these types of access might be poorly mapped, especially for the small stations, but surprisingly, the query https://overpass-turbo.eu/s/1vLv gives 1109 footway accesses to the Belgian train platforms and all the train lines seem to be covered (there are some stations with missing accesses though).
Most of the time, it is OK to take your bike on these footways, but usually not riding your bike. For this reason the tag bicycle=dismount should be added on these ways.
Bicycle ramps
Last but not least, many steps are equipped with bicycle ramps (goulottes vélo en Français, fietsgoot in het Nederlands). These are tagged in OSM with the tag ramp:bicycle=* on a highway=steps object. The query https://overpass-turbo.eu/s/1vLw gives 108 bicycle ramps.
Fietsgoot in Namur station
Going further
In the next diary post, we’ll show that these access objects will need additional tags to be added before they can be properly used for routing or for our use case. In particular, the level tag is needed in multi-level stations. Even in small stations there is sometimes a passageway passing underneath the track or a bridge over the tracks that require a level tag.
How can you help?
Please check in your favourite train stations whether the access to the platforms are well-mapped. Footways might be missing in small ones. We probably also miss some information on bicycle ramps along steps. Even in big stations, the information might be missing, or simply outdated (works were done recently or are on-going in many stations).
Some tips for your survey: take pictures, draw a sketch of the station before or during the survey, note down the access by platforms. Aerial imagery won’t help you much in stations.
And please add the hashtags #nmbs or #sncb to your changeset comments ;-)
As it stands, I believe the need to rekindle the interest in volunteerism among members of the open mapping community is a necessary evil. This belief results from personal experience as well as other colleagues’ experiences. I joined the open mapping community through Youthmappers in 2016 and have been actively involved since then. Mapping has been fun and competitive since I joined the community. Thus, at the local chapter level, national and international levels, I have enjoyed a series of mapathons that were fun and competitive. A major event I can recall is the Malaria mapping challenge, where mappers from the University of Cape Coast were rewarded with some GPS devices at the end of the challenge to boost their mapping activities. Memories from the challenge put smiles on my face to this day. I can recall that some members of UCC Youthmappers were happy to answer a midnight call, trade sleep, and map to contribute to the malaria challenge and help the chapter compete as well.
I take a closer look at some of the local chapters in my home country these days and that zeal and interest seems to be dying off. That is a worry that needs attention, especially from the Gurus in the community. We have to encourage old members to share the positive impacts and personal experiences they have had so far with members who are losing interest to revitalize their interests.
Also, competitions should be enrolled more often and at all levels to be sure no one is left out. Finally, all members contributing every bit of data should be given some recognition so everyone feels involved. Let us keep the community running and keep the volunteering spirit moving!
Those before me who have mapped Lafayette have done well with regard to primary infrastructure, namely the roadways. But it seems many businesses and homes are missing. I’ve got my work cut out for me, for sure…
Introduction
About 2 weeks ago I found San Francisco’s open data website, on it was this dataset containing 70 murals along with information about their artist and Cultural District. I used SF Mural Arts as a source for the names of some of the murals.
I’ve uploaded all the files I used for this project here. I used a spreadsheet to track my progress, the file is called “StreetSmArts_Murals_progress.ods”. You can find way IDs in column Q and notes in column S. This legend explains what each colour used in the spreadsheet means and how many murals belong in each category.
Tagging Schemes
There weren’t any tags for some of the information in this dataset so I came up with some new tags in the process.
Cultural Districts
Some of these murals are within certain Cultural Districts, which from what I’ve read on their websites are basically just a fancier version of neighborhoods that organize events to celebrate the culture of those within the district.
You can find the tags for each individual Cultural District in the file “cultural_district_tags.odt”.
cultural_district=
- Used to tag the Cultural District’s name
cultural_district:website=
- Used to tag the Cultural District’s website
cultural_district:email=
- Used to tag the Cultural District’s email
cultural_district:wikipedia=
- Used to tag the Cultural District’s Wikipedia page
cultural_district:wikidata=
- Used to tag the Cultural District’s Wikidata item identifier
Supervisor Districts
The majority of the murals in the SOMA Pilipinas Cultural District also fall under a “supervisor district” by the name of Leather & LGBTQ Cultural District. I’m not sure what a supervisor district does and Leather & LGBTQ is the only supervisor district in the dataset. I decided to use a similar tagging scheme as the cultural districts.
You can find the tags for each individual Supervisor District in the file “supervisor_district_tags.odt”.
supervisor_district=
Used to tag the Supervisor District’s name
supervisor_district:website=
Used to tag the Supervisor District’s website
supervisor_district:email=
Used to tag the Supervisor District’s email
supervisor_district:wikipedia=
Used to tag the Supervisor District’s Wikipedia page
supervisor_district:wikidata=
Used to tag the Supervisor District’s Wikidata item identifier
Artists
I feel like I went a bit too far with the artist tags, I tagged the artists’ social media so people can find and support their art more easily. But whether this data is relevant to OSM is debatable. If any of you feel like these tags should be removed please reach out to me by sending me a message or leaving a comment.
You can find the tags for each individual artist in the file “artist_tags.odt”.
artist_name=
Used to tag the artist’s name
artist_alias=
Used to tag the artist’s alias
artist:website=
Used to tag the artist’s website
artist:website_2=
Used to tag the artist’s second website
artist:wikipedia=
Used to tag the artist’s Wikipedia page
artist:wikidata=
Used to tag the artist’s Wikidata item identifier
artist:facebook=
Used to tag the artist’s Facebook page
artist:flickr=
Used to tag the artist’s Flickr page
artist:instagram=
Used to tag the artist’s Instagram account
artist:tumblr=
Used to tag the artist’s Tumblr account
artist:twitter=
Used to tag the artist’s Twitter account
artist:youtube=
Used to tag the artist’s Youtube account
Conclusion
This was both the most fun and the most frustrating mapping project I’ve completed so far. I did about 4 passes through the dataset before I was confident I got every detail right. I’m very happy to have finished this project.
Please feel free to reach out to me if you believe I’ve made a mistake somewhere along the way, I’m always open to learn and correct mistakes! :)
今天在绘制湖南省衡阳市潇湘街道时,把基本的道路都绘制完了,于是决定今天暂告一段落。但在准备上传之前点了一下西湖公园的“西湖”轮廓,发现竟然是用“线”而不是“区域”绘制的。我非常恼火,恼火于绘制者粗枝大叶、敷衍了事和将错就错。不仅如此,公园的范围也存在绘制错误。
我本以为已经由他人绘制完成的部分可以不用整理,现在看来并非如此。
Hello!
I’ll be working on developing Python bindings for the OSRM project for GSoC this year.
I’m pretty excited to say the least, as mapping/navigational data is something that I find genuinely fascinating and important, but also because I’ll be able to learn about working on a project via hands-on experience - with guidance from some really nice mentors.
A little bit about me - I’m most comfortable writing C++ code, as it’s the language I have used the most by far. That said, I’m also interested in all things development related, so it’ll be a good opportunity for me to learn more about bindings and the Python side of things.
Mapping the Weinsberger Berge
Inspired by Tom7 to go outside more, I set myself the goal of biking every Forestpath between Weinsberg and Heilbronn, before I will be moving avay in the Summer.
In the process I stumbled across many Tracks that need updating. Many have overgrown to the point of unusability, others are not mapped yet. One of the biggest challenges for the Forest in my opinion is deciding which Harvester Tracks should be mapped and which not. On a normal Field you wouldnt map every Tracktor Track, but in the Forest these Paths sometimes turn into paths used by the public. They are pretty volatile though. In the tree felling season they look like high traffic Tracks, very compacted, traversible by normal Trucks. But they are also not maintained, so quick to overgrow and turn very muddy to barely passable with a bike after a few days of rain.
This weekend I was able to complete the 4th of my areas and I wanted to take stock. I have driven every Path between Donnbronner Landstraße, Heilbronn and L1111. This includes the Schweinsberg, the vineyards, Köpfertal and Büchelberg. I also drove every path in Weinsberger Tal and the Waldheide between Donnbronner Landstraße, A81 and the Verwaltungsgrenze Weinsberg in the South.
I traveled 515,6km, created 38 changesets. I only crashed the Derailer on my City E-Bike twice (🥴), but overall I’m pretty happy with my work.
The Bike is honestly not suited for this task, a Mountain Bike would be the much better choice. But I usually don’t ride such treacherous trails.
Got a Branch between the Spokes not only killed the derailer, but also unseated the back wheel. Never had that happen before, and also had to carry the heavy bike out on my back, because the Track was definitely not drivable with my car.
Only 200km later it happened again. This time it seemed to catch in the Spokes on its own. Wasnt even such a mountainbikey trail.
Spent Sunday going around many of the new housing estates around Congleton to survey roads, paths and house addresses. By my very rough count there have been over 3000 houses built or planned in Congleton since 2010 - this Overpass query shows the extent: https://overpass-turbo.eu/s/1pPW
오픈스트리트맵 위키에서 ‘대피 시설’ 갈래를 가지런히 한 이야기(shelter, assembly point, bunker)
우리 말에서도 그리 여러 갈래로 나뉘어 있지는 않습니다만, 우리가 ‘대피소’라고 하면 재난을 피해서 혹은 재난으로부터 보호받을 수 있는 장소나 시설을 먼저 떠올립니다.
그렇다 보니 영어로 ‘shelter’가 바로 그런 장소인데, 정작 오픈스트리트맵 위키의 ‘shelter’ 항목에는 정류장 휴식 시설 같은 것이 올라있어 살짝 당황스러울 수가 있습니다.
사실 OSM 위키의 ‘shelter’ 항목에는 기후, 악천후 대피시설이 일부 들어있으며 우리도 관용적으로는 그렇게 쓰기도 합니다.
여튼, 대피소, 대피시설을 두루 살폈는데, 역시나 (뭇사람들이 편집하는 위키에서 거의 늘 일어나듯이)OSM 위키에서도 몇몇 군데가 서로 뒤섞여 있거나 애매해서 나름 정리를 하였습니다.(먼저, 논의를 통해 합의를 이끌어 내 보려 했으나 제 영어 실력이 딸리고 말 주변이 없는 데다가 짧고 간단하게 밖에 쓸 수 없는 영어 실력이다 보니 뜻을 이루지는 못 했습니다.)
먼저, ‘shelter’ 항목은 주로 기상, 악천후로부터 보호받을 수 있는 시설물인데, 특이하게도 ‘낙진 대피소’가 거기에 포함되어 있어서 이건 ‘bunker’ 쪽으로 옮겼습니다. 그 밖에는 크게 건드릴 것이 없었습니다.
두번째로, 재난 시 임시 대피 장소이며 집합 장소인 ‘emergency=assembly_point’인데, 우리나라의 경우에는 최근 해일에 대비한 피난 장소와 원전 주변 지역에서 원전 사고시 대피할 수 있는 장소이며, 상황이 나쁠 때에는 정부의 대피 과정에 대비하기 위한 집합 장소가 있습니다.(일단 여러모로 알아본 바로는 외국의 경우에도 크게 여기서 벗어나지는 않는 것 같습니다. 다른 나라까지는 잘 모르겠지만, 가까이 일본이나 대만도 이와 비슷한 체계들이 있습니다.)
이 속성의 특징으로는, 그야말로 임시 대피장소이며 다음 단계에 대비한 집합장소라는 것입니다.
그래서 일본의 쓰나미 대피처의 경우에는 쓰나미의 세기에 대한 조건으로 안전 높이가 설정되어 있습니다.(아마 우리나라도 있지 않나 싶습니다.)
또, 그냥 열려있는 공간일 수도 있고 일부 체육관 같은 튼튼한 구조물일 수도 있습니다.
그 밖에 좀 흐릿했던 것이 바로 우리나라 경우 ‘민방위 대피소’라고 부르는 ‘민간 방호 시설‘인데 이건 정말로 임시로 긴급하게 폭격의 1차 피해로부터만 보호받는 것이기 때문에 ‘emergency=assembly_point’에 넣는 것이 좋지 않을까 했으나, 여러가지 속성들을 살펴보고 외국(주로 대만)의 경우까지 살펴본 바 ‘bunker’ 쪽에 들어가는 것이 알맞겠다는 결론을 내렸습니다.
다만, ‘bunker’가 주로 군사시설인데 견줘서, ‘민간 방호 시설’의 대부분은 평상시에는 민간인의 접근이 자유로운 곳들인 것이 좀 걸렸습니다만, 모든 조건이 깔끔하게 갈래지을 수는 없을 것입니다.(우리와 비슷한 군사적 상황을 가진 나라들은 비슷할 것입니다. 당장 가까이 대만 같은…)
어쨋든 비록 군사시설로 갈래짓지는 않지만, 정부의 관리를 받는 지정된 장소라는 특징이 있습니다.
대만의 경우에 대해 조금 더 덧붙이자면, 우리처럼 민간 시설을 이용한 긴급 방호 시설도 있으나 일부는 군과 함께 공유하는 곳도 있는 모양입니다. 방공시설 곁에 군의 방어 시설-보기를 들어서 대공포, 박격포 진지, 군 참호 등-이 있는 경우도 있었습니다.
이렇게 해서 크게 세 갈래로 갈래지었습니다.
* shelter : 악천후 대피소(inclement weather shelters)
* assembly_point : 재난시 임시 대피 장소, 집합 장소(Temporary evacuation sites and assembly areas during disasters)
* bunker : 견고한 방호 시설(주로, 군사 시설) (Relatively heavily defended facilities (primarily, military installations))
별로 영양가는 없습니다만, 관련 논의 몇 군데 고리 겁니다.
* Clean up the types of ‘shelter’ on the OSM wiki :
* 대피소(shelter/assembly_point)와 관련한 문의 :
— — —
이어질 논의를 위해서 ‘한국’(남한)의 경우 재난에 대비하는 대피 시설에 대해 정리해 놓겠습니다.(기후 대비 시설도 일부 들어 있습니다. 즉 OSM 위키에서 ‘amenity=shelter’ 항목)
한국의 안전시설에는, 민방위 대피소, 민방위 급수시설, 지진대피장소, 지진겸용 임시주거시설, 이재민 임시주거시설, 화학사고 대피장소, 무더위 쉼터, 한파 쉼터, 미세먼지 쉼터 같은 것이 있습니다.
이 가운데 ‘민방위 급수시설’은 사람이 직접 이용하는 것이 아니므로 빼고, ‘지진겸용 임시주거시설’, ‘이재민 임시주거시설’은 ‘social_facility=shelter‘에 가깝습니다.
‘지진겸용 임시주거시설’은 그에 덧붙여 ‘assembly_point:earthquake=yes’ 속성을 주면 되겠습니다.
‘민방위 대피소’는 ‘벙커’ 가운데 ‘bunker type=bomb shelter‘로 지정하면 됩니다.
‘지진대피장소’는 다시 ‘지진옥외대피장소’와 ‘지진해일긴급대피장소’로 나뉘는데, 모두 ‘assembly_point‘이며, 하위 속성에 따라서 ‘assembly_point:earthquake=yes’와 ‘assembly_point:tsunami=*’ 키를 알맞게 쓰면 되고, 덧붙여 해일의 경우에는 해일의 세기에 따라 안전 높이를 설정하는 키도 있으니 참고 하시기 바랍니다.
‘화학사고 대피장소’는 별다른 방호시설을 갖추지 않는다는 점에서 ‘assembly_point’에 가깝습니다.
‘무더위 쉼터’, ‘한파 쉼터’, ‘미세먼지 쉼터’의 경우에는 별다른 시설이 아니라 냉난방 시설이 갖추어진 곳, 공기조절 시설-공기 정화 시설이 아닙니다!-이 갖추어진 곳일 뿐이기 때문에 이건 그냥 ‘건물’의 하위 속성으로 보는 것이 나을 것 같습니다.(좀 정리를 하긴 했으면 싶은데, 합의하기가 쉽지 않아서… ㅡ.ㅡ)
On the 1st of June, 2023, I trained about 15 newbies who just joined our local chapter on how to map using the iD editor in osm.
2nd of June, we held a coordination meeting for SOTM Nigeria.
I will never forget the night I learned the difference between fundraising and development.
It was the summer 2007. I had a new job at a private high school in New York City. At the first “back to school” faculty meeting, we learned that the primary funder of the school had just filed for bankruptcy because of losses in a type of investment none of us had heard of called subprime mortgages. “What does this mean for the school,” someone asked? The answer from the chair of the board was direct: “We are closing down, as of today.” More than 30 teachers and teaching staff lost their jobs that night.
Fundraising is generating money in the form of grants, donations, events, auctions, and other kinds of giving to fund nonprofit entities. Development refers to fundraising as well as the strategies that build long-term stability for the fundraising, including strategic planning, budgeting and prioritization, reporting, donor cultivation, stewardship of existing donors, and raising awareness about the organization’s mission.
You see my point here. The school in New York had done fundraising, not development.
So what does it take to create a strong, sustainable development program for a nonprofit? 1) A truly great story and cause 2) A well-defined strategy and 3) financial accountability. So, let’s take these things one by one.
Story
OpenStreetMap is one of the greatest stories and causes in the world. Where else can you find a global community of volunteers who collaborate across countries, culture and languages on a single, incredibly important, wildly creative, technologically impressive project that is then given away for free to all who wish to use it? As you all know, OpenStreetMap provides game-changing amounts of data to thousands of small and large businesses, humanitarian causes, governments, municipalities, universities, researchers, etc., and in so doing nurtures technology and research innovation, job training, life-saving programs and processes, and cultivates cross-cultural relationships and connections on global scale. As a story, it’s one for all time.
This is why next week at State of the Map US in Richmond, we are launching the 2023 fundraising campaign and asking all who use and love OpenStreetMap to make a donation at whatever level you are comfortable. There will be more to come on this “broad base” campaign soon.
Next, let’s take a more in depth look at the other two planks of a good development program.
Strategy
The nice thing about nonprofits is there’s no shareholders or executive management board pushing key performance indicators at you night and day—you have the pleasure of being mission-driven. But the temptation then is to forgo strategic decision making over the day-to-day pull of the mission. And if the nonprofit is growing fast, there’s a risk of growth without strategy, which is just noise.
OSM added 2 billion of its total of 8 billion nodes, ways, and relations in just the last two years—I think that’s a pretty good metric on how fast it is growing. This is why the OSMF has a strategic plan out for consultation.
Why does this matter to a fundraising program?
Well, almost anyone will give a few dollars to a good cause just for the love of it. But the companies and people who will give tens and hundreds of thousands (or millions) of dollars, have higher standards for what Americans call “philanthropic investment.” They want their donations to drive the best possible outcomes for the nonprofit, and they also usually want some kind of charitable “return on investment” on their donation, usually in the form of exposure for their brand.
Now, in OSM’s case, the value to companies is the stability of the project and the quality of its data. Up until recently, this is a value proposition that sold itself because there was no competition. But, in my view, this is going to change. One reason is the overheated economy of the last decade is slowing down. Another is that there are soon going to be new competitors for good map data. There is Overture coming in hot, of course, and there are also fast-moving new technologies that are going to make it vastly easier to generate maps and map data.
The way to inspire companies and donors to continue to make significant donations to OSM is for the community to be laser focused on doing what’s best for the map and the community, which is why getting the strategic plan into prioritized and achievable form is so important.
Financial Accountability
It turns out that the vector tile infrastructure topic that I keep reading about is a good example of why financial accountability is the third plank in the development of a good fundraising program.
Vector tiles are a pretty good story: they can be visualized; they interest volunteers with a wide range of experience and skills; they have a lot of use cases. You can “sell” tiles as a good philanthropic investment. Second, from what I can see, just about everyone agrees that some improvement to the infrastructure is a legitimate strategic priority for OpenStreetMap. So far so good.
But what about financial accountability? On this one, I think there’s some opportunity for improvement.
First of all, the service is not free. It is paid for by Fastly, AWS, AARNet, University College London, OSUOSL, and Umeå University, who are making donations “in kind” to the OSMF. In a healthy nonprofit governance structure and development program, these donations in kind are acknowledged by name, stewarded with reports about how the resources are used, and the cost that they offset is still accounted for in the budget so that long-term financial planning is reflective of the real costs. There is also, ideally, a plan B, in the unlikely event that this corporate underwriting should cease.
I believe these in-kind donations are being accounted for in OSMF budget, but I might suggest that the frequency which with they are described in forums and issues as “free” is getting in the way of costing and prioritization.
As everyone knows there are all kinds of costs that aren’t monetary: time, opportunity, risk, training, knowledge, maintenance, social, etc. In Github issue #342 I saw cost concerns about time and maintenance being calculated based on past or current resources, and I saw cost concerns about some risks to do with known challenges, but not much costing of the risk of rising demand, nor the risk of alienating and/or dampening innovation and volunteerism within a community who feel their ideas are being thwarted. I also didn’t see a lot of opportunity costing on new technologies that might bring new or different efficiencies or functionality.
I also can’t find any documentation about whether the community commitment to FOSS principles extends to keeping the tile service free to all. To me, this question should guide many of the other downstream decisions. (I do want to acknowledge that maybe this conversation exists and I just couldn’t find it.)
For this reason, it’s hard to know what is the real cost to the donors and the community of the current tile schema, nor what is its strategic value to OSM and/or its mission. This makes it difficult to assess new proposals.
Anyway, tiles are just one example, and I am using it to say that the growth opportunity in terms of fundraising for the OSMF and the OSM community lies in areas of strategic and financial accountability. When more is known about the details, it is going to be relatively easy to pitch the philanthropic opportunities because the cause is so just and the story is so compelling.
What’s Next?
This year, the OSM community is working together to define and prioritize a group of technology and community initiatives that will inspire significant donations from companies, individuals and foundations–just in time for OpenStreetMap’s 20th birthday.
Join us in Richmond!
For those of you coming to SotMUS, please join the OSMF at its Fundraising Presentation on Friday at 12:40 and at the Strategic Plan BoF
References:
Contrary to common practice, I hold (after much deliberation and consideration) that the best way to map runways is to make them an area.
One reason is that everybody and their dog, including our very own dearest wiki, defines a runway as being an area, with various elaboration. Example from our own wiki: [quote]A runway is a defined rectangular area on a land aerodrome (aeroway=aerodrome) prepared for the landing and take-off of aeroplanes. [/quote].
The eternal counter-argument is the parallelism to ways, railways, waterways and perhaps more; but I hold this argument to be non-valid. Unlike all the other categories, runways can NOT be joined to create routes. An aviator’s route planning mentions aerodromes and optionally other waypoints, navaids, visual reference points, but never runways. So that there is really no point in defining a runway as a way, or any other linear element.
I therefore strongly oppose both the mapping of runways as linear elements, and the additional use of area:runway or any such. The latter are totally redundant, and thus a waste of valuable resouces, storage capacity in the first place.
I am not the only mapper with this opinion, even less am I the first; many French ultralight terrains and their runways (“Base ULM”) have been mapped this way, and never been questioned. I find them perfectly satisfactory, too. For just one example among many, see [url] https://www.openstreetmap.org/way/587820283 [/url]
What is Hasiru Aqua & what do they do?
Hasiru Aqua, a leading agritech startup, is transforming the aquaculture landscape by providing vital support to farmers in Karnataka, India. Their efforts in increasing fish yields have significantly boosted farmers’ incomes and improved the overall socio-economic well-being of farming communities. Additionally, by incorporating fish into local diets, Hasiru Aqua is enhancing the health outcomes of individuals.
Why does Hasiru Aqua require mapping?
To achieve their ambitious goal of working with 1,000 farms by the end of 2023, Hasiru Aqua requires precise information about the geographical distribution of inland ponds. These ponds, constructed with government subsidies for rainwater harvesting, serve as the foundation for fish farming. Identifying their locations is crucial for Hasiru Aqua to effectively reach out to farmers and offer their specialized services. Moreover, focusing on the outskirts of Bangalore ensures a readily accessible market for fresh fish supply to urban consumers.
How is AP Hub helping Hasiru Aqua map?
Hasiru Aqua has partnered with Open Mapping Hub-Asia Pacific to spearhead their mapping mission. By leveraging crowd-based mapping, the AP Hub engages volunteers to pinpoint the exact locations of inland ponds surrounding Bangalore. The subsequent digitization project in the Tasking Manager will ensure accurate mapping of these ponds in OpenStreetMap.
Together with the community, the AP Hub did a 24-Hour Mapathon last 26 May 2023 to cover as much mapping and validation. More than 400 project tasks were completed, mapping 4,600+ ponds in the area.
Present Status of the Mapping Mission
Substantial support has been received from community members from all over the world and from our friends from TomTom. With the two (2) mapping missions released, we have been able to completely map down more than 3,500+ tasks and we are down to the final 870 tiles. Furthermore, validation support will definitely be needed in the following weeks.
How can you help Hasiru Aqua?
We continue to call out the support of the OpenStreetMap communities and mapping enthusiasts to help Hasiru Aqua and the people of Karnataka, India.
Map and validate with us through the following project areas:
Hasiru Aqua Project 1
(MAPPING and VALIDATION)
Hasiru Aqua Project 2
(VALIDATION)
Hello everyone, myself Neelima Mohanty , currently pursuing my BTech in Computer Science and Engineering from Odisha University of Technology and Research , Bhubaneswar , Odisha , India. I am a Sophomore (2nd year) . I have been selected as an Outreachy intern at Humanitarian OpenStreetMap Team (HOTOSM) for the May to August Cohort.
My Core Values which motivated me to apply to Outreachy
* Learning and Implementation
Once Benjamin Franklin had said “Tell me and I forget, teach me and I may remember, involve me and I learn.” Almost all the tech skills that I have learnt till date have implementations tied along with them. My internships , trainings and small projects are all evidences of the fact that I believe in a continuous and comprehensive process of learning and implementation. I applied to Outreachy on the same ray of hope that each time I make a contribution I will learn something new and implement it.
* Transparency
Quoting the line of Dalai Lama “A lack of transparency results in distrust and a deep sense of insecurity.” I always like the workplaces which are transparent and where the process of judgement is crystal clear . Such a place is Outreachy and also the organisation I had applied for (HOTOSM) along with my mentors Petya Kangalova and Rob Savoye. The three steps of Outreachy Open Source program – initial application , contribution period with final application and the internship period shows how Outreachy follows transparency and this really impressed me.
* Teamwork
“Teamwork makes the dream work” said by Bang Gae. During the contribution period of Outreachy , I came across my amazing mentors Petya Kangalova and Rob Savoye who guided me along every step and are still guiding me. Talking to them I felt like if I get selected , we will form a great team together. And here I am with me dream fulfilled.
Another great reason for which I applied to Outreachy is to represent the girls in my country and the world, in this tech industry as well as open source platform.
At the end of this blog , I want to thank Outreachy for giving me this opportunity to be a part of this wonderful program and also to share my thoughts . I would also like to thank my mentors Petya Kangalova and Rob Savoye. Ofcourse my hardwork and my parents’ blessings have a great role in my achievement. That’s it friends , meet you next time with Blog 2. Till then bye 😊
So, I stumbled across this logs (https://planet.openstreetmap.org/tile_logs/)
Let’s (mass) download it, starting from June 26, 2022 until today.
Here’s the content of each csv files : domain name, unknown number, and another unknown number.
Then, process all those downloaded files. Let’s merge all the statistics for each domain name into one single JSON file.
Finally, let’s sort all those domain name based on their occurrences.
Here’s the final result (https://gist.github.com/altilunium/1dd0a8de3852a27fc025bd3a5f07e5ed) :
“341” means that this domain exists in at least 341 OSM’s daily log tile files, from June 6, 2022, until today (June 2, 2023).
Update :
Here’s the same statistics, but for apps (https://gist.github.com/altilunium/7d0b02cb3a248b4c457f3ac31731217c)
Finally, filter that statistics, only for Indonesian apps :
- Government ministry and agency
- kemdikbud.go.id : The Ministry of Education, Culture, Research, and Technology
- atrbpn.go.id : Ministry of Agrarian Affairs and Spatial Planning
- bmkg.go.id : Meteorology, Climatology, and Geophysical Agency
- kemenkopukm.go.id : Ministry of Cooperatives & Small and Medium Enterprises
- kemendagri.go.id : Ministry of Home Affairs
- esdm.go.id : Ministry of Energy and Mineral Resources
- pu.go.id : Ministry of Public Works and Public Housing
- bkkbn.go.id : National Population and Family Planning Board
- dephub.go.id : Ministry of Transportation
- Local Government
- bandung.go.id : Bandung (City)
- banjarkab.go.id : Banjar (Regency)
- ntbprov.go.id : West Nusa Tenggara (Province)
- jabarprov.go.id : West Java (Province)
- makassarkota.go.id : Makassar (City)
- tenggulangbaru.id : Tenggulang Baru (Village)
- palembang.go.id : Palembang (City)
- kotabogor.go.id : Bogor (City)
- banjarbarukota.go.id : Banjarbaru (City)
- malangkota.go.id : Malang (City)
- Company
- telkom.co.id : State-owned telecommunication company
- pertamina.com : State-owned oil and gas company
- gps.id : GPS tracker company
- wahana.com : Delivery services company
- Subsystems
- com.atlas.eturjawali.dirty : e-Turjawali, Indonesian Traffic Police’s management & monitoring system
- ppdb-disdikgarut.id : School Admission System - Garut
- ppdbpekanbaru.id : School Admission System - Pekanbaru
- sikadirklhk.id : Sistem Rekam Kehadiran ASN Terintegrasi (SIKADIR) - Attendance Recording System - Ministry of Environment and Forestry
- cctv.malangkota.go.id : Public CCTV - Malang
- bhumi.atrbpn.go.id : Cadastral Maps - Ministry of Agrarian Affairs and Spatial Planning
- sekolah.data.kemdikbud.go.id : National School Database - The Ministry of Education, Culture, Research, and Technology
- juanda.jatim.bmkg.go.id : Weather Stations - Meteorology, Climatology, and Geophysical Agency
- com.telkomsel.telkomselcm : MyTelkomsel, mobile network operator app.
- com.bkppdklaten.saenaga/ : Sistem Informasi Presensi Elektronik Abdi Satya Nagara (Saenaga) - Klaten Regency (Attendance Recording System)
- absensi.estamina : Endless Sistem Manajemen Kinerja Aparatur (e-STAMINA) - Probolinggo Regency (Attendance Recording System)
- prasasti.mojokerto : Presensi ASN Berbasis Teknologi Informasi (PRASASTI) - Mojokerto Regency (Attendance Recording System)
- absensi.jemberbaru : Layanan Pegawai Elektronik (LPE) - Jember Regency (Attendance Recording System)
- sipreti.malangkota.com : Sistem Informasi Presensi Terkini (SIPRETI) - Malang City (Attendance Recording System)
- kmob.jabarprov.go.id : Kinerja Mobile - West Java Province (Attendance Recording System)
Die GoPro Max kann im Intervall von zwei Sekunden ein Bild machen, im Modus “360° Zeitraffer”. Diese Bilder werden einzeln, fertig gestitcht, mit GPS Koordinaten und GPS Zeitstempel auf der SD-Karte gespeichert. Das ist schön, wenn man diese zu KartaView oder Mapillary hochladen mag, oder in JOSM einlesen zum Mappen zu Hause.
Mich stört daran, dass das minimale Intervall 2sec. ist, und nicht wie auf anderen GoPros (wie der Hero 8 Black) alle 0,5sec.
Aber die GoPro Max kann ja auch Video aufnehmen in 360°!
Das hat dann auch Ton, aber, soweit ich weiß, keine GPS-Spur.
Aber das Video enthält zwei Video-Spuren, die z.B. VLC einzeln abspielen kann, also nicht direkt ein fertiges 360° Video!
Vorgehen
Eine Lösung für das nachträgliche Stitchen der Videos ist die Software von GoPro selber: https://gopro.com/de/de/info/gopro-player Die gibt es aber nicht für Linux, und muss manuell per GUI bedient werden.
Diese kann aber aus den *.360
Dateien von der SD-Karte *.mov
Dateien Stitchen, welche als normale 360° Videos abspielbar sind.
Jedoch braucht es noch eine Georeferenzierung für das Video, also muss ich separat eine GPS-Spur aufnehmen. Das geht mit OsmAnd (in Zukunft dann bei solchen Aktionen mit kontinuierlicher Auflösung und nicht nur alle 1 sec. ein Punkt) auf dem Handy.
Mit den mapillary_tools kann man aus einem Video alle x-beliebige Sekunden Frames samplen, also einzelne Bilder extrahieren.
z.B. so:
mapillary_tools video_process GS025642.mov --geotag_source "gpx" --geotag_source_path gpx-path.gpx --video_sample_distance -1 --video_sample_interval 0.1 --skip_process_errors --interpolation_use_gpx_start_time
Danach habe ich einen Ordner mit den extrahierten Frames und eine mapillary_sampled_video_frames/mapillary_image_description.json
Datei mit den Zeitstempeln und der Geolokalisierung pro extrahiertem Frame.
Diese ist aber versetzt, da Video und gpx-Track nicht exakt gleichzeitig gestartet wurden.
Ich habe mir ein Python-Script geschrieben, welches die Daten aus der JSON-Datei in die EXIF-Daten der einzelnen Bilder schreibt, damit ich diese nachträglich manuell in JOSM versetzen kann.
Nun kann man die Bilder und die gpx-Spur in JOSM öffnen und die Korrelation korrigieren, also an die korrekte Position auf der Spur verschieben.
Dazu braucht es das JOSM-Plugin “Photo Geotagging”, um die neuen Koordinaten auch wieder in den Bilddateien speichern zu können.
Jetzt kann man noch Bilder am Anfang oder Ende löschen, oder zwischendurch welche herausnehmen, die zu nah aneinander sind.
Das ganze dann hochladen zu Mapillary und fertig: https://www.mapillary.com/app/?pKey=776980050706298&focus=photo
Probleme
Ein Problem ist die Qualität der Bilder, die ist schlechter als bei einzeln aufgenommenen Bildern.
Auch ist die Auflösung geringer, da die Video-Streams eine geringere vertikale Auflösung haben (warum auch immer), also ist das gestitchte Video auch kleiner.
- Video / Bilder: 5376 x 2688 Pixel = 14.45 megapixels
- Einzelne Bilder: 5760 x 2880 Pixel = 16.59 megapixels
- Beide mit Seitenverhältnis 2:1
Außerdem möchte ich Bilder die nah aneinander liegen automatisiert erkennen, das macht zwar das Mapillary Tool auch, aber sehr schlecht, und markiert sehr viele (vor allem nacheinander, und anderswo keine) als fehlerhaft, bzw. als zu nah beieinander.
Das habe ich auch schon bei den fertige 2sec. Bildern gemacht, wenn ich an Ampeln warte, etc. werden viele Bilder an derselben Stelle gemacht, die sind überflüssig.
Das Extrahieren der Frames passiert zu JPEG;
https://github.com/mapillary/mapillary_tools/blob/a3964b6918fbbcd97c08a0db1677f4e61cbbcdb6/mapillary_tools/ffmpeg.py#L20
FRAME_EXT = ".jpg"
Ich weiß nicht, ob das bei PNG bessere Qualität liefern würde, oder ob eine bessere Komprimierung für die JPEG einstellbar ist, seitens FFMPEG ja, aber das ist nicht angegeben im Mapillary code:
https://github.com/mapillary/mapillary_tools/blob/a3964b6918fbbcd97c08a0db1677f4e61cbbcdb6/mapillary_tools/ffmpeg.py#L269
194 & 269: # -q:v=1 is the best quality but larger image sizes
Warum, weiß ich nicht.
Über Kommentare und Verbesserungsvorschläge bin ich dankbar.