logo separator

[mkgmap-dev] [PATCH v5] - support for extended type attributes

From Mark Burton markb at ordern.com on Thu Aug 27 00:44:22 BST 2009

v5 - added support for facility (point type 0x010903) and also now
catches and reports exceptions incurred during processing of attributes.

A facility point can have a mkgmap:xt-facilities attribute which is a
bitmask made from these values:

    0x000001 boat ramp
    0x000002 drinking water
    0x000004 restrooms
    0x000008 picnic area
    0x000010 campground
    0x000020 marina
    0x000040 fuel
    0x000080 marine supply
    0x000100 bait and tackle
    0x000200 groceries
    0x000400 restaurant
    0x000800 water/electric hook-up
    0x001000 boat/motor rental
    0x002000 guide service
    0x004000 lodging
    0x008000 dump station
    0x010000 handicap accessible


v4 - no functional change, just reworked slightly to improve efficiency.

I've tested this stuff with noddy examples but as I don't expect anyone
is in a great rush to use it big time, we will have to wait to see what
issues emerge (from the deep?)

Anyway, as all of this code should have no effect on map elements
without extended types, I reckon it should be safe to commit. So unless
anyone has any problems with that, I shall commit it later this week
and then at least it's there for people to dabble with.

If you do try it out, please report results.


v3 - more tweaks to lights + lines & areas

"morse" light type now takes the morse letter to flash, e.g. "morse A"

lights can be tagged as having a "racon" (you'll have to google it like
I did!) by setting mkgmap:xt-racon to yes.

Depth areas (type 0x0103xx) can have the depth attribute and lines
0x010105 to 0x010107 (contour, overhead cable, bridge) can have height.

There is a new mkgmap:xt-style attribute that takes a 16 bit value.
The bottom 4 bits specify a colour and bits 8-14 specify a line
style. See the cgpsmapper manual for the supported colours and styles.

As an example, a value of 0x3004 means red line like this +++++++

This can be used on lines with types 0x0104xx, 0x0105xx and 0x0106xx.

You can also use the xt-style (colour part only) attribute on
points of type 0x010500 which are labels with coloured text. The point's
name tag is shown on the map in the colour you specify. Could be useful.

There's still a bit more that could be done on on the light
flash sequence encoding but as it's rather unlikely that anyone will
every want to use that, I'm not bothering for the moment.

So, the job is pretty much done. As usual, all feedback is welcome.


v2 - moving swiftly on.

Added support for lights and reworked a few things.

mkgmap:xt-foundation-colour is now just mkgmap:xt-colour

mkgmap:xt-light-colour has been replaced with mkgmap:xt-light (more on
this below)

mkgmap:xt-light-type is now just mkgmap:xt-type

Light colour, range (in nm) and angle is now specified with the
mkgmap:xt-light tag - the values are just separated with commas, and
only the colour is required for simple lights. All angles are in
degrees. So, for example:

mkgmap:xt-light=red (a red light)
mkgmap:xt-light=red,5 (... visible at up to 5 nm)
mkgmap:xt-light=red,5,172 (... sector starts at 172 degrees)

The sector start angle only makes sense if you have multiple lights
defined (separate light defs with one of /;:) - for example:


you can add a text note, international designator or local designator
to a buoy or light with:

mkgmap:xt-note=hello world

These show up in the POI properties window in mapsource.

There is also:

mkgmap:xt-height-above-foundation (a height)
mkgmap:xt-height-above-datum (a height)
mkgmap:xt-leading-angle (an angle)

you can now specify multiple period values to give a flash sequence
but, unfortunately, it only encodes 2 values at the moment, the
encoding for more than 2 values is yet to be discovered.

The full range of light colours is now supported:


So, lights, buoys, obstructions are now fairly well catered for so it's
probably time to look at lines and areas.


Yo Landlubbers,

Here's the first cut at encoding support for extended type attributes.

This is mostly concerned with marine entities like (wreck depths, buoy
types, light types, colours, etc.) As there is quite a lot of it and I
haven't sussed it all out yet, I thought it would make sense to post
patches as I go along so that people can try it out and find the
bugs sooner rather than later.

The attribute values are supplied as special tags with a mkgmap:xt-
prefix. So, for example, mkgmap:xt-depth=40.6m specifies the depth of
something (in metres).

This first tranche supports:

Point types 0x0102xx (buoys/beacons) can have:
  mkgmap:xt-foundation-colour (a colour name from list FC below)
  mkgmap:xt-light-colour (a colour name from list LC below)
  mkgmap:xt-light-type (a type name from list LT below)
  mkgmap:xt-period (optional period in secs (not limited to integer)

Point types 0x0103xx (entities with depth/height) and 0x0104xx
(obstructions) mkgmap:xt-depth (a depth with optional units (ft or m)
default is m) mkgmap:xt-height (alias for, and mutually exclusive to,
xt-depth) mkgmap:xt-position (an optional position from list P below)

These attributes are turned into a sequence of bytes that are embodied
in the map object. For testing purposes you can also specify those bytes
explicitly as a sequence of hex digits using the mkgmap:xt-extra-bytes
tag but you won't want to use that unless you are working on attribute
value encoding (like me!)

Next up will be lights which I understand how to encode except for
multiple lights and angles - still working on that.

Then will come lines and areas.

All feedback welcome.

BTW a good source of info is the cgpsmapper manual which is readily
available on the net. It has a chapter on marine types.


List FC

List LC

There is possibly some more light colours but I don't yet know how to
encode them so we should stick with these for the moment.

List LT
			"group flashing",
			"composite group flashing",
			"group occulting",
			"composite group occulting",
			"long flashing",
			"group long flashing",
			"group quick",
			"group quick and long flashing",
			"interrupted quick",
			"very quick",
			"group very quick",
			"group very quick and long flashing",
			"interrupted very quick",
			"ultra quick",
			"interrupted ultra quick",
			"fixed and occulting",
			"fixed and group occulting",
			"fixed and isophase",
			"fixed and flashing",
			"fixed and group flashing",
			"fixed and long flashing",
			"alternating occulting",
			"alternating flashing",
			"alternating group flashing"

The morse type takes a letter argument but I don't know how to encode
that yet.

 List P
			"existence doubtful",
-------------- next part --------------
A non-text attachment was scrubbed...
Name: mb-xtype-attributes-v5.patch
Type: text/x-patch
Size: 32721 bytes
Desc: not available
Url : http://lists.mkgmap.org.uk/pipermail/mkgmap-dev/attachments/20090827/44616d42/attachment.bin 

More information about the mkgmap-dev mailing list