Re: [mkgmap-dev] Ranking of relations

2024-01-27 Thread Bernard Mai

Dear Mike,

I looks like your suggestion did the trick. With the following lines in 
the "relations" file I get the desired display of routes in my overlay map:


# bicycle routes
route=bicycle
    {
    apply
        {set route='${route}';set 
route_name='$(route_name),${name}'|'${name}';set 
route_ref='$(route_ref),${ref}'|'${ref}';}

    }
type=route & route=bicycle & network=icn            {apply {add 
route_icn=yes;}}
type=route & route=bicycle & network=ncn            {apply {add 
route_ncn=yes;}}
type=route & route=bicycle & network=rcn            {apply {add 
route_rcn=yes;}}
type=route & route=bicycle & network=lcn            {apply {set 
route_lcn=yes;}}


# mountainbike routes
route=mtb
    {
    apply
        {add route_mtb=yes; add 
route_mtb_name='$(route_mtb_name),${name}'|'${name}'; add 
route_mtb_ref='$(route_mtb_ref),${ref}'|'${ref}';}

    }

In the "lines" file I can adjust the zoom-level display and naming. For 
me the following lines work well:


# bicycle routes
route_icn=yes                                             [0x10f01 
resolution 18-20 continue]
route_icn=yes            {name '${route_ref}'}                         
                        [0x10f01 resolution 20-23 continue]
