Blog

    

QGIS Road to Nerdvana Part 3: QGIS QA using astyle and pre-commit hooks

Posted by: Seabilwe Tilodi | in QGIS | 1 week, 1 day ago | Comments

We are back with another episode of our roads to Nerdvana. On today’s episode Tim Sutton and world-renowned QGIS developer Matthias Kuhn walk you through the setup process for using 'astyle precommit hooks' - basically clever tools that will make sure your code looks smart and neat automatically so that nobody rejects it for not being standard compliant when you make a pull request.

QGIS Road to Nerdvana Part 2: QGIS QtCreator Build on Pop_OS! 20.04

Posted by: Seabilwe Tilodi | in QGIS | 1 week, 1 day ago | Comments

In today’s video blog, Tim Sutton shows you how to use QtCreator to build QGIS in a graphical development environment. The key entries used when setting up 3D support and here are the commands used to install QtCreator:

QGIS Road to Nerdvana Part 1: QGIS Console Build

Posted by: Seabilwe Tilodi | in QGIS | 3 weeks, 1 day ago | Comments

QGIS Road to Nerdvana is an exciting series of videos blogs that walk you through building QGIS environments to installing and using QTCreator all running on Ubuntu 20.04.

Calculating area of rasters in QGIS

Posted by: Admire Nyakudya | 1 month, 1 week ago | Comments

QGIS raster functionality has come a long way and continues to improve. During my spare time, I am always on the lookout for interesting questions posed on https://gis.stackexchange.com.

Speeding up multiple web map service requests using Python's asyncio and aiohttp

Posted by: Andre Theron | in Python | 2 months, 3 weeks ago | Comments

Geocontext is a Django app that retrieves information from multiple web based services for a specific query point. The services are arranged into hierarchies with multiple services in a group and multiple groups in a collection. It currently supports querying WMS, WFS & ArcREST services.

School GIS task: create a 5km COVID-19 lockdown exercise buffer around your house

Posted by: Gavin Fleming | in Education, QGIS | 4 months, 1 week ago | Comments

If you are doing some teaching in the classroom and some online and you are finding "blended teaching" overwhelming, this task is designed for asynchronous self study.

Does hosting your own server still make sense in 2020?

Posted by: Tim Sutton | 4 months, 1 week ago | Comments

Client: We need a server for this project, and we want to host it in house

Create a custom reference grid in qgis composer part 2

Posted by: Admire Nyakudya | in QGIS | 6 months, 4 weeks ago | Comments

This is a follow-up post on https://kartoza.com/en/blog/create-a-custom-reference-grid-in-qgis-composer/.

Data defined settings for grid placements in QGIS 3.12

Posted by: Admire Nyakudya | 7 months, 4 weeks ago | Comments

For a while now I have been trying to simulate the 1in50k topographic maps of South Africa. I started using QGIS since version 1.8 and I couldn't replicate the cartography on the topographic maps but over time as QGIS has matured, I could replicate the NGI maps. NGI uses proprietary software and then Adobe to fine-tune some context on the maps. For this exercise I used QGIS 3.12.0

Calculating intersects for map layers and map extent dynamically in QGIS

Posted by: Admire Nyakudya | in Python, QGIS | 8 months, 1 week ago | Comments

Recently we have been working on a project that involves simulating the 1 in 50k topographic maps in South Africa. Since we are using QGIS Server to print the map all the logic is set up in print composer. All  maps generated are dynamic (users can select a specific area within South Africa to print) and QGIS Server will use the map template to generate the map. 

The Longest River in the World

Posted by: Andre Kruger | in QGIS | 1 year ago | Comments

Every now and then there might be a dispute about which is really the longest river in the world. As is shown in this National Geographic article. Even Wikipedia indicates that the fact that the Nile river is accepted as the longest river in the world as "disputed".

FOSS4G 2019 and QGIS in Bucharest

