Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
89 changes: 88 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

Koop is a JavaScript toolkit for making requests to spatial APIs. It exposes a Node.js web server that faciliates on-the-fly transformations of geospatial data from one format to another and delivers it to clients by HTTP. Koop allows you to keep your data in its native format, while making it accessible in any format required. Out-of-the-box, Koop can translates your data into the GeoServices specification supported by ArcGIS products. It's plugin architecture supports output in other formats including vector-tile, WMS, and plain old GeoJSON. Learn more at [https://koopjs.github.io](https://koopjs.github.io).

Koop's plugin-architecture facilates custom deployments specific to your needs. "Provider" plugins to connect to novel data formats and translate to a common format (GeoJSON), while "output" plugins then transform that GeoJSON to other specifications. See a list of plugins already authored and maintained [here](https://koopjs.github.io/docs/available-plugins). If you have a novel datasource or require an as-yet unsupported output format, new plugins can be easily developed and integrated. See the [development section of the Koop docs](https://koopjs.github.io/docs/development).
Koop's plugin-architecture facilates custom deployments specific to your needs. "Provider" plugins to connect to novel data formats and translate to a common format (GeoJSON), while "output" plugins then transform that GeoJSON to other specifications. See a full list of plugins [here](https://koopjs.github.io/docs/available-plugins). If you have a novel datasource or require an as-yet unsupported output format, new plugins can be easily developed and integrated. See the [development section of the Koop docs](https://koopjs.github.io/docs/development).
Copy link

Copilot AI Apr 4, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Spelling: "facilates" should be "facilitates" (and consider using the same spelling consistently wherever this paragraph appears).

Copilot uses AI. Check for mistakes.

