Browsed by
Category: QGIS

Working in QGIS

Beginning to make progress with learning PyQGIS

Beginning to make progress with learning PyQGIS

Since writing my last post, I have both gone on to do another tutorial with qgistutorials.org as well as give the book PyQGIS Programmer’s Guide another try.

In this tutorial from qgistutorials.org, I used a custom Python expression and the map tips feature in QGIS to display the name and UTM zone of a city when you hover the mouse over it (shown in the feature image of this post).

The tutorial itself was easy, since it wasn’t about learning to write the code itself, just how to add the custom expression in QGIS. Still, I retyped the given code into a notepad as a learning exercise.

I’ve also made another attempt to learn from The PyQGIS Programmer’s Guide by Gary Sherman, and this time has had more momentum. The first attempt I was daunted by everything it instructed to do to set up the development environment, such as having Qt5 and having qgis installed in a directory without any spaces in the path, etc. It was a lot to take in. But I took it bit by bit and googled a lot of things, and got past it. I realized that OSGeo4W contains everything I need, and I re-downloaded it to a directory which contains no spaces.

I’ve been going through the book page by page, with QGIS open and looking at both as I go. I go really slow and I google a lot. I’m on page 99 now, and I’ve learned a lot. A lot of what I’ve learned has been separate from the content, just googling stuff I didn’t understand and reading about this and that. (For example, “what is ogr” and “what is a provider” and “why does my computer’s file paths have backslashes instead of forward slashes”.)

The screenshot below was when I was using PyQGIS to add and style layers on the canvas. That was exciting, because it finally felt like I was doing PyQGIS.

The way to Hanoi by backroads

The way to Hanoi by backroads

This is the way to Hanoi by backroads (excluding large highways, and prioritizing small roads over big roads)

I am located in Thai Nguyen city, which is about 80 km North of the Hanoi. The way to get to Hanoi is usually by bus, which travels on the motorway (aka freeway). I wanted to know if I can go to Hanoi on a bicycle, taking the back roads. The goal of this project was to find the optimal route to take by bicycle, with the priority being smaller roads.

First, I created a road network which excludes the major highways.

I know that I don’t want to ride my bicycle on the major highways at all, so I don’t need to include them in my road network. I downloaded from OSM only the highways in the smallest 3 classes.

Second, I prioritized smaller roads over bigger roads.

I prefer smaller roads, even if it means going a slightly greater distance. I want the tool to find the route that takes the smallest roads as much as possible.

Unclassified roads → Most preferred

Tertiary roads → Second priority

Secondary roads → Least preferred

To do this, I basically tell it, ‘smaller roads are faster, bigger roads are slower’. Then I tell it, ‘go find the fastest route’, and so it finds the route with more small roads.

In the attribute table of the highway layer, I used the field calculator to create a new field called ‘speed’. I calculated it as follows:

CASE
  WHEN "highway" IN ('unclassified', 'unclassified_link') THEN 30
  WHEN "highway" IN ('tertiary', 'tertiary_link') THEN 20
  WHEN "highway" IN ('secondary', 'secondary_link') THEN 10
END

I then ran the Shortest Path tool in QGIS with the “Fastest Path” option and the new attribute selected for the “Speed Field”. Since the tool prioritizes higher speeds, roads with higher values in the new field are preferred. The resulting output is more Tertiary highway than anything else.

Finally, to view the route on my mobile phone while out cycling, I imported the route to Google my maps. Thanks to my phone’s GPS, I can see my location as a blue dot.

Planting layout for a desert flower and cactus farm in Central New Mexico

Planting layout for a desert flower and cactus farm in Central New Mexico

Description: A planting layout for a sustainable agriculture model inspired by the environmental conditions of Central New Mexico. Design priorities are drought tolerance, commercial yield and ecological design. The row sequence is A-B-C-B-A where row A is honey mesquite with four-wing saltbush, row B is prickly pear cactus and row C is desert wildflowers. The rows are parallel to the general direction of the contour.

Change in Built-up Area in the City of Johannesburg Metropolitan Municipality (2014-2018)

Change in Built-up Area in the City of Johannesburg Metropolitan Municipality (2014-2018)

This map was begun by following a tutorial, then extended. The tutorial was to use a change assessment dataset to identify urban growth patterns in the city of Johannesburg from 2014 to 2018. Once done, I added OSM features including major highways and rails. I calculated the raster area for the 3 classes and added a pie chart. Finally, I designed the print layout.

Advanced Raster Analysis (QGIS3) — QGIS Tutorials and Tips