Read my previous posts Summary Aggregate and Spatial Filters and Advanced Aggregate Expressions to Automate QA to learn more about the powerful aggregate function.
Continue readingAdvanced Aggregate Expressions to Automate QA in QGIS
This post is the continuation of Summary Aggregate and Spatial Filters in QGIS. I have been exploring aggregate functions more and have found interesting ways to automate tasks in QGIS. One such example is helping automatically keeping track of feature edits to help with Quality Assurance (QA).
Continue readingSummary Aggregate and Spatial Filters in QGIS
QGIS expression engine has a powerful a summary aggregate function that can do spatial joins on the fly. This enables some very interesting uses.
Continue readingApproximating Geodesic Buffers in QGIS
When you want to buffer features that are spread across a large area (such as global layers), there is no suitable projection that can give you accurate results. This is the classic case for needing Geodesic Buffers – where the distances are measured on an ellipsoid or spherical globe. This post explains the basics of geodesic vs. planar buffers well.
Continue readingCreating Animated Flight Lines in QGIS

You may have seen a map where source and destination points are connected via curved lines. It is possible to create such a map in QGIS with a simple trick – using custom projections and densification of lines. I will outline the steps to create such a map.
Continue readingQGIS User Conference 2019
I got a chance to attend the 3rd Annual QGIS User Conference at A Coruña, Spain.
This was the meeting point of over 100 QGIS developers, users, and trainers from all over the globe. It was the first time I met the QGIS community in person, including some of the people whose work I have admired for years. The event took place over 3 days – 2 days of workshops and 1 day of talks. I am putting some of my notes, takeways and links to resources shared on other channels (twitter, telegram, email) for the benefit of folks who were not present

Convert between UTM and Degree coordinates using Google Spreadsheets
Converting between different coordinate reference systems or projection is a fairly standard feature in a GIS. There are a number of command line tools also available for performing bulk-conversions. cs2cs program, part of the PROJ.4 library is my favorite.
Continue readingOpenAQ Workshop Notes
I recently attended the OpenAQ workshop in Delhi . The workshop’s goal was to bring tech, science and media folks working on air quality together and brainstorm how to use open data to tackle air pollution challenges. Below are my notes and links to materials presented during the workshop.
Below are my notes and links to materials presented during the workshop.
Continue readingLine Transact Surveys using OpenDataKit(ODK)
This weekend, I got an opportunity to volunteer with a non-profit called Junglescapes. We took a day trip to the Bandipur forest in Karnataka where they have done extensive work in forest restoration. One of their success stories is working with the locals to remove invasive species such as Lantana from the forest. Junglescapes volunteers and locals carry out regular line transact surveys to determine the impact of their interventions. One of the goals for my participation was to see if we can replace the cumbersone paper forms and handheld GPS devices with a mobile-phone based survey using ODK. I am sharing my notes on how we setup the survey and mapping of the result.
Continue readingCreating Geospatial PDFs with GDAL Tools
GeoPDF is a unique data format that brings the portability of PDF to geospatial data. A GeoPDF document can present raster and vector data and preserve the georeference information. This can be a useful format for non-GIS folks to consume GIS data without needing GIS-software. While GeoPDF is a proprietary format, we have a close alternative in the open Geospatial PDF format. GDAL has added support for creating Geospatial PDF documents from version 1.10 onwards. In this post, I will show how to create a GeoPDF document containing multiple vector layers.
Get the Tools
Windows
OsGeo4W is the best way to install GDAL on Windows. The default installation gives your GDAL tools with PDF format support. You can use the GDAL tools via the OsGeo4W Shell included in the install.
Mac
KyngChaos providers a convenient GDAL installer for Mac. You also need to install the additional GeoPDF plugin to enable support for PDF format.
Once installed, add the path to GDAL library to your .bash_profile
file to be able to use the commands easily from the terminal. Launch a Terminal and type in the following commands.
echo 'export PATH=/Library/Frameworks/GDAL.framework/Programs:$PATH' >> ~/.bash_profile source ~/.bash_profile
Linux
Installation instructions will vary with the distribution. On Ubuntu, you can install the gdal-bin
package.
sudo apt-get install gdal-bin
Verify GDAL Install
If you already have GDAL installed, or just installed it, run the following command in a terminal to verify that your GDAL installation is working and has support for GeoPDF format.
gdalinfo --formats | grep -i pdf
If you see Geospatial PDF printed in the output – you are all set. If you do not get any output or get an error, your install is not correctly configured.

