Comments (3)
Of course. It will probably be archived (in the GitHub archive sense of the word) unless that will present an operational problem for people.
from go-whosonfirst-pip-v2.
Thanks!
Why have you started the new one? What's the difference?
Should we move to it? We have some modifications.
from go-whosonfirst-pip-v2.
It is an attempt to de-couple the various components that make up go-whosonfirst-pip-v2
β indexing, storage, querying and serving βΒ in to separate packages in order to allow for more flexibility.
Keep in mind that all of the examples that follow are a) actively being worked b) don't work properly in many cases c) poorly documented still.
For example there is a single "base" package that defines database-agnostic but WOF-specific interfaces for spatial queries and reading properties:
Which are then implemented in full or in part by provider-specific classes. For example, SQLite:
This package implements both interfaces which means indexing spatial queries is much faster as are appending "extra" properties (assuming a pre-indexed database generated using the https://github.com/whosonfirst/go-whosonfirst-sqlite-features-index package).
Other packages only implement the spatial interfaces like:
Or the properties reader interfaces like:
Building on that there are equivalent base packages for "server" implementations, like:
- https://github.com/whosonfirst/go-whosonfirst-spatial-http
- https://github.com/whosonfirst/go-whosonfirst-spatial-grpc
The idea is that all of these pieces can be easily combined in to purpose-fit applications. As a practical matter it's mostly about trying to identify and package the common pieces in to as few lines of code as possible so that they might be combined with an application-specific import
statement. For example:
import (
_ "github.com/whosonfirst/go-whosonfirst-spatial-MY-SPECIFIC-REQUIREMENTS"
)
Here is a concrete example, implementing the PIP service over HTTP using a SQLite backend:
It is part of the overall goal of:
- Staying out people's database or delivery choices (or needs)
- Supporting as many databases (and delivery (and indexing) choices) as possible
- Not making database B a dependency (in the Go code) in order to use database A, as in not bundling everything in a single mono-repo that becomes bigger and has more requirements over time.
For example:
That's the goal, anyway. I am still working through the implementation details.
Functionally the go-whosonfirst-spatial-
packages should be equivalent to go-whosonfirst-pip-v2
as in there won't be any functionality removed. If you have specific needs or modifications you'd like to see I would enjoy hearing about them. This is probably the best place to start that conversation:
from go-whosonfirst-pip-v2.
Related Issues (20)
- Add jump to lat,lon input box
- Add crosshairs and fixed pin when jumping to lat/lon
- Implement sqlite interface
- error: invalid character 'v' looking for beginning of value HOT 3
- return name: yyy_x_preferred? HOT 17
- Add support for decorating responses from SQLite databases HOT 3
- Add a SQLite caching layer (for SPR)
- Add a local/custom db.Table definition for properties
- switch data with keeping service? HOT 2
- Add support for indexing points... maybe?
- Add support for updating records on the fly HOT 1
- extras=geometry does not work HOT 3
- api-key support HOT 1
- too many pip-extras files
- Use with OpenStreetMap GeoJSON data
- Investigate geohashtree as index/engine
- Replace go-http-mapzenjs
- Out of date Docker & Makefile?
- Include concordances in response? HOT 4
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
π Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google β€οΈ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from go-whosonfirst-pip-v2.