Supported file formats

The library supports the following file formats. Please see the project issues for upcoming formats and feature requests.


Supported formats:
- CSV (comma-separated values) (.csv, .txt)
- Vector data (.shp, .shx, .dbf, .prj, .geojson, .json, .gpkg, .gdb, .gpx, .kml, .kmz, .gml, .fgb)
- Raster data (.tif, .tiff, .geotiff, .nc, .netcdf, .asc, .wld, .jgw, .pgw, .pngw, .tfw, .tifw, .bpw, .gfw)
- Point cloud data (.las, .laz)

Supported data repositories:
- Wikidata (wikidata.org)
- Dryad (datadryad.org)
- 4TU.ResearchData (data.4tu.nl)
- Figshare (figshare.com)
- Zenodo (zenodo.org)
- InvenioRDM (inveniosoftware.org/products/rdm)
- Pangaea (pangaea.de)
- OSF (osf.io)
- Dataverse (dataverse.org)
- GFZ (dataservices.gfz-potsdam.de)
- RADAR (radar-service.eu)
- Arctic Data Center (arcticdata.io)
- DataONE (dataone.org)
- GBIF (gbif.org)
- Pensoft (pensoft.net)
- BGR (geoportal.bgr.de)
- BAW (datenrepository.baw.de)
- MDI-DE (mdi-de.org)
- GDI-DE (geoportal.de)
- Opara (opara.zih.tu-dresden.de)
- Senckenberg (dataportal.senckenberg.de)
- CKAN (ckan.org)
- Mendeley Data (data.mendeley.com)
- DEIMS-SDR (deims.org)
- NFDI4Earth (onestop4all.nfdi4earth.de)
- HALO DB (halo-db.pa.op.dlr.de)
- SEANOE (seanoe.org)
- GeoScienceWorld (pubs.geoscienceworld.org)
- UKCEH (catalogue.ceh.ac.uk)
- STAC (stacspec.org)
- GitHub (github.com)
- GitLab (gitlab.com)
- Forgejo (codeberg.org)
- Software Heritage (softwareheritage.org)
- Remote Raster (COG) (cogeo.org)


Examples

GeoJSON

The file used in the example can be in the code repository: muenster_ring_zeit.geojson.

geoextent -b -t muenster_ring_zeit.geojson

CSV

Different CSV delimiters (;, ,) are automatically detected.

GDAL-based column detection (preferred): geoextent first tries to open CSV files using the GDAL CSV driver with open options for automatic coordinate column detection. The following column names are recognised:

  • Longitude/X: Longitude, Long, Lon, Lng, X, Easting, CoordX

  • Latitude/Y: Latitude, Lat, Y, Northing, CoordY

  • Geometry (WKT/WKB): geometry, geom, the_geom, wkt, WKT, wkb, WKB, coordinates, coords

CSVT sidecar files: If a .csvt file is present alongside the CSV, GDAL uses it to determine column types. Supported geometric type declarations include CoordX, CoordY, Point(X), Point(Y), and WKT. See the GDAL CSV driver documentation for details.

PRJ sidecar files: A .prj file alongside the CSV provides CRS information in OGC WKT format. When absent, WGS84 (EPSG:4326) is assumed.

GeoCSV support: geoextent recognises two GeoCSV dialects:

  • giswiki.ch/OST GeoCSV: Semicolon-delimited CSV with CoordX/CoordY coordinate columns, optional .csvt and .prj sidecar files.

  • EarthScope GeoCSV: Uses #-prefixed metadata header lines (e.g. # dataset: GeoCSV 2.0, # delimiter: ,). These comment lines are automatically stripped before parsing.

WKT geometry columns: CSV files with a column containing Well-Known Text geometry strings (e.g. POINT, POLYGON, MULTIPOLYGON) are supported via both GDAL auto-detection and manual WKT parsing.

Regex fallback: If GDAL cannot detect coordinate columns, geoextent falls back to Regular expressions-based column name matching:

  • Latitude - (.)*latitude(.)* - ^lat - lat$ - ^y - y$

  • Longitude - (.)*longitude" - (.)*long(.) - ^lon - lon$ - (.)*lng(.)* - ^x - x$

  • Time - (.)*timestamp(.)* - (.)*datetime(.)* - (.)*time(.)* - ^date - date$

