logo separator

[mkgmap-dev] [PATCH v1] Precompiled sea

From Carlos Dávila cdavilam at orangecorreo.es on Wed May 2 22:15:40 BST 2012

El 01/05/12 11:40, WanMil escribió:
> Hi,
>
> I have reuploaded the precompiled sea to
> http://www.navmaps.eu/wanmil/sea_20120331.zip
>
> Changes:
> * Fixed some floodings
> * Use a smaller raster to reduce multipolygon artefacts
>
> WanMil
>
>
>    
>> Hi,
>>
>> attached patch uses precompiled sea files to generate the sea areas.
>>
>> Generating sea areas have always been a source of problems. Little
>> errors in the coastline data could flood whole tiles. A second problem
>> is that generating sea areas often take long CPU time.
>>
>> After having used a precompilation step for the address assignment I
>> wondered if it would be possible to do something similar for sea areas.
>> After having played around with compiling sea areas myself I remembered
>> that Mapnik also precompiles sea areas. This precompilation can be
>> downloaded at
>> http://wiki.openstreetmap.org/wiki/Coastline#Main_Mapnik_Layer and uses
>> the ESRI shape format. That makes things very easy :-)
>>
>> I used the geotools lib and converted the sea information to our well
>> known boundary format and added a small code addition to the mkgmap
>> SeaGenerator.
>>
>> Attached patch does not include the ESRI shape conversion (I have to
>> think about how to put that into the mkgmap code base - lots of geotools
>> libs have to be included). But I have uploaded the whole world to
>> http://www.navmaps.eu/wanmil/sea_20120331.zip.
>>
>> The new mkgmap parameter --precomp-sea=<dir with sea files>  must be added.
>> So unzip the sea_20120331.zip file to a directory called sea.
>> Call the patched mkgmap with
>> java -jar mkgmap.jar<.. your mkgmap options..>  --precomp-sea=sea *.osm.pbf
>>
>> I am sure there are some problems left and the code patch should be
>> cleaned up (better integration of the BoundaryXXX classes). But the
>> first results looked so well that I want to give you the early chance to
>> play with it.
>>
>> Now I hope it should also be possible to create a tile in the
>> atlantic/pacific ocean without any data but full of sea.
Thanks for your work on this WanMil
I have tried to use your patch but get the errors below when running mkgmap:
Using java version "1.6.0_26"
Java(TM) SE Runtime Environment (build 1.6.0_26-b03)
Java HotSpot(TM) Server VM (build 20.1-b02, mixed mode)
mkgmap crashes immediately with the following output:
java.lang.UnsupportedClassVersionError: 
uk/me/parabola/mkgmap/reader/osm/SeaGenerator : Unsupported major.minor 
version 51.0
         at java.lang.ClassLoader.defineClass1(Native Method)
         at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
         at java.lang.ClassLoader.defineClass(ClassLoader.java:615)
         at 
java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
         at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
         at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
         at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
         at java.security.AccessController.doPrivileged(Native Method)
         at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
         at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
         at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
         at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
         at 
uk.me.parabola.mkgmap.reader.osm.OsmMapDataSource.<init>(OsmMapDataSource.java:53)
         at 
uk.me.parabola.mkgmap.reader.osm.bin.OsmBinMapDataSource.<init>(OsmBinMapDataSource.java:35)
         at 
sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
         at 
sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
         at 
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
         at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
         at java.lang.Class.newInstance0(Class.java:355)
         at java.lang.Class.newInstance(Class.java:308)
         at 
uk.me.parabola.mkgmap.reader.plugin.MapReader.createMapReader(MapReader.java:73)
         at 
uk.me.parabola.mkgmap.main.MapMaker.loadFromFile(MapMaker.java:141)
         at uk.me.parabola.mkgmap.main.MapMaker.makeMap(MapMaker.java:56)
         at uk.me.parabola.mkgmap.main.Main$1.call(Main.java:210)
         at uk.me.parabola.mkgmap.main.Main$1.call(Main.java:207)
         at 
java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
         at java.util.concurrent.FutureTask.run(FutureTask.java:138)
         at 
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
         at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
         at java.lang.Thread.run(Thread.java:662)

Using java version "1.7.0_03"
Java(TM) SE Runtime Environment (build 1.7.0_03-b04)
Java HotSpot(TM) Server VM (build 22.1-b02, mixed mode)
mkgmap runs for a while and then crashes with the following:
java.lang.AssertionError
         at 
uk.me.parabola.mkgmap.reader.osm.SeaGenerator.addPrecompSea(SeaGenerator.java:295)
         at 
uk.me.parabola.mkgmap.reader.osm.SeaGenerator.end(SeaGenerator.java:313)
         at 
uk.me.parabola.mkgmap.reader.osm.OsmReadingHooksChain.end(OsmReadingHooksChain.java:79)
         at 
uk.me.parabola.mkgmap.reader.osm.bin.OsmBinMapDataSource.load(OsmBinMapDataSource.java:68)
         at 
uk.me.parabola.mkgmap.main.MapMaker.loadFromFile(MapMaker.java:144)
         at uk.me.parabola.mkgmap.main.MapMaker.makeMap(MapMaker.java:56)
         at uk.me.parabola.mkgmap.main.Main$1.call(Main.java:210)
         at uk.me.parabola.mkgmap.main.Main$1.call(Main.java:207)
         at 
java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
         at java.util.concurrent.FutureTask.run(FutureTask.java:166)
         at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
         at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
         at java.lang.Thread.run(Thread.java:722)

Any hints?



More information about the mkgmap-dev mailing list