Code Monkey home page Code Monkey logo

koop's Introduction

Koop

An Open Geospatial ETL Engine

npm version build status

Koop is Express middleware for simplifying geographic data consumption across many different providers and in many different formats.

Koop provides a flexible server for dynamically transforming 3rd party data sources (APIs) into Feature Services and standard geographic data formats (GeoJSON, Shapefile, KML, CSV). This project is meant to provide a versatile platform for experimenting and working with various datasets within the global geospatial data ecosystem. Koop aims to allow easier access to any open data API and to make third party data easier to use within the realm of Esri's geospatial web products.

Visit the demo at http://koop.dc.esri.com.

Architecture

lots of geojson into feature services

Dependencies

Koop requires Node.js version 0.10.x or greater to run on your server or local machine.

Recommended for production

Koop uses a local, in-memory object for caching data by default. If you want persistent and performant data caching, Koop needs access to a spatial database. We use and recommend PostGIS in production, but there is also experimental support for ElasticSearch.

See the Caches section in the documentation for more information.

Install

Koop should be installed as a dependency in a Node.js project like so:

npm install koop --save

Pre-Installation on Windows

Make sure the PYTHON environmental variable is set:

SET PYTHON = C:\Python27\python\python.exe

Usage

Koop works as Express middleware. To use Koop you need a combination of Express, Koop, and Koop providers. Once Koop is in a project, you can add a Koop provider like koop-github:

npm install koop-github --save

For a complete list of providers, see the documentation.

Registering Providers

Once you've installed koop and chosen a provider to work with you need to register the provider with Koop.

// create a config object that tells koop where to write data and what db to use
var config = {
  "data_dir": "/usr/local/koop/",
  "db": {
    "conn": "postgres://localhost/koopdev"
  }
};

// pass the config to koop
var koop = require('koop')(config);

// require and register the provider to bind its routes and handlers
var github = require('koop-github');
koop.register(github);

// create an express app
var app = require('express')();

// add koop middleware to the express app
app.use(koop);

// start the express server
app.listen(process.env.PORT || 1337, function () {
  console.log('Listening at http://localhost:%d/', this.address().port);
});

Read more about creating a new provider or modifying an existing provider here.

Roadmap

See ROADMAP.md to view the Koop project roadmap.

Resources

Issues

Find a bug or want to request a new feature? Please let us know by submitting an issue.

Contributing

Esri welcomes contributions from anyone and everyone. Please see our guidelines for contributing.

License

Apache 2.0

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.