API Endpoints
Readiness Check
GET/readyz
Example:
curl -X GET http://localhost:8083/readyz
Response:
{"status":"ok","version":"0.0.0-0-gd9b38f4"}
Transform Coordinates
GET/api/geo/transform
Transform Berlin coordinates from WGS84 to Web Mercator
Example:
curl -X GET
"http://localhost:8083/api/geo/transform?lat=52.520008&lon=13.404954&from=EPSG:4326&to=EPSG:3857"
Response:
{"x":1489199.54,"y":6894746.99,"crs":"EPSG:3857"}
Validate Point
POST/api/geo/validate/point
Validate Brandenburg Gate coordinates
Example:
curl -X POST http://localhost:8083/api/geo/validate/point \
-H "Content-Type: application/json" \
-d '{"latitude":52.516275,"longitude":13.377704,"crs":"EPSG:4326"}'
Response:
{"valid":true,"latitude":52.516275,"longitude":13.377704}
Parse CSV File
POST/api/geo/parse
Convert CSV points to GeoJSON
Example:
curl -X POST http://localhost:8083/api/geo/parse \
-F "file=@/path/to/sample.csv"
Response:
{"type":"FeatureCollection","features":[...]}
Sample files: sample-simple-point.csv, sample-simple-shape.csv, sample.csv
Parse Excel File
POST/api/geo/parse
Convert Excel sheets to GeoJSON
Example:
curl -X POST http://localhost:8083/api/geo/parse \
-F "file=@/path/to/sample.xlsx"
Response:
{"type":"FeatureCollection","features":[...]}
Parse GeoJSON
POST/api/geo/parse
Validate and process GeoJSON
Example:
curl -X POST http://localhost:8083/api/geo/parse \
-F "file=@/path/to/brandenburg-forests.geojson"
Response:
{"type":"FeatureCollection","features":[...]}
Parse Shapefile
POST/api/geo/parse
Convert Shapefile to GeoJSON using GDAL
Example:
curl -X POST http://localhost:8083/api/geo/parse \
-F "file=@/path/to/AAC_2024.zip"
Response:
{"type":"FeatureCollection","features":[...]}
Parse QGIS Project (QGZ)
POST/api/geo/parse
Extract and convert vector layers from QGIS project files using GDAL
Example:
curl -X POST http://localhost:8083/api/geo/parse \
-F "file=@/path/to/project.qgz"
Response:
{"success":true,"filename":"project.qgz","layers":[{"name":"Layer 1","status":"converted","features":5}],"features":5,"geojson":{"type":"FeatureCollection","features":[...]}}
Features:
- Parses QGS project XML to find vector layers
- Converts bundled geo files (GeoJSON, Shapefile, GeoPackage, KML) via ogr2ogr
- Reports external file references that need to be included
- Skips non-file layers (WMS, PostGIS, etc.) with explanation
Parse GPX Track
POST/api/geo/parse
Convert GPS Exchange Format (GPX) files to GeoJSON using GDAL
Example:
curl -X POST http://localhost:8083/api/geo/parse \
-F "file=@/path/to/track.gpx"
Response:
{"success":true,"filename":"track.gpx","layers":[{"name":"waypoints","features":3},{"name":"tracks","features":1}],"features":4,"geojson":{"type":"FeatureCollection","features":[...]}}
Features:
- Extracts waypoints, routes, and tracks from GPX files
- Preserves elevation, timestamps, and metadata
- Combines all layers into a single FeatureCollection
Calculate Area
POST/api/geo/area
Calculate area of a sample polygon
Example:
curl -X POST http://localhost:8083/api/geo/area \
-H "Content-Type: application/json" \
-d '{"coordinates":[[13.0,52.0],[14.0,52.0],[14.0,53.0],[13.0,53.0],[13.0,52.0]],"crs":"EPSG:4326"}'
Response:
{"area":7780.5,"unit":"km²"}
Point in Polygon
POST/api/geo/contains
Check if Berlin is in Brandenburg
Example:
curl -X POST http://localhost:8083/api/geo/contains \
-H "Content-Type: application/json" \
-d
'{"polygon":{"coordinates":[[12.0,51.5],[15.0,51.5],[15.0,53.5],[12.0,53.5],[12.0,51.5]]},"point":{"latitude":52.520008,"longitude":13.404954}}'
Response:
{"contains":true}
Analyze State Boundaries
POST/api/geo/analyze-state
Analyze GeoJSON to identify intersecting ISO3166-2 administrative boundaries
Example:
curl -X POST http://localhost:8083/api/geo/analyze-state \
-H "Content-Type: application/json" \
-d
'{"geojson":"{\"type\":\"FeatureCollection\",\"features\":[{\"type\":\"Feature\",\"geometry\":{\"type\":\"Polygon\",\"coordinates\":[[[14.2317,51.8445],[14.2451,51.8445],[14.2451,51.8367],[14.2317,51.8367],[14.2317,51.8445]]]}}]}"}'
Response:
{
"success": true,
"matchedStates": [{
"gid0": "DEU",
"gid1": "DEU.4_1",
"hasc1": "DE.BB",
"iso1": null,
"name": "Brandenburg",
"country": "Germany",
"bbox": {
"minLat": 51.36,
"minLon": 11.27,
"maxLat": 53.56,
"maxLon": 14.77
}
}],
"geojsonBbox": {
"minLat": 51.8367,
"minLon": 14.2317,
"maxLat": 51.8445,
"maxLon": 14.2451
},
"stateBbox": {
"minLat": 51.36,
"minLon": 11.27,
"maxLat": 53.56,
"maxLon": 14.77
}
}
Features:
- Matches GeoJSON to GADM 4.1.0 administrative boundaries (3,662 states/provinces)
- Returns matched states with ISO codes (GID_0, GID_1, HASC_1, ISO_1)
- Calculates bounding boxes for GeoJSON and matched states
- Uses Python spatial queries against GADM geopackage