Hi Mike,

I am making progress, see attached work-in-progress patch.
Open problems:
1) The POI de-duplication might remove CoordPOI instances. If yes, it is an old 
error. Have to check the data flow...
2) With merge-at-midpoint we create a new Coord instance but we don't maintain 
the flags of the old instance, e.g. onBoundary().
Also your code introduced for dead-end-checks cannot work for these new 
instances. We need a different place to hande the --dead-ends option or maybe 
remove the merge-at-midpoint. Have to think about this.
3) I don't fully understand the intended behaviour when a POI type matches 
multiple rules.  My current algo only applies the first rule that matches type 
and name.

Gerd

________________________________________
Von: mkgmap-dev <mkgmap-dev-boun...@lists.mkgmap.org.uk> im Auftrag von jan 
meisters <jan_...@gmx.net>
Gesendet: Sonntag, 3. Mai 2020 18:55
An: Development list for mkgmap
Betreff: Re: [mkgmap-dev] nearby POIs

Hi Gerd,

thanks, I see.
The given example can easily be handled with is_in anyway.

Jan

> Am 03.05.2020 um 08:19 schrieb Gerd Petermann 
> <gpetermann_muenc...@hotmail.com>:
>
> Hi Jan,
>
> yes, the data structure used for this new option is too simple when multiple 
> unnamed or equally named POI at very different locations are handled.
> The first processed POI is stored and for all further POI the position is 
> compared with that first. The algo is not able to handle multiple clouds like 
> in your example.
>
> @Mike: My approach would be to collect all POI, even those which appear at 
> the same location, in a list. This list would be reduced with a single method 
> call  in StyledConverter.end().
> Small disadvantage: You cannot log the node details.
> I'll work on this idea, if you prefer another just go ahead and we can 
> compare the solutions.
>
> Gerd
>
> ________________________________________
> Von: mkgmap-dev <mkgmap-dev-boun...@lists.mkgmap.org.uk> im Auftrag von jan 
> meisters <jan_...@gmx.net>
> Gesendet: Samstag, 2. Mai 2020 22:28
> An: Development list for mkgmap
> Betreff: Re: [mkgmap-dev] nearby POIs
>
> Hi Mike, hi Gerd,
>
> thanks for the nearby option, I like the new way to unclutter the map.
>
> To my args-file i´ve added:
> nearby-poi-rules=*/named:10,*/unnamed:30,0x2f00-0x2f1f:30,0x3200-0x331f:50,0x13700-0x1370d:30
>
> A lot of the pois seem to be reduced (deleted) as expected, but I stumbled on 
> tourism=picnic_site and leisure=picnic_table here:
> https://www.openstreetmap.org/way/498671746
> https://www.openstreetmap.org/way/108892873
>
> These 2 polygon tourism=picnic_site contain picnic pois, tourism in the one 
> and leisure in the other.
> My rule combines the pois in 0x2f0b:
> tourism=picnic_site | leisure=picnic_table [0x2f0b resolution 24]
>
> As long as tourism and leisure are collected in one poi, both poi will not be 
> reduced.
> If separated to different pois, tourism is reduced, leisure not.
> I can´t get the option to work on both.
>
> Regards
> Jan
>
>
>> Am 29.04.2020 um 18:06 schrieb Gerd Petermann 
>> <gpetermann_muenc...@hotmail.com>:
>>
>> Hi Mike,
>>
>> OK, did not see this line
>> fileRules.addAll(Arrays.asList(rules));
>>
>> So, I think I'll commit the patch tomorrow if nobody else suggests changes.
>>
>> Gerd
>>
>> ________________________________________
>> Von: mkgmap-dev <mkgmap-dev-boun...@lists.mkgmap.org.uk> im Auftrag von Mike 
>> Baggaley <m...@tvage.co.uk>
>> Gesendet: Mittwoch, 29. April 2020 17:52
>> An: 'Development list for mkgmap'
>> Betreff: Re: [mkgmap-dev] nearby POIs
>>
>> Hi Gerd,
>>
>> I've replaced the trim statements with replaceAll in the attached updated
>> patch. Having thought a bit more about caching the rules, I've realised in
>> the multithreaded environment, there would need to be object locks and
>> synchronisation, which would be unnecessarily complicated.
>>
>> Regarding the two options - I had 30 odd rules in my command line, so the
>> config file is better for me, but I expect that most users will probably
>> just use one or two rules. Your range suggestion has allowed me to reduce
>> the number of rules to about 25. The config file option doesn't override the
>> inline option; if both are provided then both sets of rules are applied -
>> hence I don't think the documentation needs changing.
>>
>> Regards,
>> Mike
>>
>> -----Original Message-----
>> From: Gerd Petermann [mailto:gpetermann_muenc...@hotmail.com]
>> Sent: 29 April 2020 07:28
>> To: 'Development list for mkgmap' <mkgmap-dev@lists.mkgmap.org.uk>
>> Subject: Re: [mkgmap-dev] nearby POIs
>>
>> Hi Mike,
>>
>> regarding error handling I think we can wait for someone to complain. Each
>> solution has its pros and cons.
>> regarding option handling:
>> - I have no idea what users do. It is possible to create very different maps
>> with a single execution of mkgmap. I can't think of any good reason to do
>> this, but I also see no way to find out if anybody does. I presume that many
>> users don't read this list.
>> - If you see a simple solution to cache the results which works fine with
>> multiple threads using different options go ahead.
>> - When I suggested --nearby-poi-rules-config=filename I thought that is
>> should replace --nearby-poi-rules. Having both options simply complicates
>> everything. If you think that it is unlikely to have more than two rules we
>> should better remove --nearby-poi-rules-config=filename, else it should be
>> documented that --nearby-poi-rules-config=filename overwrites
>> --nearby-poi-rules.  Sorry for suggesting it in the first place.
>> - all those trim() statements in combination with substring() look error
>> prone. If I got that right you could use rule.replaceAll("\\s+", "") once to
>> remove all whitespace characters?
>>
>> Gerd
>>
>> ________________________________________
>> Von: mkgmap-dev <mkgmap-dev-boun...@lists.mkgmap.org.uk> im Auftrag von Mike
>> Baggaley <m...@tvage.co.uk>
>> Gesendet: Dienstag, 28. April 2020 22:06
>> An: 'Development list for mkgmap'
>> Betreff: Re: [mkgmap-dev] nearby POIs
>>
>> Hi Gerd, please find attached an updated patch that allows for # comments
>> either as whole lines or as ends of a line. It also allows whitespace
>> between the components of the rules.
>>
>> At the moment, if an error is found in a rule, this is reported as an error
>> and that rule is ignored. This does result in duplicated error messages, one
>> from each tile. I'm happy to change this to stop processing if you think
>> that is better. I'm not keen on ignoring all rules if an error is found in a
>> rule. If the rules file is not found then this will also just report an
>> error and continue. Perhaps this one at least would be better if it caused
>> termination?
>>
>> I did think about loading the rules at the beginning, prior to processing
>> the tiles, but realised this would break the 'option before tile' convention
>> which allows different options to be passed to each tile (does anyone do
>> this for anything other than the description?). It would be pretty
>> straightforward to cache the options and resulting rules and if the options
>> are the same for the next tile, use the cached rules instead of
>> reprocessing. What do you think?
>>
>> Regards,
>> Mike
>>
>> -----Original Message-----
>> From: Gerd Petermann [mailto:gpetermann_muenc...@hotmail.com]
>> Sent: 28 April 2020 09:21
>> To: 'Development list for mkgmap' <mkgmap-dev@lists.mkgmap.org.uk>
>> Subject: Re: [mkgmap-dev] nearby POIs
>>
>> Hi Mike,
>>
>> I did not try it, but it seems the configuration file doesn't allow the
>> typical "#" as comment. This makes it rather useless. We should at least
>> allow comment lines starting with a # to be ignored.
>> I've added code to handle this, also untested.
>>
>> - What should happen when an error was found in the rules?
>> + Ignore only the bad rule(s)?
>> + Ignore all rules?
>> + stop processing?
>> We have this problem with other options like --style-option as well, so it's
>> not directly related to the patch. I think It would be good to check this
>> before any tile is processed, but the current implementation of the option
>> handling makes this really difficult.
>>
>> Gerd
>>
>> ________________________________________
>> Von: mkgmap-dev <mkgmap-dev-boun...@lists.mkgmap.org.uk> im Auftrag von Mike
>> Baggaley <m...@tvage.co.uk>
>> Gesendet: Montag, 27. April 2020 16:06
>> An: 'Development list for mkgmap'
>> Betreff: Re: [mkgmap-dev] nearby POIs
>>
>> Hi Gerd, please find attached an updated patch that addresses the points
>> below.
>>
>> Cheers,
>> Mike
>>
>> -----Original Message-----
>> From: Mike Baggaley [mailto:m...@tvage.co.uk]
>> Sent: 22 April 2020 17:55
>> To: 'Development list for mkgmap' <mkgmap-dev@lists.mkgmap.org.uk>
>> Subject: Re: [mkgmap-dev] nearby POIs
>>
>> Hi Gerd,
>>
>> To answer your points:
>>
>> 1) 0x2f1f was just a POI in my style which I have as a bus stop, and as bus
>> stations often have all individual stops mapped it can be useful to remove
>> duplicates (I don't use the default style). Looking at the default style I
>> see that it has both bus stops and taxi as 0x2f17. I'm happy with either the
>> example changing to 0x2f17 or the default style changing to 0x2f1f for bus
>> stops (I have 0x2f17 just for taxi). The sample doesn't have to match the
>> default style, but it would make sense for it to do so.
>>
>> 2) The code sorts the rules into POI type order, but doesn't sort by
>> distance. It would better handle the example you have given if it sorted
>> rules with the same POI type by distance. I'll look into this.
>>
>> 3) Allowing a range of POI types seems like it could be useful. I see that
>> --poi-excl-index uses a hyphen to specify a range and propose we use the
>> same format. I'll look into this as well.
>>
>> Regards,
>> Mike
>>
>> -----Original Message-----
>> From: Gerd Petermann [mailto:gpetermann_muenc...@hotmail.com]
>> Sent: 22 April 2020 07:07
>> To: 'Development list for mkgmap' <mkgmap-dev@lists.mkgmap.org.uk>
>> Subject: Re: [mkgmap-dev] nearby POIs
>>
>> Hi Mike,
>>
>> okay, I started to find out if the code works as documented. Here is a first
>> set of questions:
>> 1) I started with the given sample
>> --nearby-poi-rules=*/named:10,*/unnamed:25,0x2f1f:30
>> and found out the the default style doesn't use type 0x2f1f. Is that
>> intended?
>> 2) Is it allowed to use multiple rules for the same POI type?
>> Two rules like
>> --nearby-poi-rules=0x2f1f:10:merge-at-mid-point,0x2f1f:1
>> are accepted, but I am not sure what to expect when this is done. The rules
>> are applied in the given order, so the second will never match, right?
>> 3) The option --poi-excl-index allows to specify ranges of POI types.
>> Wouldn't it be good to use the same logic for --nearby-poi-rules?
>>
>> Gerd
>>
>> ________________________________________
>> Von: mkgmap-dev <mkgmap-dev-boun...@lists.mkgmap.org.uk> im Auftrag von Mike
>> Baggaley <m...@tvage.co.uk>
>> Gesendet: Mittwoch, 22. April 2020 01:03
>> An: 'Development list for mkgmap'
>> Betreff: Re: [mkgmap-dev] nearby POIs
>>
>> HI Gerd, the mods look fine to me. I don't think documenting a config file
>> in a sample file is a good idea. I think it is much better if all the
>> documentation is in one place. I also think it make sense to keep the
>> --nearby-poi-rules option as I expect some users would just want something
>> like -- nearby-poi-rules=*:25, and it would be overkill to have to create a
>> config file to do this. I have fixed the formatting issues in the options
>> file in the attached version of the patch.
>>
>> Regards,
>> Mike
>>
>> -----Original Message-----
>> From: Gerd Petermann [mailto:gpetermann_muenc...@hotmail.com]
>> Sent: 21 April 2020 08:46
>> To: 'Development list for mkgmap' <mkgmap-dev@lists.mkgmap.org.uk>
>> Subject: Re: [mkgmap-dev] nearby POIs
>>
>> Hi Mike,
>>
>> attached is a modified version of the patch. I've removed some of the
>> changes in StyledConverter and did some cleanup on the NearbyPoiHandler.
>>
>> I think you got me wrong regarding the config file. With similar to
>> --road-name-config=filename I really meant that the config file should be
>> provided as an example containing the detailed documentation.
>> The option --nearby-poi-rules should be removed, it just adds complexity.
>> This will also fix some formatting problems in file options.
>>
>> Gerd
>>
>> ________________________________________
>> Von: mkgmap-dev <mkgmap-dev-boun...@lists.mkgmap.org.uk> im Auftrag von Mike
>> Baggaley <m...@tvage.co.uk>
>> Gesendet: Montag, 20. April 2020 16:00
>> An: 'Development list for mkgmap'
>> Betreff: Re: [mkgmap-dev] nearby POIs
>>
>> Hi Gerd, the logging changes were actually part of another patch that is
>> aimed at tidying up logging, which causes me significant problems due to the
>> mixed use of System.err.println and log.xxxx. If you want to remove the
>> System.error.println change from the patch then that is fine.
>>
>> Regards,
>> Mike
>> -----Original Message-----
>> From: Gerd Petermann [mailto:gpetermann_muenc...@hotmail.com]
>> Sent: 20 April 2020 07:25
>> To: 'Development list for mkgmap' <mkgmap-dev@lists.mkgmap.org.uk>
>> Subject: Re: [mkgmap-dev] nearby POIs
>>
>> Hi Mike,
>>
>> I agree about the changes to debug level because the remaining log.info()
>> messages are still meaningful.
>>
>> You changed some System.err.println(...) to log.info(...).
>> This has two effects:
>> 1) severity is changed from error to info (which is wrong in these cases),
>> the user should always see these messages.
>> 2) the normal logging procedure prints the path to the current tile but the
>> tile is not relevant and thus may be confusing.
>>
>> I am not 100% sure about the messages log.warn("road has < 2
>> points",way.getId(),"(discarding)");
>> You probably only see them when you disable WrongAngleFixer by modfying the
>> code. What was the reason for the change?
>>
>> Gerd
>>
>>
>> ________________________________________
>> Von: mkgmap-dev <mkgmap-dev-boun...@lists.mkgmap.org.uk> im Auftrag von Mike
>> Baggaley <m...@tvage.co.uk>
>> Gesendet: Sonntag, 19. April 2020 15:24
>> An: 'Development list for mkgmap'
>> Betreff: Re: [mkgmap-dev] nearby POIs
>>
>> Hi Gerd, the logging changes seem to me to be correct (though unrelated to
>> the nearby POI change), reducing the severity of some messages to match
>> those elsewhere. I accept that these things are open to interpretation, but
>> would consider messages about entering and leaving functions and similar
>> static code location messages to be debug level messages (e.g. "Maintaining
>> highway counters"), those that give information that the code is doing
>> something that does not need any action to be informational messages (e.g.
>> "Pruning point xxxx"), those that might warrant investigation would be
>> warning (e.g. Oneway road xxx goes nowhere" ) and those that indicate some
>> sort of real problem would be error (e.g. "shape is not closed with
>> identical points ").
>>
>> Regards,
>> Mike
>>
>> -----Original Message-----
>> From: Gerd Petermann [mailto:gpetermann_muenc...@hotmail.com]
>> Sent: 19 April 2020 08:41
>> To: 'Development list for mkgmap' <mkgmap-dev@lists.mkgmap.org.uk>
>> Subject: Re: [mkgmap-dev] nearby POIs
>>
>> Hi Mike,
>>
>> thanks, will look at it during the next days. Some of the changes to the
>> logging in StyledConverter are probably not OK.
>>
>> Gerd
>>
>> ________________________________________
>> Von: mkgmap-dev <mkgmap-dev-boun...@lists.mkgmap.org.uk> im Auftrag von Mike
>> Baggaley <m...@tvage.co.uk>
>> Gesendet: Sonntag, 19. April 2020 08:45
>> An: 'Development list for mkgmap'
>> Betreff: Re: [mkgmap-dev] nearby POIs
>>
>> Hi Gerd, please find attached an updated patch that provides a config file
>> option and puts the nearby POI code into a new class.
>>
>> Cheers,
>> Mike
>>
>> -----Original Message-----
>> From: Mike Baggaley [mailto:m...@tvage.co.uk]
>> Sent: 08 April 2020 14:02
>> To: 'Development list for mkgmap' <mkgmap-dev@lists.mkgmap.org.uk>
>> Subject: RE: [mkgmap-dev] nearby POIs
>>
>> HI Gerd, I'll look into having a config file option and separating the code
>> into a new class. Probably will be a couple of days before I get back to you
>> with an updated version of the patch.
>>
>> Cheers,
>> Mike
>>
>> -----Original Message-----
>> From: Gerd Petermann [mailto:gpetermann_muenc...@hotmail.com]
>> Sent: 07 April 2020 09:07
>> To: Development list for mkgmap <mkgmap-dev@lists.mkgmap.org.uk>
>> Subject: Re: [mkgmap-dev] nearby POIs
>>
>> Hi Mike,
>>
>> the syntax for the option parameters is extremely complex. I think it would
>> be better to use a config file for that, similar to the option
>> --road-name-config=roadNameConfig.txt we could have a
>> --nearby-poi-rules=nearbyPoiConfig.txt
>> What do you think?
>>
>> Gerd
>>
>>
>> ________________________________________
>> Von: mkgmap-dev <mkgmap-dev-boun...@lists.mkgmap.org.uk> im Auftrag von Mike
>> Baggaley <m...@tvage.co.uk>
>> Gesendet: Montag, 6. April 2020 20:24
>> An: 'Development list for mkgmap'
>> Betreff: [mkgmap-dev] nearby POIs
>>
>> Hi Gerd, please find attached a patch for handling the removal of duplicate
>> POIs that are near to each other but not coincident. The existing code
>> handles the removal of coincident duplicates, but leaves other duplicates in
>> place. It is very common in OSM for buildings to be tagged as amenities with
>> a single node also being tagged as the same amenity. If using
>> --add-pois-to-areas, this can lead to a lot of duplication. The patch
>> provides a new command line option with the following syntax:
>>
>> --nearby-poi-rules=type[/all|/named|/unnamed]:max-distance[:delete-poi|delet
>> e-name|merge-at-mid-point][,...]
>>
>> This defines a set of rules to follow when a POI is near to another of the
>> same type. Each rule consists of three parts separated by colons. The
>> first two parts must be provided; the last part can be defaulted.
>>
>> The first part of the rule is the Garmin POI type code with an optional
>> suffix; it determines when the rule is triggered. The type code may be
>> specified in decimal or hexadecimal (e.g. 0x2c0b). A rule is triggered
>> when processing a POI if the type code of the POI matches the rule type,
>> providing there is also a match in the POI name and the first part
>> suffix. If the suffix is '/all' (the default) then the match is only made
>> on the type. If the suffix is '/named' then the rule is only triggered if
>> the POI has a name. If the suffix is '/unnamed' then the rule is only
>> triggered if the POI has no name. A wildcard of an asterisk character may
>> be used to match any type code. The wildcard may also be combined with a
>> suffix to allow separate processing of named and unnamed POIs.
>>
>> The second part of the rule is the distance in metres which an already
>> processed POI must be within for it to be considered to be nearby and
>> hence trigger the action part of the rule.
>>
>> The third part of the rule is the action part and provides three options:
>> ::delete-poi - the POIS are considered to be duplicates and the
>> duplicate is deleted. This is the default.
>> ::delete-name - the POIS are not duplicates, but only a single
>> name needs to be displayed.
>> ::merge-at-mid-point - the POIS are considered to be duplicates
>> but the location of the existing point is moved to a point
>> midway between the two points.
>>
>> Wildcard rules are only applied if no other rule is applicable.
>>
>> For example:
>> :
>> --nearby-poi-rules=*/named:50,*/unnamed:25,0x2f1f/named:50:delete-name,0x2f1
>> f:3,0x641d:400:merge-at-mid-point
>>
>> This has the following effect:
>> :       If no other rule applies, a POI with the same name and type and
>>       within 50m of one already processed will be deleted
>>       If no other rule applies, a POI having no name and of the same type
>>       and within 25m of one already processed will be deleted
>>       A POI of type 0x2f1f that is within 50m of another POI with the same
>> name and type will have its name deleted
>>       A POI of type 0x2f1f that is within 3m of another POI with the same
>> type will be deleted
>>       A POI of type 0x641d that is within 400m of another POI with the
>> same
>> type will be deleted and the existing point moved
>>
>> Note: a POI that matches another in type, name and exact location is always
>> considered a duplicate and deleted.
>>
>> Regards,
>> Mike
>>
>>
>>
>> _______________________________________________
>> mkgmap-dev mailing list
>> mkgmap-dev@lists.mkgmap.org.uk
>> http://www.mkgmap.org.uk/mailman/listinfo/mkgmap-dev
>>
>>
>> _______________________________________________
>> mkgmap-dev mailing list
>> mkgmap-dev@lists.mkgmap.org.uk
>> http://www.mkgmap.org.uk/mailman/listinfo/mkgmap-dev
>>
>>
>>
>>
>> _______________________________________________
>> mkgmap-dev mailing list
>> mkgmap-dev@lists.mkgmap.org.uk
>> http://www.mkgmap.org.uk/mailman/listinfo/mkgmap-dev
>
> _______________________________________________
> mkgmap-dev mailing list
> mkgmap-dev@lists.mkgmap.org.uk
> http://www.mkgmap.org.uk/mailman/listinfo/mkgmap-dev
> _______________________________________________
> mkgmap-dev mailing list
> mkgmap-dev@lists.mkgmap.org.uk
> http://www.mkgmap.org.uk/mailman/listinfo/mkgmap-dev

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

Attachment: nearby-group-v0.patch
Description: nearby-group-v0.patch

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

Reply via email to