Skip to content
← Back to GIS Fundamentals
gis-fundamentalsBeginner· 7 min read

Geospatial File Formats: GeoTIFF, GeoPackage and Shapefile

What GeoTIFF and GeoPackage are, how a shapefile compares with a GeoPackage, and how to decide between vector and raster data.

What is a GeoTIFF?

Satellite imagery, DEMs and other raster GIS data often come as files ending in .tif or .tiff. A GeoTIFF is a TIFF image that also contains geospatial metadata. That metadata can tell GIS software:

  • Where the image is located
  • Its coordinate reference system
  • Its pixel size
  • Its geographic extent
  • How pixels relate to real-world coordinates

What a GeoTIFF can contain

GeoTIFFs are commonly used for satellite imagery, DEMs, orthomosaics, land-cover rasters, NDVI maps and temperature datasets.

It is widely supported by GIS and remote-sensing software, including QGIS, ArcGIS, GDAL and Rasterio.

What is a GeoPackage?

A single shapefile layer can require several files. GeoPackage was designed as a more modern and convenient alternative. It is a geospatial data format based on SQLite, with the extension .gpkg.

Why it is useful

One GeoPackage can store multiple layers. A single file could hold roads, buildings, rivers, administrative boundaries and land parcels.

It supports vector features, raster and tile data, attributes and spatial metadata, so it works for many GIS workflows.

Shapefile vs GeoPackage

Shapefiles have been around for decades and are still widely supported. For a new GIS project, the choice is often between a shapefile and a GeoPackage.

ShapefileGeoPackage
FilesSeveral, such as roads.shp, roads.shx, roads.dbf and roads.prjUsually one .gpkg file
LayersGenerally one layer per shapefileMultiple layers in one file
AttributesMore restrictive structureMore flexible
Based onA collection of separate filesSQLite
CompatibilityExtremely widespreadIncreasingly preferred for modern GIS workflows

Exchange formats: GeoJSON, KML and GML

Three text-based formats are used to pass vector data between systems.

FormatWhat it isCoordinate systemGood for
GeoJSONFeatures with geometry and properties, written in JSONWGS 84 longitude and latitudeWeb maps and APIs
KMLXML for Google Earth and similar viewers, with styles, folders and descriptionsWGS 84Sharing placemarks and simple drawings
GMLAn XML standard from the Open Geospatial ConsortiumAny, declared in the fileExchange between agencies and services

GeoJSON is simple and widely supported, and its coordinates are always in WGS 84. It has no styling, and large files become slow. KML stores points, lines and polygons together, and a GIS usually lists them as separate layers when you open the file. A KMZ file is a zipped KML. GML is verbose and often comes with a schema file ending in .xsd, which you should keep alongside it.

GeoJSON and KML write longitude before latitude, and some other systems write latitude first. If the two are swapped, Bengaluru, at about 77.6 degrees east and 13 degrees north, ends up far north near Svalbard. When features land in the wrong place, check the order first.

Raster vs vector

Vector data represents features as points, lines and polygons. Raster data represents information as a grid of pixels.

Vector

Vector data suits discrete features. A point can be a hospital, a line a road and a polygon a land parcel, and each feature can carry attributes.

Raster

Raster data is made of cells, each storing a value. It is commonly used for satellite imagery, DEMs, temperature, rainfall, NDVI and land-cover rasters.

Which to use

Use vector for distinct objects and raster for continuous surfaces or imagery. There are exceptions, so the right choice depends on the dataset and the analysis.

You do not need all of these to start.

NameWhat it isGood for
GDALOpen-source library and command-line tools for geospatial dataReading, writing and converting GeoTIFF, GeoPackage and shapefile
RasterioPython library for reading and writing raster dataWorking with GeoTIFFs in Python
GeoPandasPython library for working with vector dataWorking with vector data in Python
QGISFree, open-source desktop GISOpening and exporting all of these formats

Glossary

TermMeaning
GeoTIFFA TIFF image with geospatial metadata
GeoPackageA single-file geospatial format based on SQLite (.gpkg)
ShapefileA vector format made of several files, including .shp, .shx, .dbf and .prj
VectorData stored as points, lines and polygons
RasterData stored as a grid of cells with values
GDALA widely used library for reading and writing geospatial data

Test yourself

Try to answer each question before opening the answer.

1. What makes a GeoTIFF different from a plain TIFF?

It contains geospatial metadata, such as location, coordinate reference system, pixel size and extent.

2. Why might you choose a GeoPackage over a shapefile?

It is usually a single file, can hold multiple layers, has a more flexible structure and is increasingly preferred for modern workflows.

3. When should you still use a shapefile?

When a client specifically asks for one, or when you need compatibility with a legacy workflow.

4. Would you store a hospital location as vector or raster?

Vector, as a point. Distinct objects suit vector data, while continuous surfaces suit raster.

5. What file extension does a GeoPackage use?

The extension is .gpkg.

6. Which software supports GeoTIFF?

It is widely supported, including QGIS, ArcGIS, GDAL and Rasterio.

Quick quiz

Pick an answer for each question to see if you got it right.

1. Which format is based on SQLite?
2. Which data type suits a temperature surface?
3. A GeoTIFF is commonly used for:
4. How many layers does a shapefile generally hold?
5. Which is a good reason to still use a shapefile?
0 of 5 answered

Key takeaways