GeoJson Support

Goals

  • Rich support for geojson
  • Filtering via jsonpath-like expressions
  • load geojson natively (i.e. no converter definition, or an empty converter)
  • heterogenous geojson docs in one table
  • multiple 'materialized views' (sfts) per table

Use Case


Considerations

  • support json-schema
  • efficient/compressed storage
  • variable attributes/flexible schema
  • attribute indices
  • pushdown predicates
  • query syntax and predicates - possibly build off mongodb, jq, solr, postgres jsonb
  • geoserver/simplefeature integration
  • ingest api/services
  • try to avoid parsing json during filtering
  • optimizations - define materialized views up front and/or with m/r jobs instead of compute on the fly (consider using column groups)
  • optimizations - allow for definition of fields up front and replace serialized strings with field ids
  • projects to evaluate for ideas - bson, msgpack, grpc, protocol-bufs, avro, postgres jsonb, solr geo

Design

  • Support native json attributes in SimpleFeatures in AccumuloDataStore
    • serialized as reduced bson
    • support json-path expressions into the serialized json
    • evaluate expressions without reparsing json
  • Materialized views are supported through projections using json-path selectors
  • Scala API wraps geotools datastore and hides implemenation details
    • Accepts geojson features to add
    • Query API is based off mongodb syntax
  • Rest API wraps Scala API as a webservice

Tasks

  • TBD


References

http://docs.geotools.org/stable/javadocs/org/geotools/geojson/feature/FeatureJSON.html

https://docs.mongodb.com/manual/reference/geojson/

https://github.com/opendatalab-de/geojson-jackson