[mkgmap-dev] New style branch

2017-08-07 Thread Steve Ratcliffe

Hi

Every now and again, there is a bug report on a style rule that gives
an error when it shouldn't.  The most recent from Mike Baggaley,
included a case where the rule was accepted but the result was
incorrect.

I wrote a little program to generate random rules and test them using
the style tester.

This showed that there were many rules that should be accepted that
are not and worse there are cases where the wrong result is given.

Worst of all this simple rule:

   a>=1 & (a=1 | b~2) [0x2]

(and many others) crash mkgmap with a StackOverflowError.  I'm
surprised that no-one has found that.  Perhaps they have and it just
hasn't been reported.

An example of a rule that is accepted but doesn't work is:

   (a!=1 | b~2) & a<2 & a>=2 [0x2]

This matches (with trunk) with a way with tags a=2 and b=2
but it should not.

So not very complex rules fail.  There are also vast number of rules
that involve using not (!) such as !(highway=service & ...) that are
not accepted or do not work.  Probably not many styles have many such
rules though.

So I re-wrote and simplified the code and the result is
on the expr branch.

There is also a new feature that was needed to help make it
work.  There is now a not regex match operator !~.  It is
probably not all that useful but it is now availabl.

   name !~ 'Main.*'

is exactly the same as

   !(name ~ 'Main.*')


The latest branch build can be downloaded from:

   http://www.mkgmap.org.uk/download/mkgmap-expr-latest.zip

It is important to test it, as although I believe that the branch is
now correct, some styles may have been relying on previous bugs.

..Steve
___
mkgmap-dev mailing list
mkgmap-dev@lists.mkgmap.org.uk
http://www.mkgmap.org.uk/mailman/listinfo/mkgmap-dev


Re: [mkgmap-dev] Basecamp crashes with my map

2017-08-07 Thread thesurveyor

Hi Gerd,

 

thanks for your testing. I've no idea why it works on your side and on my side not. Maybe I have some sideeffects - I will setup a clean environment.

Currently I'm on a business trip till Thursday this week. I will send you the files when I'm back.

 

Regards,

Gert

 

 

 

Gesendet: Montag, 07. August 2017 um 09:13 Uhr
Von: "Gerd Petermann" 
An: "Development list for mkgmap" 
Betreff: Re: [mkgmap-dev] Basecamp crashes with my map

Hi Gert,

I was not yet able to reproduce the problem using Basecamp 4.6.2
Please post a link to the corresponding *.img and let me know the options that you use for mkgmap.

Gerd

Von: mkgmap-dev  im Auftrag von thesurve...@wolke7.net 
Gesendet: Montag, 7. August 2017 08:55:21
An: mkgmap-dev@lists.mkgmap.org.uk
Betreff: Re: [mkgmap-dev] Basecamp crashes with my map

Hi Gerd,

yes I did :-)

I have tested all those things on two different PCs (both Win10 64bit). Same behaviour on both.
To reproduce it just click into the area of the tile. To find the tile I have made a track around it. Sometimes even this is not necessary and Basecamp crashes without interaction directly after it has loaded the map - maybe 5sec later.

I have attached the osm-File and a track (kml-file) around it.

Regards
Gert


Gesendet: Montag, 07. August 2017 um 07:06 Uhr
Von: "Gerd Petermann" 
An: "Development list for mkgmap" 
Betreff: Re: [mkgmap-dev] Basecamp crashes with my map
Hi Gert,

one more hint: Basecamp crashes in a method "GetDemElevationFromMapCache", so it seems to try to read cached data which doesn't exist.
Did you try to clear the cache? (press Ctrl+G two times)

Gerd

Von: mkgmap-dev  im Auftrag von thesurve...@wolke7.net 
Gesendet: Sonntag, 6. August 2017 19:34:32
An: mkgmap-dev@lists.mkgmap.org.uk
Betreff: Re: [mkgmap-dev] Basecamp crashes with my map

Hi Gerd, Thomas,