The file used in the example can be obtained from Zenodo Sandbox record 256820.

geoextent -b -t cities_NL.csv

GeoTIFF

The file used in the example is available online: wf_100m_klas.tif.

geoextent -b wf_100m_klas.tif
{'format': 'tif',
 'geoextent_handler': 'handle_raster',
 'bbox': [50.310251974108326,
  5.915300756475311,
  52.530775532873264,
  9.468398712484138],
 'crs': '4326',
 'file_size_bytes': 637403}

World Files

World files provide geospatial transformation information for raster images that don’t have embedded georeferencing. GDAL automatically detects and uses world files when they are present alongside the image file with the appropriate naming convention.

Supported world file extensions:

  • .wld - Generic world file

  • .jgw - JPEG world file

  • .pgw - PNG world file

  • .pngw - PNG world file (alternative)

  • .tfw - TIFF world file

  • .tifw - TIFF world file (alternative)

  • .bpw - BMP world file

  • .gfw - GIF world file

Important notes:

  • World files contain only geospatial transformation parameters (position, scale, rotation), not coordinate system information

  • When a world file is present but no CRS is specified, geoextent assumes WGS84 (EPSG:4326)

  • For proper CRS support, use a .prj file alongside the world file

Example: PNG image with world file

Test data from: Zenodo record 820562

geoextent -b image_with_worldfile.png

The world file (image_with_worldfile.pngw or image_with_worldfile.pgw) must be in the same directory as the image.

References:

Esri File Geodatabase

Esri File Geodatabases (.gdb) are directory-based containers that can hold multiple feature classes, tables, and raster datasets. geoextent supports reading File Geodatabases via GDAL’s OpenFileGDB driver.

Important notes:

  • A .gdb is a directory, not a single file, but geoextent treats it as a single dataset

  • All layers in the geodatabase are processed and their extents merged

  • Only the OpenFileGDB driver (read-only, included with GDAL) is needed; the proprietary FileGDB SDK is not required

geoextent -b my_data.gdb

Shapefile

The file used in the example can be found at Geofabrik: shapefiles_toulouse.zip.

