GeoDatasets API
Enables programmatic control over GeoDataset layers. GeoDatasets are GeoJSON files uploaded and managed by MMGIS and stored in MMGIS’ Postgres/PostGIS database.
Root path: /api/geodatasets
Contents
API Tokens
To use the Configure API through HTTP requests, an API Token must be used for authentication.
- Login to the configuration page
/configure
- Navigate to the “API Tokens” page
- Set a name and expiration time if desired and click “Generate New Token”
- Copy the newly generated token (you will not see it in full again)
- When interacting with the Configure API, use the header
Authorization:Bearer <token>
Endpoints
GET /get
Queries and geodataset and returns geojson or vectortiles.
Parameter | Type | Required | Default | Description |
---|---|---|---|---|
layer | string | true | N/A | Geodataset layer name |
type | string | true | N/A | Format to return. ‘geojson’ or ‘mvt’ (Mapbox Vector Tiles) |
minx | number | false | N/A | Minimum X (lng) value for a bounding-box extent query |
miny | number | false | N/A | Minimum Y (lat) value for a bounding-box extent query |
maxx | number | false | N/A | Maximum X (lng) value for a bounding-box extent query |
maxy | number | false | N/A | Maximum Y (lat) value for a bounding-box extent query |
startProp | string | false | N/A | Name of key of feature’s start time property |
starttime | time | false | N/A | Start time of time window to query |
endProp | string | false | N/A | Name of key of feature’s end time property |
endtime | time | false | N/A | End time of time window to query |
x | integer | false | N/A | If type=mvt, x of tile to get |
y | integer | false | N/A | If type=mvt, y of tile to get |
z | integer | false | N/A | If type=mvt, z of tile to get |
Example
curl -X GET -H "Authorization:Bearer <token>" http://localhost:8889/api/geodatasets/get?layer=my_geodataset&type=geojson&maxy=45.02695045318546&maxx=-77.23388671875&miny=29.70713934813417&minx=-123.77197265625001&starttime=2022-12-19T03%3A25%3A12.335Z&startProp=start_time&endtime=2024-03-13T21%3A26%3A22.090Z&endProp=end_time
GET /get/:layer
See GET /get. layer
parameter can be passed in through URL instead.
Example
curl -X GET -H "Authorization:Bearer <token>" http://localhost:8889/api/geodatasets/get/my_geodataset?type=geojson&maxy=45.02695045318546&maxx=-77.23388671875&miny=29.70713934813417&minx=-123.77197265625001&starttime=2022-12-19T03%3A25%3A12.335Z&startProp=start_time&endtime=2024-03-13T21%3A26%3A22.090Z&endProp=end_time
POST /entries
Lists out available geodatasets and their last updated dates
Example
curl -X GET http://localhost:8889/api/geodatasets/entries
=> {
"status": "success",
"body": {
"entries": [
{
"name": "terrain",
"updated": "2022-05-23T17:49:09.097Z"
},
{
"name": "footprints",
"updated": "2023-12-07T17:08:05.552Z"
}
]
}
}
POST /search
Returns all features that match a geojson properties
property key’s value.
Parameter | Type | Required | Default | Description |
---|---|---|---|---|
layer | string | true | N/A | Geodataset layer name |
key | string | true | N/A | Path and name to properties key/field to query on |
value | string | true | N/A | Value of key to search for |
Example
curl -X POST -H "Authorization:Bearer <token>" -H "Content-Type: application/json" -d '{"layer": "my_geodataset", "key": "flavor", "value": "peppermint"}' http://localhost:8889/api/geodatasets/search
POST /append/:name
Append geojson features to an existing geodataset.
Parameter | Type | Required | Default | Description |
---|---|---|---|---|
:name | string | true | N/A | Geodataset layer name - included in the url |
body | object | false | N/A | Entire body is a geojson file |
Note: The geojson body can include the top-level foreign geojson members startProp
and endProp
to specific which feature properties fields to use as the start and end times.
{
"type": "FeatureCollection",
"startProp": "start_time",
"endProp": "end_time",
"features": [
{
"geometry": {
"type": "Polygon",
"coordinates": ["..."],
"properties": {
"start_time": "2022-08-10T03:41:03Z",
"end_time": "2022-08-10T03:41:15Z"
}
}
},
"..."
]
}
Example
curl -X POST -H "Authorization:Bearer <token>" -H "Content-Type: application/json" --data-binary "@my_geojson_to_append.json" http://localhost:8889/api/geodatasets/append/my_geodataset
POST /append/:name/:start_end_prop
See POST /append/:name. startProp
and endProp
parameters can be passed in through URL instead. startProp
and endProp
are comma-separated.
Example
curl -X POST -H "Authorization:Bearer <token>" -H "Content-Type: application/json" --data-binary "@my_geojson_to_append.json" http://localhost:8889/api/geodatasets/append/my_geodataset/start_time,end_time
POST /recreate
Creates or replaces an existing geodataset with a new geojson.
Parameter | Type | Required | Default | Description |
---|---|---|---|---|
name | string | true | N/A | Geodataset layer name |
geojson | object | true | N/A | The geojson object to create |
startProp | object | false | N/A | Name of key of feature’s start time property |
endProp | object | false | N/A | Name of key of feature’s end time property |
Example
curl -X POST -H "Authorization:Bearer <token>" -H "Content-Type: application/json" -d '{"name":"my_geodataset", "geojson": {"type": "FeatureCollection", "features": []}}' http://localhost:8889/api/geodatasets/recreate
POST /recreate/:name
See POST /recreate. name
is part of url and the POST body is the full geojson file. startProp
and endProp
are unsupported for this scheme unless specified in the top-level of the geojson.
Example
curl -X POST -H "Authorization:Bearer <token>" -H "Content-Type: application/json" --data-binary "@my_geodataset.json" http://localhost:8888/api/geodatasets/recreate/my_geodataset
POST /recreate/:name/:start_end_prop
See POST /recreate. name
is part of url and the POST body is the full geojson file. startProp
and endProp
parameters can be passed in through URL instead. startProp
and endProp
are comma-separated.
Example
curl -X POST -H "Authorization:Bearer <token>" -H "Content-Type: application/json" --data-binary "@my_geodataset.json" http://localhost:8888/api/geodatasets/recreate/my_geodataset/start_time,end_time
DELETE /remove/:name
Removes a geodataset.
Example
curl -X DELTE -H "Authorization:Bearer <token>" - http://localhost:8888/api/geodatasets/remove/my_geodataset