#GSX tools

The GSX tools bring conservation, biodiversity, environmental and industry analysis (surveying, energy, oil and gas, mining, forestry, maritime, aeronautical, transport, urban, rural, assets and ENSO) into GeoSpaX 3. They are 22 default plugins, one per domain, each with its tools:

Plugin Tools
Conservation overlay, hot spot grid, DBSCAN, local Moran's I, priority sites, representation, species distribution, suitability, protection gap, fragmentation, connectivity, change
Agriculture spectral index, suitability, distance decay, slope zones, raster change, change
Biodiversity diversity, nearest neighbour, DBSCAN, local Moran's I, hot spot grid, species distribution, priority sites, protection gap
Environment slope zones, spectral index, raster change, overlay, elevation profile
Forestry spectral index, fragmentation, connectivity, raster change, change, protection gap, harvest coupe net area, least-cost route, corridor zones
Marine diversity, nearest neighbour, DBSCAN, species distribution, spectral index, suitability, hot spot grid, priority sites, protection gap
Climate ENSO index (ONI, Niño 3.4, SOI), rainfall anomaly, El Niño drought and frost risk, seasonal outlook classes, spectral index, suitability, distance decay, raster change, change
Disaster suitability, slope zones, spectral index, distance decay, priority sites, raster change, change, hot spot grid, local Moran's I
Geoscience slope zones, spectral index, suitability, overlay, raster change, change, elevation profile
Hydrology spectral index, slope zones, suitability, distance decay, overlay, raster change, change, elevation profile
Land use and land cover spectral index, raster change, change, overlay, suitability
Soil spectral index, suitability, distance decay, overlay, raster change, change
Asset management asset register, asset change alerts, corridor and clearance zones, transmission tower inventory
Aeronautical obstacle limitation surfaces, elevation profile, slope zones
Energy and utilities corridor and clearance zones, liDAR vegetation and obstacle clearance, transmission tower inventory, least-cost route, tenure check, asset register, slope zones, elevation profile
Maritime vessel track density, vessel loitering and AIS gaps, weighted hotspot grid, DBSCAN clusters
Mining cut and fill volumes, tenure check, least-cost route, corridor and clearance zones, spectral index and extent, raster change, two-date change, slope zones
Oil and gas well sites, tenure check, least-cost route, corridor and clearance zones, raster change, elevation profile
Rural planning access to services, weighted suitability, slope zones, distance-decay suitability, zoning summary, building and population density
Surveying and cartography datum and projection transformation, traverse adjustment, bearings and distances, survey plan sheet, map grid and graticule
Transport and logistics service areas, delivery route optimisation, access to services, corridor and clearance zones, least-cost route
Urban planning zoning summary, building and population density, green space access, service areas, weighted suitability, asset register

They ship with GeoSpaX and are in the Explorer under Plugins (one per domain), in the Tools tab under Plugins › and in the plugin manager marked default plugin. They are not on the Analysis, Imagery or Modelling tabs, which hold GeoSpaX's own tools. All 22 run the same code, the shared GSX library in plugins/gsx (library: true: not listed, but recipes, the API and MCP call its tools as gsx/<tool>, so a tool gives the same answer from every domain).

A tool's dialog opens with its inputs already chosen, as in ArcGIS Pro's geoprocessing pane:

The analysis code (plugins/gsx/src/analysis, about 5,000 lines of TypeScript on Turf and proj4) is @geospax/analysis, unchanged, so its golden-value tests run as they did (103 of them, in CI). It needs Node.js 18+ and nothing else; no tool here goes online.

#The tools (phase A)

