The implementation of LRS in GRASS has some particularities.
--- road (linear feature) + MP (milepost, point, distance from the beginning in km)Old situation:
+----+----+----+----+----+ 0 2 3 4 5 6New situation (for example a new bypass around the village)
? ? +----+ | | | | +----+----+ +----+----+ 0 2 3 4 5 6The segment between km 3 and 4 is now longer, it is now 3 km not 1 km as in old version. It would be expensive to change also all MP >= 4, but we cannot use km 4 twice. It is possible to use another notation for the new segment, we reference the segment from the kilometer 3, using only offset.
3+1000 3+2000 +----+ | | | | +----+----+ +----+----+ 0 2 3 3+3000 5 6 4This way, there is no ambiguity and minimal changes are needed. But the MP 4 is no more the end of segment 3 - 4 but the end of segment 3+2000 - 3+3000. This information must be entered to the system and it is done by optional MP attributes:
start_mp: 4 start_off: 0 end_mp: 3 end_off: 3000Because each MP can keep 2 values (start, end) it is called 'double' referenced LRS.
To avoid possible confusions, MP values, are limited to integers only. It would be ambiguous to have for example segments 3.500 - 3.500+200 and 3.600 - 3.600+200. The position 3+650 would fall into 2 segments, correct would be 3.600+50. That means, that MP must be the beginning of antonomous segment and all parts which becomes longer then before must be referenced from the last not changed MP.
The MP start_mp and end_mp columns may be decimal, but v.lrs.create takes the decimal part, and adds its value to offset and print a warning.
------1------- --------2------ +0.0 +1.0 +2.0In this case, the module gives error because the position results in 2 points.
It can be also intended, for example a part of the road is shared with another one, but MP are used only for one:
+ road1/km15 + road1/km22 \ / \ road1/km17 / road1/km20 +--------------+ / road2/km52 \ road2/km52 / \ + road2/km50 + road2/km54
Last changed: $Date: 2006/04/11 09:48:03 $