terraformer-geostore

GeoStore for Terraformer, helps a geo-database toolkit

GeoStore

This package is part of the Terraformer project.

Terraformer.GeoStore is a class built for handing lightweight storage and querying of large amounts of GeoJSON Features. It is very fast and index the rough US counties data (about 950k) in about 120ms and search for which county contains a point in about 6.5ms. These numbers are form the latest version of Chrome.

$ npm install terraformer-geostore
$ npm install terraformer-geostore-rtree
$ npm install terraformer-geostore-memory

In the browser, Terraformer is required.

You can use Bower to install the components if you like or download them and host them yourself.

$ bower install terraformer-geostore
$ bower install terraformer-geostore-rtree
$ bower install terraformer-geostore-memory

For a full guide to GeoStore check out the Terraformer website.

var store = new Terraformer.GeoStore({
  store: new Terraformer.Store.Memory(),
  index: new Terraformer.RTree()
});
 
// Add a GeoJSON feature 
store.add({
  "type": "Feature",
  "properties": {
    "name": "Ladds Addition"
  },
  "id": "ladds-addition",
  "geometry": {
    "type": "Polygon",
    "coordinates": [
      [ [ -122.65355587005614, 45.50499344809821 ], [ -122.65355587005614, 45.512061121601 ], [ -122.64535903930664, 45.512061121601 ], [ -122.64535903930664, 45.50499344809821 ], [ -122.65355587005614, 45.50499344809821 ] ]
    ]
  }
}, function (errsuccess) {
  // callback when the geojson is added 
});
 
// You can also add FeatureCollections of multiple Features 
store.add({
  "type": "FeatureCollection",
  "features": [
    {
      "type": "Feature",
      "properties": {
        "name": "Esri PDX"
      },
      "id": "esri-pdx",
      "geometry": {
        "type": "Point",
        "coordinates": [ -122.67629563808441, 45.51646293140592 ]
      }
    },
    {
      "type": "Feature",
      "properties": {
        "name": "Barista"
      },
      "id": "barista",
      "geometry": {
        "type": "Point",
        "coordinates": [ -122.67520129680635, 45.51926322043975 ]
      }
    }
  ]
}, function (errsuccess) {
  // callback when all features are added 
});
 
// ask the store which features are within a given polygon. 
store.within({
  "type": "Polygon",
  "coordinates": [
    [ [-122.69290924072266, 45.54038305764738], [-122.72054672241211, 45.535453299886896], [-122.69479751586914, 45.51464736754301], [-122.67848968505858, 45.495398037299395], [-122.66836166381836, 45.495398037299395], [-122.66681671142577, 45.50321887154943], [-122.67127990722655, 45.51067773196122], [-122.67127990722655, 45.522585798722176], [-122.67110824584961, 45.53028260179986], [-122.69290924072266, 45.54038305764738] ]
  ]
}, function (errresults) {
  for (var i = results.length - 1; i >= 0; i--) {
    console.log(results[i].id);
  };
});

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

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

[](Esri Tags: Terraformer GeoJSON GeoStore) [](Esri Language: JavaScript)