// Auto-generated from IHO S-57 Object Catalogue
// Total object classes: 172
export interface S57ObjectClassDefinition {
code: number;
acronym: string;
description: string;
primitives: ('Point' | 'Line' | 'Area')[];
}
export const S57_OBJECT_CATALOGUE: Record<string, S57ObjectClassDefinition> = {
ADMARE: {
code: 1,
acronym: 'ADMARE',
description: 'Administration area (Named)',
primitives: ['Area'],
},
AIRARE: {
code: 2,
acronym: 'AIRARE',
description: 'Airport / airfield',
primitives: ['Point', 'Area'],
},
ACHBRT: {
code: 3,
acronym: 'ACHBRT',
description: 'Anchor berth',
primitives: ['Point', 'Area'],
},
ACHARE: {
code: 4,
acronym: 'ACHARE',
description: 'Anchorage area',
primitives: ['Point', 'Area'],
},
BCNCAR: {
code: 5,
acronym: 'BCNCAR',
description: 'Beacon, cardinal',
primitives: ['Point'],
},
BCNISD: {
code: 6,
acronym: 'BCNISD',
description: 'Beacon, isolated danger',
primitives: ['Point'],
},
BCNLAT: {
code: 7,
acronym: 'BCNLAT',
description: 'Beacon, lateral',
primitives: ['Point'],
},
BCNSAW: {
code: 8,
acronym: 'BCNSAW',
description: 'Beacon, safe water',
primitives: ['Point'],
},
BCNSPP: {
code: 9,
acronym: 'BCNSPP',
description: 'Beacon, special purpose/general',
primitives: ['Point'],
},
BERTHS: {
code: 10,
acronym: 'BERTHS',
description: 'Berth',
primitives: ['Point', 'Line', 'Area'],
},
BRIDGE: {
code: 11,
acronym: 'BRIDGE',
description: 'Bridge',
primitives: ['Point', 'Line', 'Area'],
},
BUISGL: {
code: 12,
acronym: 'BUISGL',
description: 'Building, single',
primitives: ['Point', 'Area'],
},
BUAARE: {
code: 13,
acronym: 'BUAARE',
description: 'Built-up area',
primitives: ['Point', 'Area'],
},
BOYCAR: {
code: 14,
acronym: 'BOYCAR',
description: 'Buoy, cardinal',
primitives: ['Point'],
},
BOYINB: {
code: 15,
acronym: 'BOYINB',
description: 'Buoy, installation',
primitives: ['Point'],
},
BOYISD: {
code: 16,
acronym: 'BOYISD',
description: 'Buoy, isolated danger',
primitives: ['Point'],
},
BOYLAT: {
code: 17,
acronym: 'BOYLAT',
description: 'Buoy, lateral',
primitives: ['Point'],
},
BOYSAW: {
code: 18,
acronym: 'BOYSAW',
description: 'Buoy, safe water',
primitives: ['Point'],
},
BOYSPP: {
code: 19,
acronym: 'BOYSPP',
description: 'Buoy, special purpose/general',
primitives: ['Point'],
},
CBLARE: {
code: 20,
acronym: 'CBLARE',
description: 'Cable area',
primitives: ['Area'],
},
CBLOHD: {
code: 21,
acronym: 'CBLOHD',
description: 'Cable, overhead',
primitives: ['Line'],
},
CBLSUB: {
code: 22,
acronym: 'CBLSUB',
description: 'Cable, submarine',
primitives: ['Line'],
},
CANALS: {
code: 23,
acronym: 'CANALS',
description: 'Canal',
primitives: ['Line', 'Area'],
},
CANBNK: {
code: 24,
acronym: 'CANBNK',
description: 'Canal bank',
primitives: ['Line', 'Area'],
},
CTSARE: {
code: 25,
acronym: 'CTSARE',
description: 'Cargo transshipment area',
primitives: ['Point', 'Area'],
},
CAUSWY: {
code: 26,
acronym: 'CAUSWY',
description: 'Causeway',
primitives: ['Line', 'Area'],
},
CTNARE: {
code: 27,
acronym: 'CTNARE',
description: 'Caution area',
primitives: ['Point', 'Area'],
},
CHKPNT: {
code: 28,
acronym: 'CHKPNT',
description: 'Checkpoint',
primitives: ['Point', 'Area'],
},
CGUSTA: {
code: 29,
acronym: 'CGUSTA',
description: 'Coastguard station',
primitives: ['Point'],
},
COALNE: {
code: 30,
acronym: 'COALNE',
description: 'Coastline',
primitives: ['Line'],
},
CONZNE: {
code: 31,
acronym: 'CONZNE',
description: 'Contiguous zone',
primitives: ['Area'],
},
COSARE: {
code: 32,
acronym: 'COSARE',
description: 'Continental shelf area',
primitives: ['Area'],
},
CTRPNT: {
code: 33,
acronym: 'CTRPNT',
description: 'Control point',
primitives: ['Point'],
},
CONVYR: {
code: 34,
acronym: 'CONVYR',
description: 'Conveyor',
primitives: ['Line', 'Area'],
},
CRANES: {
code: 35,
acronym: 'CRANES',
description: 'Crane',
primitives: ['Point', 'Area'],
},
CURENT: {
code: 36,
acronym: 'CURENT',
description: 'Current - non - gravitational',
primitives: ['Point'],
},
CUSZNE: {
code: 37,
acronym: 'CUSZNE',
description: 'Custom zone',
primitives: ['Area'],
},
DAMCON: {
code: 38,
acronym: 'DAMCON',
description: 'Dam',
primitives: ['Point', 'Line', 'Area'],
},
DAYMAR: {
code: 39,
acronym: 'DAYMAR',
description: 'Daymark',
primitives: ['Point'],
},
DWRTCL: {
code: 40,
acronym: 'DWRTCL',
description: 'Deep water route centerline',
primitives: ['Line'],
},
DWRTPT: {
code: 41,
acronym: 'DWRTPT',
description: 'Deep water route part',
primitives: ['Area'],
},
DEPARE: {
code: 42,
acronym: 'DEPARE',
description: 'Depth area',
primitives: ['Line', 'Area'],
},
DEPCNT: {
code: 43,
acronym: 'DEPCNT',
description: 'Depth contour',
primitives: ['Line'],
},
DISMAR: {
code: 44,
acronym: 'DISMAR',
description: 'Distance mark',
primitives: ['Point'],
},
DOCARE: {
code: 45,
acronym: 'DOCARE',
description: 'Dock area',
primitives: ['Area'],
},
DRGARE: {
code: 46,
acronym: 'DRGARE',
description: 'Dredged area',
primitives: ['Area'],
},
DRYDOC: {
code: 47,
acronym: 'DRYDOC',
description: 'Dry dock',
primitives: ['Area'],
},
DMPGRD: {
code: 48,
acronym: 'DMPGRD',
description: 'Dumping ground',
primitives: ['Point', 'Area'],
},
DYKCON: {
code: 49,
acronym: 'DYKCON',
description: 'Dyke',
primitives: ['Line', 'Area'],
},
EXEZNE: {
code: 50,
acronym: 'EXEZNE',
description: 'Exclusive Economic Zone',
primitives: ['Area'],
},
FAIRWY: {
code: 51,
acronym: 'FAIRWY',
description: 'Fairway',
primitives: ['Area'],
},
FNCLNE: {
code: 52,
acronym: 'FNCLNE',
description: 'Fence/wall',
primitives: ['Line'],
},
FERYRT: {
code: 53,
acronym: 'FERYRT',
description: 'Ferry route',
primitives: ['Line', 'Area'],
},
FSHZNE: {
code: 54,
acronym: 'FSHZNE',
description: 'Fishery zone',
primitives: ['Area'],
},
FSHFAC: {
code: 55,
acronym: 'FSHFAC',
description: 'Fishing facility',
primitives: ['Point', 'Line', 'Area'],
},
FSHGRD: {
code: 56,
acronym: 'FSHGRD',
description: 'Fishing ground',
primitives: ['Area'],
},
FLODOC: {
code: 57,
acronym: 'FLODOC',
description: 'Floating dock',
primitives: ['Line', 'Area'],
},
FOGSIG: {
code: 58,
acronym: 'FOGSIG',
description: 'Fog signal',
primitives: ['Point'],
},
FORSTC: {
code: 59,
acronym: 'FORSTC',
description: 'Fortified structure',
primitives: ['Point', 'Line', 'Area'],
},
FRPARE: {
code: 60,
acronym: 'FRPARE',
description: 'Free port area',
primitives: ['Area'],
},
GATCON: {
code: 61,
acronym: 'GATCON',
description: 'Gate',
primitives: ['Point', 'Line', 'Area'],
},
GRIDRN: {
code: 62,
acronym: 'GRIDRN',
description: 'Gridiron',
primitives: ['Point', 'Area'],
},
HRBARE: {
code: 63,
acronym: 'HRBARE',
description: 'Harbour area (administrative)',
primitives: ['Area'],
},
HRBFAC: {
code: 64,
acronym: 'HRBFAC',
description: 'Harbour facility',
primitives: ['Point', 'Area'],
},
HULKES: {
code: 65,
acronym: 'HULKES',
description: 'Hulk',
primitives: ['Point', 'Area'],
},
ICEARE: {
code: 66,
acronym: 'ICEARE',
description: 'Ice area',
primitives: ['Area'],
},
ICNARE: {
code: 67,
acronym: 'ICNARE',
description: 'Incineration area',
primitives: ['Point', 'Area'],
},
ISTZNE: {
code: 68,
acronym: 'ISTZNE',
description: 'Inshore traffic zone',
primitives: ['Area'],
},
LAKARE: {
code: 69,
acronym: 'LAKARE',
description: 'Lake',
primitives: ['Area'],
},
LAKSHR: {
code: 70,
acronym: 'LAKSHR',
description: 'Lake shore',
primitives: ['Line', 'Area'],
},
LNDARE: {
code: 71,
acronym: 'LNDARE',
description: 'Land area',
primitives: ['Point', 'Line', 'Area'],
},
LNDELV: {
code: 72,
acronym: 'LNDELV',
description: 'Land elevation',
primitives: ['Point', 'Line'],
},
LNDRGN: {
code: 73,
acronym: 'LNDRGN',
description: 'Land region',
primitives: ['Point', 'Area'],
},
LNDMRK: {
code: 74,
acronym: 'LNDMRK',
description: 'Landmark',
primitives: ['Point', 'Line', 'Area'],
},
LIGHTS: {
code: 75,
acronym: 'LIGHTS',
description: 'Light',
primitives: ['Point'],
},
LITFLT: {
code: 76,
acronym: 'LITFLT',
description: 'Light float',
primitives: ['Point'],
},
LITVES: {
code: 77,
acronym: 'LITVES',
description: 'Light vessel',
primitives: ['Point'],
},
LOCMAG: {
code: 78,
acronym: 'LOCMAG',
description: 'Local magnetic anomaly',
primitives: ['Point', 'Line', 'Area'],
},
LOKBSN: {
code: 79,
acronym: 'LOKBSN',
description: 'Lock basin',
primitives: ['Area'],
},
LOGPON: {
code: 80,
acronym: 'LOGPON',
description: 'Log pond',
primitives: ['Point', 'Area'],
},
MAGVAR: {
code: 81,
acronym: 'MAGVAR',
description: 'Magnetic variation',
primitives: ['Point', 'Line', 'Area'],
},
MARCUL: {
code: 82,
acronym: 'MARCUL',
description: 'Marine farm/culture',
primitives: ['Point', 'Line', 'Area'],
},
MIPARE: {
code: 83,
acronym: 'MIPARE',
description: 'Military practice area',
primitives: ['Point', 'Area'],
},
MORFAC: {
code: 84,
acronym: 'MORFAC',
description: 'Mooring/warping facility',
primitives: ['Point', 'Line', 'Area'],
},
NAVLNE: {
code: 85,
acronym: 'NAVLNE',
description: 'Navigation line',
primitives: ['Line'],
},
OBSTRN: {
code: 86,
acronym: 'OBSTRN',
description: 'Obstruction',
primitives: ['Point', 'Line', 'Area'],
},
OFSPLF: {
code: 87,
acronym: 'OFSPLF',
description: 'Offshore platform',
primitives: ['Point', 'Area'],
},
OSPARE: {
code: 88,
acronym: 'OSPARE',
description: 'Offshore production area',
primitives: ['Area'],
},
OILBAR: {
code: 89,
acronym: 'OILBAR',
description: 'Oil barrier',
primitives: ['Line'],
},
PILPNT: {
code: 90,
acronym: 'PILPNT',
description: 'Pile',
primitives: ['Point'],
},
PILBOP: {
code: 91,
acronym: 'PILBOP',
description: 'Pilot boarding place',
primitives: ['Point', 'Area'],
},
PIPARE: {
code: 92,
acronym: 'PIPARE',
description: 'Pipeline area',
primitives: ['Point', 'Area'],
},
PIPOHD: {
code: 93,
acronym: 'PIPOHD',
description: 'Pipeline, overhead',
primitives: ['Line'],
},
PIPSOL: {
code: 94,
acronym: 'PIPSOL',
description: 'Pipeline, submarine/on land',
primitives: ['Point', 'Line'],
},
PONTON: {
code: 95,
acronym: 'PONTON',
description: 'Pontoon',
primitives: ['Line', 'Area'],
},
PRCARE: {
code: 96,
acronym: 'PRCARE',
description: 'Precautionary area',
primitives: ['Point', 'Area'],
},
PRDARE: {
code: 97,
acronym: 'PRDARE',
description: 'Production / storage area',
primitives: ['Point', 'Area'],
},
PYLONS: {
code: 98,
acronym: 'PYLONS',
description: 'Pylon/bridge support',
primitives: ['Point', 'Area'],
},
RADLNE: {
code: 99,
acronym: 'RADLNE',
description: 'Radar line',
primitives: ['Line'],
},
RADRNG: {
code: 100,
acronym: 'RADRNG',
description: 'Radar range',
primitives: ['Area'],
},
RADRFL: {
code: 101,
acronym: 'RADRFL',
description: 'Radar reflector',
primitives: ['Point'],
},
RADSTA: {
code: 102,
acronym: 'RADSTA',
description: 'Radar station',
primitives: ['Point'],
},
RTPBCN: {
code: 103,
acronym: 'RTPBCN',
description: 'Radar transponder beacon',
primitives: ['Point'],
},
RDOCAL: {
code: 104,
acronym: 'RDOCAL',
description: 'Radio calling-in point',
primitives: ['Point', 'Line'],
},
RDOSTA: {
code: 105,
acronym: 'RDOSTA',
description: 'Radio station',
primitives: ['Point'],
},
RAILWY: {
code: 106,
acronym: 'RAILWY',
description: 'Railway',
primitives: ['Line'],
},
RAPIDS: {
code: 107,
acronym: 'RAPIDS',
description: 'Rapids',
primitives: ['Point', 'Line', 'Area'],
},
RCRTCL: {
code: 108,
acronym: 'RCRTCL',
description: 'Recommended route centerline',
primitives: ['Line'],
},
RECTRC: {
code: 109,
acronym: 'RECTRC',
description: 'Recommended track',
primitives: ['Line', 'Area'],
},
RCTLPT: {
code: 110,
acronym: 'RCTLPT',
description: 'Recommended Traffic Lane Part',
primitives: ['Point', 'Area'],
},
RSCSTA: {
code: 111,
acronym: 'RSCSTA',
description: 'Rescue station',
primitives: ['Point'],
},
RESARE: {
code: 112,
acronym: 'RESARE',
description: 'Restricted area',
primitives: ['Area'],
},
RETRFL: {
code: 113,
acronym: 'RETRFL',
description: 'Retro-reflector',
primitives: ['Point'],
},
RIVERS: {
code: 114,
acronym: 'RIVERS',
description: 'River',
primitives: ['Line', 'Area'],
},
RIVBNK: {
code: 115,
acronym: 'RIVBNK',
description: 'River bank',
primitives: ['Line', 'Area'],
},
ROADWY: {
code: 116,
acronym: 'ROADWY',
description: 'Road',
primitives: ['Point', 'Line', 'Area'],
},
RUNWAY: {
code: 117,
acronym: 'RUNWAY',
description: 'Runway',
primitives: ['Point', 'Line', 'Area'],
},
SNDWAV: {
code: 118,
acronym: 'SNDWAV',
description: 'Sand waves',
primitives: ['Point', 'Line', 'Area'],
},
SEAARE: {
code: 119,
acronym: 'SEAARE',
description: 'Sea area / named water area',
primitives: ['Point', 'Area'],
},
SPLARE: {
code: 120,
acronym: 'SPLARE',
description: 'Sea-plane landing area',
primitives: ['Point', 'Area'],
},
SBDARE: {
code: 121,
acronym: 'SBDARE',
description: 'Seabed area',
primitives: ['Point', 'Line', 'Area'],
},
SLCONS: {
code: 122,
acronym: 'SLCONS',
description: 'Shoreline Construction',
primitives: ['Point', 'Line', 'Area'],
},
SISTAT: {
code: 123,
acronym: 'SISTAT',
description: 'Signal station, traffic',
primitives: ['Point'],
},
SISTAW: {
code: 124,
acronym: 'SISTAW',
description: 'Signal station, warning',
primitives: ['Point'],
},
SILTNK: {
code: 125,
acronym: 'SILTNK',
description: 'Silo / tank',
primitives: ['Point', 'Area'],
},
SLOTOP: {
code: 126,
acronym: 'SLOTOP',
description: 'Slope topline',
primitives: ['Line'],
},
SLOGRD: {
code: 127,
acronym: 'SLOGRD',
description: 'Sloping ground',
primitives: ['Point', 'Area'],
},
SMCFAC: {
code: 128,
acronym: 'SMCFAC',
description: 'Small craft facility',
primitives: ['Point', 'Area'],
},
SOUNDG: {
code: 129,
acronym: 'SOUNDG',
description: 'Sounding',
primitives: ['Point'],
},
SPRING: {
code: 130,
acronym: 'SPRING',
description: 'Spring',
primitives: ['Point'],
},
SQUARE: {
code: 131,
acronym: 'SQUARE',
description: 'Square',
primitives: ['Point', 'Line', 'Area'],
},
STSLNE: {
code: 132,
acronym: 'STSLNE',
description: 'Straight territorial sea baseline',
primitives: ['Line'],
},
SUBTLN: {
code: 133,
acronym: 'SUBTLN',
description: 'Submarine transit lane',
primitives: ['Area'],
},
SWPARE: {
code: 134,
acronym: 'SWPARE',
description: 'Swept Area',
primitives: ['Area'],
},
TESARE: {
code: 135,
acronym: 'TESARE',
description: 'Territorial sea area',
primitives: ['Area'],
},
TS_PRH: {
code: 136,
acronym: 'TS_PRH',
description: 'Tidal stream - harmonic prediction',
primitives: ['Point', 'Area'],
},
TS_PNH: {
code: 137,
acronym: 'TS_PNH',
description: 'Tidal stream - non-harmonic prediction',
primitives: ['Point', 'Area'],
},
TS_PAD: {
code: 138,
acronym: 'TS_PAD',
description: 'Tidal stream panel data',
primitives: ['Point', 'Area'],
},
TS_TIS: {
code: 139,
acronym: 'TS_TIS',
description: 'Tidal stream - time series',
primitives: ['Point', 'Area'],
},
T_HMON: {
code: 140,
acronym: 'T_HMON',
description: 'Tide - harmonic prediction',
primitives: ['Point', 'Area'],
},
T_NHMN: {
code: 141,
acronym: 'T_NHMN',
description: 'Tide - non-harmonic prediction',
primitives: ['Point', 'Area'],
},
T_TIMS: {
code: 142,
acronym: 'T_TIMS',
description: 'Tidal stream - time series',
primitives: ['Point', 'Area'],
},
TIDEWY: {
code: 143,
acronym: 'TIDEWY',
description: 'Tideway',
primitives: ['Line', 'Area'],
},
TOPMAR: {
code: 144,
acronym: 'TOPMAR',
description: 'Topmark',
primitives: ['Point'],
},
TSELNE: {
code: 145,
acronym: 'TSELNE',
description: 'Traffic Separation Line',
primitives: ['Line'],
},
TSSBND: {
code: 146,
acronym: 'TSSBND',
description: 'Traffic Separation Scheme Boundary',
primitives: ['Line'],
},
TSSCRS: {
code: 147,
acronym: 'TSSCRS',
description: 'Traffic Separation Scheme Crossing',
primitives: ['Area'],
},
TSSLPT: {
code: 148,
acronym: 'TSSLPT',
description: 'Traffic Separation Scheme Lane part',
primitives: ['Area'],
},
TSSRON: {
code: 149,
acronym: 'TSSRON',
description: 'Traffic Separation Scheme Roundabout',
primitives: ['Area'],
},
TSEZNE: {
code: 150,
acronym: 'TSEZNE',
description: 'Traffic Separation Zone',
primitives: ['Area'],
},
TUNNEL: {
code: 151,
acronym: 'TUNNEL',
description: 'Tunnel',
primitives: ['Point', 'Line', 'Area'],
},
TWRTPT: {
code: 152,
acronym: 'TWRTPT',
description: 'Two-way route part',
primitives: ['Area'],
},
UWTROC: {
code: 153,
acronym: 'UWTROC',
description: 'Underwater rock / awash rock',
primitives: ['Point'],
},
VEGATN: {
code: 155,
acronym: 'VEGATN',
description: 'Vegetation',
primitives: ['Point', 'Line', 'Area'],
},
WATTUR: {
code: 156,
acronym: 'WATTUR',
description: 'Water turbulence',
primitives: ['Point', 'Line', 'Area'],
},
WATFAL: {
code: 157,
acronym: 'WATFAL',
description: 'Waterfall',
primitives: ['Point', 'Line'],
},
WEDKLP: {
code: 158,
acronym: 'WEDKLP',
description: 'Weed/Kelp',
primitives: ['Point', 'Area'],
},
WRECKS: {
code: 159,
acronym: 'WRECKS',
description: 'Wreck',
primitives: ['Point', 'Area'],
},
TS_FEB: {
code: 160,
acronym: 'TS_FEB',
description: 'Tidal stream - flood/ebb',
primitives: ['Point', 'Area'],
},
NEWOBJ: {
code: 163,
acronym: 'NEWOBJ',
description: 'New Object',
primitives: ['Point', 'Line', 'Area'],
},
M_ACCY: {
code: 300,
acronym: 'M_ACCY',
description: 'Accuracy of data',
primitives: ['Area'],
},
M_CSCL: {
code: 301,
acronym: 'M_CSCL',
description: 'Compilation scale of data',
primitives: ['Area'],
},
M_COVR: {
code: 302,
acronym: 'M_COVR',
description: 'Coverage',
primitives: ['Area'],
},
M_HDAT: {
code: 303,
acronym: 'M_HDAT',
description: 'Horizontal datum of data',
primitives: ['Area'],
},
M_HOPA: {
code: 304,
acronym: 'M_HOPA',
description: 'Horizontal datum shift parameters',
primitives: ['Area'],
},
M_NSYS: {
code: 306,
acronym: 'M_NSYS',
description: 'Navigational system of marks',
primitives: ['Area'],
},
M_PROD: {
code: 307,
acronym: 'M_PROD',
description: 'Production information',
primitives: ['Area'],
},
M_QUAL: {
code: 308,
acronym: 'M_QUAL',
description: 'Quality of data',
primitives: ['Area'],
},
M_SDAT: {
code: 309,
acronym: 'M_SDAT',
description: 'Sounding datum',
primitives: ['Area'],
},
M_SREL: {
code: 310,
acronym: 'M_SREL',
description: 'Survey reliability',
primitives: ['Area'],
},
M_UNIT: {
code: 311,
acronym: 'M_UNIT',
description: 'Units of measurement of data',
primitives: ['Area'],
},
M_VDAT: {
code: 312,
acronym: 'M_VDAT',
description: 'Vertical datum of data',
primitives: ['Area'],
},
};
export const FEATURE_CATEGORIES = {
navAids: ['BCNCAR', 'BCNISD', 'BCNLAT', 'BCNSAW', 'BCNSPP', 'BOYCAR', 'BOYINB', 'BOYISD', 'BOYLAT', 'BOYSAW', 'BOYSPP', 'DAYMAR', 'FOGSIG', 'LIGHTS', 'LITFLT', 'LITVES', 'RADLNE', 'RADRNG', 'RADRFL', 'RADSTA', 'RTPBCN', 'RETRFL', 'TOPMAR'],
depths: ['DEPARE', 'DEPCNT', 'DRGARE', 'SOUNDG', 'UWTROC', 'M_SDAT'],
areas: ['ADMARE', 'ACHARE', 'BUAARE', 'CBLARE', 'CTSARE', 'CTNARE', 'CONZNE', 'COSARE', 'CUSZNE', 'DOCARE', 'EXEZNE', 'FSHZNE', 'FRPARE', 'HRBARE', 'ICEARE', 'ICNARE', 'ISTZNE', 'LNDARE', 'LNDRGN', 'MIPARE', 'OSPARE', 'PIPARE', 'PRCARE', 'PRDARE', 'RESARE', 'SEAARE', 'SPLARE', 'SBDARE', 'SWPARE', 'TESARE', 'TSEZNE'],
infrastructure: ['ACHBRT', 'BERTHS', 'BRIDGE', 'BUISGL', 'CBLOHD', 'CBLSUB', 'CRANES', 'DRYDOC', 'FLODOC', 'HRBFAC', 'MORFAC', 'OFSPLF', 'PILPNT', 'PIPOHD', 'PIPSOL', 'PONTON', 'PYLONS', 'M_PROD'],
natural: ['CGUSTA', 'COALNE', 'DWRTCL', 'DWRTPT', 'LAKARE', 'LAKSHR', 'LNDELV', 'LNDMRK', 'RIVERS', 'RIVBNK', 'SLCONS', 'STSLNE', 'T_HMON', 'T_NHMN', 'TIDEWY', 'VEGATN', 'WATTUR', 'WATFAL'],
administrative: ['TSSBND'],
hazards: ['OBSTRN', 'WRECKS'],
traffic: ['FAIRWY', 'FERYRT', 'RCRTCL', 'RECTRC', 'RCTLPT', 'SISTAT', 'SUBTLN', 'TSELNE', 'TSSCRS', 'TSSLPT', 'TSSRON', 'TWRTPT'],
services: ['PILBOP', 'RDOCAL', 'RDOSTA', 'RSCSTA', 'SISTAW'],
other: ['AIRARE', 'CANALS', 'CANBNK', 'CAUSWY', 'CHKPNT', 'CTRPNT', 'CONVYR', 'CURENT', 'DAMCON', 'DISMAR', 'DMPGRD', 'DYKCON', 'FNCLNE', 'FSHFAC', 'FSHGRD', 'FORSTC', 'GATCON', 'GRIDRN', 'HULKES', 'LOCMAG', 'LOKBSN', 'LOGPON', 'MAGVAR', 'MARCUL', 'NAVLNE', 'OILBAR', 'RAILWY', 'RAPIDS', 'ROADWY', 'RUNWAY', 'SNDWAV', 'SILTNK', 'SLOTOP', 'SLOGRD', 'SMCFAC', 'SPRING', 'SQUARE', 'TS_PRH', 'TS_PNH', 'TS_PAD', 'TS_TIS', 'T_TIMS', 'TUNNEL', 'WEDKLP', 'TS_FEB', 'NEWOBJ', 'M_ACCY', 'M_CSCL', 'M_COVR', 'M_HDAT', 'M_HOPA', 'M_NSYS', 'M_QUAL', 'M_SREL', 'M_UNIT', 'M_VDAT'],
} as const;
// All S-57 object class acronyms
export const S57_OBJECT_CLASSES = [
'ADMARE', 'AIRARE', 'ACHBRT', 'ACHARE', 'BCNCAR', 'BCNISD', 'BCNLAT', 'BCNSAW', 'BCNSPP', 'BERTHS',
'BRIDGE', 'BUISGL', 'BUAARE', 'BOYCAR', 'BOYINB', 'BOYISD', 'BOYLAT', 'BOYSAW', 'BOYSPP', 'CBLARE',
'CBLOHD', 'CBLSUB', 'CANALS', 'CANBNK', 'CTSARE', 'CAUSWY', 'CTNARE', 'CHKPNT', 'CGUSTA', 'COALNE',
'CONZNE', 'COSARE', 'CTRPNT', 'CONVYR', 'CRANES', 'CURENT', 'CUSZNE', 'DAMCON', 'DAYMAR', 'DWRTCL',
'DWRTPT', 'DEPARE', 'DEPCNT', 'DISMAR', 'DOCARE', 'DRGARE', 'DRYDOC', 'DMPGRD', 'DYKCON', 'EXEZNE',
'FAIRWY', 'FNCLNE', 'FERYRT', 'FSHZNE', 'FSHFAC', 'FSHGRD', 'FLODOC', 'FOGSIG', 'FORSTC', 'FRPARE',
'GATCON', 'GRIDRN', 'HRBARE', 'HRBFAC', 'HULKES', 'ICEARE', 'ICNARE', 'ISTZNE', 'LAKARE', 'LAKSHR',
'LNDARE', 'LNDELV', 'LNDRGN', 'LNDMRK', 'LIGHTS', 'LITFLT', 'LITVES', 'LOCMAG', 'LOKBSN', 'LOGPON',
'MAGVAR', 'MARCUL', 'MIPARE', 'MORFAC', 'NAVLNE', 'OBSTRN', 'OFSPLF', 'OSPARE', 'OILBAR', 'PILPNT',
'PILBOP', 'PIPARE', 'PIPOHD', 'PIPSOL', 'PONTON', 'PRCARE', 'PRDARE', 'PYLONS', 'RADLNE', 'RADRNG',
'RADRFL', 'RADSTA', 'RTPBCN', 'RDOCAL', 'RDOSTA', 'RAILWY', 'RAPIDS', 'RCRTCL', 'RECTRC', 'RCTLPT',
'RSCSTA', 'RESARE', 'RETRFL', 'RIVERS', 'RIVBNK', 'ROADWY', 'RUNWAY', 'SNDWAV', 'SEAARE', 'SPLARE',
'SBDARE', 'SLCONS', 'SISTAT', 'SISTAW', 'SILTNK', 'SLOTOP', 'SLOGRD', 'SMCFAC', 'SOUNDG', 'SPRING',
'SQUARE', 'STSLNE', 'SUBTLN', 'SWPARE', 'TESARE', 'TS_PRH', 'TS_PNH', 'TS_PAD', 'TS_TIS', 'T_HMON',
'T_NHMN', 'T_TIMS', 'TIDEWY', 'TOPMAR', 'TSELNE', 'TSSBND', 'TSSCRS', 'TSSLPT', 'TSSRON', 'TSEZNE',
'TUNNEL', 'TWRTPT', 'UWTROC', 'VEGATN', 'WATTUR', 'WATFAL', 'WEDKLP', 'WRECKS', 'TS_FEB', 'NEWOBJ',
'M_ACCY', 'M_CSCL', 'M_COVR', 'M_HDAT', 'M_HOPA', 'M_NSYS', 'M_PROD', 'M_QUAL', 'M_SDAT', 'M_SREL',
'M_UNIT', 'M_VDAT'
] as const;
export type S57ObjectClass = typeof S57_OBJECT_CLASSES[number];
export const COLOUR_CODES = {
1: 'white',
2: 'black',
3: 'red',
4: 'green',
5: 'blue',
6: 'yellow',
7: 'grey',
8: 'brown',
9: 'amber',
10: 'violet',
11: 'orange',
12: 'magenta',
13: 'pink',
} as const;
export const LIGHT_CHARACTERISTICS = {
1: 'fixed',
2: 'flashing',
3: 'long-flashing',
4: 'quick-flashing',
5: 'very-quick-flashing',
6: 'ultra-quick-flashing',
7: 'isophase',
8: 'occulting',
9: 'interrupted-quick-flashing',
10: 'interrupted-very-quick-flashing',
11: 'interrupted-ultra-quick-flashing',
12: 'morse',
13: 'fixed-flashing',
14: 'flash-long-flash',
15: 'occulting-flash',
16: 'fixed-long-flash',
17: 'alternating',
} as const;
export const BUOY_SHAPES = {
1: 'conical',
2: 'can',
3: 'spherical',
4: 'pillar',
5: 'spar',
6: 'barrel',
7: 'super-buoy',
8: 'ice-buoy',
} as const;