Koop provider to query PostGIS spatial data, convert it to GeoJSON as input into Koop and convert into the GeoServices specification supported by ArcGIS products.
Database connection parameters can be configured to any connection using the following environment variables:
# All values should be string values except PG_PORT
PG_HOST="${HOST}"
PG_PORT=${PORT}
PG_DATABASE="${DATABASE}"
PG_USER="${USER}"
PG_PASSWORD="${PASSWORD}"
If database connection environment variables are not set the provider will use the default configuration.
- Open config/default.json and set your database connection parameters, an example is provided in config/example.json.
{
"db": {
"host": "host",
"port": 5432,
"database": "dbname",
"user": "user",
"password": "password"
}
}
The provider use gid
as the OBJECTID unique identifier. Optionally, if you prefer to use another column from your database table, you can add/set the following environment variable for your data's custom feature unique identifier.
# value should be String, eg. "id"
export PG_OBJECTID="${OBJECT_ID}"
The provider uses Postgres JSONB which limits document size to 255MB in size. To optimize returning data from large datasets exceeding 255MB you can optionally add a limit to just a portion of the rows that are used to create the GeoJSON data. The default limit is 10000000 rows.
# value should be String, e.g. "1000"
export PG_LIMIT="${LIMIT}"
Koop providers require you to first install Koop. You can add koop-provider-pg
to your Koop server dependencies by installing it with npm:
# install koop cli using npm
$ npm install -g @koopjs/cli
# create a new koop app
$ koop new app pg-koop
# cd into the pg-koop app
$ cd pg-koop
# install provider
$ koop add provider koop-provider-pg
# start koop server
$ koop serve
Example API Query:
Replace ${schema}.${table}
with schema.table from your PostGIS db to translate.
curl localhost:8080/pg/rest/services/${schema}.${table}/FeatureServer/0/query
Add as Feature Layer
- Esri Leaflet
// esri leaflet feature layer
L.esri.featureLayer({
url: 'http://localhost:8080/pg/rest/services/${schema}.${table}/FeatureServer/layers'
}).addTo(map);
- ArcGIS Online WebMap
https://www.arcgis.com/home/webmap/viewer.html?url=http://localhost:8080/pg/rest/services/${schema}.${table}/FeatureServer/
Run server:
npm install
npm start
A copy of the license is available in the repository's LICENSE file.