Geospatial Viewers
Three CLI tools for quick-look inspection of geospatial data. Always run them via uvx so they are auto-installed without polluting the project environment.
| Tool | Purpose | PyPI |
|---|---|---|
| viewtif | Interactive Qt viewer for rasters (GeoTIFF, HDF, NetCDF, FileGDB) | uvx viewtif |
| viewgeom | Interactive Qt viewer for vector datasets | uvx viewgeom |
| viewinline | Non-interactive terminal-inline viewer (rasters, vectors, CSV, Parquet) | uvx viewinline |
Choosing the Right Tool
- Need interactive zoom/pan/contrast? Use
viewtif(rasters) orviewgeom(vectors). - Quick inline preview in iTerm2/WezTerm/Konsole? Use
viewinline(no GUI window, renders in terminal). - CSV/Parquet analysis (stats, histograms, SQL)? Use
viewinline. - Vector file as table (describe, filter, sort)? Use
viewinline --table. - Headless server / SSH / HPC? Use
viewinline(renders on local terminal, no X11 needed).
Running with uvx
Always prepend uvx to auto-install and run without modifying the local environment:
uvx viewtif file.tif
uvx viewgeom boundaries.geojson
uvx viewinline file.tif
For optional extras, use the --from flag:
uvx --from "viewtif[geo]" viewtif raster.tif --shapefile overlay.shp
uvx --from "viewtif[netcdf]" viewtif data.nc
uvx --from "viewgeom[parquet]" viewgeom data.geoparquet
Quick Reference
# Raster inspection
uvx viewtif image.tif
uvx viewtif image.tif --shapefile boundaries.shp
uvx viewtif image.tif --rgb 4 3 2
uvx viewtif image.tif --vmin 280 --vmax 320
uvx viewtif huge_raster.tif --scale 10
# NetCDF / HDF
uvx --from "viewtif[netcdf]" viewtif data.nc --subset 1 --timestep 100
# FileGDB raster
uvx viewtif "OpenFileGDB:/path/to.gdb:RasterName"
# Remote files
AWS_NO_SIGN_REQUEST=YES uvx --from "viewtif[geo]" viewtif s3://bucket/raster.tif --shapefile local.shp
# Vector inspection
uvx viewgeom boundaries.geojson
uvx viewgeom landuse.shp --column area_sqkm
uvx viewgeom earthquake.geojson --filter "mag > 5"
uvx viewgeom earthquake.geojson --duckdb "SELECT * FROM data WHERE mag > 5"
uvx viewgeom earthquake.geojson --duckdb "SELECT mag FROM data WHERE mag > 5" --save filtered.geojson
# Terminal-inline preview
uvx viewinline file.tif --colormap
uvx viewinline sentinel2.tif --rgb 4 3 2
uvx viewinline boundaries.geojson --color-by population
uvx viewinline file.nc --subset 1 --timestep 10
# CSV / Parquet analysis
uvx viewinline data.csv --describe
uvx viewinline data.csv --hist area_km2 --bins 30
uvx viewinline data.csv --scatter longitude latitude
uvx viewinline data.csv --sql "SELECT State, AVG(Income) FROM data GROUP BY State"
# Vector as table
uvx viewinline counties.shp --table --describe
uvx viewinline data.geoparquet --table --where "POP > 100000" --sort POP --desc
# Image gallery
uvx viewinline outputs/ --gallery 4x3
References
references/viewtif.mdreferences/viewgeom.mdreferences/viewinline.md