5.7 KiB
Analysis API
Endpoints for running spatial analysis tools.
Hot Spot Analysis
Endpoint: POST /api/analysis_hotspot_run.php
Run Getis-Ord Gi* hot spot analysis on a dataset.
Request Body
{
"dataset_id": 123,
"value_field": "population",
"neighbor_type": "distance",
"distance": 1000,
"output_mode": "static"
}
Parameters
dataset_id(required): Dataset ID to analyzevalue_field(required): Numeric field to analyzeneighbor_type(optional): "distance" or "knn" (default: "distance")distance(required if neighbor_type="distance"): Distance threshold in dataset unitsk_neighbors(required if neighbor_type="knn"): Number of nearest neighborsoutput_mode(optional): "static", "view", or "materialized_view" (default: "static")
Response
{
"status": "success",
"job_id": 456,
"message": "Hot spot analysis job queued"
}
Background Job
The analysis runs as a background job. Use the job_id to check status via Jobs API.
Example
curl -X POST "https://example.com/api/analysis_hotspot_run.php" \
-H "Content-Type: application/json" \
-H "Cookie: PHPSESSID=..." \
-d '{
"dataset_id": 123,
"value_field": "population",
"neighbor_type": "distance",
"distance": 1000
}'
Outlier Analysis
Endpoint: POST /api/analysis/outlier_run.php
Identify statistical outliers in a dataset.
Request Body
{
"dataset_id": 123,
"value_field": "income",
"method": "zscore",
"threshold": 2.0
}
Parameters
dataset_id(required): Dataset ID to analyzevalue_field(required): Numeric field to analyzemethod(optional): "zscore" or "mad" (default: "zscore")threshold(optional): Z-score threshold or MAD multiplier (default: 2.0)
Response
{
"status": "success",
"job_id": 457,
"message": "Outlier analysis job queued"
}
KDE (Kernel Density Estimation)
Endpoint: POST /api/analysis_kde.php
Generate kernel density estimation surface from point data.
Request Body
{
"dataset_id": 123,
"bandwidth": 1000,
"cell_size": 100,
"weight_field": null
}
Parameters
dataset_id(required): Point dataset IDbandwidth(optional): Bandwidth in dataset units (default: auto-calculated)cell_size(optional): Output cell size (default: auto-calculated)weight_field(optional): Field to weight points
Response
{
"status": "success",
"job_id": 458,
"message": "KDE analysis job queued"
}
Nearest Neighbor Analysis
Endpoint: POST /api/nearest_run.php
Find nearest neighbors between two datasets.
Request Body
{
"source_dataset_id": 123,
"target_dataset_id": 124,
"max_distance": 5000,
"limit": 1
}
Parameters
source_dataset_id(required): Source dataset IDtarget_dataset_id(required): Target dataset IDmax_distance(optional): Maximum search distancelimit(optional): Maximum neighbors per feature (default: 1)
Response
{
"status": "success",
"job_id": 459,
"message": "Nearest neighbor analysis job queued"
}
Dissolve Analysis
Endpoint: POST /api/run_dissolve.php
Dissolve features based on attribute values.
Request Body
{
"dataset_id": 123,
"dissolve_field": "category",
"aggregation": {
"population": "sum",
"area": "sum"
}
}
Parameters
dataset_id(required): Dataset IDdissolve_field(required): Field to dissolve onaggregation(optional): Aggregation functions for numeric fields
Response
{
"status": "success",
"job_id": 460,
"message": "Dissolve analysis job queued"
}
Clip Analysis
Endpoint: POST /api/datasets_clip_run.php
Clip features to a boundary geometry.
Request Body
{
"dataset_id": 123,
"clip_geometry": {
"type": "Polygon",
"coordinates": [ ... ]
}
}
Parameters
dataset_id(required): Dataset ID to clipclip_geometry(required): GeoJSON geometry for clipping boundary
Response
{
"status": "success",
"job_id": 461,
"message": "Clip analysis job queued"
}
Erase Analysis
Endpoint: POST /api/analysis_erase_run.php
Erase features from a dataset using another dataset.
Request Body
{
"input_dataset_id": 123,
"erase_dataset_id": 124
}
Parameters
input_dataset_id(required): Input dataset IDerase_dataset_id(required): Erase dataset ID
Response
{
"status": "success",
"job_id": 462,
"message": "Erase analysis job queued"
}
Zonal Statistics
Endpoint: POST /api/zonal_stats.php
Calculate statistics for raster data within polygon zones.
Request Body
{
"raster_dataset_id": 125,
"zone_dataset_id": 123,
"statistics": ["mean", "sum", "count"]
}
Parameters
raster_dataset_id(required): Raster dataset IDzone_dataset_id(required): Polygon zone dataset IDstatistics(optional): Statistics to calculate (default: all)
Response
{
"status": "success",
"job_id": 463,
"message": "Zonal statistics job queued"
}
Output Modes
Analysis results can be stored in different formats:
- static: Results stored in a permanent table (default)
- view: Results stored as a database view (updates with source data)
- materialized_view: Results stored as a materialized view (requires refresh)
Job Status
All analysis operations run as background jobs. Use the returned job_id to check status:
GET /api/job_status.php?job_id=456
See Jobs API for details.
PostGIS
Mobile
QGIS
MapBender
GeoServer
GeoNode
GeoNetwork
Novella
Solutions