Giter Club home page Giter Club logo

cogj-spec's People

Contributors

bradh avatar theduckylittle avatar walker avatar

Watchers

 avatar  avatar  avatar

cogj-spec's Issues

Create RTree reader/writer

To decide:

  • Binary storage format
  • What data to store in RTree
  • Python implementation to use? If we use http://toblerity.org/rtree/ then we have compatibility with libspatialite. Do we worry about tying this to Python for now?

Also:

  • Create reader and writer class + tests

Create new json-schema spec for COGJ

Existing spec doesn't work with demo data and there seems to be several inconsistencies (e.g. features, collections ?). We should also perform bounds checks on input bounding boxes as part of the spec.

To do:

  • Review existing spec, work out what to keep and throw away
  • Add bounds checks on bounding box

Create HTTP requests IO layer

Add reader which specialises to use get range requests to parse COGJ file given URL.

WFS 2.0 Spec

12/02/2019 Catch-up

Principle: The lambda should be as simple as possible. Easily documentable in a blog-post-style format with pseudocode demonstrating implementations in other languages.

  • Start from a new branch using Zappa + Flask
  • Remove geospatial dependencies. Replace with lxml templating.
  • Limit to Polygons for MVP.
  • Throw out feature clipping.
  • Implement WFS 2.0 feature paging to deal with the API Gateway 10mb limit issue.
  • Flask-RESTPlus

TODO

  • Convert GetCapabilities response to WFS 2.0 (only)
  • Remove the shapely dependency
  • Implement a DescribeFeatureType response
  • Implement a GetFeature response (with a hard-coded feature limit to start with)
  • Implement WFS 2.0 feature paging and remove hard-coded limit
  • Do clients need us to implement resultType=hits
  • Better attribute type sniffing (they're all strings at the moment)
  • A better way to determine the gid/fid/et cetera
  • Write tests around the GeoJSON2GML code before refactoring it
  • Clean up and properly name XML templates
  • Response BBOX could lazily be the dissolved bbox of the feature class bounding boxes? Probably works better for more detailed RTrees where we're reading most of the features anyway. Will this cause problems for QGIS with its complaining about layer extents not matching? Future enhancement work.

BUGS

  • Issues rendering MultiPolygons with exterior and interior rings in QGIS fid=39714 (-76.12674,39.50170) and fid=97307 (-76.07833,39.55162)
  • [ ]
  • Remove test namespace
  • Check coordinate order requirements in the GML 3.2/WFS.2 spec (and the "Layer extended reported by the server is not correct" errors that QGIS throws.)

Stretch goals

  • Add a Leaflet-based WFS playground

TODO

  • Setup Flask
  • Setup Geolambda
  • Make WFS 1.0.0 GetCapabilities, DescribeFeatureType, and GetFeatureInfo work (simple bounding box filters only)
  • Read the BBOX from the header for GetCapabilities
  • Support reading our COGJ with embedded RTrees (currently it only supports the bounding box-based collections in the original Boundless spec)
  • Send HTTP Range requests in parallel
  • Support GMLifying using ogr2ogr's -append flag so we don't have to read the GeoJSON in and pass it around
  • Work out how to deploy Geolambda + Flask
  • Run OGC's test suite
  • AWS API Gateway has a response payload limit of 10MB (hacky workaround - assumes the client will follow redirects)
  • Make bbox intersections faster

Questions

  • Decide how users will be able to supply service metadata (e.g. Service title, abstract)

Enhancements

  • Return exceptions as WFS 1.0.0 compliant XML errors
  • We assume data is in EPSG:4326. Do we need to support reprojection?
  • Use Flask's streaming capabilities to stream the response back
  • Enable HTTP2
  • Keep an eye on the Geolambda work to make an Lambda Layer containing the necessary GDAL et cetera libraries. Related PR and develop branch. This is probably a pre-req for moving to Zappa for deploys.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.