Re: [mkgmap-dev] RE Commit r3801: merge split-shape branch

Hi Mike I have the raw postcode data (codePointOpen.zip) which I processes just to take the first few at the same point but I can change it do all of them individually. Do you feed it with a map through the splitter or just make a postcode only overlay? What is the bit of style you use to represent each postcode? I can probably knock up something similar. The code should cope - I can't see anything obviously wrong so need to try and reproduce the problem Ticker On Tue, 2017-02-14 at 18:17 +0000, Mike Baggaley wrote:
Hi Ticker the data is postcode centres (points). As well as geographic postcodes, the Royal Mail postcode data includes a number of postcodes that are centred on sorting offices (presumably for box numbers). There are quite a few at large sorting offices, but if each split should be able to accept 255 points, and it is exceeding 2000 splits before crashing, it looks like the splitting is not working - there won't be more than 2000 * 255 postcodes at the same place. My OSM file is rather large. I can see whether I can extract a map centred on a sorting office.
Regards, Mike
-----Original Message----- From: Ticker Berkin [mailto:rwb-mkgmap@jagit.co.uk] Sent: 14 February 2017 17:52 To: mkgmap-dev@lists.mkgmap.org.uk Subject: Re: [mkgmap-dev] RE Commit r3801: merge split-shape branch
Hi Mike
This is an area of code I've changed and it should be able to cope with many items at the same location without recursing.
Do you have some sample data? what are the items (point/line/shape extended?)
Ticker
On Tue, 2017-02-14 at 17:40 +0000, Mike Baggaley wrote:
Hi Gerd, since this change I am getting a java.lang.StackOverflowError crash caused by the code recursively attempting to split something which is unsplittable (assuming the split is based on location), as I have a large number of points at exactly the same location (from external data I add to the OSM data).
The offending line is at uk.me.parabola.mkgmap.build.MapSplitter.addAreasToList(MapSplitter. ja va:187) . It is failing on my system with a depth of 2342. I suggest there needs to be a maximum depth after which it should give up trying to split.
} else if (mustSplit) { // can't reduce size, so force more subdivisions log.debug("splitting area by contents", area); MapArea[] sublist = area.split(1, 1, bounds, true); addAreasToList(sublist, alist, depth + 1); continue; }
I am unsure whether you would want a fixed depth limit, would want it to be set by parameter, would prefer to catch the error or think it would be possible to see whether the proposed area split has made any improvement, and give up if it hasn't.
Regards, Mike
_______________________________________________ mkgmap-dev mailing list mkgmap-dev@lists.mkgmap.org.uk http://www.mkgmap.org.uk/mailman/listinfo/mkgmap-dev
participants (1)
-
Ticker Berkin