I've changed my splitting to handle your hints. But it didn't help so far. Maybe I did something wrong. I will check again.

But I didn't noticed yesterday that the tile is empty. As said my tiles contain contourlines. And with my splitting I get some tiles which are empty. They are somewhere in the ocean. The original tile was larger and covered a part of the continent. So there would be some contourlines. But after my manual split I've got a tile which hasn't.

I have found some more tiles which make problems in my map. And all of them are empty or contain just contourlines with elevation=0 and elevation=0 is not rendered in my style.
Here one example in .osm-format (converted with osmosis from pbf to osm format)






I've made a cross check with a tile which contains just contourlines with elevation=0. I changed one line (way) to elevation=50 and now this tile runs fine in Basecamp.

Is it a known problem that Basecamp crashes with empty tiles or at least with empty "contourlines tiles"?
Does mkgmap report an error or warning if it builds an empty tile? I didn't see such messages.

Here the error message from Basecamp:
-
App: BaseCamp
At: 06.08.2017 18:46:48 (UTC1)
OS: Windows 10 (64-bit)
Processor: x86, Processor Level: 18, Processors:2, Model: 1 Stepping: 0, RAM: 7854824
MAP.GETDEMELEVATIONFROMMAPCACHE-1216-4.6.2.0
Es wurde versucht, im geschützten Speicher zu lesen oder zu schreiben. Dies ist häufig ein Hinweis darauf, dass anderer Speicher beschädigt ist.
bei map.GetDemElevationFromMapCache(Optional_t* , Position_t* , Product_t* , MapCache_t* )
bei bc.MainForm_t.HandleMapViewMouseMove(Object sender, MouseEventArgs e)
bei System.Windows.Forms.MouseEventHandler.Invoke(Object sender, MouseEventArgs e)
bei System.Windows.Forms.Control.OnMouseMove(MouseEventArgs e)
bei System.Windows.Forms.Control.WmMouseMove(Message& m)
bei System.Windows.Forms.Control.WndProc(Message& m)
bei System.Windows.Forms.ScrollableControl.WndProc(Message& m)
bei System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
bei System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
bei System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
bei System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
bei System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)
bei System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
bei System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
bei System.Windows.Forms.Application.Run(Form mainForm)
bei main(String[] 

Re: [mkgmap-dev] Basecamp crashes with my map

2017-08-07 Thread Gerd Petermann
Hi Gert,

I was not yet able to reproduce the problem using Basecamp 4.6.2
Please post a link to the corresponding *.img and let me know the options that 
you use for mkgmap.

Gerd

Von: mkgmap-dev  im Auftrag von 
thesurve...@wolke7.net 
Gesendet: Montag, 7. August 2017 08:55:21
An: mkgmap-dev@lists.mkgmap.org.uk
Betreff: Re: [mkgmap-dev] Basecamp crashes with my map

Hi Gerd,

yes I did :-)

I have tested all those things on two different PCs (both Win10 64bit). Same 
behaviour on both.
To reproduce it just click into the area of the tile. To find the tile I have 
made a track around it. Sometimes even this is not necessary and Basecamp 
crashes without interaction directly after it has loaded the map - maybe 5sec 
later.

I have attached the osm-File and a track (kml-file) around it.

Regards
Gert


Gesendet: Montag, 07. August 2017 um 07:06 Uhr
Von: "Gerd Petermann" 
An: "Development list for mkgmap" 
Betreff: Re: [mkgmap-dev] Basecamp crashes with my map
Hi Gert,

one more hint: Basecamp crashes in a method "GetDemElevationFromMapCache", so 
it seems to try to read cached data which doesn't exist.
Did you try to clear the cache? (press Ctrl+G two times)

Gerd

Von: mkgmap-dev  im Auftrag von 
thesurve...@wolke7.net 
Gesendet: Sonntag, 6. August 2017 19:34:32
An: mkgmap-dev@lists.mkgmap.org.uk
Betreff: Re: [mkgmap-dev] Basecamp crashes with my map

