The 'place_extra' table

"id" CHARACTER(4) PRIMARY KEY

The place id - cross-references with the main entry in place

"detail" TEXT

The "subtitle" text shown under the place name ("Croole Village half a mile to the north" for example)

"postcode" TEXT

The postal code for the place or empty

"changeline" BOOLEAN

Information on whether the towpath and/or lock direction changes here. It consists of 0, 1 or two characters
first is an optional towpath code:

T - toggle - it's a standard changeline
2 - the towpath becomes double here
r - it becomes right-hand-side (from none or double)
l - it becomes left-hand-side (from none or double)
0 - the towpath stops here
X - it changes sides without a bridge

followed by an optional 'L' to indicate that lock direction changes here

"graphic" TEXT DEFAULT (null)

Generated programatically - the index to the linear graphic (or graphics) for this place [see note on format below]

"spur" TEXT

Used to help calculate the linear graphic. Is one of none,left,right,none,tee optionally followed by ';bridged'. [see note on format below]

"roadname" TEXT

Roadname. With a leading '@' it overrides the geodata identification of the place

"roadnumber" TEXT

The official number of any road crossing or nearby

"misc" TEXT

Indices into place_misc table

"mouth" text

Additional text for where the end of a waterway is not a dead end (eg, "where it joins the North Sea" or "beyond which it is no longer navigable"

"navnote" INTEGER

Cross-reference into navigational_notes table

"access_JSON" TEXT

Information on access beyond the towpath

{access: "yes" or "no"         - is there access here
verified: "yes" or "no"        - is this calculated or checked by a human
show: "yes" or "no"            - do we show it
type: integer                  - index to access_types table
notes: text                    - human entered
}

"areas" TEXT

a list (with leading and trailing commas) of areas the place belongs to

"winding_JSON" TEXT

{restricted: yes/no,
 length: mm                     only valid if restricted
 relbridge: before/after
}

bridge_JSON

{under: boolean              // true if underbridge or small aqueduct
 crossing: index-number,
 missing: boolean,           // handles "site of"
 moveable {
   type: "lift" or "swing"
   operation: index-codes,
   left_open: true/false,
   passable: true/false,      typical boats can pass under the bridge without opening it
 },
 rel_lock: "before"/"after"
}

lock_JSON

{
  relbridge: after/over/before,              relative position of lock to bridge if both
  rise: text,                                 change in height
  multiple: n                                 defaults treated as '1'
}

Note on graphic and spur format

For both of these fields, for a place with two links it is a simple text field. When the place is a junction between waterways it consists of a JSON array with the index being the waterway ID and the value the the text string appropriate for the place in that context.