geoextent -b gis_osm_buildings_a_07_1.shp
Archive:  shapefiles_toulouse.zip
 extracting: gis_osm_adminareas_a_07_1.cpg  
  inflating: gis_osm_adminareas_a_07_1.dbf  
  inflating: gis_osm_adminareas_a_07_1.prj  
  inflating: gis_osm_adminareas_a_07_1.shp  
  inflating: gis_osm_adminareas_a_07_1.shx  
 extracting: gis_osm_barriers_07_1.cpg  
  inflating: gis_osm_barriers_07_1.dbf  
  inflating: gis_osm_barriers_07_1.prj  
  inflating: gis_osm_barriers_07_1.shp  
  inflating: gis_osm_barriers_07_1.shx  
 extracting: gis_osm_boundaries_07_1.cpg  
  inflating: gis_osm_boundaries_07_1.dbf  
  inflating: gis_osm_boundaries_07_1.prj  
  inflating: gis_osm_boundaries_07_1.shp  
  inflating: gis_osm_boundaries_07_1.shx  
 extracting: gis_osm_buildings_a_07_1.cpg  
  inflating: gis_osm_buildings_a_07_1.dbf  

  inflating: gis_osm_buildings_a_07_1.prj  
  inflating: gis_osm_buildings_a_07_1.shp  

  inflating: gis_osm_buildings_a_07_1.shx  
 extracting: gis_osm_coastline_07_1.cpg  
  inflating: gis_osm_coastline_07_1.dbf  
  inflating: gis_osm_coastline_07_1.prj  
  inflating: gis_osm_coastline_07_1.shp  
  inflating: gis_osm_coastline_07_1.shx  
 extracting: gis_osm_landuse_a_07_1.cpg  
  inflating: gis_osm_landuse_a_07_1.dbf  
  inflating: gis_osm_landuse_a_07_1.prj  
  inflating: gis_osm_landuse_a_07_1.shp  
  inflating: gis_osm_landuse_a_07_1.shx  
 extracting: gis_osm_natural_07_1.cpg  
  inflating: gis_osm_natural_07_1.dbf  
  inflating: gis_osm_natural_07_1.prj  
  inflating: gis_osm_natural_07_1.shp  
  inflating: gis_osm_natural_07_1.shx  
 extracting: gis_osm_natural_a_07_1.cpg  
  inflating: gis_osm_natural_a_07_1.dbf  
  inflating: gis_osm_natural_a_07_1.prj  
  inflating: gis_osm_natural_a_07_1.shp  
  inflating: gis_osm_natural_a_07_1.shx  
 extracting: gis_osm_nonop_07_1.cpg  
  inflating: gis_osm_nonop_07_1.dbf  
  inflating: gis_osm_nonop_07_1.prj  
  inflating: gis_osm_nonop_07_1.shp  
  inflating: gis_osm_nonop_07_1.shx  
 extracting: gis_osm_places_07_1.cpg  
  inflating: gis_osm_places_07_1.dbf  
  inflating: gis_osm_places_07_1.prj  
  inflating: gis_osm_places_07_1.shp  
  inflating: gis_osm_places_07_1.shx  
 extracting: gis_osm_places_a_07_1.cpg  
  inflating: gis_osm_places_a_07_1.dbf  
  inflating: gis_osm_places_a_07_1.prj  
  inflating: gis_osm_places_a_07_1.shp  
  inflating: gis_osm_places_a_07_1.shx  
 extracting: gis_osm_pofw_07_1.cpg   
  inflating: gis_osm_pofw_07_1.dbf   
  inflating: gis_osm_pofw_07_1.prj   
  inflating: gis_osm_pofw_07_1.shp   
  inflating: gis_osm_pofw_07_1.shx   
 extracting: gis_osm_pofw_a_07_1.cpg  
  inflating: gis_osm_pofw_a_07_1.dbf  
  inflating: gis_osm_pofw_a_07_1.prj  
  inflating: gis_osm_pofw_a_07_1.shp  
  inflating: gis_osm_pofw_a_07_1.shx  
 extracting: gis_osm_pois_07_1.cpg   
  inflating: gis_osm_pois_07_1.dbf   
  inflating: gis_osm_pois_07_1.prj   
  inflating: gis_osm_pois_07_1.shp   
  inflating: gis_osm_pois_07_1.shx   
 extracting: gis_osm_pois_a_07_1.cpg  
  inflating: gis_osm_pois_a_07_1.dbf  
  inflating: gis_osm_pois_a_07_1.prj  
  inflating: gis_osm_pois_a_07_1.shp  
  inflating: gis_osm_pois_a_07_1.shx  
 extracting: gis_osm_power_07_1.cpg  
  inflating: gis_osm_power_07_1.dbf  
  inflating: gis_osm_power_07_1.prj  
  inflating: gis_osm_power_07_1.shp  
  inflating: gis_osm_power_07_1.shx  
 extracting: gis_osm_power_a_07_1.cpg  
  inflating: gis_osm_power_a_07_1.dbf  
  inflating: gis_osm_power_a_07_1.prj  
  inflating: gis_osm_power_a_07_1.shp  
  inflating: gis_osm_power_a_07_1.shx  
 extracting: gis_osm_powerlines_07_1.cpg  
  inflating: gis_osm_powerlines_07_1.dbf  
  inflating: gis_osm_powerlines_07_1.prj  
  inflating: gis_osm_powerlines_07_1.shp  
  inflating: gis_osm_powerlines_07_1.shx  
 extracting: gis_osm_railways_07_1.cpg  
  inflating: gis_osm_railways_07_1.dbf  
  inflating: gis_osm_railways_07_1.prj  
  inflating: gis_osm_railways_07_1.shp  
  inflating: gis_osm_railways_07_1.shx  
 extracting: gis_osm_roads_07_1.cpg  
  inflating: gis_osm_roads_07_1.dbf  
  inflating: gis_osm_roads_07_1.prj  
  inflating: gis_osm_roads_07_1.shp  

  inflating: gis_osm_roads_07_1.shx  
 extracting: gis_osm_routes_07_1.cpg  
  inflating: gis_osm_routes_07_1.dbf  
  inflating: gis_osm_routes_07_1.prj  
  inflating: gis_osm_routes_07_1.shp  
  inflating: gis_osm_routes_07_1.shx  
 extracting: gis_osm_runways_07_1.cpg  
  inflating: gis_osm_runways_07_1.dbf  
  inflating: gis_osm_runways_07_1.prj  
  inflating: gis_osm_runways_07_1.shp  
  inflating: gis_osm_runways_07_1.shx  
 extracting: gis_osm_runways_a_07_1.cpg  
  inflating: gis_osm_runways_a_07_1.dbf  
  inflating: gis_osm_runways_a_07_1.prj  
  inflating: gis_osm_runways_a_07_1.shp  
  inflating: gis_osm_runways_a_07_1.shx  
 extracting: gis_osm_traffic_07_1.cpg  
  inflating: gis_osm_traffic_07_1.dbf  
  inflating: gis_osm_traffic_07_1.prj  
  inflating: gis_osm_traffic_07_1.shp  
  inflating: gis_osm_traffic_07_1.shx  
 extracting: gis_osm_traffic_a_07_1.cpg  
  inflating: gis_osm_traffic_a_07_1.dbf  
  inflating: gis_osm_traffic_a_07_1.prj  
  inflating: gis_osm_traffic_a_07_1.shp  
  inflating: gis_osm_traffic_a_07_1.shx  
 extracting: gis_osm_transport_07_1.cpg  
  inflating: gis_osm_transport_07_1.dbf  
  inflating: gis_osm_transport_07_1.prj  
  inflating: gis_osm_transport_07_1.shp  
  inflating: gis_osm_transport_07_1.shx  
 extracting: gis_osm_transport_a_07_1.cpg  
  inflating: gis_osm_transport_a_07_1.dbf  
  inflating: gis_osm_transport_a_07_1.prj  
  inflating: gis_osm_transport_a_07_1.shp  
  inflating: gis_osm_transport_a_07_1.shx  
 extracting: gis_osm_water_a_07_1.cpg  
  inflating: gis_osm_water_a_07_1.dbf  
  inflating: gis_osm_water_a_07_1.prj  
  inflating: gis_osm_water_a_07_1.shp  
  inflating: gis_osm_water_a_07_1.shx  
 extracting: gis_osm_waterways_07_1.cpg  
  inflating: gis_osm_waterways_07_1.dbf  
  inflating: gis_osm_waterways_07_1.prj  
  inflating: gis_osm_waterways_07_1.shp  
  inflating: gis_osm_waterways_07_1.shx  
{'format': 'shp',
 'geoextent_handler': 'handle_vector',
 'bbox': [43.4682, 1.24951, 43.74498, 1.695996],
 'crs': '4326',
 'file_size_bytes': 85810944}

GeoPackage

The file used in the example is available online: sample1_2.gpkg.

geoextent -b sample1_2.gpkg
{'format': 'gpkg',
 'geoextent_handler': 'handle_vector',
 'bbox': [18.921783447265625,
  -178.2176055908203,
  71.40624237060547,
  -66.96926879882812],
 'crs': '4326',
 'file_size_bytes': 2322432}

GPS Exchange Format

The file used in the example is available online: run.gpx.

geoextent -b run.gpx
{'format': 'gpx',
 'geoextent_handler': 'handle_vector',
 'bbox': [38.920014034956694,
  -77.02575484290719,
  38.92795957624912,
  -77.01215906068683],
 'crs': '4326',
 'file_size_bytes': 66711}

Geography Markup Language

The file used in the example is available online: clc_1000_PT.gml.

geoextent -b clc_1000_PT.gml

Keyhole Markup Language

The file used in the example is available online: KML_Samples.kml.

geoextent -b KML_Samples.kml
{'format': 'kml',
 'geoextent_handler': 'handle_vector',
 'bbox': [36.07954952145647,
  -122.0860162273783,
  38.87291016281703,
  15.35832653742206],
 'crs': '4326',
 'file_size_bytes': 35920}