observe-export

1.0.0 • Public • Published

observe-export

TODO: Put badges here.

Export observations and new OSM nodes from an osm-p2p-db used by field-data-collector

Under development and API is likely to change

Table of Contents

Install

npm install observe-export

Usage

const osmdb = require('osm-p2p-mem')
const memdb = require('memdb')
const OBS = require('osm-p2p-observations')
const ObserveExport = require('../')
 
const osmOrgdb = osmdb()
const obsDb = osmdb()
const obsIndex = OBS({ db: memdb(), log: osm.log })
 
const observeExport = new ObserveExport(osmOrgDb, obsDb, obsIndex)
 
const ids = ['12345', '54321']
 
observeExport.osmJson(ids, function (err, data) {
  // data is array of OSM objects for observations with `ids`
})
 
observeExport.osmJson(ids, {linkedNodes: true}, function (err, data) {
  // data is array of OSM objects for observations with `ids`
  // as well as any linked nodes in the p2p db.
})
 

API

ObserveExport(osmOrgDb, obsDb, obsIndex)

Create an object for export of data from an Observe database

Kind: global function

Param Type Description
osmOrgDb osm-p2p-db An osm-p2p-db instance with existing nodes from osm.org
obsDb osm-p2p-db An osm-p2p-db instance with observations and any newly created nodes
obsIndex osm-p2p-observations An osm-p2p-observations instance with links between observations and nodes

observeExport.osmObjects(observationOsmIds, opts, cb) ⇒ undefined

Given a list of OSM IDs of 'observation'-type documents, return a mapping of these IDs to the actual observation documents, with a 'links' property added to each document, that is a list of 'node' OSM IDs that the observation is linked to. If 'opts.linkedNodes' is truthy, the 'node' OSM documents that are linked to will also be included in the results. The linked nodes can either be existing osm.org nodes from the osmOrgDb, or newly created nodes from the obsDb

Kind: instance method of ObserveExport

Param Type Description
observationOsmIds Array.<String> Array of string ids of osm-p2p-observations
opts Object
opts.linkedNodes Boolean Include linked nodes in the export
cb function Called with an array of OSM documents

observeExport.osmChange(observationOsmIds, opts, cb) ⇒ undefined

Export a osmChange document as an array of OSM objects. Each object has the property action which is one of create|modify|delete. Created nodes are nodes from the observationDb with a negative (placeholder) id. Modified nodes are constructed from the original node in the osmOrgDb and then merging the tags from linked observations in chronological order. Created nodes also have their placeholder ids replaced with an decremental index from -1 - this is to avoid issues with importing the osmChange document into existing tools since osm-p2p ids can be > 64 bits. Finally version numbers are stripped from created nodes, since existing tools do not expect these.

Kind: instance method of ObserveExport

Param Type Description
observationOsmIds Array.<String> Array of string ids of osm-p2p-observations
opts Object No options yet
cb function Called with an array of OSM objects with an action property

observeExport.osmChangeXml(observationOsmIds, opts, cb) ⇒ undefined

Export an OsmChange XML document for changes related to the observations with ids in the passed observationOsmIds array. See docs for osmChange for more details on the export process

Kind: instance method of ObserveExport

Param Type Description
observationOsmIds Array.<String> Array of string ids of osm-p2p-observations
opts Object No options yet
cb function Called with OsmChange XML document

Contribute

PRs accepted.

Small note: If editing the Readme, please conform to the standard-readme specification.

License

MIT © Digital Democracy

Package Sidebar

Install

npm i observe-export

Weekly Downloads

5

Version

1.0.0

License

MIT

Last publish

Collaborators

  • andrew_chou
  • substack
  • karissa
  • digidem-admin
  • gmaclennan
  • noffle