idris-geojson-model

1.1.2 • Public • Published

idris-geojson-model

Usage

var igm = require('idris-geojson-model')
var data = require('a-geojson-collection.json')
var c = igm(data)

Methods

bbox

c.bbox // returns the bounding box as [minLng, minLat, maxLng, maxLat]

propKeys

c.propKeys // returns an Array with the properties

property(propertyName, orderByCount)

c.property('continent')

returns:

[ { value: 'Africa', count: 54 },
  { value: 'Antarctica', count: 1 },
  { value: 'Asia', count: 59 },
  { value: 'Europe', count: 51 },
  { value: 'North America', count: 42 },
  { value: 'Oceania', count: 26 },
  { value: 'Seven seas (open ocean)', count: 9 },
  { value: 'South America', count: 13 } ]

And

c.property('continent', true)

returns

[ { value: 'Asia', count: 59 },
  { value: 'Africa', count: 54 },
  { value: 'Europe', count: 51 },
  { value: 'North America', count: 42 },
  { value: 'Oceania', count: 26 },
  { value: 'South America', count: 13 },
  { value: 'Seven seas (open ocean)', count: 9 },
  { value: 'Antarctica', count: 1 } ]

.propertyTable

c.propertyTable

returns

[
 [ 'index', 'NAME', 'ABBREV', 'ISO_A2', 'ISO_A3', 'CONTINENT', 'SUBREGION' ]
 [ 0, 'Aruba', 'Aruba', 'AW', 'ABW', 'North America', 'Caribbean' ]
 [ 1, 'Afghanistan', 'Afg.', 'AF', 'AFG', 'Asia', 'Southern Asia' ]
 [ 2, 'Angola', 'Ang.', 'AO', 'AGO', 'Africa', 'Middle Africa' ]
 [ 3, 'Anguilla', 'Ang.', 'AI', 'AIA', 'North America', 'Caribbean' ]
 
 // ...
]

.searchByProperty(key, value)

c.searchByProperty('continent', 'Asia') // returns a FeatureCollection

.searchByProperties(key, valuesArray)

c.searchByProperties('continent', ['Asia', 'Africa']) // returns a FeatureCollection

.searchByBbox(bbox, shouldBeCropped)

c.searchByBbox([0,0,10,10]) // returns a FeatureCollection with all features overlapping the bbox
c.searchByBbox([0,0,10,10], true) // returns a FeatureCollection with all features cropped to fit the bbox

.geoTypes

c.geoTypes // returns all geometry types

.separateByGeoType(multiFeaturesAsDifferentType)

c.separateGeoTypes()

returns

[ { type: 'Point', features: [ [Object], [Object] ] },
  { type: 'LineString', features: [ [Object], [Object] ] },
  { type: 'Polygon',
    features: [ [Object], [Object], [Object], [Object] ] } ]

And

c.separateGeoTypes(true)

returns

[ { type: 'Point', features: [ [Object] ] },
  { type: 'LineString', features: [ [Object] ] },
  { type: 'Polygon', features: [ [Object], [Object] ] },
  { type: 'MultiPoint', features: [ [Object] ] },
  { type: 'MultiLineString', features: [ [Object] ] },
  { type: 'MultiPolygon', features: [ [Object], [Object] ] } ]

Modify the model

None of the methods above change anything on the underlying model. The following do. They also emit events that you can listen to like this:

c.event.on('event-name', function() {
	// do whatever when event is emitted
})

.addFeature(feature)

Takes a GeoJSON feature as argument and adds it to the model.

Emits an 'add' event.

.removeFeature(index)

Takes an index value as argument and removes it from the model.

Emits a 'remove' event.

.removeFeatures(indexes)

Takes an Array of indexes and removes them from the model.

Emits an 'remove' event.

.removeProperty(propertyToRemove)

Takes a property as argument and removes it on all features of the model.

Emits a 'remove-property' event.

.removeProperties(propertiesToRemove)

Takes an Array of properties as argument and removes them on all features of the model.

Emits a 'remove-property' event.

.setFeatureProperty(index, key, val)

Takes the index of the feature, a property key and value.

Emits a 'set-property' event.

.JSON()

Returns a FeatureCollection. To be used to retrieve the new collection after the model has been modified.

Readme

Keywords

Package Sidebar

Install

npm i idris-geojson-model

Weekly Downloads

4

Version

1.1.2

License

GPL-2.0

Last publish

Collaborators

  • idris-maps