[OSM-dev] OSM API Improvements work
Frederik Ramm
frederik at remote.org
Thu Oct 11 21:37:28 BST 2012
Hi,
On 11.10.2012 21:26, Tom MacWright wrote:
> * Filtering the API endpoints, so that POI editors don't have to sift
> through road data, and so on.
There is a relatively arcane search function in the API that has gon
through a series of disabling stages - initially you could do a
key/value search but not limit to area; later I believe that was limited
to key-only search, and now it doesn't work at all (something like that).
Good and powerful replacements exist in JXAPI and Overpass; both have
the advantage that they can be installed by people on their own machines
without having to put the whole rails port in place. Due to the
sychronisation delay, both services might incur a higher percentage of
version conflicts when used in an editor (but then again, if the editor
loads and uses the data for 10 minutes then the additional minute won't
change much). Yes, these systems are different systems, but on the other
hand it is quite possible that we'll separate the API database into a
r/w core and a read-only mirror some day soon, satisfying read responses
from a replicated database in order to take load off the r/w core - that
would then be two systems as well. So the difference isn't that big perhaps.
Care must be taken to limit everything that goes via the central API to
editing - that's why we like to call it the "editing API". It is not
meant to be a "make interesting queries API" like JXAPI/Overpass are.
Doing filtering for an editor, and doing it right, is very difficult and
will require intense analysis of existing data to get an idea of how
things are interconnected. A POI editor that requests everything with
amenity=* needs to receive the building (and its nodes) tagged
amenity=restaurant; the fact that one of the building nodes is also part
of a highway=steps that links the building to the nearest street must be
made known to the editor lest it allows the user to move the building
node and thereby, unknowingly, distort the staircase, stuff like that.
If you want to design API endpoint filtering mechanisms you will have to
think: What is the stupidest thing an editor writer could do with this?
And then assume that someone writes an editor that does just that... and
hopefully find ways to reduce the impact of such.
Bye
Frederik
--
Frederik Ramm ## eMail frederik at remote.org ## N49°00'09" E008°23'33"
More information about the dev
mailing list