{"id":13556596,"url":"https://github.com/koopjs/koop","last_synced_at":"2025-05-14T10:07:58.742Z","repository":{"id":9616407,"uuid":"11542346","full_name":"koopjs/koop","owner":"koopjs","description":"Transform, query, and download geospatial data on the web.","archived":false,"fork":false,"pushed_at":"2025-03-31T19:33:24.000Z","size":16014,"stargazers_count":684,"open_issues_count":53,"forks_count":130,"subscribers_count":65,"default_branch":"master","last_synced_at":"2025-04-14T05:53:30.488Z","etag":null,"topics":["api","arcgis","arcgishub","data-management","etl","feature-service","geojson","geojson-features","geospatial","geospatial-data","gis","hacktoberfest","nodejs","server","spatial"],"latest_commit_sha":null,"homepage":"http://koopjs.github.io","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/koopjs.png","metadata":{"files":{"readme":"README.md","changelog":"changeset-to-changelog.js","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":"CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2013-07-20T05:03:02.000Z","updated_at":"2025-04-11T05:50:59.000Z","dependencies_parsed_at":"2023-01-13T15:28:05.678Z","dependency_job_id":"bf2ff778-94ed-49ab-a6f6-0253c43fad1c","html_url":"https://github.com/koopjs/koop","commit_stats":{"total_commits":833,"total_committers":14,"mean_commits":59.5,"dds":0.6674669867947178,"last_synced_commit":"5c302dfb24bb01a7f7868483db07a9bc7a86e5fb"},"previous_names":[],"tags_count":312,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/koopjs%2Fkoop","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/koopjs%2Fkoop/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/koopjs%2Fkoop/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/koopjs%2Fkoop/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/koopjs","download_url":"https://codeload.github.com/koopjs/koop/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248830389,"owners_count":21168272,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["api","arcgis","arcgishub","data-management","etl","feature-service","geojson","geojson-features","geospatial","geospatial-data","gis","hacktoberfest","nodejs","server","spatial"],"created_at":"2024-08-01T12:03:55.818Z","updated_at":"2025-04-14T05:53:59.801Z","avatar_url":"https://github.com/koopjs.png","language":"JavaScript","funding_links":[],"categories":["Others","JavaScript","👨‍💻 JavaScript Libraries","gis","Geospatial Library"],"sub_categories":["Data Processing","JavaScript"],"readme":"# Koop\n\n*Translate, query, \u0026 integrate any geospatial API on the web*\n\nKoop 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).\n\nKoop'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).\n\n![lots of geojson into feature services](https://user-images.githubusercontent.com/7832202/28444721-43eb6ea6-6d8d-11e7-8d56-3af46fd5bf88.png)\n\n## Demo\nWant to see Koop in action? The repository ships with a demo that shows Koops support for GeoServices (ArcGIS). It leverages the file-geojson data provider and the GeoServices output-plugin:\n\n```bash\ngit clone https://github.com/koopjs/koop\ncd koop\nnpm run demo\n```\n\nKoop will start listening on port 8080. You should the following console logging noting the exposed file-geojson/GeoService routes:\n\n```bash\n2023-03-17T19:18:29.416Z info: [Geoservices] routes for [file-geojson] provider\n2023-03-17T19:18:29.416Z info: ROUTE | [GET, POST] | /file-geojson/rest/info\n2023-03-17T19:18:29.416Z info: ROUTE | [GET, POST] | /file-geojson/tokens/:method\n2023-03-17T19:18:29.417Z info: ROUTE | [GET, POST] | /file-geojson/tokens\n2023-03-17T19:18:29.417Z info: ROUTE | [GET, POST] | /file-geojson/rest/services/:id/FeatureServer/:layer/:method\n2023-03-17T19:18:29.417Z info: ROUTE | [GET, POST] | /file-geojson/rest/services/:id/FeatureServer/layers\n2023-03-17T19:18:29.417Z info: ROUTE | [GET, POST] | /file-geojson/rest/services/:id/FeatureServer/:layer\n2023-03-17T19:18:29.417Z info: ROUTE | [GET, POST] | /file-geojson/rest/services/:id/FeatureServer\n2023-03-17T19:18:29.417Z info: ROUTE | [GET, POST] | /file-geojson/rest/services/:id/FeatureServer*\n```\n\nThe following request will take the demo data from `demo/provider-data/line.geojson` and send it as geojson:\n\n```\nhttp://localhost:8080/file-geojson/rest/services/line/FeatureServer/0/query\n```\n\nQuery for features with a specific property value:\n\n```\nhttp://localhost:8080/file-geojson/rest/services/line/FeatureServer/0/query?where=foo='bar'\n```\n\nReturn data in a different coordinate system:\n\n```\nhttp://localhost:8080/file-geojson/rest/services/line/FeatureServer/0/query?outSR=3857\n```\n\n## Koop Monorepo\n\nThis repository is home of the Koop monorepo.  In contains a collection of packages that are shipped by default with every Koop instance.  [koop-core](https://github.com/koopjs/koop/packages/core) is the parent package and is used to generate a default configuration of Koop. References to the \"Koop version\" refer to the version of this package. The other packages in this monorepo are dependencies of core and include the Geoservices output-plugin and its dependencies, the default in-memory data cache, and a logger.  All other plugins (providers, outputs, etc) are in separate repositories.\n\nThe Koop dependency graph is shown below.\n![Screen Shot 2022-11-30 at 1 03 46 PM](https://user-images.githubusercontent.com/4369192/204908289-82659cfe-fcf3-404a-aa70-79baf540f1b8.png)\n\n### Test Coverage\nTest coverages for each package are shown below. Coverage for winnow package includes integration tests as opposed to true unit tests. Our goal is to have complete unit test coverage, and breakout integration/e2e tests separately.\n\n| package | integration + unit | unit |\n|---|---|---|\n|cache-memory|N/A|![coverage](./packages/cache-memory/coverage.svg)|\n|featureserver|![coverage](./packages/featureserver/coverage.svg)|\n|koop-core|N/A|![coverage](./packages/core/coverage.svg)|\n|logger|N/A|![coverage](./packages/logger/coverage.svg)|\n|output-geoservices|N/A|![coverage](./packages/output-geoservices/coverage.svg)|\n|winnow|![coverage](./packages/winnow/coverage.svg)|![coverage](./packages/winnow/coverage-unit.svg)|\n\n## Contributing\nSee our [contribution](./CONTRIBUTING.md) doc.\n\n## Issues\nFind a bug or want to request a new feature? Post it [here](https://github.com/koopjs/koop/issues).\n\n## Resources\n\n* [Koop Documentation](https://koopjs.github.io/)\n* [ArcGIS REST API Documentation](http://resources.arcgis.com/en/help/arcgis-rest-api/)\n* [ArcGIS for Developers](http://developers.arcgis.com)\n* [@esri](http://twitter.com/esri)\n\n## License\n\n[Apache 2.0](LICENSE)\n\n\u003c!-- [](Esri Tags: ArcGIS Web Mapping GeoJson FeatureServices) --\u003e\n\u003c!-- [](Esri Language: JavaScript) --\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkoopjs%2Fkoop","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkoopjs%2Fkoop","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkoopjs%2Fkoop/lists"}