[solved] is_in() and Running topical mkgmap on Debian Buster


I’m used to generate my maps using mkgmap version 4262 from the Debian Buster repo.

Playing with is_in() in lines

railway='rail' & is_in(landuse, military, all_in_or_on) = true    {set railway=light_rail}


railway='rail' & is_in(landuse, military, all_in_or_on) = true    [0x14 level 0]

I constantly got errors like

finished check-styles
   Error in style: Error: (lines:564): Expecting ), instead saw landuse

Because I know others successfully using identical syntax, I assume, the is_in() style function may have been introduced to mkgmap on some later relaease. That true?

While I am able to run topical versions of splitter on Buster

java -jar '/home/..../splitter-r615/splitter.jar' ...

I can’t make it work for mkgmap. Download, unzip, make mkgmap (and optionally any .jar in .lib subdir executable) and invoking

java -jar mkgmap.jar ...

either directly from its directory as well as using its full path always results in errors:

finished check-styles
   Mkgmap version 4802
   Time started: Sat Aug 07 21:01:41 CEST 2021
   SCHWERWIEGEND (global): Unexpected error
	   at uk.me.parabola.mkgmap.reader.osm.POIGeneratorHook.getPlacementOrder(POIGeneratorHook.java:237)
	   at uk.me.parabola.mkgmap.reader.osm.POIGeneratorHook.addPOIsForWays(POIGeneratorHook.java:252)
	   at uk.me.parabola.mkgmap.reader.osm.POIGeneratorHook.end(POIGeneratorHook.java:227)
	   at uk.me.parabola.mkgmap.reader.osm.OsmReadingHooksChain.end(OsmReadingHooksChain.java:78)
	   at uk.me.parabola.mkgmap.reader.osm.OsmMapDataSource.load(OsmMapDataSource.java:151)
	   at uk.me.parabola.mkgmap.main.MapMaker.loadFromFile(MapMaker.java:165)
	   at uk.me.parabola.mkgmap.main.MapMaker.makeMap(MapMaker.java:58)
	   at uk.me.parabola.mkgmap.main.Main.lambda$processFilename$1(Main.java:290)
	   at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
	   at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
	   at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
	   at java.base/java.lang.Thread.run(Thread.java:829)
   SCHWERWIEGEND (global): Exiting due to unexpected error
   Number of ExitExceptions: 1

Can somebody give me some pointers?

Thanks, Felix

Hi Felix,

yes, r42262 doesn’t know the is_in() style function.
The traceback for the r4802 version seems to indicate a problem with the use of the ----pois-to-areas-placement option.
Expected is something like --pois-to-areas-placement=entrance=main;entrance=yes;building=entrance

Edit: Yes, I can reproduce the crash with e.g.

java -jar dist\mkgmap.jar --add-pois-to-areas --pois-to-areas-placement=xyz= 4711 ...

(a blank where none is expected)

Hey Gerd,


I was totally on the wrong track, assuming missing or incompatible dependencies. Had tried using other versions before, same result. Next time I will read any traceback more carefully, but still doubt, it will help much.

Indeed, the culprit was in the pois-to-areas-placement parameter, although no blank. I’m doing simplified maps for race-bike use, sparely use POIs at all and so far didn’t care much for their exact placement.

From some template my .cfg had


I’m now using the default, as in your reply.

And I still used, but got complaints about


Is that no longer needed at all?

Greets, Felix


option was replaced by different other options. Please check the docs

Jeeze, that’s quick… :smiley: