logo separator

[mkgmap-dev] Patch: New filter "not-contained"

From GerdP gpetermann_muenchen at hotmail.com on Thu Jan 29 15:30:30 GMT 2015

Hi Max,

not sure. What will happen if one uses another filter in the relations file?

Gerd


"Maxim Düster" wrote
> Hi, Gerd, 
> 
>   
> 
> the change is caused by the fact that the filter was thought primarily for
> working in relations file inside of the apply{} block and needs that the
> tag given as last parameter is a local tag of the element being processed
> (e.g. a way). But the old code line says: "value =
> filter.filter(tagval,el);", 'el' being the parent relation
> the way is in. That is, in the filter I only have an access to the
> (global) relation's tags, but what I actually need are the tags of the
> (local) element being currently processed. 
> 
> While applying filters to "plain" elements (those not inside a
> relation, e.g. in points or lines files), 'local_el' and
> 'el' are equal, so my change should not corrupt anything. 
> 
>   
> 
> Max 
> 
>  
> 
> Gesendet: Donnerstag, 29. Januar 2015 um 11:20 Uhr 
> Von: "Gerd Petermann" <

> gpetermann_muenchen@

> > 
> An: "

> mkgmap-dev at .org

> " <

> mkgmap-dev at .org

> > 
> Betreff: Re: [mkgmap-dev] Patch: New filter "not-contained" 
> 
> 
> 
> Hi Maxim, 
> 
> please can you explain the reason for the change in ValueItem? 
> 
> Gerd 
>  
> 
> From: 

> maxc@

>  
> To: 

> mkgmap-dev at .org

>  
> Date: Wed, 28 Jan 2015 12:12:25 +0100 
> Subject: [mkgmap-dev] Patch: New filter "not-contained" 
>  
> 
> Hello! 
>   
> I've attached a patch with a new filter that helps while processing,
> for example, public transport relations. The reason: there can be multiple
> route relations with the same ref attribute (for example, one for the
> forward direction, one for the return direction), combined to a
> route_master relation. 
> 
> If you want a name for a way to contain the refs of all of the routes
> going through that way, you have a problem that some refs will be present
> more than once, similar to "1,1,2,2,2" (if we assume that route
> 1 has two instances, and route 2 - three instances). 
> 
> The new filter helps to circumvent this. It takes 2 parameters: a
> delimiter (a comma in the example above) and the name of a tag containg
> the list. The filter works a bit like the "not-equal" filter,
> but it doesn't just compare two values; instead it looks if the
> tag's value (to which the filter is being applied) is contained in the
> list from the (other) given tag. If it is not the case, the value can be
> added to the list, otherwise the tag is considered unset. 
> 
>   
> 
> Simple example for relations file: 
> 
>   
> 
> type=route & route=bus & ref=* { 
>    apply { 
>       set
> route_ref='$(route_ref),${ref|not-contained:,:route_ref}'
> | '$(route_ref)' | '${ref}'; 
>    } 
> } 
> 
>   
> 
> Here, ref value is only added to route_ref if it is not already contained
> in that list (with separator ','). Otherwise, the value of
> route_ref is unchanged. 
>   
> Cheers! 
> Max 
> 
> 
> _______________________________________________ mkgmap-dev mailing list 

> mkgmap-dev at .org

>  http://www.mkgmap.org.uk/mailman/listinfo/mkgmap-dev 
> 
> _______________________________________________ mkgmap-dev mailing list 

> mkgmap-dev at .org

>  http://www.mkgmap.org.uk/mailman/listinfo/mkgmap-dev 
> 
> 
> 
> 
> 
> _______________________________________________
> mkgmap-dev mailing list

> mkgmap-dev at .org

> http://www.mkgmap.org.uk/mailman/listinfo/mkgmap-dev





--
View this message in context: http://gis.19327.n5.nabble.com/Patch-New-filter-not-contained-tp5831668p5831841.html
Sent from the Mkgmap Development mailing list archive at Nabble.com.


More information about the mkgmap-dev mailing list