Hi.
Just in case nobody found this yet, here is a trick to compute a
quadtile in a single expression. The essence is to convert to the binary
representation (base 2) and interpret it as base 4. This inserts all the
0s between the bits. The rest is simple.
(CONV(BIN(FLOOR(0.5 + 65535*(longitude/10000000+180)/360)), 4, 10)<<1)
| CONV(BIN(FLOOR(0.5 + 65535*(latitude/10000000+90)/180)), 4, 10)
The above is using MySQL functions, but the same trick should work in
any language.
The SELECT below has been run as a test against a database containing
europe loaded with osmosis without returning any rows.
SELECT latitude, longitude, tile,
(CONV(BIN(FLOOR(0.5
+ 65535*(longitude/10000000+180)/360)), 4, 10)<<1)
| CONV(BIN(FLOOR(0.5
+ 65535*(latitude/10000000+90)/180)), 4, 10)
AS comp_tile
FROM current_nodes
WHERE tile <> (CONV(BIN(FLOOR(0.5
+ 65535*(longitude/10000000+180)/360)), 4, 10)<<1)
| CONV(BIN(FLOOR(0.5
+ 65535*(latitude/10000000+90)/180)), 4, 10)
Sincerely,
Joachim
_______________________________________________
dev mailing list
[email protected]
http://lists.openstreetmap.org/listinfo/dev