Posted by: Gavin Fleming | in Conference, FOSSGIS, GRASS GIS, GeoNode, GeoServer, Leaflet, PostGIS, Python, QGIS | 1 year ago | Comments

Open source GIS is alive and well and continues to grow in leaps and bounds around the world. Why so many Government entities in South Africa continue paying a fortune of tax-payers money for privative GIS and database software beats me, when wealthy, developed countries (as in most of Europe, for example) saw the light years ago and enthusiastically embrace FOSS.

Batch count vector features intersecting series of blocks in PostgreSQL

Posted by: Admire Nyakudya | in Database | 1 year, 4 months ago | Comments

The national mapping agency in South Africa (NGI ) caters for national mapping, digital topographic and other Geo-Spatial Information services. The department is mandated to provide spatial data for the whole country. In most cases, they have an in-house team that is responsible for digitizing aerial photography, field validation to produce vector data that is used to make 1:50 000 topographic maps.

Show only features within current Atlas feature - QGIS 3

Posted by: Admire Nyakudya | in QGIS | 1 year, 5 months ago | Comments

In our endless endeavour to spread QGIS, I was invited to conduct QGIS training at the Surveyor General Department in Swaziland.

Creating a live, topic specific mirror of OpenStreetMap in PostGIS

Posted by: Tim Sutton | in Docker, PostGIS, QGIS | 1 year, 5 months ago | Comments

Introduction

In this article, we will do a walk-through of creating a live mirror of OSM for a specific country or region and for a specific set of OSM features. For this example, we will fetch all building data for Angola into a PostGIS database, and update that database with new features as they arrive in OSM. Providing an OSM mirror in this way is a powerful tool to pair the power of OSM with the power of QGIS and PostGIS. Now you will be able to do offline analysis of the data in OSM. How does this all work? Here is a little diagram that illustrates the underlying architecture (click for a larger version):

FBIS 2 Launch Workshop

Posted by: Tim Sutton | 1 year, 6 months ago | Comments

Mounting a storage drive in Hetzner cloud for rancher deployments

Posted by: Admire Nyakudya | 1 year, 6 months ago | Comments

This article builds upon an earlier blog post by Tim Sutton on using-a-sambacifs-mount-as-a-docker-volume. In the previous article, Tim described the process of mounting a storage driver in detail.

How to make beautiful lollipop call out labels in QGIS

Posted by: Tim Sutton | in QGIS | 1 year, 6 months ago | Comments

Call out labels are a handy cartographic instrument for attaching labels to features on the map where you want the label to be offset from the feature being labelled. It allows you to prevent the map becoming overcrowded. I call the variant I describe here 'lollipop' labels because the 'callout line' is rendered with a decorative ball at the end.

Using NOTIFY to automatically refresh layers in QGIS

Posted by: Tim Sutton | in PostGIS, QGIS | 1 year, 6 months ago | Comments

One of the most brilliant but little-known features of QGIS is the ability to trigger layer refreshes and events in response to notifications from PostgreSQL. This was developed by the wizards from Oslandia and is easily added to any existing table in your PostgreSQL database - including PostGIS tables. This feature was added in version 3.0 (see https://qgis.org/en/site/forusers/visualchangelog30/#feature-trigger-layer-refresh-or-layer-actions-from-postgresql-notify-signal). Take for example this simple table:

How to easily add South African and Namibian toposheets as XYZ tiles to QGIS

Posted by: Tim Sutton | in QGIS | 1 year, 9 months ago | Comments

Thanks to the great work of Grant Slater and the OpenStreetmap team, there are freely available XYZ tilesets for South Africa and Namibia 1:50 000 series toposheets which can easily be added to QGIS. Here is the general procedure to add a layer:

Have any questions? Contact us.
We would love to hear from you!
Subscribe to our Mailing list (spam-free, industry-relevant occasional emails)

Subscribe to our mailing list

* indicates required