Posts Tagged ‘gpx’

Editing OpenStreetMap data with QGIS and Merkaartor

Problem: You want to contribute to OpenStreetMap from your desktop instead of from the Potlatch web tool.

In my last entry I discussed the process of downloading OpenStreetMap data using Quantum GIS (QGIS). This is how the downloaded data looked in the vicinity of the North Plateau Loop in Monte Sano State Park:

In this entry, I will cover two different methods I used to update this data to include my GPS track of the entire loop. I initially attempted to do this with QGIS.

Method #1: QGIS
When you first activate the QGIS OpenStreetMap plugin, the editing widget should appear on the right side of the screen. If it doesn’t, turn it on by going to View –> Panels –> OSM Feature. You should use the widget instead of the standard toolbar to identify and edit OSM features. If you click the OSM identify tool and hover over features, they will turn red and you can see their tags.

Shown above (in red) is one of the footway bits that fell near the North Plateau Loop, along with my GPS tracks (in magenta). I decided to keep the two segments that were already there, along with their foot=permissive and highway=footway tags. I added a name=North Plateau Loop tag to both of them by typing in the <new tag here> area.

Then I pressed the Create Line button.

The editor will automatically snap to existing features. I began at one the end of the segment by the parking lot and traced along the length of my track, stopping to incorporate the second segment along the way. Then I added the three tags to the new lines I had created.

Once I was happy with my edits, I tried to upload them to the OpenStreetMap server. At this point in the process, if you do not yet have an OSM account, go to https://www.openstreetmap.org/user/new and create one. Then, go back to QGIS and press the Upload OSM Data button.

The next screen is a summary of your changes. Add an optional comment to explain what you did, then enter your OSM account username and password, and press the Upload button.

If all goes well, you will get a message saying your upload has completed successfully. I, instead, got a python error message “OperationalError: SQL logic error or missing database”. According to the Quantum GIS forum, this has happened to some other people, but it doesn’t happen to everyone. You may get lucky. If not, you can try another tool such as Merkaartor.

Method #2: Merkaartor
While QGIS is a full GIS software package, Merkaartor has been developed solely for the purpose of working with OpenStreetMap. I found the interface less than intuitive.

After opening the program, my next step would typically be to add a basemap that moves me to the right geographic location. However, there is no Add Data button like I would expect. Instead, there is a list of layers already in the table of contents that have no source. You need to right-click on the top one to point it to some data. You can choose from a pre-loaded list of TMS (tile map service) or WMS (web map service) layers, or add a raster in GeoTIFF or “Walking Paper” (JPG, PNG or BMP) format.

I had trouble getting Merkaartor to load my georeferenced trail map, so I went the map service route. Once you pick a layer (I liked OSM Mapnik), you can use the mouse wheel to zoom and the right mouse button to pan to your area of interest. Then, press the green arrow Download button to get the current OSM layers in that area.

In the next screen that comes up, you would choose to download the Current View, which is selected by default. Alternatively, you could choose to download “From the map below” and do the same zooming and panning to your area of interest within the smaller window.

Merkaartor’s way of displaying the Monte Sano OSM layers is a bit different. It shows every vertex (node).


(click to see full size)

When you hover over a group of nodes, their color will change to a pink highlight. You must click on them to select them. They will then turn royal blue and their tags will be displayed in the Properties window on the bottom left of the screen. In order to select the line instead of the nodes that make it up, you need to move the mouse until the pink highlight turns thicker. After you click, the resulting royal blue selection symbol will also be thicker. Then you will see the tags shown above. You can edit them by typing inside the fields, just as with QGIS.

Go to File –> Import to load your GPS track .gpx file. It will be symbolized in a way that is difficult to distinguish from the OSM data. There is no way to change the symbols. I recommend turning off every layer that you don’t need to make things easier to see. (Do this by clicking on the eye symbol next to the layer.) When you are ready to begin editing, go to the Create menu and select Road.

I started, once again, at the bit of footway near the parking lot.

A couple cool things will happen at this point that didn’t happen in QGIS. First, the program will snap your new line not only to the ends of the existing segments, but also to the vertices of your GPS track. This makes it easier to follow it exactly. Second, the program will automatically carry all of the tags associated with the existing segment over to your new road. You will not have to go back and add them later.

When you have finished digitizing, press the ESC key to exit creation mode. At this point, if you want, you can polish up your work by splitting and merging segments. Simply hold down the CTRL key to select multiple segments, then choose the function to apply from the Road menu.

I found the ability to do that very useful because there was a bit of North Plateau Loop that didn’t belong in the original segments. Also, I worked in pieces so I could zoom in closer, and I liked being able to merge everything into one at the end.

When you are ready to upload your changes, you will need to go to the Tools –> Preferences –> Data tab to enter your OpenStreetMap username and password. Then press the megaphone Upload button. Review and summarize your edits in the next screen.

If you’re me, this time it will work! There is now a perfect North Plateau Loop on OpenStreetMap.org for all to see.

(click to see full size)

My parting thoughts are thus:
I wish I had been able to complete the upload in QGIS, because I find the program more pleasant to work with, and I like the idea of using a single GIS package to do everything. However, Merkaartor does offer some advanced OSM editing functions that make for a cleaner final product.

In summary, these are the main benefits of each tool:

