Ludwig wrote:
> I have no particular experience with the mkgmap application, but from 
> using cgpsmapper for making maps I know that using too large an area 
> will often fail.
>
> There is however a simple way of combining individually created 
> non-overlapping maps into a larger map, using a program called 
> gmaptool (http://www.anpo.republika.pl/download.html). It is a simple 
> command line application. I have used this successfully to combine 
> maps created from OSM data into a larger file.
>
> HTH
>
> Ludwig
>
> On 26/03/2008, *Rainer Rothkegel* <[EMAIL PROTECTED] 
> <mailto:[EMAIL PROTECTED]>> wrote:
>
>     I get a StackOverflow Exception when trying to create a Garmin map for
>     India.
>     I downloaded the India map data via
>     wget
>     
> http://www.informationfreeway.org/api/0.5/*[bbox=67.28027,5.35352,89.07715,33.39476]
>     
> <http://www.informationfreeway.org/api/0.5/*%5Bbbox=67.28027,5.35352,89.07715,33.39476%5D>
>     -O india-osmxapi.osm
>
>     This resulted in a 130M osm file.
>
>     Then I tried to convert it to a Garmin map file via
>     java -Xmx512M -jar /home/rainer/gps/osm/mkgmap/dist/mkgmap.jar
>     --gmapsupp --description="OSM India Map $(date)" india-osmxapi.osm
>
>     After a few minutes of processing, I got the following stack trace:
>
>     Exception in thread "main" java.lang.StackOverflowError
>             at java.util.ArrayList.toArray(ArrayList.java:306)
>             at java.util.logging.Logger.getHandlers(Logger.java:1214)
>             at
>     java.util.logging.LogManager$RootLogger.getHandlers(LogManager.java:995)
>             at java.util.logging.Logger.log(Logger.java:468)
>             at java.util.logging.Logger.doLog(Logger.java:494)
>             at java.util.logging.Logger.log(Logger.java:517)
>             at uk.me.parabola.log.Logger.arrayFormat(Logger.java:213)
>             at uk.me.parabola.log.Logger.warn(Logger.java:183)
>             at
>     uk.me.parabola.mkgmap.build.MapArea.pickArea(MapArea.java:503)
>             at uk.me.parabola.mkgmap.build.MapArea.split(MapArea.java:218)
>             at
>     
> uk.me.parabola.mkgmap.build.MapSplitter.addAreasToList(MapSplitter.java:111)
>             at
>     
> uk.me.parabola.mkgmap.build.MapSplitter.addAreasToList(MapSplitter.java:112)
>             at
>     
> uk.me.parabola.mkgmap.build.MapSplitter.addAreasToList(MapSplitter.java:112)
>     [last line repeated for zillions of times]
>
>
>     I checked out the source code and found that line 112 of
>     MapSplitter.java is the following recursion:
>     addAreasToList(sublist, alist);
>
>     I am currently running the mkgmap in debug mode using the default
>     logging properties (java
>     -Dlog.config=mkgmap/dist/resources/logging.properties ...) but
>     (probably  due to the high volume of data being logged) the
>     application
>     has run for more than 1 hour without terminating yet.
>
>     My question: Is this likely a data problem or a problem with mkgmap?
>     (Btw. creating a Garmin map file works fine if I process only the data
>     for south India.)
>
>     Thanks in advance,
>     Rainer
>
>
>     _______________________________________________
>     dev mailing list
>     [email protected] <mailto:[email protected]>
>     http://lists.openstreetmap.org/cgi-bin/mailman/listinfo/dev
>
>

It does not seem to be related to map size. I modified the log 
statements in mkgmap a bit to get a clearer picture. Here is the 
relevant portion of the log:

2008/04/06 11:09:05 INFO (MapSplitter): no split for area with size  0  
bounds (19.24926996231079,92.21398115158081) to 
(19.853453636169434,92.74720430374146)
2008/04/06 11:09:05 INFO (MapSplitter): splitting area with size  94269  
bounds (19.853453636169434,79.95034217834473) to 
(20.457615852355957,80.48354387283325)
2008/04/06 11:09:05 INFO (MapSplitter): splitting area with size  88725  
bounds (19.853453636169434,79.95034217834473) to 
(20.155534744262695,80.21693229675293)
2008/04/06 11:09:05 INFO (MapSplitter): splitting area with size  88725  
bounds (19.853453636169434,79.95034217834473) to 
(20.004494190216064,80.08363723754883)
2008/04/06 11:09:05 INFO (MapSplitter): splitting area with size  86016  
bounds (19.853453636169434,79.95034217834473) to 
(19.92896318435669,80.01698970794678)
2008/04/06 11:09:05 INFO (MapSplitter): splitting area with size  86016  
bounds (19.853453636169434,79.95034217834473) to 
(19.891197681427002,79.98366594314575)
2008/04/06 11:09:05 INFO (MapSplitter): splitting area with size  86016  
bounds (19.853453636169434,79.95034217834473) to 
(19.872314929962158,79.96699333190918)
2008/04/06 11:09:05 INFO (MapSplitter): splitting area with size  86016  
bounds (19.853453636169434,79.95034217834473) to 
(19.862873554229736,79.95866775512695)
2008/04/06 11:09:05 INFO (MapSplitter): splitting area with size  86016  
bounds (19.853453636169434,79.95034217834473) to 
(19.858152866363525,79.95450496673584)
2008/04/06 11:09:05 INFO (MapSplitter): splitting area with size  86016  
bounds (19.853453636169434,79.95034217834473) to 
(19.85579252243042,79.95242357254028)
2008/04/06 11:09:05 INFO (MapSplitter): splitting area with size  86016  
bounds (19.853453636169434,79.95034217834473) to 
(19.854612350463867,79.95137214660645)
2008/04/06 11:09:05 INFO (MapSplitter): splitting area with size  86016  
bounds (19.853453636169434,79.95034217834473) to 
(19.85403299331665,79.95085716247559)
2008/04/06 11:09:05 INFO (MapSplitter): splitting area with size  86016  
bounds (19.853453636169434,79.95034217834473) to 
(19.853732585906982,79.95059967041016)
2008/04/06 11:09:05 INFO (MapSplitter): splitting area with size  86016  
bounds (19.853453636169434,79.95034217834473) to 
(19.85358238220215,79.95047092437744)
2008/04/06 11:09:05 INFO (MapSplitter): splitting area with size  86016  
bounds (19.853453636169434,79.95034217834473) to 
(19.85351800918579,79.95040655136108)
2008/04/06 11:09:05 INFO (MapSplitter): splitting area with size  86016  
bounds (19.853453636169434,79.95034217834473) to 
(19.853475093841553,79.95036363601685)
2008/04/06 11:09:05 INFO (MapSplitter): splitting area with size  86016  
bounds (19.853453636169434,79.95034217834473) to 
(19.853475093841553,79.95036363601685)
2008/04/06 11:09:05 INFO (MapSplitter): splitting area with size  86016  
bounds (19.853453636169434,79.95034217834473) to 
(19.853475093841553,79.95036363601685)

If you look at the last 3 lines, you see that the bounds of the split 
area are identical to the bounds of the unsplit area. Obviously, this 
must result in stack overflow.

Cheers, Rainer


_______________________________________________
dev mailing list
[email protected]
http://lists.openstreetmap.org/cgi-bin/mailman/listinfo/dev

Reply via email to