Quick Start
Get GeoVertix up and running in under 5 minutes.
1. Download & Extract
Community Edition (Free)
Download the latest release from geovertix.com.
# Linux (AMD64)
tar -xzf geovertix-community-linux-amd64.tar.gz
cd geovertix-community
# macOS (Apple Silicon)
tar -xzf geovertix-community-macos-arm64.tar.gz
cd geovertix-community
# Windows (AMD64) — via WSL2
tar -xzf geovertix-community-linux-amd64.tar.gz
cd geovertix-community
Enterprise Edition
Contact sales@geovertix.com to obtain the Enterprise package. You will receive:
- Server package for your platform — server + worker binaries
license.key+license.key.sig— your Ed25519-signed license- mTLS certificates —
client-cert.pem,client-key.pemfor license validation
# Extract (choose your platform)
tar -xzf geovertix-enterprise-linux-amd64.tar.gz # Linux / WSL2
tar -xzf geovertix-enterprise-macos-arm64.tar.gz # macOS Apple Silicon
cd geovertix-enterprise
# Place your license files
cp /path/to/license.key .
cp /path/to/license.key.sig .
# Place your mTLS certificates
mkdir -p certs
cp /path/to/client-cert.pem certs/
cp /path/to/client-key.pem certs/
2. Run the Installer
The install command handles everything interactively: prerequisite checks, database setup, admin user creation, and config file generation.
$ ./geovertix install
GeoVertix Community — Installation
==============================
Checking for PostgreSQL...
✓ PostgreSQL is running
Database setup
Do you already have a database for GeoVertix? [y/N]: n
Database name [geovertix]: <enter>
Username [geovertix]: <enter>
Password: ********
Confirm: ********
Step 1/6: Checking prerequisites...
✓ PostgreSQL 16.2 (connected)
✓ PostGIS 3.4 (extension available)
✓ GEOS 3.12.2
✓ PROJ 9.5.1
Step 2/6: Database setup...
Creating schema 'geovertix'...
Creating tables and indexes... done
Step 3/6: Create admin user
Username: admin
Password: ********
Confirm: ********
Email (optional): <enter>
✓ Admin user 'admin' created
Step 4/6: Configuration
✓ JWT_SECRET generated
✓ Log directory created: logs/
Step 5/6: Verify
✓ Ready to serve
Server configuration
Bind address [127.0.0.1]: 0.0.0.0
Server port [7501]: <enter>
Max upload size (MB) [2048]: <enter>
GIS data schema [gisdata]: <enter>
Log level (debug/info/warn/error) [info]: <enter>
✓ Config written to ./config/geovertix.toml
3. Start the Server
# Start in foreground (for development)
./geovertix serve --foreground
# Or start as a daemon (default)
./geovertix serve
# Output:
✓ WMS available at /wms
✓ WFS available at /wfs
✓ MVT available at /tiles
✓ COG available at /raster
✓ API available at /api/v1
✓ Server ready on http://0.0.0.0:7501
4. Import Data
Use the web UI or the REST API to import your spatial data.
# Upload a Shapefile via API
curl -X POST http://localhost:7501/api/v1/import/upload \
-H "Cookie: auth_token=<jwt>" \
-F "file=@parcels.zip"
# The server detects layers, imports to PostGIS,
# and auto-registers them for WMS/WFS/MVT.
5. View Your Maps
Open a WMS client (QGIS, MapLibre GL, OpenLayers) and connect to:
# WMS endpoint
http://localhost:7501/wms?SERVICE=WMS&REQUEST=GetCapabilities
# WFS endpoint
http://localhost:7501/wfs?SERVICE=WFS&REQUEST=GetCapabilities
# MVT tiles
http://localhost:7501/tiles/{layer}/{z}/{x}/{y}.pbf
Requirements
System Requirements
| Minimum | Recommended | |
|---|---|---|
| CPU | 2 cores | 4+ cores |
| RAM | 2 GB | 4+ GB |
| Disk | 10 GB | 50+ GB |
| OS | Linux (glibc 2.28+), macOS (ARM64), WSL2 | |
Software Dependencies
| Component | Version | Notes |
|---|---|---|
| PostgreSQL | 14+ | Required |
| PostGIS | 3.3+ | Required extension |
| GDAL, GEOS, PROJ | — | Bundled in Linux tarball |
libs/ directory with RPATH set. No system installation required.
Data Architecture
GeoVertix uses two canonical data backends — one for vector, one for raster. All other formats are converted on import.
Your Data
Shapefile, GeoPackage, GeoJSON, KML, GeoTIFF, ...
Vector
PostgreSQL + PostGIS
Raster
Cloud Optimized GeoTIFF (COG)
OGC Services
WMS, WFS, MVT
Vector Data: PostgreSQL + PostGIS
All vector layers are stored in PostgreSQL with the PostGIS extension. When you import a Shapefile, GeoPackage, or other vector format, GeoVertix's embedded GDAL converts it into a PostGIS table in the gisdata schema. This gives you full SQL access, spatial indexing, and transactional editing via WFS-T.
Raster Data: Cloud Optimized GeoTIFF (COG)
All raster layers are stored as COG files on disk. When you import a GeoTIFF or other supported raster format, GeoVertix converts it to COG with internal tiling and overview pyramids. This enables efficient range-request access — only the bytes needed for each WMS tile are read.
Supported Import Formats
The built-in importer accepts the following formats. All conversions happen server-side using embedded GDAL 3.10 — no external tools needed.
Vector Formats
Imported into PostgreSQL/PostGIS via the embedded GDAL API.
| Format | Extensions | Upload Method | Notes |
|---|---|---|---|
| Shapefile | .shp | ZIP | ZIP with .shp, .shx, .dbf, .prj; multiple shapefiles per ZIP |
| GeoPackage | .gpkg | Direct or ZIP | Multi-layer support |
| GeoJSON | .geojson, .json | Direct or ZIP | Single layer per file |
| KML | .kml | Direct or ZIP | Multi-layer support via libkml |
| KMZ | .kmz | Direct | Compressed KML, auto-extracted by GDAL |
| GPX | .gpx | Direct or ZIP | Tracks, routes, waypoints as separate layers |
| FlatGeobuf | .fgb | Direct or ZIP | High-performance streaming format |
| Esri File Geodatabase | .gdb/ | ZIP | Multi-layer; multiple GDBs per ZIP |
| MapInfo TAB | .tab | ZIP | With .dat, .map, .id companion files |
| SpatiaLite | .sqlite, .db | Direct | SQLite with spatial extension |
| CSV | .csv | Direct | With X/Y or WKT geometry columns |
| GML | .gml | Direct | Geography Markup Language |
| GeoParquet | .parquet | Direct | Apache Parquet with geometry |
Raster Formats
Converted to Cloud Optimized GeoTIFF (COG) on import with DEFLATE compression and overview pyramids.
| Format | Extensions | Notes |
|---|---|---|
| GeoTIFF | .tif, .tiff | Standard raster; non-COG files are converted to COG |
| PNG | .png | Georeferenced PNG (with world file or embedded CRS) |
| JPEG | .jpg, .jpeg | Georeferenced JPEG (with world file or embedded CRS) |
Configuration
Config file: ./config/geovertix.toml (or set GEOVERTIX_CONFIG env var). The install command generates this file interactively. You can also create it manually.
# ./config/geovertix.toml
# Database connection (required)
[database]
url = "postgres://geovertix:<your_password>@localhost:5432/geovertix"
# Server settings
[server]
host = "127.0.0.1" # default; use "0.0.0.0" for all interfaces
port = 7501 # Community default (Enterprise: 7500)
# docs_self_hosted = false # Serve API docs from embedded assets (air-gapped)
# Data storage
[storage]
import_schema = "gisdata"
max_upload_size_mb = 2048
# Logging
[logging]
level = "info" # debug, info, warn, error
install command and stored in .env as JWT_SECRET. Do not put it in config.toml.
Environment Variable Overrides
Key environment variables that override config file values:
# Config file path
export GEOVERTIX_CONFIG="./config/geovertix.toml"
# Database (overrides [database] url)
export GEOVERTIX_DATABASE_URL="postgres://..."
# JWT secret (auto-generated by install into .env)
export JWT_SECRET="..."
# Server
export GEOVERTIX_SERVER_HOST="0.0.0.0"
export GEOVERTIX_SERVER_PORT=7501
# Storage
export GIS_DATA_SCHEMA="gisdata"
export MAX_UPLOAD_SIZE_MB=2048
Database Setup
The ./geovertix install command handles database setup automatically — creating the database, user, extensions, and schemas. You only need manual setup if you prefer to manage your own PostgreSQL.
Automatic (Recommended)
# The install command will:
# 1. Check for PostgreSQL (offer to install from PGDG if missing)
# 2. Create database + user (or connect to existing)
# 3. Enable PostGIS extension
# 4. Create schemas: geovertix (metadata) + gisdata (spatial data)
# 5. Create admin user
$ ./geovertix install
Manual Setup
If you want to use an existing database, select "yes" when the installer asks "Do you already have a database for GeoVertix?" and provide the connection details. The installer will create the schemas and admin user in your existing database.
Schemas
| Schema | Purpose | Contents |
|---|---|---|
geovertix | Metadata | layers, styles, users, audit_log |
gisdata | Spatial data | Imported vector tables (configurable via import_schema) |
Connection Pool
[database]
url = "postgres://geovertix:<your_password>@localhost:5432/geovertix"
# read_url = "postgres://..." # Optional read replica
pool_min = 2 # Minimum connections (default: 2)
pool_max = 20 # Maximum connections (default: 20)
connection_timeout_ms = 5000 # Connection timeout (default: 5s)
statement_timeout_ms = 30000 # Query timeout (default: 30s)
idle_timeout_ms = 600000 # Idle timeout (default: 10min)
pool_max. Each WMS GetMap request holds a connection briefly for the spatial query.
WMS Settings
[wms]
enabled = true # Enable WMS service
title = "GeoVertix - FAST web map services" # GetCapabilities title
max_layers = 20 # Max layers per GetMap request
default_format = "image/png" # Default output format
# Rendering limits (shared by WMS/MVT)
[rendering]
max_width = 4096 # Max image width in pixels
max_height = 4096 # Max image height in pixels
max_concurrent_renders = 8 # Parallel render limit
max_geometry_vertices = 1000000 # Max vertices per request
fonts_dir = "./fonts" # Font directory for labels
Supported Operations
| Operation | Description |
|---|---|
GetCapabilities | Service metadata and layer listing |
GetMap | Render map image (PNG, WebP, JPEG) |
GetFeatureInfo | Query features at a point (JSON, HTML, Text) |
GetLegendGraphic | Zoom-aware legend image |
WFS Settings
[wfs]
enabled = true # Enable WFS service
max_features = 10000 # Hard limit per request
default_count = 1000 # Default if COUNT not specified
[wfs.transaction]
enabled = false # WFS-T disabled by default
max_insert_batch = 1000 # Max features per insert
max_update_batch = 5000 # Max features per update
max_delete_batch = 1000 # Max features per delete
Supported Operations
| Operation | Description |
|---|---|
GetCapabilities | Service metadata and type listing |
DescribeFeatureType | Schema introspection (JSON) |
GetFeature | Query features with filtering and pagination |
Transaction | Insert, Update, Delete (atomic) |
Cache Settings
[cache]
enabled = true # Global cache toggle
# Tile cache (rendered WMS images)
[cache.tile]
enabled = true
backend = "memory" # "memory" or "redis" (Enterprise only)
max_entries = 10000
max_size_mb = 512
ttl_seconds = 3600 # 1 hour
# Query cache (PostGIS feature results)
[cache.query]
enabled = true
max_entries = 5000
max_size_mb = 256
ttl_seconds = 1800 # 30 minutes
backend = "redis" and configure [cache.redis] with url, prefix ("geovertix:"), and pool_size (10). Also supports Redis Cluster via cluster = true. Community Edition uses in-memory cache only.
REST API
All REST endpoints are under /api/v1/ and require authentication via JWT (Bearer header or auth_token cookie).
/api/v1/docs for Swagger UI (try-it-out explorer) or /api/v1/redoc for Redoc (polished reference). The full OpenAPI 3.0 spec is at /api/v1/openapi.json. No authentication required to browse.
auth_token HTTP-only cookie.
Layers API
| Method | Endpoint | Description |
|---|---|---|
GET | /api/v1/layers | List all accessible layers |
GET | /api/v1/layers/:id | Get layer details |
POST | /api/v1/layers | Register a new layer |
PUT | /api/v1/layers/:id | Update layer metadata |
DELETE | /api/v1/layers/:id | Delete a layer |
GET | /api/v1/layers/:id/attributes | List attributes with sample data |
GET | /api/v1/layers/:id/stats | Feature count, bbox, geometry stats |
Example: List Layers
GET /api/v1/layers
// Response
[
{
"id": 1,
"schema_name": "gisdata",
"table_name": "parcels",
"geometry_type": "MultiPolygon",
"srid": 4326,
"style_name": "default",
"is_public": false,
"owner": "admin"
}
]
Styles API
| Method | Endpoint | Description |
|---|---|---|
GET | /api/v1/styles | List all styles |
GET | /api/v1/styles/:name | Get style definition |
POST | /api/v1/styles | Create a new style |
PUT | /api/v1/styles/:name | Update a style |
DELETE | /api/v1/styles/:name | Delete a style |
POST | /api/v1/styles/validate | Validate style + count features per rule |
Import API
| Method | Endpoint | Description |
|---|---|---|
POST | /api/v1/import/upload | Upload a file for import |
GET | /api/v1/import/jobs | List import jobs |
GET | /api/v1/import/jobs/:id | Get job status |
GET | /api/v1/import/jobs/:id/events | SSE progress stream |
POST | /api/v1/import/jobs/:id/select-layers | Select layers from multi-layer file |
Supported Formats
See Supported Import Formats for the full list with details.
System API
| Method | Endpoint | Description |
|---|---|---|
GET | /api/v1/system/health | Detailed health status |
GET | /api/v1/system/ready | Liveness probe |
GET | /api/v1/system/info | Version, build time, git commit |
GET | /api/v1/system/metrics | Prometheus metrics |
POST | /api/v1/system/cache/clear | Clear all caches |
POST | /api/v1/system/reload | Hot-reload configuration |
Interactive API Documentation
GeoVertix includes built-in interactive API documentation — no external tools needed.
| URL | Description |
|---|---|
/api/v1/docs | Swagger UI — interactive explorer with "Try it out" for every endpoint |
/api/v1/redoc | Redoc — polished read-only API reference with search |
/api/v1/openapi.json | OpenAPI 3.0 spec — machine-readable specification (112 paths, 41 schemas) |
docs_self_hosted = true in the [server] section of your config file. This serves all assets from the binary itself (adds ~2.6 MB).
CLI Commands
| Command | Description | Edition |
|---|---|---|
geovertix install | Interactive setup: prerequisites, DB, admin user, config | All |
geovertix serve | Start the server (daemonizes by default) | All |
geovertix serve --foreground | Start in foreground (for development / systemd) | All |
geovertix stop | Graceful shutdown via SIGTERM | All |
geovertix restart | Stop + serve | All |
geovertix seed -l NAME | Pre-generate tiles for a layer | Enterprise |
geovertix license info | Show license status | Enterprise |
geovertix license verify FILE | Validate a license file | Enterprise |
geovertix license machine-id | Print machine fingerprint | Enterprise |
Seed Options (Enterprise only)
| Flag | Default | Description |
|---|---|---|
-l, --layer | — | Layer name (required) |
--url | http://localhost:3000/wms | WMS base URL |
--min-zoom | 0 | Minimum zoom level |
--max-zoom | 12 | Maximum zoom level |
-c, --concurrency | 4 | Parallel requests |
--bbox | — | Bounding box: minx,miny,maxx,maxy |
# First-time setup
$ ./geovertix install
# Start as daemon (default)
$ ./geovertix serve
Server started (PID 12345)
# Start in foreground (for development)
$ ./geovertix serve --foreground
✓ Listening on 0.0.0.0:7501
# Graceful stop
$ ./geovertix stop
Server stopped
# Pre-generate tiles (Enterprise only)
$ ./geovertix seed -l parcels --min-zoom 0 --max-zoom 14 -c 8
License Management (Enterprise only)
The license subcommand manages Enterprise license validation. Community Edition does not require a license — running license on Community prints a notice and exits.
geovertix license info
Display the status of the currently configured license. Searches for the license file in order: [license] path in config, $GEOVERTIX_LICENSE env var, then ./license.key in the working directory. Verifies the Ed25519 signature and checks expiration (with a 30-day grace period).
$ ./geovertix license info
License Status: VALID
ID: acme-corp-2026
Licensee: Acme Corporation
Email: admin@acme.com
Plan: enterprise
Issued: 2026-01-15T00:00:00Z
Expires: 2027-01-15T00:00:00Z (336 days remaining)
geovertix license verify <path>
Verify a specific license file (ignores config and environment). Checks the Ed25519 signature in <path>.sig and validates expiration. Exits with code 0 if valid (or within grace period), 1 if invalid or expired.
$ ./geovertix license verify ./new-license.key
License is VALID: Acme Corporation (acme-corp-2026)
geovertix license machine-id
Print this machine's fingerprint (SHA-256 hash). On Linux, reads /etc/machine-id; on macOS, reads the IOPlatformUUID. Can be overridden with $GEOVERTIX_MACHINE_ID for containers. Provide this value to your license administrator when registering an instance.
$ ./geovertix license machine-id
Machine ID: a1b2c3d4e5f6... (64-char hex)
Platform: linux (/etc/machine-id)
Provide this value to your license administrator.
-v /etc/machine-id:/etc/machine-id:ro to get a stable fingerprint across container restarts.
Background Worker
GeoVertix processes CPU-intensive tasks (file imports, tile seeding, data exports) in a background worker. The worker architecture differs by edition:
| Community | Enterprise | |
|---|---|---|
| Architecture | Embedded in geovertix binary | Separate geovertix-worker binary |
| Concurrency | 2 concurrent tasks (fixed) | Configurable via [worker] config |
| Scaling | Single process only | Multiple workers across machines |
Community Edition
The worker starts automatically inside the geovertix process — no separate binary or configuration needed. Limited to 2 concurrent background tasks.
Enterprise Edition — Distributed Workers (Enterprise only)
Enterprise ships a standalone geovertix-worker binary that runs independently from the API server. Multiple workers can run on different machines, all connected to the same PostgreSQL database. Tasks are coordinated via PostgreSQL LISTEN/NOTIFY with atomic claiming (FOR UPDATE SKIP LOCKED) — no external message broker required.
# API server (handles HTTP: WMS, WFS, REST)
./geovertix serve
# Worker on same machine
./geovertix-worker
# Or scale out — run additional workers on other machines
# (all pointing to the same PostgreSQL database)
ssh worker-2 "./geovertix-worker"
ssh worker-3 "./geovertix-worker"
Worker Configuration
# Enterprise only — in config/geovertix.toml
[worker]
max_concurrent_tasks = 4 # Per worker instance (default: 4)
How Clustering Works
- API server receives an import/task request and inserts a row into the
geovertix.taskstable - PostgreSQL sends a
NOTIFY task_readyto all listening workers - The first worker to claim the task wins (
FOR UPDATE SKIP LOCKED— no double processing) - Each worker identifies itself with a unique
worker_id(hostname + PID) - Workers send heartbeats every 30s — if a worker dies, its stale tasks are recovered by other workers on startup
CQL Reference
Common Query Language is used for filtering in WMS (CQL_FILTER param), WFS, and style rules.
Comparison Operators
attribute = 'value'
attribute > 100
attribute >= 100
attribute < 100
attribute <= 100
attribute != 'value'
attribute LIKE 'prefix%' # % = any chars, _ = single char
attribute IN ('a', 'b', 'c')
attribute IS NULL
attribute IS NOT NULL
Logical Operators
expr AND expr
expr OR expr
NOT expr
(expr) # grouping
Spatial Predicates
BBOX(minx, miny, maxx, maxy)
BBOX(minx, miny, maxx, maxy, 'EPSG:4326')
INTERSECTS(geometry_wkt)
WITHIN(geometry_wkt)
CONTAINS(geometry_wkt)
CROSSES(geometry_wkt)
Examples
# Simple attribute filter
population > 1000000
# Combined filters
zone = 'residential' AND area_sqm < 500
# Pattern matching
name LIKE 'North%'
# Spatial + attribute
zone = 'commercial' AND BBOX(106.7, -6.3, 106.9, -6.1)
Style Format
GeoVertix uses a JSON-based style format. No SLD or XML required.
Basic Style
{
"rules": [
{
"name": "Default",
"fill": {
"color": "#3b82f6",
"opacity": 0.5
},
"stroke": {
"color": "#1e40af",
"width": 1
}
}
]
}
Rule-Based Classification
{
"rules": [
{
"name": "Residential",
"filter": "zone = 'residential'",
"fill": { "color": "#4ade80" }
},
{
"name": "Commercial",
"filter": "zone = 'commercial'",
"fill": { "color": "#f59e0b" }
},
{
"name": "Industrial",
"filter": "zone = 'industrial'",
"fill": { "color": "#ef4444" }
}
]
}
Zoom-Dependent Styling
{
"rules": [{
"stroke": {
"color": "#0891b2",
"width": {
"stops": [[8, 0.5], [12, 1], [16, 3]]
}
},
"label": {
"field": "name",
"size": { "stops": [[10, 10], [16, 16]] },
"color": "#0f172a",
"halo_color": "#ffffff",
"halo_width": 2,
"min_zoom": 12
}
}]
}
Production Deployment
Directory Structure
/opt/geovertix/
├── geovertix # Binary
├── config/
│ └── geovertix.toml # Configuration
├── .env # JWT_SECRET (auto-generated)
├── fonts/ # Font files for labels
├── logs/ # Log files
└── libs/ # Bundled shared libraries (Linux)
├── libgdal.so
├── libgeos.so
├── libproj.so
└── ...
Reverse Proxy (nginx)
server {
listen 443 ssl http2;
server_name maps.example.com;
ssl_certificate /etc/ssl/certs/maps.crt;
ssl_certificate_key /etc/ssl/private/maps.key;
add_header X-Frame-Options "DENY";
add_header X-Content-Type-Options "nosniff";
add_header Referrer-Policy "strict-origin-when-cross-origin";
add_header Content-Security-Policy "default-src 'self'";
location / {
proxy_pass http://127.0.0.1:7501;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
Systemd Service
# /etc/systemd/system/geovertix.service
[Unit]
Description=GeoVertix WMS/WFS Server
After=network.target postgresql.service
[Service]
Type=simple
User=geovertix
WorkingDirectory=/opt/geovertix
ExecStart=/opt/geovertix/geovertix serve --foreground
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
# Enable and start
sudo systemctl daemon-reload
sudo systemctl enable geovertix
sudo systemctl start geovertix
# Check status
sudo systemctl status geovertix
# View logs
journalctl -u geovertix -f
Monitoring
Health Checks
# Detailed health (includes DB, GEOS, PROJ status)
GET /api/v1/system/health
# Liveness probe (for load balancers)
GET /api/v1/system/ready
# Version info
GET /api/v1/system/info
Prometheus Metrics
Scrape /api/v1/system/metrics with your Prometheus instance.
# Available metrics include:
geovertix_http_requests_total{service, operation, status}
geovertix_http_request_duration_seconds{service, operation}
geovertix_cache_hits_total{cache_type}
geovertix_cache_misses_total{cache_type}
geovertix_db_pool_connections{state}
geovertix_import_jobs_total{status}
Logging
Control log verbosity with the RUST_LOG environment variable.
# Default (info level)
export RUST_LOG=info
# Debug WMS rendering
export RUST_LOG=geovertix_wms=debug
# Debug everything
export RUST_LOG=debug
Enterprise Plugin Architecture
Enterprise plugins are separate signed binaries discovered and managed by the distributed task dispatcher (gx-dsp). Each plugin runs as its own process with its own configuration, communicating with the API server via HTTP.
How Plugins Work
- Each plugin is a standalone binary named
gxp-<name>(e.g.,gxp-qgis,gxp-lidar) - The dispatcher discovers plugins in its
bin/directory and starts them on demand - Plugin routes are proxied through the API server with authentication
- Async tasks are submitted via
POST /api/v1/processand tracked in the task queue - Each plugin's features are gated by the license key
Plugin Configuration
Each plugin has a plugin.toml manifest and optional config.toml for plugin-specific settings. The dispatcher reads the manifest to register the plugin's capabilities.
# Example plugin.toml
name = "lidar"
binary = "bin/gxp-lidar"
description = "COPC point cloud streaming"
# Task submission
POST /api/v1/process
{
"operation": "store.import_pointcloud",
"params": { "source": "survey.las" }
}
# Check task status
GET /api/v1/tasks/{task_id}
Available Plugins
| Plugin | Binary | Purpose |
|---|---|---|
| Geoprocessing | gxp-geoprocess | Buffer, clip, union, intersect, dissolve, spatial join |
| AI Inference | gxp-inference | ONNX model serving (classification, detection, segmentation) |
| GeoAI Agent | gxp-geoai | Natural language to spatial operations via local LLM (Ollama) |
| 3D Visualization | gxp-3dtiles | IFC viewer, CityGML 3D Tiles, model placement, IFC component query |
| LiDAR / COPC | gxp-lidar | COPC-to-3D-Tiles streaming with native CRS and browser-side LOD |
| Terrain Profiles | gxp-profiles | Seismic, GPR, and sonar profile serving with navigation overlay |
| Climate Analysis | gxp-climate | NetCDF/GRIB zonal statistics, anomaly detection, trend analysis |
| Object Storage | gxp-store | S3 storage, data conversion pipelines (LAS, IFC, GML, SEGY, OBJ) |
| MBTiles | gxp-mbtiles | Sharded MBTiles collection serving with coverage grid |
| QGIS Algorithms | gxp-qgis | 220+ QGIS Processing algorithms via containerized QGIS 3.40 LTR |
| ML Training | gxp-ml | Custom Python ML pipelines in Docker containers |
| ArcGIS REST | gxp-agrest | MapServer/FeatureServer endpoints for ESRI client compatibility |