route_icn=yes            {name '${route_name} 
(${route_ref})'|'${route_name}'|'${route_ref}'} [0x10f02 resolution 24]


route_ncn=yes                                             [0x10f01 
resolution 20-22 continue]
route_ncn=yes            {name '${route_ref}'}                         
                        [0x10f01 resolution 23 continue]
route_ncn=yes            {name '${route_name} 
(${route_ref})'|'${route_name}'|'${route_ref}'} [0x10f02 resolution 24]


route_rcn=yes                                             [0x10f03 
resolution 21-22 continue]
route_rcn=yes            {name '${route_ref}'}                         
                        [0x10f03 resolution 23 continue]
route_rcn=yes            {name '${route_name} 
(${route_ref})'|'${route_name}'|'${route_ref}'} [0x10f04 resolution 24]


route_lcn=yes                                             [0x10f05 
resolution 23 continue]
route_lcn=yes            {name '${route_name}'|'${route_ref}'}         
                                        [0x10f05 resolution 24]


# mtb routes
route_mtb=yes            {name '${route_mtb_ref}'}                     
                            [0x10f06 resolution 23 continue]
route_mtb=yes            {name '${route_mtb_name} 
(${route_mtb_ref})'|'${route_mtb_name}'|'${route_mtb_ref}'} [0x10f06 
resolution 24]


Now I can play around, as the display of these lines as overlay map on a 
Garmin Epix watch is quite thin (even with lines up to 18 pixel width, 
having 6-7 pixel width used with a colour and the remaining pixels 
transparent to show the route beside any way). In general, my experience 
is that specially on a watch all bitmap lines are hard to see.


Many thanks and regards,
Bernard

Am 27.01.2024 um 16:11 schrieb m...@tvage.co.uk:


HI Bernard,

I can’t see why bicycle routes should be displaying in the wrong 
order, but if an MTB route runs along a bicycle route and its relation 
is processed after the bicycle one, I think the route value will be 
changed from bicycle to mtb. I suggest using add instead of set on the 
relation statement for mountain bike routes:


type=route & route=mtb
    {
    apply
        {add route='${route}'; set 
route_mtb_name='$(route_mtb_name),${name}'|'${name}'; set 
route_mtb_ref='$(route_mtb_ref),${ref}'|'${ref}';}

    }

Regards,

Mike

*From:*Bernard Mai 
*Sent:* 26 January 2024 10:50
*To:* mkgmap-dev@lists.mkgmap.org.uk
*Subject:* [mkgmap-dev] Ranking of relations

Dear all,
I want to generate an overlay map to be used as additional layer on a 
Garmin watch. This layer can be turned on/off on the watch and should 
show only bicycle routes (route=bicycle and route=mtb).
As most routes in openstreetmap are defined as relations I am using 
the following rules in my bike-routes style:


*relations (file)*
# Route relations as additional transparent layer for:
#   bicycle
#   mtb

# bicycle routes
type=route & route=bicycle
    {
    apply
        {set route='${route}';set 
route_name='$(route_name),${name}'|'${name}';set 
route_ref='$(route_ref),${ref}'|'${ref}';}

    }
type=route & route=bicycle & network=icn {apply {set route_icn=yes;}}
type=route & route=bicycle & network=ncn {apply {set route_ncn=yes;}}
type=route & route=bicycle & network=rcn {apply {set route_rcn=yes;}}
type=route & route=bicycle & network=lcn {apply {set route_lcn=yes;}}

# mountainbike routes
type=route & route=mtb
    {
    apply
        {set route='${route}'; set 
route_mtb_name='$(route_mtb_name),${name}'|'${name}'; set 
route_mtb_ref='$(route_mtb_ref),${ref}'|'${ref}';}

    }

*lines (file)*
# bicycle routes
route=bicycle & route_icn=yes    {name '${route_ref}'}                 
                                [0x10f01 resolution 18-22 continue]

Re: [mkgmap-dev] Ranking of relations

2024-01-27 Thread mike
HI Bernard,

 

I can’t see why bicycle routes should be displaying in the wrong order, but if 
an MTB route runs along a bicycle route and its relation is processed after the 
bicycle one, I think the route value will be changed from bicycle to mtb. I 
suggest using add instead of set on the relation statement for mountain bike 
routes:

 

type=route & route=mtb
{
apply
{add route='${route}'; set 
route_mtb_name='$(route_mtb_name),${name}'|'${name}'; set 
route_mtb_ref='$(route_mtb_ref),${ref}'|'${ref}';}
}



Regards,

Mike

 

From: Bernard Mai  
Sent: 26 January 2024 10:50
To: mkgmap-dev@lists.mkgmap.org.uk
Subject: [mkgmap-dev] Ranking of relations

 

Dear all,
I want to generate an overlay map to be used as additional layer on a Garmin 
watch. This layer can be turned on/off on the watch and should show only 
bicycle routes (route=bicycle and route=mtb).
As most routes in openstreetmap are defined as relations I am using the 
following rules in my bike-routes style:

relations (file)
# Route relations as additional transparent layer for:
#   bicycle
#   mtb

# bicycle routes 
type=route & route=bicycle
{
apply
{set route='${route}';set 
route_name='$(route_name),${name}'|'${name}';set 
route_ref='$(route_ref),${ref}'|'${ref}';}
}
type=route & route=bicycle & network=icn{apply {set route_icn=yes;}}
type=route & route=bicycle & network=ncn{apply {set route_ncn=yes;}}
type=route & route=bicycle & network=rcn{apply {set route_rcn=yes;}}
type=route & route=bicycle & network=lcn{apply {set route_lcn=yes;}}

# mountainbike routes 
type=route & route=mtb
{
apply
{set route='${route}'; set 
route_mtb_name='$(route_mtb_name),${name}'|'${name}'; set 
route_mtb_ref='$(route_mtb_ref),${ref}'|'${ref}';}
}

lines (file)
# bicycle routes
route=bicycle & route_icn=yes{name '${route_ref}'}  
  [0x10f01 resolution 18-22 continue]
route=bicycle & route_icn=yes{name '${route_name} 
(${route_ref})'|'${route_name}'|'${route_ref}'}[0x10f02 resolution 23-24]

route=bicycle & route_ncn=yes   
 [0x10f01 resolution 20-22 continue]
route=bicycle & route_ncn=yes{name '${route_ref}'}  
  [0x10f02 resolution 23 continue]
route=bicycle & route_ncn=yes{name '${route_name} 
(${route_ref})'|'${route_name}'|'${route_ref}'}[0x10f02 resolution 24]

route=bicycle & route_rcn=yes   
 [0x10f03 resolution 20-22 continue]
route=bicycle & route_rcn=yes{name '${route_ref}'}  
  [0x10f04 resolution 23 continue]
route=bicycle & route_rcn=yes{name '${route_name} 
(${route_ref})'|'${route_name}'|'${route_ref}'}[0x10f04 resolution 24]

route=bicycle & route_lcn=yes{name '${route_name} 
(${route_ref})'|'${route_name}'|'${route_ref}'}[0x10f05 resolution 24]

# mtb routes
route=mtb {name '${route_mtb_ref}'} 
   [0x10f06 resolution 23 continue]
route=mtb {name '${route_mtb_name} 
(${route_mtb_ref})'|'${route_mtb_name}'|'${route_mtb_ref}'}[0x10f06 
resolution 24]


In general, these routes are drawn by mkgmap and I am able to generate an 
overlay map, but sometimes a route with "lower" priority (i. e. a route=mtb) 
hides a route with "higher" priority. In other words, I would like to show the 
routes in a ranking: The routes tagged with network=icn should be on top, 
followed by network=ncn and so on. The route=mtb should be only shown, if no 
other bicycle route is on the same way.
Is this possible to achieve with mkgmap alone? Or do I need some sort of 
additional script to rank the relations before rendering them with mkgmap?
I have read something, that the draw order depends on the ID of the relation 
and mkgmap renders the lower IDs first. But what about the higher relation IDs? 
It looks like ways tagged from the relation only get the tags from the relation 
with the lowest ID. Is this correct?
Does anybody have an idea, how this could be overcome?

Example:
Way ID has 3 bicycle relevant relations: relation IDs 2119154, 9623717,2956920. 
With the style from above only the last one (relation ID 2956920, route=mtb) is 
shown although the second one (relation ID 9623717, network=icn) would be 
desired as it is an international bicycle route.

Regards,
Bernard

___
mkgmap-dev mailing list
mkgmap-dev@lists.mkgmap.org.uk
https://www.mkgmap.org.uk/mailman/listinfo/mkgmap-dev

Re: [mkgmap-dev] Ranking of relations

2024-01-27 Thread Gerd Petermann
Hi Bernard,

I think the problem is in the block
type=route & route=bicycle & network=icn{apply {set route_icn=yes;}}
type=route & route=bicycle & network=ncn{apply {set route_ncn=yes;}}
type=route & route=bicycle & network=rcn{apply {set route_rcn=yes;}}
type=route & route=bicycle & network=lcn{apply {set route_lcn=yes;}}

Whatever relation type comes last overwrites the values for the other. You have 
to collect (concatenate) the different values instead of replacing.
I think the clause above shows how that works.

Gerd


Von: mkgmap-dev  im Auftrag von Bernard 
Mai 
Gesendet: Freitag, 26. Januar 2024 11:50
An: mkgmap-dev@lists.mkgmap.org.uk
Betreff: [mkgmap-dev] Ranking of relations

Dear all,
I want to generate an overlay map to be used as additional layer on a Garmin 
watch. This layer can be turned on/off on the watch and should show only 
bicycle routes (route=bicycle and route=mtb).
As most routes in openstreetmap are defined as relations I am using the 
following rules in my bike-routes style:

relations (file)
# Route relations as additional transparent layer for:
#   bicycle
#   mtb

# bicycle routes
type=route & route=bicycle
{
apply
{set route='${route}';set 
route_name='$(route_name),${name}'|'${name}';set 
route_ref='$(route_ref),${ref}'|'${ref}';}
}
type=route & route=bicycle & network=icn{apply {set route_icn=yes;}}
type=route & route=bicycle & network=ncn{apply {set route_ncn=yes;}}
type=route & route=bicycle & network=rcn{apply {set route_rcn=yes;}}
type=route & route=bicycle & network=lcn{apply {set route_lcn=yes;}}

# mountainbike routes
type=route & route=mtb
{
apply
{set route='${route}'; set 
route_mtb_name='$(route_mtb_name),${name}'|'${name}'; set 
route_mtb_ref='$(route_mtb_ref),${ref}'|'${ref}';}
}

lines (file)
# bicycle routes
route=bicycle & route_icn=yes{name '${route_ref}'}  
  [0x10f01 resolution 18-22 continue]
route=bicycle & route_icn=yes{name '${route_name} 
(${route_ref})'|'${route_name}'|'${route_ref}'}[0x10f02 resolution 23-24]

route=bicycle & route_ncn=yes   
 [0x10f01 resolution 20-22 continue]
route=bicycle & route_ncn=yes{name '${route_ref}'}  
  [0x10f02 resolution 23 continue]
route=bicycle & route_ncn=yes{name '${route_name} 
(${route_ref})'|'${route_name}'|'${route_ref}'}[0x10f02 resolution 24]

route=bicycle & route_rcn=yes   
 [0x10f03 resolution 20-22 continue]
route=bicycle & route_rcn=yes{name '${route_ref}'}  
  [0x10f04 resolution 23 continue]
route=bicycle & route_rcn=yes{name '${route_name} 
(${route_ref})'|'${route_name}'|'${route_ref}'}[0x10f04 resolution 24]

route=bicycle & route_lcn=yes{name '${route_name} 
(${route_ref})'|'${route_name}'|'${route_ref}'}[0x10f05 resolution 24]

# mtb routes
route=mtb {name '${route_mtb_ref}'} 
   [0x10f06 resolution 23 continue]
route=mtb {name '${route_mtb_name} 
(${route_mtb_ref})'|'${route_mtb_name}'|'${route_mtb_ref}'}[0x10f06 
resolution 24]


In general, these routes are drawn by mkgmap and I am able to generate an 
overlay map, but sometimes a route with "lower" priority (i. e. a route=mtb) 
hides a route with "higher" priority. In other words, I would like to show the 
routes in a ranking: The routes tagged with network=icn should be on top, 
followed by network=ncn and so on. The route=mtb should be only shown, if no 
other bicycle route is on the same way.
Is this possible to achieve with mkgmap alone? Or do I need some sort of 
additional script to rank the relations before rendering them with mkgmap?
I have read something, that the draw order depends on the ID of the relation 
and mkgmap renders the lower IDs first. But what about the higher relation IDs? 
It looks like ways tagged from the relation only get the tags from the relation 
with the lowest ID. Is this correct?
Does anybody have an idea, how this could be overcome?

Example:
Way ID has 3 bicycle relevant relations: relation IDs 2119154, 9623717,2956920. 
With the style from above only the last one (relation ID 2956920, route=mtb) is 
shown although the second one (relation ID 9623717, network=icn) would be 
desired as it is an international bicycle route.

Regards,
Bernard
___
mkgmap-dev mailing list
mkgmap-dev@lists.mkgmap.org.uk
https://www.mkgmap.org.uk/mailman/listinfo/mkgmap-dev