<html>
<head>
<style><!--
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 12pt;
font-family:Calibri
}
--></style></head>
<body class='hmmessage'><div dir='ltr'>Hi,<br><br>I coded the described algo, it contained a small error, but seems to work,<br>but it is much slower than the simple existing algo, esp.<br>in those cases were the simple algo works fine,<br>as it requires tons of rather complex distance calculations<br>for each polygon.<br>I will look for some optimization, but I think the improvement<br>is too small for now.<br><br>Gerd<br><br><div>&gt; Date: Sun, 4 Jan 2015 22:08:51 +0100<br>&gt; From: wmgcnfg@web.de<br>&gt; To: mkgmap-dev@lists.mkgmap.org.uk<br>&gt; Subject: Re: [mkgmap-dev] small issue with Way.getCofG()<br>&gt; <br>&gt; Hi Gerd,<br>&gt; <br>&gt; yep, good catch. Seems to be a good solution for mkgmap!<br>&gt; <br>&gt; WanMil<br>&gt; <br>&gt; &gt; Hi WanMil,<br>&gt; &gt;<br>&gt; &gt; I think the problem is similar to finding the "largest circle in a concave<br>&gt; &gt; polygon",<br>&gt; &gt; and we are not interested in the exact solution, any point close enough to<br>&gt; &gt; the center is<br>&gt; &gt; good. See e.g.<br>&gt; &gt; http://arxiv.org/ftp/arxiv/papers/1212/1212.3193.pdf<br>&gt; &gt; which contains an iterative algo.<br>&gt; &gt;<br>&gt; &gt; Gerd<br>&gt; &gt;<br>&gt; &gt;<br>&gt; &gt; WanMil wrote<br>&gt; &gt;&gt; Hi Gerd,<br>&gt; &gt;&gt;<br>&gt; &gt;&gt; a good algorithm to find a point for the --add-pois-to-areas option<br>&gt; &gt;&gt; would be to use the straight skeleton algorithm<br>&gt; &gt;&gt; (http://www.mkgmap.org.uk/pipermail/mkgmap-dev/2011q3/012394.html). This<br>&gt; &gt;&gt; might be used to find a point with maximum distance to the border of a<br>&gt; &gt;&gt; polygon. Anyhow it seems to be a complex algorithm so maybe not the<br>&gt; &gt;&gt; ideal solution for mkgmap.<br>&gt; &gt;&gt;<br>&gt; &gt;&gt; WanMil<br>&gt; &gt;&gt;<br>&gt; &gt;&gt;&gt; Hi Steve,<br>&gt; &gt;&gt;&gt;<br>&gt; &gt;&gt;&gt; Steve Ratcliffe wrote<br>&gt; &gt;&gt;&gt;&gt; On 03/01/15 08:15, Gerd Petermann wrote:<br>&gt; &gt;&gt;&gt;&gt;&gt; @Steve:<br>&gt; &gt;&gt;&gt;&gt;&gt; The routine was initially created for the --check-roundabouts option.<br>&gt; &gt;&gt;&gt;&gt;&gt;<br>&gt; &gt;&gt;&gt;&gt;&gt; Later it was also used for --add-pois-to-areas and the --housenumbers<br>&gt; &gt;&gt;&gt;&gt;&gt; option.<br>&gt; &gt;&gt;&gt;&gt;&gt; I got the impression that it might be better to calculate the center<br>&gt; &gt;&gt;&gt;&gt;&gt; of the way bbox for those two, I am not so sure about the roundabout<br>&gt; &gt;&gt;&gt;&gt;&gt; code.<br>&gt; &gt;&gt;&gt;&gt;&gt; What do you think?<br>&gt; &gt;&gt;&gt;&gt;<br>&gt; &gt;&gt;&gt;&gt; Seems like the current method would tend to place the point near the<br>&gt; &gt;&gt;&gt;&gt; most complex part of the boundary.  This may not be bad, I would have<br>&gt; &gt;&gt;&gt;&gt; to see lots of real examples to be sure.<br>&gt; &gt;&gt;&gt;<br>&gt; &gt;&gt;&gt; Yes, correct. I compared these three algos:<br>&gt; &gt;&gt;&gt; 1) the existing<br>&gt; &gt;&gt;&gt; 2) my patched one<br>&gt; &gt;&gt;&gt; 3) center of bbox<br>&gt; &gt;&gt;&gt; For complex shapes (many points), 1) and 2) produce almost equal<br>&gt; &gt;&gt;&gt; results, and in fact the point was more often within the shape.<br>&gt; &gt;&gt;&gt; For simple polygons like small parks, buildings, etc. 1) is worst,<br>&gt; &gt;&gt;&gt; 2) is better and 3) is best.<br>&gt; &gt;&gt;&gt;<br>&gt; &gt;&gt;&gt; My conclusion: the patch is a simple and good improvement,<br>&gt; &gt;&gt;&gt; for housenumber location calculation maybe it would be better to use<br>&gt; &gt;&gt;&gt; algo 3).<br>&gt; &gt;&gt;&gt;<br>&gt; &gt;&gt;&gt;<br>&gt; &gt;&gt;&gt; Steve Ratcliffe wrote<br>&gt; &gt;&gt;&gt;&gt; Anyway there are no easy (or even any difficult!) methods that work in<br>&gt; &gt;&gt;&gt;&gt; all cases, so I would just keep it as it is and perhaps should the<br>&gt; &gt;&gt;&gt;&gt; calculated point be outside the box, move it to the closest point<br>&gt; &gt;&gt;&gt;&gt; inside.<br>&gt; &gt;&gt;&gt;<br>&gt; &gt;&gt;&gt; I already looked at the link provided by Andrzej.<br>&gt; &gt;&gt;&gt; If I got that right, we have two different problems regarding<br>&gt; &gt;&gt;&gt; the generated POI:<br>&gt; &gt;&gt;&gt; We calculate it once for the whole polygon, before clipping<br>&gt; &gt;&gt;&gt; it to the bbox of the tile, and it might be outside of the polygon<br>&gt; &gt;&gt;&gt; as well as outside of the bbox.<br>&gt; &gt;&gt;&gt;<br>&gt; &gt;&gt;&gt; This brought me back to the non-rectangular tile problem and I stop<br>&gt; &gt;&gt;&gt; searching for a solution for the POI problem.<br>&gt; &gt;&gt;&gt;<br>&gt; &gt;&gt;&gt; Reg. non-rectangular tiles: I fear we can't use any of the existing<br>&gt; &gt;&gt;&gt; algos in mkgmap to implement this, I'll report details in a different<br>&gt; &gt;&gt;&gt; post.<br>&gt; &gt;&gt;&gt;<br>&gt; &gt;&gt;&gt; Gerd<br>&gt; &gt;&gt;&gt;<br>&gt; &gt;&gt;&gt;<br>&gt; &gt;&gt;&gt;<br>&gt; &gt;&gt;&gt;<br>&gt; &gt;&gt;&gt; --<br>&gt; &gt;&gt;&gt; View this message in context:<br>&gt; &gt;&gt;&gt; http://gis.19327.n5.nabble.com/small-issue-with-Way-getCofG-tp5828821p5828952.html<br>&gt; &gt;&gt;&gt; Sent from the Mkgmap Development mailing list archive at Nabble.com.<br>&gt; &gt;&gt;&gt; _______________________________________________<br>&gt; &gt;&gt;&gt; mkgmap-dev mailing list<br>&gt; &gt;&gt;&gt;<br>&gt; &gt;<br>&gt; &gt;&gt; mkgmap-dev@.org<br>&gt; &gt;<br>&gt; &gt;&gt;&gt; http://www.mkgmap.org.uk/mailman/listinfo/mkgmap-dev<br>&gt; &gt;&gt;&gt;<br>&gt; &gt;&gt;<br>&gt; &gt;&gt; _______________________________________________<br>&gt; &gt;&gt; mkgmap-dev mailing list<br>&gt; &gt;<br>&gt; &gt;&gt; mkgmap-dev@.org<br>&gt; &gt;<br>&gt; &gt;&gt; http://www.mkgmap.org.uk/mailman/listinfo/mkgmap-dev<br>&gt; &gt;<br>&gt; &gt;<br>&gt; &gt;<br>&gt; &gt;<br>&gt; &gt;<br>&gt; &gt; --<br>&gt; &gt; View this message in context: http://gis.19327.n5.nabble.com/small-issue-with-Way-getCofG-tp5828821p5828986.html<br>&gt; &gt; Sent from the Mkgmap Development mailing list archive at Nabble.com.<br>&gt; &gt; _______________________________________________<br>&gt; &gt; mkgmap-dev mailing list<br>&gt; &gt; mkgmap-dev@lists.mkgmap.org.uk<br>&gt; &gt; http://www.mkgmap.org.uk/mailman/listinfo/mkgmap-dev<br>&gt; &gt;<br>&gt; <br>&gt; _______________________________________________<br>&gt; mkgmap-dev mailing list<br>&gt; mkgmap-dev@lists.mkgmap.org.uk<br>&gt; http://www.mkgmap.org.uk/mailman/listinfo/mkgmap-dev<br></div>                                               </div></body>
</html>