Hi Gerd, Thomas,

I've changed my splitting to handle your hints. But it didn't help so far. 
Maybe I did something wrong. I will check again.

But I didn't noticed yesterday that the tile is empty. As said my tiles contain 
contourlines. And with my splitting I get some tiles which are empty. They are 
somewhere in the ocean. The original tile was larger and covered a part of the 
continent. So there would be some contourlines. But after my manual split I've 
got a tile which hasn't.

I have found some more tiles which make problems in my map. And all of them are 
empty or contain just contourlines with elevation=0 and elevation=0 is not 
rendered in my style.
Here one example in .osm-format (converted with osmosis from pbf to osm format)






I've made a cross check with a tile which contains just contourlines with 
elevation=0. I changed one line (way) to elevation=50 and now this tile runs 
fine in Basecamp.

Is it a known problem that Basecamp crashes with empty tiles or at least with 
empty "contourlines tiles"?
Does mkgmap report an error or warning if it builds an empty tile? I didn't see 
such messages.

Here the error message from Basecamp:
-
App: BaseCamp
At: 06.08.2017 18:46:48 (UTC1)
OS: Windows 10 (64-bit)
Processor: x86, Processor Level: 18, Processors:2, Model: 1 Stepping: 0, RAM: 
7854824
MAP.GETDEMELEVATIONFROMMAPCACHE-1216-4.6.2.0
Es wurde versucht, im geschützten Speicher zu lesen oder zu schreiben. Dies ist 
häufig ein Hinweis darauf, dass anderer Speicher beschädigt ist.
bei map.GetDemElevationFromMapCache(Optional_t* , Position_t* , 
Product_t* , MapCache_t* )
bei bc.MainForm_t.HandleMapViewMouseMove(Object sender, MouseEventArgs e)
bei System.Windows.Forms.MouseEventHandler.Invoke(Object sender, MouseEventArgs 
e)
bei System.Windows.Forms.Control.OnMouseMove(MouseEventArgs e)
bei System.Windows.Forms.Control.WmMouseMove(Message& m)
bei System.Windows.Forms.Control.WndProc(Message& m)
bei System.Windows.Forms.ScrollableControl.WndProc(Message& m)
bei System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
bei System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
bei System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 
msg, IntPtr wparam, IntPtr lparam)
bei System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
bei 
System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr
 dwComponentID, Int32 reason, Int32 pvLoopData)
bei System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 
reason, ApplicationContext context)
bei System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, 
ApplicationContext context)
bei System.Windows.Forms.Application.Run(Form mainForm)
bei main(String[] aArgs)

Active Map Product:
oEurC
Version: 1.00

Installed Map Products:
Map Name: Globale Karte (Garmin Product)
Map Id: 133758977
Map Version: 2.0
Map Type: Bundle
Custom Drawn Map: No
Digital Elevation Model: No
Map Name: oEurC
Map Id: 458817537
Map Version: 1.0
Map Type: Legacy
Custom Drawn Map: Yes
Digital Elevation Model: Yes

.NET Versions:
.NET FW 1.0 not installed.
.NET FW 1.1 not installed.
.NET FW 2.0 not installed.
.NET FW 3.0 not installed.
.NET FW 3.5 not installed.
OpenGL 

Re: [mkgmap-dev] Basecamp crashes with my map

2017-08-07 Thread thesurveyor

Hi Gerd,

 

yes I did :-)

 

I have tested all those things on two different PCs (both Win10 64bit). Same behaviour on both.

To reproduce it just click into the area of the tile. To find the tile I have made a track around it. Sometimes even this is not necessary and Basecamp crashes without interaction directly after it has loaded the map - maybe 5sec later.

 

I have attached the osm-File and a track (kml-file) around it.

 

Regards

Gert

 

 

Gesendet: Montag, 07. August 2017 um 07:06 Uhr
Von: "Gerd Petermann" 
An: "Development list for mkgmap" 
Betreff: Re: [mkgmap-dev] Basecamp crashes with my map

