Skip to content

koopjs/koop-provider-csv

Repository files navigation

koop-provider-csv

A configurable and reusable CSV provider for Koop, created with Koop CLI

This provider can load a CSV file from a local path or a remote endpoint. The provided CSV file must include columns of latitude and longitude coordinates.

Features

  • fully configurable
  • support multiple CSV sources
  • support local file path or remote endpoint
  • support multiple CSV files for a single source
  • parse boolean and numeric values automatically
  • stream processing

Installation

with npm

npm install koop-provider-csv

with Koop CLI for your Koop app

koop add provider koop-provider-csv

Usage

Once installed, this provider enables routes like

/koop-provider-csv/:id/FeatureServer/*

where id is the unique ID for a source CSV defined in the configuration file.

For example, this route allows to query a CSV file with ID my-csv:

/koop-provider-csv/my-csv/FeatureServer/0/query

Configuration

This provider is configured with config and all configuration files are in the config directory.

A configuration looks like this:

{
  // configuration namespace for this provider plugin
  "koop-provider-csv": {
    // define one or multiple CSV sources
    "sources": {
      // a unique ID for each source, which is used in the query route
      "my-csv": {
        // [optional] a URL for the source CSV
        "url": "url_to_csv",
        // [optional] a file path or a glob pattern to local CSV file(s)
        "path": "path_to_csv",
        // [required] point coordinate columns
        "geometryColumns": {
          "longitude": "longitude_column_name",
          "latitude": "latitude_column_name"
        },
        // [optional] ArcGIS service metadata
        // See https://koopjs.github.io/docs/development/provider/model#adding-provider-metadata-to-the-geojson
        "metadata": {
          "idField": "id_column_name"
        }
      }
    }
  }
}

See config/example-with-path.json or config/example-with-url.json for full example configurations.

Development

Run dev server

$ npm start

A dev server will be running at http://localhost:8080. By default, it will use with NODE_ENV=dev and the dev configuration config/dev.json should be created beforehand.

Run tests

$ npm test

License

MIT