Skip to main content
Back to blog

QGIS: the free alternative to ArcGIS that actually works

·11 min readOutdoor Tech

ArcGIS is the industry standard for geospatial analysis. It also costs at least $100 a year for the personal use tier, and that only gets you a Basic license. Professional and organizational pricing goes up fast from there, and Esri does not make it easy to find the exact numbers. QGIS does most of what I need for free.

I started using QGIS for Landbound to analyze terrain, inspect elevation data, and verify that the trail datasets I work with actually make sense. When you are building a trip planning tool that depends on geographic data, you need a way to visually inspect that data. A web browser and console.log are not enough.

QGIS is also my go-to for personal trip planning: pulling in hiking trails, overlaying elevation profiles, and exporting styled maps. It is not perfect. But it is free, open-source, and surprisingly capable.

What QGIS is

QGIS is a free, open-source desktop GIS application. It runs on Windows, macOS, and Linux. The project has been around since 2002, originally called "Quantum GIS" before rebranding in 2013. As of August 2024, the latest regular release is 3.38 (released July 2024), with 3.34 LTR as the long-term release from October 2023. The LTR branch gets backported bugfixes and is what I recommend for anyone using QGIS for actual work.

It handles vector data, raster data, databases, web services, and most of the geospatial formats you will encounter. PostGIS, SpatiaLite, WMS, WFS, GeoJSON, Shapefile, GeoPackage, GeoTIFF. The list goes on. Under the hood, QGIS relies on GDAL/OGR for format support and PROJ for coordinate reference system transformations. These are the same libraries that power most of the open-source geospatial ecosystem.

The plugin ecosystem fills in the gaps. If QGIS does not do something out of the box, there is probably a plugin for it. The official plugin repository has over 1,000 plugins, and you can install them directly from within the application.

ArcGIS vs QGIS for indie developers

This is not a "QGIS is better than ArcGIS" argument. ArcGIS Pro is a polished professional tool with decades of development, excellent documentation, and deep integration with Esri's ecosystem. If your organization already pays for Esri licenses, use them. Esri has earned its market position.

But if you are an indie developer, a hobbyist, or someone who needs GIS tools for a side project, the calculus is different. You are not a municipality or a utility company. You do not need enterprise geodatabase support or ArcGIS Online integration. You need to load some data, run some analysis, and export the results.

Here is how they compare for the kind of work I do:

  • Price. QGIS is free. ArcGIS Personal Use is $100/year for a Basic license. Professional licenses require organizational subscriptions that cost significantly more.
  • Platform. QGIS runs natively on Linux. ArcGIS Pro is Windows-only.
  • Formats. Both handle the common formats (Shapefile, GeoJSON, GeoPackage, GeoTIFF). QGIS uses GDAL/OGR under the hood, which means it supports essentially everything.
  • Plugins. ArcGIS has ArcPy and a mature extension marketplace. QGIS has a Python plugin system and hundreds of community plugins. Different ecosystems, both productive.
  • Learning curve. ArcGIS Pro has better onboarding and more polished UX. QGIS has a steeper initial learning curve and a UI that feels more utilitarian.

For my use cases, QGIS covers everything I need. The price difference alone settles it.

Loading OSM data with QuickOSM

One of the first plugins I install on any QGIS setup is QuickOSM. It lets you query OpenStreetMap data directly from within QGIS using the Overpass API. I wrote about OSM's data model and the Overpass API in an earlier post. QuickOSM puts a GUI on top of that.

Install it from Plugins > Manage and Install Plugins. Then open it from Vector > QuickOSM. You pick a key-value pair (like highway=path for hiking trails or natural=water for lakes), set a bounding box or use the current map extent, and hit Run. The data loads as vector layers directly into your project.

Want every drinking water fountain within your map view? Set the key to amenity and the value to drinking_water. Every marked summit? Key natural, value peak. QuickOSM translates your selection into an Overpass query, runs it, and adds the results as styled layers. You can also write raw Overpass QL queries in the plugin's query tab if you need more control.

For larger areas, downloading from Geofabrik is more practical. They provide pre-cut OSM extracts by region as Shapefiles or PBF files. QGIS opens PBF files natively, so you can load an entire country's road network without taxing the Overpass API. I typically grab the extract for the specific German state or Alpine region I am planning a trip in.

Elevation analysis

This is where QGIS really earns its keep for trip planning. You need a Digital Elevation Model (DEM), and there are two good free sources:

SRTM data from the USGS. The Shuttle Radar Topography Mission flew on the Space Shuttle Endeavour in February 2000 and captured elevation data at 30-meter resolution (1 arc-second) for most of the earth's surface between 60N and 56S latitude. The 30m data was initially restricted to the US but was released globally in 2015. Download tiles from USGS EarthExplorer after creating a free account. The tiles come as GeoTIFF files that QGIS loads directly.

Copernicus DEM from the European Space Agency. The GLO-30 dataset provides 30-meter resolution globally and became available through the Copernicus Data Space Ecosystem in 2024. The data is derived from the WorldDEM product based on TanDEM-X satellite radar data, and it is generally newer and cleaner than SRTM for many regions. For anything in Europe, Copernicus is my first choice.

