<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 Miike,<br><br>sounds great! Reg. mp-processing: <br>Not sure what you plan to do here. Maybe that is not so easy, keep in mind that we have<br>the area_size() style function, so you probably have to calculate at least the outer shape before <br>you can check if the style is creating a map object.<br><br>Gerd<br><br><br><div><hr id="stopSpelling">From: mike@tvage.co.uk<br>To: mkgmap-dev@lists.mkgmap.org.uk<br>Date: Fri, 9 Jan 2015 00:20:56 +0000<br>Subject: Re: [mkgmap-dev] small issue with Way.getCofG()<br><br><style><!--
.ExternalClass p.ecxMsoNormal, .ExternalClass li.ecxMsoNormal, .ExternalClass div.ecxMsoNormal {
font-size:12.0pt;
font-family:"Times New Roman",serif;
}

.ExternalClass a:link, .ExternalClass span.ecxMsoHyperlink {
color:#0563C1;
text-decoration:underline;
}

.ExternalClass span.ecxMsoHyperlinkFollowed {
color:#954F72;
text-decoration:underline;
}

.ExternalClass p {
font-size:12.0pt;
font-family:"Times New Roman",serif;
}

.ExternalClass span.ecxEmailStyle18 {
font-family:"Calibri",sans-serif;
color:#1F497D;
}

.ExternalClass span.ecxSpellE {
}

.ExternalClass span.ecxGramE {
}

.ExternalClass .ecxMsoChpDefault {
font-size:10.0pt;
}

.ExternalClass div.ecxWordSection1 {
}