Tool Toolbox What it gives you
Polygon overlay Analysis › Overlay Intersect, erase (difference) or union of two polygon layers
Weighted suitability (WLC) Conservation Planning Weighted linear combination of fields, each rescaled 0–1 (field:weight, :- when lower is better), with an optional constraint field
Distance-decay suitability Conservation Planning Exponential decay from a distance field: 1 at zero, 0.5 at the half-life
Unprotected priority sites Conservation Planning High-score habitat points outside every protected area
Protection gap Conservation Planning Protected and unprotected habitat in hectares (equal-area by default), as two layers
Minimum-cost representation (SCP) Conservation Planning Cheapest planning units that meet each field:target; exact branch-and-bound for ≤ 28 units, greedy above
Weighted hotspot grid Conservation Planning Hexagon or square grid scored from up to three weighted layers (descriptive; for statistical hot spots use Hot spots, Getis-Ord Gi*)
Fragmentation and patch metrics Landscape Ecology NP, CA, LPI, TE, ED, MSI, core area and CAI, ENN; core-area polygons
Patch connectivity Landscape Ecology Components of patches linked within a threshold distance; link lines
Two-date change Landscape Ecology Loss, gain, persistence and the annual rate between two extents
DBSCAN clusters Spatial Statistics › Point patterns Density clusters of up to 2,000 points; radius automatic or set
Occurrence pattern (Clark–Evans) Spatial Statistics › Point patterns Nearest-neighbour ratio R, z-score: clustered, random-like or dispersed
Richness and diversity Biodiversity Richness, Shannon H′, Simpson, Pielou evenness; optionally per area