Get the Data
For this example, I chose to use OpenStreetMap Metro Extracts from MapZen. Download the shapefiles (OSM2PGSQL SHP format) for the city of your choice. I am using the extract for Bangalore city in this example. Unzip the downloaded file to a folder on your computer.
Procedure
The process for creating a GeoPDF file from a bunch of shapefiles is the matter of running a single gdal_translate
command. But we need to prepare the data and figure out the correct command-line options. So follow along to understand how you can arrive at the final command – or simply scroll to the end to see the final command-line.
latuviitta.org has a comprehensive overview of all the options available for GeoPDF creation via GDAL. The follow steps are adapted and simplified version of that guide.
- First step is to create a
.vrt
file that can hold all the vector layers we want in the PDF. If you just need a single layer in the PDF, you can skip creating the.vrt
file and directly reference the layer in place of the VRT. Note the <SrcSQL> tag in the VRT file. This is for filtering out all features where the ‘name’ field is empty. You can leave that out or modify to suit your dataset. Name this fileosm.vrt
and save it on the same folder with your data.
<OGRVRTDataSource>
<OGRVRTLayer name="roads">
<SrcDataSource>bengaluru_india_osm_line.shp</SrcDataSource>
<SrcLayer>bengaluru_india_osm_line</SrcLayer>
<SrcSQL dialect="sqlite">SELECT name, highway, geometry from bengaluru_india_osm_line where name is not NULL</SrcSQL>
<GeometryType>wkbLineString</GeometryType>
<LayerSRS>WGS84</LayerSRS>
</OGRVRTLayer>
<OGRVRTLayer name="pois">
<SrcDataSource>bengaluru_india_osm_point.shp</SrcDataSource>
<SrcLayer>bengaluru_india_osm_point</SrcLayer>
<SrcSQL dialect="sqlite">SELECT name, geometry from bengaluru_india_osm_point where name is not NULL</SrcSQL>
<GeometryType>wkbPoint</GeometryType>
<LayerSRS>WGS84</LayerSRS>
</OGRVRTLayer>
</OGRVRTDataSource>
- GeoPDF is a raster format that can overlay vectors on top. So we need a raster layer as the base. If you have some satellite imagery or scanned raster for the area, you can use it as the base layer, or we can create an empty raster for the extent of the vector layer.
ogrtindex
command creates a bounding box polygon from the given input layers.gdal_rasterize
command then fills this polygon with the given value and creates a raster. The-tr
option specifies the pixel resolution of the raster in degrees. You can tweak that to get the output size you need.cd
to the directory where you have extracted the vector layers and run the following commands.
cd Users\Ujaval\Downloads\bengaluru_india.osm2pgsql-shapefiles ogrtindex -accept _different_schemas extent.shp osm.vrt gdal_rasterize -burn 255 -ot Byte -tr 0.0001 0.0001 extent.shp bangalore.tif

- Now we can convert the empty
bangalore.tif
raster to a PDF – overlaying the vector layers from theosm.vrt
file.
gdal_translate -of PDF -a_srs EPSG:4326 bangalore.tif bangalore.pdf -co OGR_DATASOURCE=osm.vrt -co OGR_DISPLAY_FIELD="name"

- Once the conversion finishes, you can open the resulting
bangalore.pdf
file in any PDF viewer. Opening it in Adobe Acrobat viewer, you can see the map data layers. You can browse the features in the layer panel, search for any attribute value and zoom/pan the map.

- Another popular use of GeoPDF files is to use it as offline base maps using programs such as Avenza PDF Maps. Loading the
bangalore.pdf
file on Avenza Maps on your mobile phone, you can use the GPS to view your current location or trace a GPS route on top. Search also works across layers in the PDF.

You can download the sample bangalore.pdf Geospatial PDF format file for exploring the format yourself.