logo separator

[mkgmap-dev] [PATCH] Garmin symbol 0x2e06 both gas station and shop?

From Marko Mäkelä marko.makela at iki.fi on Thu Mar 12 19:27:41 GMT 2009

On Thu, Mar 12, 2009 at 07:55:51PM +0100, Clinton Gladstone wrote:
> On Thu, Mar 12, 2009 at 9:43 AM, Marko Mäkelä <marko.makela at iki.fi> wrote:
> > When I experimented with mkgmap styles, I noticed that my Garmin Edge 705
> > displays the symbol 0x2e06 both in the "convenience store" ("Lähikauppa"
> > in Finnish) and "gas station" ("Huoltoasema") POI search menus.
> 
> When I check this on my eTrex, I get the convenience stores listed
> under "Fuel Services", and in sub-category "Convenience" (as opposed
> to "Auto Fuel"). As you note, the same convenience stores are listed
> under "Shopping" -> "Convenience".
> 
> Perhaps Garmin was thinking of "Human Fuel" when they added
> convenience stores to "Fuel Services" ;-)

Or perhaps Garmin has observed the trend that manned fuel stations have
evolved into supermarkets and restaurants that also happen to sell fuel,
but do not service cars any more?

I just tested these rules, which seem to work for me: shop=convenience
without amenity=fuel is mapped to 0x2e02, just like shop=supermarket, but
with amenity=fuel it is mapped to 0x2e06.  In JOSM, the node that I tagged
with both (but didn't send to the server) was displayed as a shopping cart
symbol.  The Garmin Edge 705 displays it as a fuel meter.

amenity=fuel & shop!=* [0x2f01 resolution 19]
amenity=fuel & shop!=convenience [0x2f01 resolution 19]
amenity=fuel & shop=convenience [ 0x2e06 resolution 19 ]
shop=convenience & amenity!=fuel [0x2e02 resolution 20]
shop=convenience & amenity!=* [0x2e02 resolution 20]

I would have written the rules as

amenity=fuel & !(shop=convenience) [0x2f01 resolution 19]
amenity=fuel & shop=convenience [ 0x2e06 resolution 19 ]
shop=convenience & !(amenity=fuel) [0x2e02 resolution 20]

but that lead to an exception:

Exception in thread "main" java.util.EmptyStackException
	at java.util.Stack.peek(Stack.java:85)
	at java.util.Stack.pop(Stack.java:67)
	at uk.me.parabola.mkgmap.osmstyle.eval.ExpressionReader.runOp(ExpressionReader.java:91)
	at uk.me.parabola.mkgmap.osmstyle.eval.ExpressionReader.saveOp(ExpressionReader.java:67)
	at uk.me.parabola.mkgmap.osmstyle.eval.ExpressionReader.readConditions(ExpressionReader.java:39)
	at uk.me.parabola.mkgmap.osmstyle.RuleFileReader.load(RuleFileReader.java:86)
	at uk.me.parabola.mkgmap.osmstyle.RuleFileReader.load(RuleFileReader.java:73)
	at uk.me.parabola.mkgmap.osmstyle.StyleImpl.readRules(StyleImpl.java:224)
...

You know, x!=a is not the same as !(x=a), because x!=a requires that the tag
is present.

> With regard to your patch, I would suggest you classify "Hardware" as
> 0x2e08. In North America at least, a Hardware store is generally
> considered the same as a DIY store. It is a place where you buy
> hammers and nails and picks and shovels and things like that. You have
> classed hardware as 0x2e09, which is "Home Furnishings"; I would not
> necessarily associate a hardware store with this category.

Thank you for noticing this.  It's a bit hard to know what is a hardware
or DIY store these days.  Actually, it might be useful to tag the shops
with larger selection (gardening, hardware, pottery, even some food items)
as shop=department_store instead of DIY or hardware stores, even though
traditional department stores have a somewhat larger selection and large
grocery departments.  I added shop=department_store [0x2e01] to my rules.

	Marko



More information about the mkgmap-dev mailing list