Hi Gert,

one more hint: Basecamp crashes in a method "GetDemElevationFromMapCache", so it seems to try to read cached data which doesn't exist.
Did you try to clear the cache? (press Ctrl+G two times)

Gerd

Von: mkgmap-dev  im Auftrag von thesurve...@wolke7.net 
Gesendet: Sonntag, 6. August 2017 19:34:32
An: mkgmap-dev@lists.mkgmap.org.uk
Betreff: Re: [mkgmap-dev] Basecamp crashes with my map

Hi Gerd, Thomas,

I've changed my splitting to handle your hints. But it didn't help so far. Maybe I did something wrong. I will check again.

But I didn't noticed yesterday that the tile is empty. As said my tiles contain contourlines. And with my splitting I get some tiles which are empty. They are somewhere in the ocean. The original tile was larger and covered a part of the continent. So there would be some contourlines. But after my manual split I've got a tile which hasn't.

I have found some more tiles which make problems in my map. And all of them are empty or contain just contourlines with elevation=0 and elevation=0 is not rendered in my style.
Here one example in .osm-format (converted with osmosis from pbf to osm format)






I've made a cross check with a tile which contains just contourlines with elevation=0. I changed one line (way) to elevation=50 and now this tile runs fine in Basecamp.

Is it a known problem that Basecamp crashes with empty tiles or at least with empty "contourlines tiles"?
Does mkgmap report an error or warning if it builds an empty tile? I didn't see such messages.

Here the error message from Basecamp:
-
App: BaseCamp
At: 06.08.2017 18:46:48 (UTC1)
OS: Windows 10 (64-bit)
Processor: x86, Processor Level: 18, Processors:2, Model: 1 Stepping: 0, RAM: 7854824
MAP.GETDEMELEVATIONFROMMAPCACHE-1216-4.6.2.0
Es wurde versucht, im geschützten Speicher zu lesen oder zu schreiben. Dies ist häufig ein Hinweis darauf, dass anderer Speicher beschädigt ist.
bei map.GetDemElevationFromMapCache(Optional_t* , Position_t* , Product_t* , MapCache_t* )
bei bc.MainForm_t.HandleMapViewMouseMove(Object sender, MouseEventArgs e)
bei System.Windows.Forms.MouseEventHandler.Invoke(Object sender, MouseEventArgs e)
bei System.Windows.Forms.Control.OnMouseMove(MouseEventArgs e)
bei System.Windows.Forms.Control.WmMouseMove(Message& m)
bei System.Windows.Forms.Control.WndProc(Message& m)
bei System.Windows.Forms.ScrollableControl.WndProc(Message& m)
bei System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
bei System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
bei System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
bei System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
bei System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)
bei System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
bei System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
bei System.Windows.Forms.Application.Run(Form mainForm)
bei main(String[] aArgs)

Active Map Product:
oEurC
Version: 1.00

Installed Map Products:
Map Name: Globale Karte (Garmin Product)
Map Id: 133758977
Map Version: 2.0
Map Type: Bundle
Custom Drawn Map: No
Digital Elevation Model: No
Map Name: oEurC
Map Id: 458817537
Map Version: 1.0
Map Type: Legacy
Custom Drawn Map: Yes
Digital Elevation Model: Yes

.NET Versions:
.NET FW 1.0 not installed.
.NET FW 1.1 not installed.
.NET FW 2.0 not installed.
.NET FW 3.0 not installed.
.NET FW 3.5 not installed.
OpenGL Version 2.1
-

Regards
Gert




Gesendet: Samstag, 05. August 2017 um 21:09 Uhr
Von: "Gerd Petermann" 
An: "Development list for mkgmap" 
Betreff: Re: [mkgmap-dev] Basecamp crashes with my map
Hi Gert,

normally splitter uses Garmin units, the log shows e.g.
Map is being split for resolution 13:
- area boundaries are aligned to 0x800 map units (0.0439453125 degrees)
- areas