[OSM-dev] Fwd: Osmosis - Cutting out a bounding box from a diff file (.osc)
Michael Meier
michael.meier at rrze.fau.de
Thu Sep 6 11:30:24 BST 2012
On 09/06/2012 11:39 AM, Stéphane Henriod wrote:
> But then if this is confirmed to be a wanted behavior, then we should
> document it explicitely somewhere
This is wanted behaviour, the relevant defines/macros and an explanation
are in node-ram-cache.h starting at line 16.
You could probably remove the "#define FIXED_POINT" line to make it use
floatingpoint, but as FIXED_POINT has been the standard for quite some
time I wouldn't expect that everything works properly without it. Also,
what would be the point, making it slower on purpose?
I do not think this needs to be documented - these are essentially
internal tables, and using fixed point arithmetic to speed things up
and/or ease storage requirements is pretty much one of the first lessons
in "programming for beginners".
What should probably be changed though is the define
#define DOUBLE_TO_FIX(x) ((int)((x) * scale))
This will cause an unexpected loss of precission due to conversion
errors from the integer cast, as I discovered when I wrote a little tool
to convert the planet_osm_nodes table to the new flatnodes-file:
DOUBLE_TO_FIX(FIX_TO_DOUBLE(x)) does _NOT_ always return x. This macro
should probably use a proper "round()" instead of the integer cast.
More information about the dev
mailing list