
On Dec 11, 2008, at 18:58, Alexander Atanasov wrote:
Do not increase bmlen if the starting point is not a node. It represents the count of nodes, not their locations in the line and nnodes is set to the real count from the reader.
I don't know how this is handled: R1 R1 ------------------X------------------- | R2
If R1 is the first segment it can be split in two and have bmlen=2 and 01 10 bitmaps.
If it's not the first segment starting point is a node depending on the last point from the previous segment.
So extend the nodes count only for roads with one node which is not the starting one, i don't see how to find the segments.
I tried to code what I saw in some maps. Namely, most of the time, there's just the lower bmlen bits set, and bmlen=nnodes (eg bmlen=3, bs=7). Then there's a few cases where the lowest bit is not set, but above that bmlen bits are set, and bmlen=nnodes+1 (eg bmlen=3, bs=6). Furthermore, this appears to happen iff the start point of a road is not a node. In all the cases I've seen, (highest bit in bs) == (1 << (bmlen - 1)) . Do you have different examples? Here's a of all bmlen / bs in a large map: # bmlen bs ---------------------------------------------- 1 03 06 1 07 7e 1 08 fe 1 12 ff ff 03 1 16 ff ff 3f 1 17 ff ff 7f 1 18 ff ff ff 1 19 ff ff ff 01 1 1a ff ff ff 03 1 1c ff ff ff 0f 1 20 ff ff ff ff 1 25 ff ff ff ff 1f 1 28 ff ff ff ff ff 2 14 ff ff 0f 2 15 ff ff 1f 2 21 ff ff ff ff 01 3 01 01 3 1b ff ff ff 07 5 02 02 6 11 ff ff 01 7 10 ff ff 7 13 ff ff 07 8 0e ff 3f 10 0c ff 0f 12 0d ff 1f 14 0f ff 7f 25 0b ff 07 31 08 ff 31 0a ff 03 39 09 ff 01 51 07 7f 62 05 1f 73 06 3f 107 04 0f 151 03 07 21713 02 03 Cheers Robert