--></style><div class="ecxWordSection1"><p class="ecxMsoNormal"><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,sans-serif;color:#1F497D;">Hi <span class="ecxSpellE">Gerd</span>/<span class="ecxSpellE">WanMil</span>, I now have a mechanism working that has no performance overhead. I have derived a new class from Node and have moved the evaluation of the location to when <span class="ecxSpellE">getLocation</span> is first called in the new class. I have also improved the algorithm by progressively using bigger bitmaps if a small one doesn’t produce a suitable result. I’m now looking at doing the same for multi-polygons before putting together a patch. I should have something for you to try shortly.</span></p><p class="ecxMsoNormal"><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,sans-serif;color:#1F497D;">&nbsp;</span></p><p class="ecxMsoNormal"><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,sans-serif;color:#1F497D;">Regards,</span></p><p class="ecxMsoNormal"><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,sans-serif;color:#1F497D;">Mike</span></p><p class="ecxMsoNormal"><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,sans-serif;color:#1F497D;">&nbsp;</span></p><div><div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0cm 0cm 0cm;"><p class="ecxMsoNormal"><b><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,sans-serif;" lang="EN-US">From:</span></b><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,sans-serif;" lang="EN-US"> Gerd Petermann [mailto:gpetermann_muenchen@hotmail.com] <br><b>Sent:</b> 08 January 2015 20:23<br><b>To:</b> mkgmap-dev@lists.mkgmap.org.uk<br><b>Subject:</b> Re: [mkgmap-dev] small issue with Way.getCofG()</span></p></div></div><p class="ecxMsoNormal">&nbsp;</p><div><p class="ecxMsoNormal" style=""><span style="font-family:&quot;Calibri&quot;,sans-serif;">Hi WanMil,<br><br>yes, I had something like this in mind.<br>StyledConverter could call the POIGenerator<br>for each polygon. The POIGenerator <br>creates a dummy node, opies the tags, adds the <br>mkgmap:area2poi=true tag and <br>checks if the style produces a map element.<br>If yes, it calculates the coords<br>and returns the node which is than passed to addNode.<br><br>Anyhow, this change is only useful when performance<br>is a problem. I once had a similar idea for mp-processing.<br><br>Gerd</span></p><div><p class="ecxMsoNormal"><span style="font-family:&quot;Calibri&quot;,sans-serif;">&gt; Date: Thu, 8 Jan 2015 20:55:46 +0100<br>&gt; From: <a href="mailto:wmgcnfg@web.de">wmgcnfg@web.de</a><br>&gt; To: <a href="mailto:mkgmap-dev@lists.mkgmap.org.uk">mkgmap-dev@lists.mkgmap.org.uk</a><br>&gt; Subject: Re: [mkgmap-dev] small issue with <span class="ecxGramE">Way.getCofG(</span>)<br><span class="ecxGramE">&gt; <br>&gt;</span> Hi Gerd,<br><span class="ecxGramE">&gt; <br>&gt;</span> I think there are many drawbacks to move the POI generation into the <br>&gt; style code. At least it will complicate the style code.<br>&gt; <br>&gt; Maybe it is better to implement your idea directly in the POIGeneratorHook.<br>&gt; If it has access to the point style it could check itself if the polygon <br>&gt; will (probably) create a POI. Maybe it could first test if there is any <br>&gt; overlap of the polygon tags with the tags used in the points file. Then <br>&gt; it could pass an artifical POI through the points style and check if a <br>&gt; POI is created (finally rules might be disabled to speed up the <br>&gt; processing).<br>&gt; The hook might also decide how to proceed dependent on the complexity of <br>&gt; the polygon.<br>&gt; <br>&gt; <br>&gt; By the way: Did you think of having different methods depending on the <br>&gt; use case? So one getCofG() for POI placement, one getHouseNumberPoint() <br>&gt; for housenumber processing etc. It sounds like it is hard to find one <br>&gt; algorithm that fits all.<br>&gt; <br>&gt; WanMil<br>&gt; <br>&gt; &gt; Hi Mike,<br>&gt; &gt;<br>&gt; &gt; reg. POI for polygons like rivers etc:<br>&gt; &gt;<br>&gt; &gt; The current algo calculates a POI for each polygon before any style rule<br>&gt; &gt; is applied.<br>&gt; &gt; If the calculation of the Coord takes a lot of time, and many of the POI<br>&gt; &gt; are later dropped in the points rules, maybe it is possible<br>&gt; &gt; to create a dummy object first, pass it through the style rules, check<br>&gt; &gt; if it<br>&gt; &gt; produces a map object, and calculate the exact position only for those.<br>&gt; &gt; I think we would have to change/remove the POIGeneratorHook and<br>&gt; &gt; call it "on the fly", but I don't see any big problem with that.<br>&gt; &gt;<br>&gt; &gt; Gerd<br>&gt; &gt;<br>&gt; &gt; ------------------------------------------------------------------------<br>&gt; &gt; From: <a href="mailto:mike@tvage.co.uk">mike@tvage.co.uk</a><br>&gt; &gt; To: <a href="mailto:mkgmap-dev@lists.mkgmap.org.uk">mkgmap-dev@lists.mkgmap.org.uk</a><br>&gt; &gt; Date: Wed, 7 Jan 2015 09:29:51 +0000<br>&gt; &gt; Subject: Re: [mkgmap-dev] small issue with <span class="ecxGramE">Way.getCofG(</span>)<br>&gt; &gt;<br>&gt; &gt; HI Gerd, the method I’ve used won’t work if the polygon is thinner than<br>&gt; &gt; the resolution of the bitmap. I hadn’t considered that it might be used<br>&gt; &gt; on rivers; my main testing has been on car parks, which although they<br>&gt; &gt; may be irregularly shaped are not normally very long and very thin (I<br>&gt; &gt; handle river names from the underlying lines). There are two possible<br>&gt; &gt; problems that could occur – if a polygon is thin enough that it renders<br>&gt; &gt; in the bitmap as a line that is nowhere wider than 2 pixels the POI<br>&gt; &gt; could be placed just outside the polygon. I haven’t checked what<br>&gt; &gt; fillPolygon does if the points have no volume and form a line. If this<br>&gt; &gt; renders nothing, then the algo will just return the centre point, which<br>&gt; &gt; could be nowhere near the polygon. A simple solution to the first<br>&gt; &gt; problem would be to examine the biggestSquaredDistanceToBlack figure<br>&gt; &gt; before returning the coordinate and if the value is 1, repeat the<br>&gt; &gt; operation on a small area around the point to get a better accuracy.<br>&gt; &gt; I’ll look into that. For the second problem I’ll add an error message,<br>&gt; &gt; so we can determine if it actually occurs (biggestSquaredDistanceToBlack<br>&gt; &gt; is 0). I’ve also thought that having drawn the bitmap, it might be more<br>&gt; &gt; efficient to then copy its contents out into an array so that finding<br>&gt; &gt; the distances from pixels inside the polygon to those outside become<br>&gt; &gt; simple array lookups instead of graphics function calls. I’ll look into<br>&gt; &gt; that as well.<br>&gt; &gt;<br>&gt; &gt; Cheers,<br>&gt; &gt;<br>&gt; &gt; Mike<br>&gt; &gt;<br>&gt; &gt; *From:*<span class="ecxSpellE">Gerd</span> <span class="ecxSpellE">Petermann</span> [<a href="mailto:gpetermann_muenchen@hotmail.com">mailto:gpetermann_muenchen@hotmail.com</a>]<br>&gt; &gt; *Sent:* 07 January 2015 06:55<br>&gt; &gt; *To:* <a href="mailto:mkgmap-dev@lists.mkgmap.org.uk">mkgmap-dev@lists.mkgmap.org.uk</a><br>&gt; &gt; *Subject:* Re: [mkgmap-dev] small issue with <span class="ecxGramE">Way.getCofG(</span>)<br>&gt; &gt;<br>&gt; &gt; Hi Mike,<br>&gt; &gt;<br>&gt; &gt; on my PC the performance of your algo is quite good.<br>&gt; &gt; Attached is a patch that contains your patch as well as my quick<br>&gt; &gt; implementation<br>&gt; &gt; of the algo described here:<br>&gt; &gt; <a href="http://arxiv.org/ftp/arxiv/papers/1212/1212.3193.pdf" target="_blank">http://arxiv.org/ftp/arxiv/papers/1212/1212.3193.pdf</a><br>&gt; &gt;<br>&gt; &gt; The patch tests only performance, it computes the center with the 3<br>&gt; &gt; different algos,<br>&gt; &gt; I've commented the part that prints times and GPX data for debug purposes.<br>&gt; &gt;<br>&gt; &gt; I noticed that the results between both algos are very different, I did not<br>&gt; &gt; yet try to find out which one is better, but mine is much slower on my PC.<br>&gt; &gt; I also noticed that your algo doesn't always calculate a point in the<br>&gt; &gt; polygon,<br>&gt; &gt; see e.g. way 178708143.<br>&gt; &gt;<br>&gt; &gt; If you like, please try to find a better compromise, I like to fix a<br>&gt; &gt; problem in<br>&gt; &gt; splitter first.<br>&gt; &gt; I also did not yet look at the effect on the house number code, as there<br>&gt; &gt; are many<br>&gt; &gt; more small open problems, but I think it should be easy to sort that out.<br>&gt; &gt;<br>&gt; &gt; Gerd<br>&gt; &gt;<br>&gt; &gt;&gt; Date: Tue, 6 Jan 2015 13:23:57 -0700<br>&gt; &gt;&gt; From:gpetermann_muenchen@hotmail.com &lt;<a href="mailto:gpetermann_muenchen@hotmail.com">mailto:gpetermann_muenchen@hotmail.com</a>&gt;<br>&gt; &gt;&gt; To:mkgmap-dev@lists.mkgmap.org.uk &lt;<a href="mailto:mkgmap-dev@lists.mkgmap.org.uk">mailto:mkgmap-dev@lists.mkgmap.org.uk</a>&gt;<br>&gt; &gt;&gt; Subject: Re: [mkgmap-dev] small issue <span class="ecxGramE">withWay.getCofG(</span>)<br>&gt; &gt;&gt;<br>&gt; &gt;&gt; Hi Mike,<br>&gt; &gt;&gt;<br>&gt; &gt;&gt; I like the idea, but it seems to be slow.<br>&gt; &gt;&gt; Is it possible that your algo suffers when no fast graphics card is<br>&gt; &gt;&gt; available?<br>&gt; &gt;&gt; On my netbook the performance is very poor, did not yet<br>&gt; &gt;&gt; try on the PC, but that also has no high speed graphics.<br>&gt; &gt;&gt;<br>&gt; &gt;&gt; Gerd<br>&gt; &gt;&gt;<br>&gt; &gt;&gt;<br>&gt; &gt;&gt; GerdP wrote<br>&gt; &gt;&gt; &gt; Hi Mike,<br>&gt; &gt;&gt; &gt;<br>&gt; &gt;&gt; &gt; 50% sounds better than my algo, but still quite a lot. I'll have a closer<br>&gt; &gt;&gt; &gt; look at your<br>&gt; &gt;&gt; &gt; algo later.<br>&gt; &gt;&gt; &gt; Please note that your change has a side effect on the house number<br>&gt; &gt;&gt; &gt; generator.<br>&gt; &gt;&gt; &gt; Up to now this doesn't contain a filter for generated POI, so each polygon<br>&gt; &gt;&gt; &gt; with a house number is processed twice, once because of the POI, once<br>&gt; &gt;&gt; &gt; because the Generator uses Way.getCofG(). If both have different positions<br>&gt; &gt;&gt; &gt; this might have a negative impact.<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; From:<br>&gt; &gt;&gt;<br>&gt; &gt;&gt; &gt;<a href="mailto:mike@.co">mike@.co</a> &lt;<a href="mailto:mike@.co">mailto:mike@.co</a>&gt;<br>&gt; &gt;&gt;<br>&gt; &gt;&gt; &gt; To:<br>&gt; &gt;&gt;<br>&gt; &gt;&gt; &gt;<a href="mailto:mkgmap-dev@.org">mkgmap-dev@.org</a> &lt;<a href="mailto:mkgmap-dev@.org">mailto:mkgmap-dev@.org</a>&gt;<br>&gt; &gt;&gt;<br>&gt; &gt;&gt; &gt; Date: Tue, 6 Jan 2015 14:56:30 +0000<br>&gt; &gt;&gt; &gt; Subject: Re: [mkgmap-dev] small issue <span class="ecxGramE">withWay.getCofG(</span>)<br>&gt; &gt;&gt; &gt;<br>&gt; &gt;&gt; &gt; I have a working solution for ensuring that the created point is placed<br>&gt; &gt;&gt; &gt; within the polygon when using --add-pois-to-areas, based on drawing the<br>&gt; &gt;&gt; &gt; polygon on to a small monochrome bitmap and then looking for the point<br>&gt; &gt;&gt; &gt; that<br>&gt; &gt;&gt; &gt; is furthest from the surrounding area. I used a 9x9 bitmap for polygons<br>&gt; &gt;&gt; &gt; having a small number of points and 15x15 for longer polygons. There is<br>&gt; &gt;&gt; &gt; however a performance penalty. My standard map takes about 1 hour 20<br>&gt; &gt;&gt; &gt; minutes; using this algorithm the time increases by about 50% to about 2<br>&gt; &gt;&gt; &gt; hours. I am not currently able to commit changes to SVN (perhaps someone<br>&gt; &gt;&gt; &gt; can<br>&gt; &gt;&gt; &gt; help out with that) but I have attached the code changes. I suggest that<br>&gt; &gt;&gt; &gt; due<br>&gt; &gt;&gt; &gt; to the performance penalty, if we adopt this, then the --add-pois-to-areas<br>&gt; &gt;&gt; &gt; option be extended to be --add-pois-to-areas[=centre|optimised] or<br>&gt; &gt;&gt; &gt; something<br>&gt; &gt;&gt; &gt; similar, with the default being centre and functioning as now and the<br>&gt; &gt;&gt; &gt; optimised option invoking the new code. Please try out the suggested<br>&gt; &gt;&gt; &gt; change.<br>&gt; &gt;&gt; &gt; Note I don't expect this to work properly where a polygon is formed from a<br>&gt; &gt;&gt; &gt; multiploygon relation, but the code could quite easily be adapted for this<br>&gt; &gt;&gt; &gt; circumstance.<br>&gt; &gt;&gt; &gt;<br>&gt; &gt;&gt; &gt;<br>&gt; &gt;&gt; &gt; Regards,<br>&gt; &gt;&gt; &gt; Mike<br>&gt; &gt;&gt; &gt;<br>&gt; &gt;&gt; &gt; _______________________________________________<br>&gt; &gt;&gt; &gt; mkgmap-dev mailing list<br>&gt; &gt;&gt;<br>&gt; &gt;&gt; &gt; <a href="mailto:mkgmap-dev@.org">mkgmap-dev@.org</a> &lt;<a href="mailto:mkgmap-dev@.org">mailto:mkgmap-dev@.org</a>&gt;<br>&gt; &gt;&gt;<br>&gt; &gt;&gt; &gt; <a href="http://www.mkgmap.org.uk/mailman/listinfo/mkgmap-dev" target="_blank">http://www.mkgmap.org.uk/mailman/listinfo/mkgmap-dev</a><br>&gt; &gt;&gt; &gt; _______________________________________________<br>&gt; &gt;&gt; &gt; mkgmap-dev mailing list<br>&gt; &gt;&gt;<br>&gt; &gt;&gt; &gt; <a href="mailto:mkgmap-dev@.org">mkgmap-dev@.org</a> &lt;<a href="mailto:mkgmap-dev@.org">mailto:mkgmap-dev@.org</a>&gt;<br>&gt; &gt;&gt;<br>&gt; &gt;&gt; &gt; <a href="http://www.mkgmap.org.uk/mailman/listinfo/mkgmap-dev" target="_blank">http://www.mkgmap.org.uk/mailman/listinfo/mkgmap-dev</a><br>&gt; &gt;&gt;<br>&gt; &gt;&gt;<br>&gt; &gt;&gt;<br>&gt; &gt;&gt;<br>&gt; &gt;&gt;<br>&gt; &gt;&gt; --<br>&gt; &gt;&gt; View this message in context:http://gis.19327.n5.nabble.com/small-issue-with-Way-getCofG-tp5828821p5829247.html<br>&gt; &gt;&gt; Sent from theMkgmap Development mailing list archive at Nabble.com.<br>&gt; &gt;&gt; _______________________________________________<br>&gt; &gt;&gt;mkgmap-dev mailing list<br>&gt; &gt;&gt;<a href="mailto:mkgmap-dev@lists.mkgmap.org.uk">mkgmap-dev@lists.mkgmap.org.uk</a> &lt;<a href="mailto:mkgmap-dev@lists.mkgmap.org.uk">mailto:mkgmap-dev@lists.mkgmap.org.uk</a>&gt;<br>&gt; &gt;&gt;<a href="http://www.mkgmap.org.uk/mailman/listinfo/mkgmap-dev" target="_blank">http://www.mkgmap.org.uk/mailman/listinfo/mkgmap-dev</a><br>&gt; &gt;<br>&gt; &gt;<br>&gt; &gt; _______________________________________________ mkgmap-dev mailing list<br>&gt; &gt; <a href="mailto:mkgmap-dev@lists.mkgmap.org.uk">mkgmap-dev@lists.mkgmap.org.uk</a><br>&gt; &gt; <a href="http://www.mkgmap.org.uk/mailman/listinfo/mkgmap-dev" target="_blank">http://www.mkgmap.org.uk/mailman/listinfo/mkgmap-dev</a><br>&gt; &gt;<br>&gt; &gt;<br>&gt; &gt; _______________________________________________<br>&gt; &gt; mkgmap-dev mailing list<br>&gt; &gt; <a href="mailto:mkgmap-dev@lists.mkgmap.org.uk">mkgmap-dev@lists.mkgmap.org.uk</a><br>&gt; &gt; <a href="http://www.mkgmap.org.uk/mailman/listinfo/mkgmap-dev" target="_blank">http://www.mkgmap.org.uk/mailman/listinfo/mkgmap-dev</a><br>&gt; &gt;<br>&gt; <br>&gt; _______________________________________________<br>&gt; <span class="ecxGramE">mkgmap-dev</span> mailing list<br>&gt; <a href="mailto:mkgmap-dev@lists.mkgmap.org.uk">mkgmap-dev@lists.mkgmap.org.uk</a><br>&gt; <a href="http://www.mkgmap.org.uk/mailman/listinfo/mkgmap-dev" target="_blank">http://www.mkgmap.org.uk/mailman/listinfo/mkgmap-dev</a></span></p></div></div></div><br>_______________________________________________
mkgmap-dev mailing list
mkgmap-dev@lists.mkgmap.org.uk
http://www.mkgmap.org.uk/mailman/listinfo/mkgmap-dev</div>                                               </div></body>
</html>