QGIS

  • Full-service GIS package
  • Allows for changing of symbol representation
  • Allows for raster georeferencing and display
  • Better interface for those familiar with ArcGIS

Merkaartor

  • Allows for merging and splitting road segments
  • Snaps to GPS trace vertices
  • Copies tags from attached segment into extension
  • Uploads OSM edits without issues

Tags: , , , ,

Working with GPS tracks in Quantum GIS (QGIS)

Problem: You want to compare your GPS data with OpenStreetMap data in a GIS… for free!

I am beginning to explore the world of free GIS software. QGIS has been recommended to me as one of the best out there. As an ArcGIS user, I found it easy to learn because the features are very similar. I am also impressed with the number of things it can do. I am going to write about just a small sample of them:

  • Georeferencing raster imagery
  • Loading OpenStreetMap data
  • Viewing GPS tracks and waypoints (.gpx files)

My goal when I started this project was to contribute some new information to OpenStreetMap. Since I arrived in Huntsville, I have had a lot of fun walking around Monte Sano State Park. I also recently obtained a GPS unit that I’ve been using for car navigation, and I thought I could use it to record the path of one of the hiking trails.

On my first visit to the park, the gate attendant gave me a trail map that looked close to this.

(Click to see full size)

A blue line surrounding the parking area, called the North Plateau Loop, looked to me like a good place to start. It passes some lovely scenic viewpoints.

I wanted to check if this trail has been added to OpenStreetMap yet. I decided to georeference the trail map and then download the OpenStreetMap data that falls within its bounds. Georefrencing within QGIS is a little different than what I am used to because it uses a separate window.

To start the process, select Georefrencer from the Plugins menu. Then, press the Open Raster button in the new Georefrencer window, and navigate to your image. Mine was montesano.jpg.

Press the Add Point button to start adding control points. When you click on the image, a box will come up that allows you to enter x,y coordinates or load the coordinates from the map canvas (your other window).

I loaded some vector street lines into my other window that I got from the City of Huntsville GIS Department’s FTP site. I georeferenced to the street intersections. When you’ve added enough control points–at least three, but more is better, go to the Settings menu to open the Transformation Settings.

The QGIS User Guide explained that Thin Plate Spline is a good transformation type to use when you have a lower-quality original, because it will introduce local deformations. Cubic is a good resampling method for smoothing things like scanned maps where we don’t need to worry about maintaining precise grid cell values. The only output format available is GeoTIFF. Chose the save location, then press ok. To initiate the georeferencing process, press the green start arrow.

If you checked “Load in QGIS when done”, the image will show up in your map canvas table of contents, and you can check your work. Everything will stay loaded in the Georefrencer window the way you left it, so it’s easy to add or remove control points and try again.

Now, it is time to load OpenStreetMap data on top of my map. The OpenStreepMap plugin is included with the core QGIS software, but it isn’t turned on by default. Go to the Plugins menu and select Manage Plugins to check it on. This will add the OSM buttons to the toolbar and will open OSM widget to the right of the map window. (I will talk more about the widget in my next entry.)

I zoomed so the trail map filled the screen, then pressed the Download OSM data button.

QGIS will grab the current extent of your map window. If the area is too big, it will tell you and you will need to zoom in. Select a place to save your .osm file and then press the Download button.

QGIS will automatically symbolize the layers similar to how they look on the OpenStreetMap website. When I looked at the data, I could tell that someone had added a couple footways near the bottom half of the North Plateau Loop, but they were not connected or complete.

So, I headed back to Monte Sano to walk the trail with my GPS device. I have a Garmin Nuvi 255w. The OSM wiki has instructions for how to collect traces with this device, but I didn’t find that I needed to do all that. My Nuvi has a Trip Log feature that is actually always recordings paths. It saves them to a standard .gpx file. You don’t need to tell it to start doing that, but you can turn on the lines so you can see it working. To do that, press Tools on the opening screen, then Settings, and then choose Show under Trip Log.

Now, whenever you move, you’ll see a cyan line being built behind you. If you want to start anew without all the clutter from your previous trips, press Tools, then My Data, then Clear Trip Log. I told my Nuvi to navigate me to the front gate of Monte Sano. Then I turned off my car, but left the Nuvi on and took it with me. I walked the trail and watched the line grow.

When I got home, I plugged the Nuvi into my computer and grabbed Current.gpx from the Garmin/GPX folder.

I added it to QGIS along with the OSM layers I had downloaded previously. To add a GPS track, press the Add vector Layer button. You will need to select the GPX file type from the long list in the browse data box.

Then, a window will come up asking you to choose which GPX sublayers to load. Tracks is the only one I need for this project. Waypoints holds your saved favorite places, and track_points holds the time when each point along the track was recorded.

I changed the symbol of my track line to a thicker bright magenta so it would show up more clearly. You can get to the symbology settings by right-clicking on the layer and selecting Properties, just like you would in ArcMap.

You can see that the GPS recorded my driving, parking, and walking movements all in the same layer. I think that the wiki instructions I linked to above might have allowed me to isolate just the trail, but then I would have had to do an extra file conversion step, and it is pretty easy for me to tell which is which.

My plan next was to edit the OpenStreetMap data that I downloaded to include this trail, and then upload my changes to the OSM server. I will compare the process of doing that with QGIS and Merkaartor in my next entry.

Tags: , , , , ,