Every tool shows its results in its dialog (a table, plus the method's caveats) and adds its layers to the map, styled by AutoMap. Areas are in hectares and equal-area (an auto-centred Lambert azimuthal projection) unless you choose spherical. Each result layer records the tool, its parameters and the 2.0 provenance stamp.

Layers in any format work: the plugin asks for GeoJSON (geojson: true in its plugin.yaml), so GeoSpaX hands it each layer the tool uses as GeoJSON, whatever the source (GeoPackage, Shapefile, FlatGeobuf …).

#Rasters and species distribution (phase B)

Tool Toolbox What it gives you
Spectral index and extent (Otsu) Image Analysis › Spectral indices NDVI, NDWI, NDBI, NBR or any band pair; an automatic Otsu threshold (or yours); the index raster, the extent as a class raster and its area; the band-assignment caveat on every result
Raster change (two dates) Image Analysis › Change detection After − before, Otsu thresholds for loss and gain, a loss / no change / gain raster and the areas
Slope zones Terrain › Slope zones Horn slope from a DEM and three zones (default breaks 8° and 20°) with their areas; warns when the DEM is too coarse for slope
Species distribution model Species Distribution Occurrences + environmental rasters (all their bands) → suitability (0–1) and the predicted range at the max-TSS threshold. BIOCLIM, Mahalanobis or presence-background logistic; seeded background sample; spatially blocked cross-validation with AUC, max TSS and the Boyce index

The rasters come from the map (Explorer › Online data › Climate gives WorldClim or CHELSA; › Elevation the Copernicus DEM; Imagery the latest Sentinel-2 bands), and results go back to the map styled for what they are: suitability on a fixed 0–1 Viridis scale, change on a diverging red–blue scale centred on zero, classes with their own colours. Several environmental rasters are resampled onto the first one's grid.

Cross-validation. Points are grouped in square lon/lat blocks (automatic size: about a sixth of the study area; or set it). Blocks that hold presences are dealt to the folds first, so every held-out fold has presences even when occurrences are clustered; when there are fewer such blocks than folds, the number of folds drops to match and the result says so. Report the cross-validated scores: training AUC is optimistic, and suitability from presence-background data is relative, not a probability of presence.

Checked against synthetic data with known answers (tests/rastertools.test.ts): an image whose west half is vegetated (NDVI extent 50.0 %), a planted loss strip (found cell for cell), a 10° ramp (mean slope 10° ± 0.2) and a species confined to one climate corner (cross-validated AUC above 0.85 for Mahalanobis and logistic, above 0.7 for BIOCLIM).

#From earlier GeoSpaX (phase C)

Tool Toolbox What it gives you
Local Moran's I (clusters and outliers, LISA) Spatial Statistics › Clusters and outliers Each feature as a high-high or low-low cluster, a high-low or low-high outlier, or not significant (Anselin 1995), in the conventional red/blue colours; the global Moran's I with its permutation p-value and the Moran scatterplot. Neighbours: touching polygons (queen), k nearest or a distance band, row-standardised; conditional permutations with a seed (same seed, same answer); optional Benjamini–Hochberg false discovery rate
Elevation profile Terrain › Profiles The terrain along each line over a DEM (bilinear samples every half cell), or through points with an elevation field, one profile per group (e.g. transect) and sorted by a field: the chart, length, lowest and highest point, total climb and descent, steepest stretch
Calculate field Edit › Fields, attribute table SQL expressions and geodesic geometry measures (USER_GUIDE §5a)

Tool results can now carry charts (figures in the plugin answer, drawn as images so a plugin's SVG cannot run scripts). Checked (tests/legacytools.test.ts): a two-block pattern is strongly clustered with high-high and low-low on the right sides and no outliers; a checkerboard with rook neighbours gives Moran's I = −1 exactly; the global I equals the textbook double sum; a north-facing ramp DEM gives the profile length (11.1 km for 0.1° of latitude) and climb (1,000 m) it should. On the sample transects, species richness gives I = 0.82 with 8 neighbours (the earlier guide expects about 0.8).

Sample data (Explorer › Sample data) brings back the Papua New Guinea set: the survey transects, birdwing butterflies and their host vines, forest patches, a habitat grid, streams, WorldClim temperature and rainfall and tree cover (samples/png/README.md). 1.4.2 .gspx and 2.0 .geolibre.json projects open like any file: their embedded layers come onto the map (styles and layers that only point at outside files are not carried over).

#From scripts

curl -X POST localhost:8080/api/plugins/gsx/tools/fragmentation/run \
  -d '{"params": {"patches": "forest.gpkg", "edge_m": 100}}'

scripts/test-gsx.mjs runs every tool this way. Recipe steps that call plugin tools (so the domain kits can chain them) come with the domain kits.

#Building the plugin

plugins/gsx ships its built file (run.mjs) so it runs without a build step. To change it:

cd plugins/gsx
npm ci
npm test            # the analysis tests
npm run build       # src/ → run.mjs
node gen-manifest.mjs   # src/tools.ts → plugin.yaml

CI checks that run.mjs and plugin.yaml match the source.

#Domain kits

Ready-made recipes that chain online data, the tools above, a finished map and a report. They are in Analysis › Recipes (grouped by domain), the Toolbox under Ready-made analyses, and Lazy mode's Find patterns; each takes a few inputs and runs to the end by itself.

Kit Recipe In → out
Biodiversity Species distribution model (GBIF + WorldClim) A species name and an area → occurrences (GBIF, OBIS or iNaturalist), bioclim layers, a model with spatial cross-validation, suitability and range maps
Biodiversity Survey diversity and clustering Point records with a species field → richness, Shannon and Simpson per hexagon, DBSCAN clusters, the Clark–Evans test
Climate Range shift under future climate (CMIP6) The same model on present climate, projected onto a CMIP6 model, SSP and period → present and future suitability, range lost, stable and gained, the net change
Conservation Protection gaps Habitat and protected areas → protected and unprotected hectares, the share protected, a gap map
Forestry Forest fragmentation and connectivity Forest patches → landscape metrics, core areas, patches linked within a dispersal distance
Land use and land cover Land cover change (two dates) Two extents (mangrove, forest, wetland …) → loss, gain, persistence, annual rate
Agriculture and environment Vegetation change (two rasters) Two NDVI rasters → the difference, loss and gain with their areas
Disaster and geoscience Steep slopes An area → Copernicus 30 m DEM, slope zones (default 15° and 30°, landslide screening), relief
Soil Topsoil properties (SoilGrids) An area → pH, organic carbon and clay at a chosen depth
Surveying and cartography Traverse adjustment and survey plan Traverse legs (bearing, distance) → Bowditch adjustment with misclosure and accuracy ratio, bearings and distances, a plan sheet with grid, north point and scale bar
Energy and utilities Corridor encroachment and vegetation clearance Power lines or pipelines, structures and a canopy raster → clearance zones, encroachments, LiDAR clearance breaches, tower inventory
Oil and gas Licences, well spacing and pipeline route Licences, wells and two route ends → licence areas and expiry, wells outside their licence or too close, a least-cost pipeline route
Mining Tenement check and cut and fill volumes Tenements and two DEMs → tenement areas and expiry, cut and fill volumes and a cut and fill map
Forestry Harvest coupes (net area and haul road route) Coupes, streams and a DEM → net harvestable area after stream buffers and steep slopes, a haul road route
Maritime Vessel traffic, loitering and AIS gaps AIS points (MMSI, time) → track density, loitering events and AIS gaps per vessel
Aeronautical Aerodrome obstacle limitation surfaces A runway line and obstacles → approach, take-off, transitional and inner horizontal surfaces, obstacles that penetrate them
Transport and logistics Service areas and delivery routes Roads, a depot and stops → network service areas, the shortest delivery tour and its length
Urban planning Zoning, density and green space access Zones, buildings and parks → zoning summary, building and population density, distance to green space
Rural planning Distance to services and gardening land Villages, services (clinics, schools) and a DEM → distance to services, slope classes for gardening land
Asset management Asset condition, risk and changes An asset register, optionally an earlier one → overdue inspections, assets past design life, risk scores, added, removed and moved assets
Climate El Niño drought and frost risk (ENSO) An area, optionally observed rainfall → the latest ONI and SOI from NOAA (or an offline file), rainfall percent of normal, drought and highland frost risk

Every kit is an ordinary recipe (recipes/kit-*.yaml): open it in the Automate pane to see each step, change a default, or save a copy with your own steps. Kits call the tools with the tool step (AUTOMATION §2).

Checked: scripts/test-kits.py runs all nine against data with known answers (scripts/test-kits-data.R): 25 % protected, 12 patches, net land-cover change of zero, 12 species in 3 clusters, the planted vegetation-loss strip, and a future range that is both lost and gained. Kits that download data run with the downloads swapped for local test rasters, so their tools, maps and reports run for real; the downloads need internet and are covered by the data.fetch tests. The 12 industry and El Niño kits run the same way in scripts/test-domain-plugins.py.

Limits of the industry tools: the ENSO indices and DEMs download from the internet unless you give an offline file or a mirror; AGD66 to GDA94 uses a 7-parameter shift (about 1 m), not NTv2 grids; the obstacle limitation surfaces cover non-instrument runways only; LiDAR clearance assumes one conductor height; least-cost routes follow cell centres; date-typed fields in a layer are dropped, so give expiry and inspection dates as text (1 Jan 2026) and AIS times as epoch seconds.

#Online data from the 2.0 catalogue

earlier GeoSpaX listed these sources; 3.0 fetches them, for the area on the map, with their citations (Explorer › Online data, and its Check species names; steps in AUTOMATION.md):

Source What you get Licence and credit
GEBCO 2026 Grid Sea depth and land height in one surface at 15″ (~450 m), drawn with the colours changing at sea level; optionally how each depth was obtained (GEBCO's Type Identifier: multibeam, single beam, satellite gravity, interpolation …) with its share of the area Public domain; not for navigation. GEBCO Compilation Group (2026) GEBCO 2026 Grid, doi:10.5285/4f68d5c7-45eb-f999-e063-7086abc036fa. Read from the cloud-optimised copy on Source Cooperative (giswqs/gebco-bathymetry), checked cell for cell
Hansen Global Forest Change v1.13 Tree canopy cover in 2000 (%), year of forest loss 2001–2025, gain 2000–2012, land/water mask, at 1″ (~30 m), for areas up to 2° a side. Maps draw loss (pink 2001 → purple 2025) over tree cover CC-BY 4.0; Source: Hansen/UMD/Google/USGS/NASA; Hansen et al. 2013, Science 342. The authors' caveat goes into the methods: a relative indicator of loss; do not estimate areas from pixel counts
RESOLVE Ecoregions 2017 The 846 terrestrial ecoregions (updated WWF ecoregions), clipped to the area, with biome, realm, Nature Needs Half category and geodesic area, in RESOLVE's colours CC-BY 4.0; Dinerstein et al. 2017, BioScience 67: 534–545. The 149 MB file is downloaded once into <state>/catalog/
WoRMS Names checked: AphiaID, status, accepted name, classification, habitat and a verdict per name WoRMS Editorial Board, World Register of Marine Species, doi:10.14284/170 (citation with the access date in the methods)

Not yet: coral reef extent, mangroves and the SPREP Pacific layers. The SPREP Inform portal refuses automated requests (a Cloudflare browser challenge), so it needs another route.

#Coming next

#Credits

The GSX analysis and its tests: in4metrix, MIT. Turf (MIT) and proj4js (MIT) are bundled into run.mjs.