Once you have a DEM loaded, the analysis tools are under Raster > Analysis:

  • Hillshade creates a shaded relief visualization. Default azimuth is 300 degrees, altitude 40 degrees. The result instantly makes flat elevation data look like actual terrain.
  • Slope calculates the steepness at each pixel. Useful for identifying sections of a trail that are going to hurt.
  • Aspect shows which direction each slope faces. North-facing slopes hold snow longer in the Alps. That matters for spring hiking.

You can also run these tools from the Processing Toolbox (Processing > Toolbox), which is useful if you want to batch-process multiple DEM tiles or chain operations together. The Processing framework supports graphical model building, so you can create reusable workflows for repetitive tasks.

Layer the hillshade under your trail data with some transparency, and suddenly you can see the terrain context for every route you are planning.

GPX tracks in QGIS

I have written about the messy reality of GPX files before. QGIS handles them well. Drag a GPX file onto the map canvas or the Layers panel, and QGIS asks which feature types to load: waypoints, tracks, or routes. Each loads as a separate vector layer.

From there you can style the track by color, width, or any attribute. If you have multiple GPX files from different trips, load them all and color-code them. I keep a QGIS project file for each region I hike in regularly, with past tracks layered over terrain. It builds up into a personal map of where I have been. It beats squinting at a phone screen trying to remember which trail I took two summers ago.

The built-in Elevation Profile tool (View > Elevation Profile, available since QGIS 3.26) draws a cross-section of elevation along any line you draw on the map. Load a DEM and a GPX track, draw the profile line along the track, and you get an elevation chart with distance on the x-axis and elevation on the y-axis. No plugins needed. The tool supports raster, vector, mesh, and point cloud layers, so you can compare GPS-recorded elevation against the DEM to see where your device was off.

For basic statistics like total ascent, descent, and distance, the Field Calculator or a quick Python script in the console gets you there. You can also use the "Add geometry attributes" tool from the Processing Toolbox to calculate line lengths in your preferred unit. It is not as polished as dedicated tools like Komoot for quick stats, but you have full control over the data and can run analysis that no consumer app offers.

Custom map styling and export

QGIS has a surprisingly capable styling engine. You can style vector layers with categorized or graduated symbology, apply rule-based styles, and control rendering at different zoom levels. For raster data, you can combine hillshade with color ramps to create topographic maps that actually look good.

The blending modes are worth knowing about. Set your hillshade layer to "Multiply" blending and place it above a color-coded elevation raster. The result looks like a proper topographic map with shading and color in a single view. You can achieve similar effects with transparency, but blending modes produce cleaner results.

The Print Layout (Project > New Print Layout) handles map exports. Add a map frame, a legend, a scale bar, and a north arrow. Export as PDF, SVG, or a high-resolution image. I use this for printing trail maps before trips where cell coverage is unreliable. The layout system supports multiple map frames on the same page, so you can have an overview map and a detail inset side by side.

Combining OSM trail data, a hillshade layer, and GPX tracks from previous trips into a single styled map is one of the most practical things I do with QGIS. Print it on A3, laminate it, throw it in your pack. The output beats any screenshot from a mapping app, and it works without cell service.

Where QGIS falls short

The UI is functional but not elegant. Dialogs are dense. Some settings are buried three menus deep. The styling interface has improved significantly in recent versions, but it still requires more clicks than ArcGIS Pro for common operations.

Stability varies by platform. On macOS, QGIS has crashed on me when working with very large raster datasets or complex print layouts. The Linux version tends to be more stable in my experience. Save often either way. The auto-recovery has gotten better, but I do not trust it completely.

Documentation is hit or miss. The official docs are thorough but can be hard to navigate. For specific workflows, you often end up on blog posts and YouTube tutorials rather than official guides.

3D visualization exists (View > 3D Map View) but is nowhere near ArcGIS Pro's Scene viewer. You can drape a raster over a DEM and fly around, but performance is poor with large datasets and the rendering quality is basic. If you need serious 3D terrain rendering or presentation-quality 3D maps, QGIS will disappoint.

And some advanced analysis tools that ArcGIS users take for granted either do not exist in QGIS or require chaining multiple plugins together. Network analysis, advanced geostatistics, and some raster algebra workflows are more streamlined in ArcGIS.

The Python console is powerful but not discoverable. QGIS ships with a full Python environment and you can automate almost anything through the PyQGIS API. But finding the right class or method means digging through API docs that assume you already know the architecture. It rewards persistence, but the initial friction is real.

None of these are dealbreakers for my use cases. But if you are coming from ArcGIS Pro, expect an adjustment period.

The bottom line

QGIS is not a toy. It handles real geospatial analysis work. I use it regularly for Landbound development to validate trail data, generate terrain visualizations, and test spatial queries before implementing them in code. For an indie developer building mapping applications or an outdoor enthusiast planning trips, it covers the vast majority of what you would use ArcGIS for. The fact that it costs nothing is remarkable given the depth of functionality.

Download it from qgis.org, install QuickOSM, grab some SRTM tiles for your area, and load your GPX files. Start with the 3.34 LTR if you want stability. You might not go back.

Sources

Enjoying the blog? Subscribe via RSS to get new posts in your reader.

Subscribe via RSS