Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/sliceosm/sliceosm-api
Web API for interacting with an .osmx database
https://github.com/sliceosm/sliceosm-api
openstreetmap
Last synced: about 1 month ago
JSON representation
Web API for interacting with an .osmx database
- Host: GitHub
- URL: https://github.com/sliceosm/sliceosm-api
- Owner: SliceOSM
- License: mit
- Created: 2024-09-09T15:17:27.000Z (4 months ago)
- Default Branch: main
- Last Pushed: 2024-11-18T07:43:29.000Z (about 1 month ago)
- Last Synced: 2024-11-18T08:33:23.533Z (about 1 month ago)
- Topics: openstreetmap
- Language: Go
- Homepage:
- Size: 2.95 MB
- Stars: 1
- Watchers: 0
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# sliceosm-api
A lightweight web server for submitting extract tasks to an [OSM Express](http://github.com/bdon/OSMExpress) database.
## Usage
```
Usage: ./sliceosm-api [OPTIONS] OSMX_FILEOptions:
-bind string
IP address and port to listen on
-exec string
Path to OSMX executable
-filesDir string
Result directory
-nodesLimit int
Nodes limit (default 100000000)
-sentryDsn string
Sentry DSN
```## API
### Quickstart example
```sh
curl -X POST https://slice.protomaps.dev/api/ -d '{"Name":"none","RegionType":"geojson","RegionData":{"type":"Polygon","coordinates":[[[-77.4571,37.5530],[-77.4571,37.5272],[-77.4133,37.5272],[-77.4133,37.5530],[-77.4571,37.5530]]]}}'
# 2637da98-20a1-428f-b6db-18ac2861b763
curl https://slice.protomaps.dev/api/2637da98-20a1-428f-b6db-18ac2861b763
# when Complete is true, fetch the file:
curl https://slice.protomaps.dev/files/2637da98-20a1-428f-b6db-18ac2861b763.osm.pbf -o out.osm.pbf
```### GET `/`
Returns:
- the last updated timestamp
- the nodes limit for the server
- the number of jobs in the queue### GET `/nodes.png`
Returns an PNG-encoded representation of OSM node density.
### POST `/`
Create a task.
Examples of creating tasks: (your `.osmx` database must include Richmond, Virginia)
```
curl -X POST http://localhost:8080 -d '{"Name":"none", "RegionType":"bbox", "RegionData":[37.5272,-77.4571,37.5530,-77.4133]}'curl -X POST http://localhost:8080 -d '{"Name":"none","RegionType":"geojson","RegionData":{"type":"Polygon","coordinates":[[[-77.4571,37.5530],[-77.4571,37.5272],[-77.4133,37.5272],[-77.4133,37.5530],[-77.4571,37.5530]]]}}'
```- `RegionType` - one of `bbox`, `geojson`
`bbox`: in `min_lat,min_lon,max_lat,max_lon` format
`geojson`: a GeoJSON Geometry, either a Polygon or MultiPolygon
* up to the configured nodes limit of the server.
* Limit on the number of vertices in the input polygon.Returns a UUID or an error message.
### GET `/{uuid}`
Get a JSON Progress for a task submitted in the last 24 hours.
```js
{
"Timestamp":
"CellsProg": "",
"CellsTotal": "",
"NodesProg": "",
"NodesTotal": "",
"ElemsProg": "",
"ElemsTotal":"",
"SizeBytes":"",
"Elapsed":"",
"Complete":""
}
```## File Server
These paths are not served through the API, but by a static fileserver.
### GET `/{uuid}_region.json`
Get the GeoJSON submitted for this task. Valid immediately after the task is accepted by the server.
```json
{
"Uuid":"",
"SanitizedName": "abcd",
"SanitizedRegionType":"",
"SanitizedRegionData":""
}
```### GET `/{uuid}.osm.pbf`
Download the result `osm.pbf`. This appears once the Get `/{uuid}` API reports `Completed`.
## Building
Cross-compile the `sliceosm-api` ARM linux binary:
```
GOOS=linux GOARCH=arm64 go build
```Example crontab for updating an osmx database and cleaning up results older than one day:
```
PATH=/home/osmx/OSMExpress:$PATH
* * * * * /bin/sleep 8 && /usr/bin/python3 /home/osmx/OSMExpress/utils/osmx-update /mnt/planet.osmx https://planet.openstreetmap.org/replication/minute/ >> /home/osmx/osmx-update.log 2>&1
0 0 * * * find /mnt/www/files/ -type f -mtime +1 -exec rm {} \;
```