![lots of geojson into feature services](https://user-images.githubusercontent.com/7832202/28444721-43eb6ea6-6d8d-11e7-8d56-3af46fd5bf88.png)

Expand Down Expand Up @@ -68,6 +68,93 @@ Test coverages for each package are shown below. Coverage for winnow package inc
|output-geoservices|N/A|![coverage](./packages/output-geoservices/coverage.svg)|
|winnow|![coverage](./packages/winnow/coverage.svg)|![coverage](./packages/winnow/coverage-unit.svg)|

## Available Plugins

### Providers

Koop uses **providers** to transform data from different sources to GeoJSON.

#### Officially Supported

| name | npm |
| :--- | :--- |
| [ArcGIS Online](https://github.com/koopjs/koop-provider-agol) | [![npm](https://img.shields.io/npm/v/koop-agol.svg?style=flat-square)](https://www.npmjs.com/package/koop-agol) |
| [AWS S3 Select](https://github.com/koopjs/koop-provider-s3-select) | [![npm](https://img.shields.io/npm/v/@koopjs/provider-s3-select.svg?style=flat-square)](https://www.npmjs.com/package/@koopjs/provider-s3-select) |
| [Elastic-SQL](https://github.com/koopjs/koop-provider-elastic-sql) | [![npm](https://img.shields.io/npm/v/@koopjs/provider-elastic-sql.svg?style=flat-square)](https://www.npmjs.com/package/@koopjs/provider-elastic-sql) |
| [File GeoJSON](https://github.com/koopjs/koop-provider-file-geojson) | [![npm](https://img.shields.io/npm/v/@koopjs/provider-file-geojson.svg?style=flat-square)](https://www.npmjs.com/package/@koopjs/provider-file-geojson) |
| [GitHub](https://github.com/koopjs/koop-provider-github) | [![npm](https://img.shields.io/npm/v/koop-github.svg?style=flat-square)](https://www.npmjs.com/package/koop-github) |
| [Google Analytics](https://github.com/koopjs/koop-provider-google-analytics) | [![npm](https://img.shields.io/npm/v/@koopjs/provider-google-analytics.svg?style=flat-square)](https://www.npmjs.com/package/@koopjs/provider-google-analytics) |
| [Google Sheets](https://github.com/koopjs/koop-provider-google-sheets) | [![npm](https://img.shields.io/npm/v/@koopjs/provider-google-sheets.svg?style=flat-square)](https://www.npmjs.com/package/@koopjs/provider-google-sheets) |
| [Marklogic](https://github.com/koopjs/koop-provider-marklogic) | [![npm](https://img.shields.io/npm/v/@koopjs/provider-marklogic.svg?style=flat-square)](https://www.npmjs.com/package/@koopjs/provider-marklogic) |
Copy link

Copilot AI Apr 4, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The provider name appears to be mis-capitalized as "Marklogic"; the product/repo name is typically "MarkLogic". Updating the display text will improve readability and consistency.

Copilot uses AI. Check for mistakes.
| [Socrata](https://github.com/koopjs/koop-provider-socrata) | [![npm](https://img.shields.io/npm/v/@koopjs/provider-socrata.svg?style=flat-square)](https://www.npmjs.com/package/koop-socrata) |
Copy link

Copilot AI Apr 4, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The Socrata npm badge and npm link reference different package names (badge uses "@koopjs/provider-socrata" while the link goes to "koop-socrata"). Please align these so the badge and link point to the same npm package.

Copilot uses AI. Check for mistakes.

#### Experimental

| name | npm |
| :--- | :--- |
| [American Community Survey](https://github.com/koopjs/koop-acs) | [![npm](https://img.shields.io/npm/v/koop-acs.svg?style=flat-square)](https://www.npmjs.com/package/koop-acs) |
| [CKAN](https://github.com/koopjs/koop-provider-ckan) | [![npm](https://img.shields.io/npm/v/koop-ckan.svg?style=flat-square)](https://www.npmjs.com/package/koop-ckan) |
| [Decennial Census Data](https://github.com/koopjs/koop-census) | [![npm](https://img.shields.io/npm/v/koop-census.svg?style=flat-square)](https://www.npmjs.com/package/koop-census) |
| [GeoCommons](https://github.com/koopjs/koop-geocommons) | [![npm](https://img.shields.io/npm/v/koop-geocommons.svg?style=flat-square)](https://www.npmjs.com/package/koop-geocommons) |
| [Google Fusion Tables](https://github.com/koopjs/koop-provider-google-fusion-tables) | [![npm](https://img.shields.io/npm/v/@koopjs/provider-google-fusion-tables.svg?style=flat-square)](https://www.npmjs.com/package/@koopjs/provider-google-fusion-tables) |
| [MongoDB](https://github.com/koopjs/koop-provider-mongo) | |
| [OGC API - Features](https://github.com/koopjs/provider-ogcapi-features) | [![npm](https://img.shields.io/npm/v/@koopjs/provider-ogcapi-features)](https://www.npmjs.com/package/@koopjs/provider-ogcapi-features) |
| [OpenStreetMap](https://github.com/koopjs/koop-osm) | [![npm](https://img.shields.io/npm/v/koop-osm.svg?style=flat-square)](https://www.npmjs.com/package/koop-osm) |
| [Salesforce](https://github.com/Jking-GIS/koop-provider-Salesforce) | [![npm](https://img.shields.io/npm/v/koop-salesforce.svg)](https://www.npmjs.com/package/koop-salesforce) |
| [Snowflake](https://github.com/Esri/koop-provider-snowflake) | |
| [VRBO](https://github.com/koopjs/koop-vrbo) | [![npm](https://img.shields.io/npm/v/koop-vrbo.svg?style=flat-square)](https://www.npmjs.com/package/koop-vrbo) |
| [Yelp](https://github.com/koopjs/koop-provider-yelp) | [![npm](https://img.shields.io/npm/v/koop-yelp.svg?style=flat-square)](https://www.npmjs.com/package/koop-yelp) |

#### Third Party

| name | npm |
| :--- | :--- |
| [BigQuery](https://github.com/geobabbler/koop-bigquery-provider) | |
| [Carto](https://github.com/hhkaos/koop-provider-carto) | [![npm](https://img.shields.io/npm/v/koop-provider-carto.svg)](https://www.npmjs.com/package/koop-provider-carto) |
| [Citybikes](https://github.com/nixta/koop-citybikes) | |
| [Cloudant](https://github.com/cloudant/koop-cloudant) | [![npm](https://img.shields.io/npm/v/koop-cloudant.svg?style=flat-square)](https://www.npmjs.com/package/koop-cloudant) |
| [CSV](https://github.com/haoliangyu/koop-provider-csv) | [![npm](https://img.shields.io/npm/v/koop-provider-csv.svg?style=flat-square)](https://www.npmjs.com/package/koop-provider-csv) |
| [CSV (ntkog)](https://github.com/ntkog/koop-provider-csv) | [![npm](https://img.shields.io/npm/v/@ntkog/koop-provider-csv.svg?style=flat-square)](https://www.npmjs.com/package/@ntkog/koop-provider-csv) |
| [GeoNode](https://github.com/haoliangyu/koop-provider-geonode) | [![npm](https://img.shields.io/npm/v/koop-provider-geonode)](https://www.npmjs.com/package/koop-provider-geonode) |
| [OpenDataSoft](https://github.com/haoliangyu/koop-provider-opendatasoft) | [![npm](https://img.shields.io/npm/v/koop-provider-opendatasoft)](https://www.npmjs.com/package/koop-provider-opendatasoft) |
| [Postgres/PostGIS](https://github.com/brambow/koop-provider-postgis) | |
| [PostgreSQL/PostGIS (doneill)](https://github.com/doneill/koop-provider-pg) | [![npm](https://img.shields.io/npm/v/koop-provider-pg)](https://www.npmjs.com/package/koop-provider-pg) |
| [ServiceNow](https://github.com/Esri/indoors-servicenow-feature-service) | |
| [Strava](https://github.com/Jking-GIS/koop-provider-Strava) | [![npm](https://img.shields.io/npm/v/koop-strava.svg?style=flat-square)](https://www.npmjs.com/package/koop-strava) |
| [Zillow](https://github.com/dmfenton/koop-provider-zillow) | [![npm](https://img.shields.io/npm/v/koop-zillow.svg?style=flat-square)](https://www.npmjs.com/package/koop-zillow) |

Know of a provider that isn't listed? Please let us know by [submitting an issue](https://github.com/koopjs/koop/issues/new).

---

### Outputs

Koop uses **outputs** to transform GeoJSON from providers into open specification formats.
Copy link

Copilot AI Apr 4, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This sentence says outputs transform GeoJSON into "open specification formats", but the list includes GeoServices which is not an open specification. Consider rewording to something like "other formats/specifications" so the description matches the entries below.

Suggested change
Koop uses **outputs** to transform GeoJSON from providers into open specification formats.
Koop uses **outputs** to transform GeoJSON from providers into other formats and specifications.

Copilot uses AI. Check for mistakes.

#### Officially Supported

| name | npm | koop compatibility |
| :--- | :--- | :--- |
| [Geoservices](https://github.com/koopjs/koop-output-geoservices) | [![npm](https://img.shields.io/npm/v/koop-output-geoservices.svg?style=flat-square)](https://www.npmjs.com/package/koop-output-geoservices) | 3.x |
| [Vector Tiles](https://github.com/koopjs/koop-output-vector-tiles) | [![npm](https://img.shields.io/npm/v/koop-output-vector-tiles.svg?style=flat-square)](https://www.npmjs.com/package/koop-output-vector-tiles) | 3.x |

#### Experimental

| name | npm | koop compatibility |
| :--- | :--- | :--- |
| [Flatted JSON](https://github.com/koopjs/koop-output-flat) | | 3.x |
| [OGC API - Features](https://github.com/koopjs/output-ogcapi-features) | [![npm](https://img.shields.io/npm/v/@koopjs/output-ogcapi-features)](https://www.npmjs.com/package/@koopjs/output-ogcapi-features) | 3.x |
| [WFS](https://github.com/koopjs/koop-output-wfs) | | 3.x |
| [WMS](https://github.com/koopjs/koop-output-wms) | | 3.x |

#### Third Party

| name | npm | koop compatibility |
| :--- | :--- | :--- |
| [GeoJSON/TopoJSON](https://github.com/haoliangyu/koop-output-geojson) | [![npm](https://img.shields.io/npm/v/koop-output-geojson.svg)](https://www.npmjs.com/package/koop-output-geojson) | 3.x |

---

## Contributing
See our [contribution](./CONTRIBUTING.md) doc.

Expand Down