
Hi Gerd I introduced them as methods to be used where unsigned bytes/words need to be written and the range verified with an assertion, rather than (byte)/(char) casts in the main code that simply discard the unwanted bytes. Almost all put()/putChar() in imgfmt/* should use these new methods, but I didn't want to make excess changes while solving the city... problem. Maybe the names of these, which I chose to match existing put3() and the names in ImageFileReader - where different methods are really required for signed and unsigned - should be made consistent. Regards Ticker On Thu, 2017-08-03 at 08:38 +0000, Gerd Petermann wrote:
Hi Ticker,
thanks. Please review: You introduced new methods put1 and put2 in Interface ImgFileWriter and SectionWriter implements them but I don't find where they are used.
Gerd ________________________________________ Von: mkgmap-dev <mkgmap-dev-bounces@lists.mkgmap.org.uk> im Auftrag von Ticker Berkin <ticker@jagIT.co.uk> Gesendet: Donnerstag, 3. August 2017 10:07:30 An: mkgmap-dev@lists.mkgmap.org.uk Betreff: Re: [mkgmap-dev] Find Address - No cities
Hi Gerd
Sorry - I did do "ant test", but this doesn't detect the missing methods unless attempt made to call then.
New patch attached - I noticed that some of the new method comments where not quite correct so I've improved these.
Regards Ticker
On Thu, 2017-08-03 at 05:15 +0000, Gerd Petermann wrote:
Hi Ticker,
sounds good, but I cannot compile: ant clean test gives build-test: [mkdir] Created dir: D:\mkgmap\build\test [javac] Compiling 73 source files to D:\mkgmap\build\test [javac] D:\mkgmap\test\func\lib\ArrayImgWriter.java:26: error: ArrayImgWriter is not abstract and does not override abstract method putN(int,int) in ImgFileWriter [javac] public class ArrayImgWriter implements ImgFileWriter { [javac] ^ [javac] 1 error
ciao, Gerd ________________________________________ Von: mkgmap-dev <mkgmap-dev-bounces@lists.mkgmap.org.uk> im Auftrag von Ticker Berkin <rwb-mkgmap@jagit.co.uk> Gesendet: Dienstag, 1. August 2017 14:31:57 An: mkgmap-dev@lists.mkgmap.org.uk Betreff: Re: [mkgmap-dev] Find Address - No cities
Hi Gerd
I decided to both fix the code and put out a warning message if there are structures that switch to 3 byte pointers (zips, highways and exit facilities as well as cities)
Address search now works when there are > 65535 cities.
The code is a lot tidier - I've done it properly and it gets rid of lots of messy bits of in-line testing against sizes > 255 etc.
Ticker
On Mon, 2017-07-31 at 13:12 +0000, Gerd Petermann wrote:
Hi Tcker,
yes, good enough. I also thought about this alternative.
Gerd
________________________________________ Von: mkgmap-dev <mkgmap-dev-bounces@lists.mkgmap.org.uk> im Auftrag von Ticker Berkin <rwb-mkgmap@jagit.co.uk> Gesendet: Montag, 31. Juli 2017 13:09:49 An: mkgmap-dev@lists.mkgmap.org.uk Betreff: Re: [mkgmap-dev] Find Address - No cities
Hi Gerd
I started fixing all the places where there is an assumption about the number of cities (and zips) being < 65535 and I'm only part way through my list of suspect files and have make a lot of changes so far.
I'm thinking it is not worth while because:
The overall MDR size jumps because all city entries change to 3 bytes. I get a smaller GMAPSUPP by increasing the splitting so that it stays in the 2 byte limit.
I might miss some subtle coding of the header flags and/or the input/output.
It might not work anyway after I've made all the changes.
The changes are a bit messy because I've just hacked each problem area with a fix. Really there should be some utility functions, enhancements to the readers/writers and pointerSize variables in the relevant classes.
I propose just to signal an error in individual maps when the exceed the limit
What do you think?
Regards Ticker
On Sun, 2017-07-30 at 10:16 +0100, Ticker Berkin wrote:
Hi Gerd
I'll just done a bit more investigation and see what seems to be the the same assumption in imgfmt/app/net/RoadDef.java around line 296 if(numCities > 255)
writer.putChar(cityIndex); else
writer.put((byte)cityIndex);
I'll fix and test tomorrow and if there are still have problems I'll assemble the problem map, style etc for you
Thanks Ticker
On Sun, 2017-07-30 at 06:33 +0000, Gerd Petermann wrote:
Hi Ticker,
hmm, I think the patch looks good and I have no idea why the search doesn't work for you. Yesterday I thought the patch handles the overall number of cities in the gmapsupp, but it is about the number of cities in a single map tile. Maybe there is another problem caused by the high number of cities. Maybe you can post a link to the tile with that high number?
Gerd
________________________________________ Von: mkgmap-dev <mkgmap-dev-bounces@lists.mkgmap.org.uk> im Auftrag von Ticker Berkin <rwb-mkgmap@jagit.co.uk> Gesendet: Samstag, 29. Juli 2017 21:12:27 An: mkgmap-dev@lists.mkgmap.org.uk Betreff: Re: [mkgmap-dev] Find Address - No cities
Hi Gerd
Quite possibly, or maybe there are limits in the device.
More testing reveals that although my lists of cities and streets within them appear correctly in Find>Address, it doesn't find anything.
Ticker
On Sat, 2017-07-29 at 17:22 +0000, Gerd Petermann wrote:
Hi Tcker,
thanks for the patch. I seem to remember that the number of entries in mdr5 is also used elsewhere. Will have a closer look tomorrow.
Gerd ________________________________________ Von: mkgmap-dev <mkgmap-dev-bounces@lists.mkgmap.org.uk> im Auftrag von Ticker Berkin <rwb-mkgmap@jagit.co.uk> Gesendet: Samstag, 29. Juli 2017 19:14:02 An: mkgmap-dev@lists.mkgmap.org.uk Betreff: Re: [mkgmap-dev] Find Address - No cities
Hi Gerd
It looks as if can simply write 1/2/3 bytes as have indicated in the magic field in the MDR header and I've changed it to do this. All seems OK.
Yes - I do misuse a City POI. But now, after having worked out how the MDR20 index works, I might be able to do what I want in a better way.
Attached is patch to write the correct number of bytes.
Regards Ticker
On Sat, 2017-07-29 at 16:37 +0000, Gerd Petermann wrote: > Hi Ticker, > > yes, sounds plausible. The comment seems to say that we > don't > know > how to handle so many cities. > Why do you have so many cities. Do you "abuse" the > corresponding > POI > for something? > > Gerd > ________________________________________ > Von: mkgmap-dev <mkgmap-dev-bounces@lists.mkgmap.org.uk> > im > Auftrag > von Ticker Berkin <ticker@jagIT.co.uk> > Gesendet: Samstag, 29. Juli 2017 18:13:20 > An: mkgmap-dev@lists.mkgmap.org.uk > Betreff: Re: [mkgmap-dev] Find Address - No cities > > Hi Gerd > > I think I've found the problem: > > /src/uk/me/parabola/imgfmt/app/mdr/Mdr5.java line 227 > > private void putLocalCityIndex(ImgFileWriter > writer, > int > cityIndex) { > if (localCitySize == 2) > // 3 probably not possible in actual > maps. > writer.putChar((char) cityIndex); > else > writer.put((byte) cityIndex); > } > > There were more than 63335 cities in the failing map. > > Ticker > > > On Sat, 2017-07-29 at 16:09 +0100, Ticker Berkin wrote: > > Hi Gerd > > > > I've done a bit of investigation and debugging. It > > seems > > to > > be > > building > > the indexes with enough cities and streets. MDR20 is > > the > > suspect > > index. > > > > I'm now experimenting with mkgmap / Display > > > > With just the suspect map built in gmapsupp: > > > > $ ... test.ExtractFile gmapsupp.img > > filter[] > > Copying . 65024 > > Copying MAKEGMAP.MPS 78 > > Copying 74440044.RGN 4154927 > > Copying 74440044.TRE 18772 > > Copying 74440044.LBL 2174485 > > Copying 74440044.NET 1626350 > > Copying 74440044.NOD 3566829 > > Copying 00007444.MDR 2979295 > > Copying 00007444.SRT 912 > > > > $ ... test.display.MdrSummary 00007444.MDR > > initial values 7 2 e > > MDR 1 NR=1 (000001) RS=4 magic=0x0 > > MDR 4 NR=101 (000065) RS=3 magic=0x0 > > MDR 5 NR=54456 (00d4b8) RS=9 magic=0x152 > > MDR 6 NR=4039 (000fc7) RS=3 magic=0x1 > > MDR 7 NR=17674 (00450a) RS=6 magic=0x66 > > MDR 9 NR=11 (00000b) RS=4 magic=0x0 > > MDR 10 DataSize=427616 (00068660) magic=0x0 > > MDR 11 NR=106904(01a198) RS=10 magic=0x95 > > MDR 12 NR=11 (00000b) RS=7 magic=0x40a > > MDR 17 DataSize=111036 (0001b1bc) magic=0x0 > > MDR 18 NR=102 (000066) RS=5 magic=0x6 > > MDR 19 NR=106904(01a198) RS=3 magic=0x2 > > MDR 20 NR=20389 (004fa5) RS=6 magic=0xe > > MDR 22 NR=18117 (0046c5) RS=6 magic=0xc000e > > MDR 24 NR=2 (000002) RS=6 magic=0x0 > > MDR 25 NR=70016 (011180) RS=3 magic=0x0 > > MDR 29 NR=2 (000002) RS=8 magic=0x26 > > > > seems fine but > > > > $ ... test.display.MdrCheck 00007444.MDR > > ---------- 00007444.MDR -------------------- > > EXTRA > > remaining {} > > # reading 74440044 > > mdr5 check > > Exception in thread "main" > > java.lang.IndexOutOfBoundsException: > > Index: > > 308736, Size: 70018 > > at > > java.util.ArrayList.rangeCheck(ArrayList.java:653) > > at java.util.ArrayList.get(ArrayList.java:429) > > at > > test.display.check.MapDetails.getCity(MapDetails.java:1 > > 88 > > ) > > at > > test.display.MdrCheck.check5(MdrCheck.java:282) > > at > > test.display.MdrCheck.print(MdrCheck.java:87) > > at > > test.display.CommonDisplay.display(CommonDisplay.java:1 > > 71 > > ) > > at > > test.display.CommonDisplay.display(CommonDisplay.java:1 > > 96 > > ) > > at > > test.check.CommonCheck.runMain(CommonCheck.java:145) > > at > > test.display.MdrCheck.main(MdrCheck.java:1789) > > + exit > > > > On another map from the split this runs OK, producing > > masses > > of > > output: > > > > $ ... test.display.MdrCheck 00007429.MDR > > ---------- 00007429.MDR -------------------- > > EXTRA > > remaining {} > > # reading 74290047 > > ERROR: map 1: city 1: no name; index 1 > > mdr5 check > > 1 map1; ABBEY WOOD mapCity=2 reg=0 (LONDON) country=0 > > (UNITED > > KINGDOM^]GBR) ind20=0 rep=false > > 2 map1; ABRIDGE mapCity=3 reg=0 (ESSEX) country=0 > > (UNITED > > KINGDOM^]GBR) > > ind20=0 rep=false > > ... 87000 more lines ... > > > > > > Do you think mkgmap:Display is finding a real problem > > and > > I > > should > > pursue this line, or could it be unreliable and this > > exception > > is > > due > > to it rather than the format of the index? > > > > Thanks > > Ticker > > > > On Wed, 2017-07-26 at 23:42 -0700, Gerd Petermann > > wrote: > > > Ticker Berkin wrote > > > > With a particular split of 'british-isles', one map > > > > from > > > > the > > > > split > > > > causes the list of cities in the Find>Address > > > > function > > > > to > > > > be > > > > empty. > > > > > > Maybe you have the same problem here which I > > > described > > > for > > > road > > > name search when road names contain special > > > characters. > > > In > > > your > > > case > > > this would mean special characters in the citiy > > > names. > > > I suggest to add debug code in > > > uk.me.parabola.imgfmt.app.mdr.Mdr5.writeSectData(ImgF > > > il > > > eW > > > ri > > > te > > > r > > > writer) > > > to print all city names which are written to the > > > global > > > index. > > > > > > Gerd > > > > > > > > > > > > -- > > > View this message in context: > > > http://gis.19327.n8.nabble.com/Find-Add > > > ress-No-cities-tp5899775p5899880.html > > > Sent from the Mkgmap Development mailing list archive > > > at > > > Nabble.com. > > > _______________________________________________ > > > 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 _______________________________________________ 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