Ignore:
Timestamp:
2013-02-19T18:02:02+01:00 (12 years ago)
Author:
malcolmh
Message:

save

Location:
applications/editors/josm/plugins/smed2/src
Files:
10 edited

Legend:

Unmodified
Added
Removed
  • applications/editors/josm/plugins/smed2/src/panels/ShowFrame.java

    r29198 r29266  
    1414import seamap.Renderer;
    1515import seamap.SeaMap;
    16 import seamap.SeaMap.Coord;
    17 import seamap.SeaMap.Feature;
     16import seamap.SeaMap.*;
    1817
    1918public class ShowFrame extends JFrame implements MapHelper {
     
    3332                showMap = new SeaMap();
    3433                showMap.nodes = map.nodes;
    35                 showMap.ways = map.ways;
    36                 showMap.mpolys = map.mpolys;
     34                showMap.edges = map.edges;
     35                showMap.areas = map.areas;
    3736                showMap.index = map.index;
    3837                if (feature != null) {
     
    4443       
    4544        @Override
    46         public Point2D getPoint(Coord coord) {
     45        public Point2D getPoint(Snode coord) {
    4746                return new Point2D.Double(150, 150);
    4847        }
  • applications/editors/josm/plugins/smed2/src/s57/S57att.java

    r29215 r29266  
    1111       
    1212        public enum Att {
    13           UNKATT, AGENCY, BCNSHP, BUISHP, BOYSHP, BURDEP, CALSGN, CATAIR, CATACH, CATBRG, CATBUA, CATCBL, CATCAN, CATCAM, CATCHP, CATCOA, CATCTR, CATCON, CATCOV, CATCRN,
    14           CATDAM, CATDIS, CATDOC, CATDPG, CATFNC, CATFRY, CATFIF, CATFOG, CATFOR, CATGAT, CATHAF, CATHLK, CATICE, CATINB, CATLND, CATLMK, CATLAM, CATLIT, CATMFA, CATMPA,
    15           CATMOR, CATNAV, CATOBS, CATOFP, CATOLB, CATPLE, CATPIL, CATPIP, CATPRA, CATPYL, CATQUA, CATRAS, CATRTB, CATROS, CATTRK, CATRSC, CATREA, CATROD, CATRUN, CATSEA,
    16           CATSLC, CATSIT, CATSIW, CATSIL, CATSLO, CATSCF, CATSPM, CATTSS, CATVEG, CATWAT, CATWED, CATWRK, CATZOC, $SPACE, $CHARS, COLOUR, COLPAT, COMCHA, $CSIZE, CPDATE,
    17           CSCALE, CONDTN, CONRAD, CONVIS, CURVEL, DATEND, DATSTA, DRVAL1, DRVAL2, DUNITS, ELEVAT, ESTRNG, EXCLIT, EXPSOU, FUNCTN, HEIGHT, HUNITS, HORACC, HORCLR, HORLEN,
    18           HORWID, ICEFAC, INFORM, JRSDTN, $JUSTH, $JUSTV, LIFCAP, LITCHR, LITVIS, MARSYS, MLTYLT, NATION, NATCON, NATSUR, NATQUA, NMDATE, OBJNAM, ORIENT, PEREND, PERSTA,
    19           PICREP, PILDST, PRCTRY, PRODCT, PUBREF, QUASOU, RADWAL, RADIUS, RECDAT, RECIND, RYRMGV, RESTRN, SCAMAX, SCAMIN, SCVAL1, SCVAL2, SECTR1, SECTR2, SHIPAM, SIGFRQ,
    20           SIGGEN, SIGGRP, SIGPER, SIGSEQ, SOUACC, SDISMX, SDISMN, SORDAT, SORIND, STATUS, SURATH, SUREND, SURSTA, SURTYP, $SCALE, $SCODE, TECSOU, $TXSTR, TXTDSC, TS_TSP,
    21           TS_TSV, T_ACWL, T_HWLW, T_MTOD, T_THDF, T_TINT, T_TSVL, T_VAHC, TIMEND, TIMSTA, $TINTS, TOPSHP, TRAFIC, VALACM, VALDCO, VALLMA, VALMAG, VALMXR, VALNMR, VALSOU,
    22           VERACC, VERCLR, VERCCL, VERCOP, VERCSA, VERDAT, VERLEN, WATLEV, CAT_TS, PUNITS, NINFOM, NOBJNM, NPLDST, $NTXST, NTXTDS, HORDAT, POSACC, QUAPOS, CLSDNG, DIRIMP,
    23           DISBK1, DISBK2, DISIPU, DISIPD, ELEVA1, ELEVA2, FNCTNM, WTWDIS, BUNVES, BNKWTW, COMCTN, HORCLL, HORCLW, TRSHGD, UNLOCD, HIGWAT, HIGNAM, LOWWAT, LOWNAM, MEAWAT,
    24           MEANAM, OTHWAT, OTHNAM, REFLEV, SDRLEV, VCRLEV, SCHREF, USESHP, CURVHW, CURVLW, CURVMW, CURVOW, APTREF, SHPTYP, UPDMSG, ADDMRK, CATBNK, CATNMK, CATBRT, CATBUN,
    25           CATCCL, CATCOM, CATHBR, CATRFD, CATTML, CATGAG, CATVTR, CATTAB, CATEXS, CATWWM, LG_SPD, LG_SPR, LG_BME, LG_LGS, LG_DRT, LG_WDP, LG_WDU, LG_REL, LG_FNC, LG_DES,
    26           LG_PBR, LC_CSI, LC_CSE, LC_ASI, LC_ASE, LC_CCI, LC_CCE, LC_BM1, LC_BM2, LC_LG1, LC_LG2, LC_DR1, LC_DR2, LC_SP1, LC_SP2, LC_WD1, LC_WD2, LITRAD
     13          UNKATT, AGENCY, BCNSHP, BUISHP, BOYSHP, BURDEP, CALSGN, CATAIR, CATACH, CATBRG, CATBUA, CATCBL, CATCAN, CATCAM, CATCHP, CATCOA, CATCTR, CATCON, CATCRN, CATDAM,
     14          CATDIS, CATDOC, CATDPG, CATFNC, CATFRY, CATFIF, CATFOG, CATFOR, CATGAT, CATHAF, CATHLK, CATICE, CATINB, CATLND, CATLMK, CATLAM, CATLIT, CATMFA, CATMPA, CATMOR,
     15          CATNAV, CATOBS, CATOFP, CATOLB, CATPLE, CATPIL, CATPIP, CATPRA, CATPYL, CATRAS, CATRTB, CATROS, CATTRK, CATRSC, CATREA, CATROD, CATRUN, CATSEA, CATSLC, CATSIT,
     16          CATSIW, CATSIL, CATSLO, CATSCF, CATSPM, CATTSS, CATVEG, CATWAT, CATWED, CATWRK, CATZOC, COLOUR, COLPAT, COMCHA, CPDATE, CSCALE, CONDTN, CONRAD, CONVIS, CURVEL,
     17          DATEND, DATSTA, DRVAL1, DRVAL2, DUNITS, ELEVAT, ESTRNG, EXCLIT, EXPSOU, FUNCTN, HEIGHT, HUNITS, HORACC, HORCLR, HORLEN, HORWID, ICEFAC, INFORM, JRSDTN, LIFCAP,
     18          LITCHR, LITVIS, MARSYS, MLTYLT, NATION, NATCON, NATSUR, NATQUA, NMDATE, OBJNAM, ORIENT, PEREND, PERSTA, PICREP, PILDST, PRCTRY, PRODCT, PUBREF, QUASOU, RADWAL,
     19          RADIUS, RECDAT, RECIND, RYRMGV, RESTRN, SCAMAX, SCAMIN, SCVAL1, SCVAL2, SECTR1, SECTR2, SHIPAM, SIGFRQ, SIGGEN, SIGGRP, SIGPER, SIGSEQ, SOUACC, SDISMX, SDISMN,
     20          SORDAT, SORIND, STATUS, SURATH, SUREND, SURSTA, SURTYP, TECSOU, TXTDSC, TS_TSP, TS_TSV, T_ACWL, T_HWLW, T_MTOD, T_THDF, T_TINT, T_TSVL, T_VAHC, TIMEND, TIMSTA,
     21          TOPSHP, TRAFIC, VALACM, VALDCO, VALLMA, VALMAG, VALMXR, VALNMR, VALSOU, VERACC, VERCLR, VERCCL, VERCOP, VERCSA, VERDAT, VERLEN, WATLEV, CAT_TS, PUNITS, NINFOM,
     22          NOBJNM, NPLDST, NTXTDS, HORDAT, POSACC, QUAPOS, CLSDNG, DIRIMP, DISBK1, DISBK2, DISIPU, DISIPD, ELEVA1, ELEVA2, FNCTNM, WTWDIS, BUNVES, BNKWTW, COMCTN, HORCLL,
     23          HORCLW, TRSHGD, UNLOCD, HIGWAT, HIGNAM, LOWWAT, LOWNAM, MEAWAT, MEANAM, OTHWAT, OTHNAM, REFLEV, SDRLEV, VCRLEV, SCHREF, USESHP, CURVHW, CURVLW, CURVMW, CURVOW,
     24          APTREF, SHPTYP, UPDMSG, ADDMRK, CATBNK, CATNMK, CATBRT, CATBUN, CATCCL, CATCOM, CATHBR, CATRFD, CATTML, CATGAG, CATVTR, CATTAB, CATEXS, CATWWM, LG_SPD, LG_SPR,
     25          LG_BME, LG_LGS, LG_DRT, LG_WDP, LG_WDU, LG_REL, LG_FNC, LG_DES, LG_PBR, LC_CSI, LC_CSE, LC_ASI, LC_ASE, LC_CCI, LC_CCE, LC_BM1, LC_BM2, LC_LG1, LC_LG2, LC_DR1,
     26          LC_DR2, LC_SP1, LC_SP2, LC_WD1, LC_WD2, LITRAD
    2727        }
    2828
     
    3232                AttS57.put(Att.CALSGN, 6); AttS57.put(Att.CATAIR, 7); AttS57.put(Att.CATACH, 8); AttS57.put(Att.CATBRG, 9); AttS57.put(Att.CATBUA, 10); AttS57.put(Att.CATCBL, 11);
    3333                AttS57.put(Att.CATCAN, 12); AttS57.put(Att.CATCAM, 13); AttS57.put(Att.CATCHP, 14); AttS57.put(Att.CATCOA, 15); AttS57.put(Att.CATCTR, 16); AttS57.put(Att.CATCON, 17);
    34                 AttS57.put(Att.CATCOV, 18); AttS57.put(Att.CATCRN, 19); AttS57.put(Att.CATDAM, 20); AttS57.put(Att.CATDIS, 21); AttS57.put(Att.CATDOC, 22); AttS57.put(Att.CATDPG, 23);
    35                 AttS57.put(Att.CATFNC, 24); AttS57.put(Att.CATFRY, 25); AttS57.put(Att.CATFIF, 26); AttS57.put(Att.CATFOG, 27); AttS57.put(Att.CATFOR, 28); AttS57.put(Att.CATGAT, 29);
    36                 AttS57.put(Att.CATHAF, 30); AttS57.put(Att.CATHLK, 31); AttS57.put(Att.CATICE, 32); AttS57.put(Att.CATINB, 33); AttS57.put(Att.CATLND, 34); AttS57.put(Att.CATLMK, 35);
    37                 AttS57.put(Att.CATLAM, 36); AttS57.put(Att.CATLIT, 37); AttS57.put(Att.CATMFA, 38); AttS57.put(Att.CATMPA, 39); AttS57.put(Att.CATMOR, 40); AttS57.put(Att.CATNAV, 41);
    38                 AttS57.put(Att.CATOBS, 42); AttS57.put(Att.CATOFP, 43); AttS57.put(Att.CATOLB, 44); AttS57.put(Att.CATPLE, 45); AttS57.put(Att.CATPIL, 46); AttS57.put(Att.CATPIP, 47);
    39                 AttS57.put(Att.CATPRA, 48); AttS57.put(Att.CATPYL, 49); AttS57.put(Att.CATQUA, 50); AttS57.put(Att.CATRAS, 51); AttS57.put(Att.CATRTB, 52); AttS57.put(Att.CATROS, 53);
    40                 AttS57.put(Att.CATTRK, 54); AttS57.put(Att.CATRSC, 55); AttS57.put(Att.CATREA, 56); AttS57.put(Att.CATROD, 57); AttS57.put(Att.CATRUN, 58); AttS57.put(Att.CATSEA, 59);
    41                 AttS57.put(Att.CATSLC, 60); AttS57.put(Att.CATSIT, 61); AttS57.put(Att.CATSIW, 62); AttS57.put(Att.CATSIL, 63); AttS57.put(Att.CATSLO, 64); AttS57.put(Att.CATSCF, 65);
    42                 AttS57.put(Att.CATSPM, 66); AttS57.put(Att.CATTSS, 67); AttS57.put(Att.CATVEG, 68); AttS57.put(Att.CATWAT, 69); AttS57.put(Att.CATWED, 70); AttS57.put(Att.CATWRK, 71);
    43                 AttS57.put(Att.CATZOC, 72); AttS57.put(Att.COLOUR, 75); AttS57.put(Att.COLPAT, 76); AttS57.put(Att.COMCHA, 77); AttS57.put(Att.CONDTN, 81); AttS57.put(Att.CONRAD, 82);
    44                 AttS57.put(Att.CONVIS, 83); AttS57.put(Att.CURVEL, 84); AttS57.put(Att.DATEND, 85); AttS57.put(Att.DATSTA, 86); AttS57.put(Att.DRVAL1, 87); AttS57.put(Att.DRVAL2, 88);
    45                 AttS57.put(Att.DUNITS, 89); AttS57.put(Att.ELEVAT, 90); AttS57.put(Att.ESTRNG, 91); AttS57.put(Att.EXCLIT, 92); AttS57.put(Att.EXPSOU, 93); AttS57.put(Att.FUNCTN, 94);
    46                 AttS57.put(Att.HEIGHT, 95); AttS57.put(Att.HUNITS, 96); AttS57.put(Att.HORACC, 97); AttS57.put(Att.HORCLR, 98); AttS57.put(Att.HORLEN, 99); AttS57.put(Att.HORWID, 100);
    47                 AttS57.put(Att.ICEFAC, 101); AttS57.put(Att.INFORM, 102); AttS57.put(Att.JRSDTN, 103); AttS57.put(Att.$JUSTH, 104); AttS57.put(Att.$JUSTV, 105); AttS57.put(Att.LIFCAP, 106);
    48                 AttS57.put(Att.LITCHR, 107); AttS57.put(Att.LITVIS, 108); AttS57.put(Att.MARSYS, 109); AttS57.put(Att.MLTYLT, 110); AttS57.put(Att.NATION, 111); AttS57.put(Att.NATCON, 112);
    49                 AttS57.put(Att.NATSUR, 113); AttS57.put(Att.NATQUA, 114); AttS57.put(Att.NMDATE, 115); AttS57.put(Att.OBJNAM, 116); AttS57.put(Att.ORIENT, 117); AttS57.put(Att.PEREND, 118);
    50                 AttS57.put(Att.PERSTA, 119); AttS57.put(Att.PICREP, 120); AttS57.put(Att.PILDST, 121); AttS57.put(Att.PRCTRY, 122); AttS57.put(Att.PRODCT, 123); AttS57.put(Att.PUBREF, 124);
    51                 AttS57.put(Att.QUASOU, 125); AttS57.put(Att.RADWAL, 126); AttS57.put(Att.RADIUS, 127); AttS57.put(Att.RECDAT, 128); AttS57.put(Att.RECIND, 129); AttS57.put(Att.RYRMGV, 130);
    52                 AttS57.put(Att.RESTRN, 131); AttS57.put(Att.SECTR1, 136); AttS57.put(Att.SECTR2, 137); AttS57.put(Att.SHIPAM, 138); AttS57.put(Att.SIGFRQ, 139); AttS57.put(Att.SIGGEN, 140);
    53                 AttS57.put(Att.SIGGRP, 141); AttS57.put(Att.SIGPER, 142); AttS57.put(Att.SIGSEQ, 143); AttS57.put(Att.SOUACC, 144); AttS57.put(Att.SDISMX, 145); AttS57.put(Att.SDISMN, 146);
    54                 AttS57.put(Att.SORDAT, 147); AttS57.put(Att.SORIND, 148); AttS57.put(Att.STATUS, 149); AttS57.put(Att.SURATH, 150); AttS57.put(Att.SUREND, 151); AttS57.put(Att.SURSTA, 152);
    55                 AttS57.put(Att.SURTYP, 153); AttS57.put(Att.TECSOU, 156); AttS57.put(Att.TXTDSC, 158); AttS57.put(Att.TIMEND, 168); AttS57.put(Att.TIMSTA, 169); AttS57.put(Att.TOPSHP, 171);
    56                 AttS57.put(Att.TRAFIC, 172); AttS57.put(Att.VALACM, 173); AttS57.put(Att.VALDCO, 174); AttS57.put(Att.VALLMA, 175); AttS57.put(Att.VALMAG, 176); AttS57.put(Att.VALMXR, 177);
    57                 AttS57.put(Att.VALNMR, 178); AttS57.put(Att.VALSOU, 179); AttS57.put(Att.VERACC, 180); AttS57.put(Att.VERCLR, 181); AttS57.put(Att.VERCCL, 182); AttS57.put(Att.VERCOP, 183);
    58                 AttS57.put(Att.VERCSA, 184); AttS57.put(Att.VERDAT, 185); AttS57.put(Att.VERLEN, 186); AttS57.put(Att.WATLEV, 187); AttS57.put(Att.CAT_TS, 188); AttS57.put(Att.PUNITS, 189);
    59                 AttS57.put(Att.NINFOM, 300); AttS57.put(Att.NOBJNM, 301); AttS57.put(Att.NPLDST, 302); AttS57.put(Att.NTXTDS, 304); AttS57.put(Att.HORDAT, 400); AttS57.put(Att.POSACC, 401);
    60                 AttS57.put(Att.QUAPOS, 402);
     34                AttS57.put(Att.CATCRN, 19); AttS57.put(Att.CATDAM, 20); AttS57.put(Att.CATDIS, 21); AttS57.put(Att.CATDOC, 22); AttS57.put(Att.CATDPG, 23);     AttS57.put(Att.CATFNC, 24);
     35                AttS57.put(Att.CATFRY, 25); AttS57.put(Att.CATFIF, 26); AttS57.put(Att.CATFOG, 27); AttS57.put(Att.CATFOR, 28); AttS57.put(Att.CATGAT, 29); AttS57.put(Att.CATHAF, 30);
     36                AttS57.put(Att.CATHLK, 31); AttS57.put(Att.CATICE, 32); AttS57.put(Att.CATINB, 33); AttS57.put(Att.CATLND, 34); AttS57.put(Att.CATLMK, 35);     AttS57.put(Att.CATLAM, 36);
     37                AttS57.put(Att.CATLIT, 37); AttS57.put(Att.CATMFA, 38); AttS57.put(Att.CATMPA, 39); AttS57.put(Att.CATMOR, 40); AttS57.put(Att.CATNAV, 41);     AttS57.put(Att.CATOBS, 42);
     38                AttS57.put(Att.CATOFP, 43); AttS57.put(Att.CATOLB, 44); AttS57.put(Att.CATPLE, 45); AttS57.put(Att.CATPIL, 46); AttS57.put(Att.CATPIP, 47);     AttS57.put(Att.CATPRA, 48);
     39                AttS57.put(Att.CATPYL, 49); AttS57.put(Att.CATRAS, 51); AttS57.put(Att.CATRTB, 52); AttS57.put(Att.CATROS, 53); AttS57.put(Att.CATTRK, 54); AttS57.put(Att.CATRSC, 55);
     40                AttS57.put(Att.CATREA, 56); AttS57.put(Att.CATROD, 57); AttS57.put(Att.CATRUN, 58); AttS57.put(Att.CATSEA, 59); AttS57.put(Att.CATSLC, 60); AttS57.put(Att.CATSIT, 61);
     41                AttS57.put(Att.CATSIW, 62); AttS57.put(Att.CATSIL, 63); AttS57.put(Att.CATSLO, 64); AttS57.put(Att.CATSCF, 65); AttS57.put(Att.CATSPM, 66); AttS57.put(Att.CATTSS, 67);
     42                AttS57.put(Att.CATVEG, 68); AttS57.put(Att.CATWAT, 69); AttS57.put(Att.CATWED, 70); AttS57.put(Att.CATWRK, 71); AttS57.put(Att.CATZOC, 72); AttS57.put(Att.COLOUR, 75);
     43                AttS57.put(Att.COLPAT, 76); AttS57.put(Att.COMCHA, 77); AttS57.put(Att.CONDTN, 81); AttS57.put(Att.CONRAD, 82); AttS57.put(Att.CONVIS, 83); AttS57.put(Att.CURVEL, 84);
     44                AttS57.put(Att.DATEND, 85); AttS57.put(Att.DATSTA, 86); AttS57.put(Att.DRVAL1, 87); AttS57.put(Att.DRVAL2, 88); AttS57.put(Att.DUNITS, 89); AttS57.put(Att.ELEVAT, 90);
     45                AttS57.put(Att.ESTRNG, 91); AttS57.put(Att.EXCLIT, 92); AttS57.put(Att.EXPSOU, 93); AttS57.put(Att.FUNCTN, 94); AttS57.put(Att.HEIGHT, 95); AttS57.put(Att.HUNITS, 96);
     46                AttS57.put(Att.HORACC, 97); AttS57.put(Att.HORCLR, 98); AttS57.put(Att.HORLEN, 99); AttS57.put(Att.HORWID, 100); AttS57.put(Att.ICEFAC, 101); AttS57.put(Att.INFORM, 102);
     47                AttS57.put(Att.JRSDTN, 103); AttS57.put(Att.LIFCAP, 106); AttS57.put(Att.LITCHR, 107); AttS57.put(Att.LITVIS, 108);     AttS57.put(Att.MARSYS, 109); AttS57.put(Att.MLTYLT, 110);
     48                AttS57.put(Att.NATION, 111); AttS57.put(Att.NATCON, 112); AttS57.put(Att.NATSUR, 113); AttS57.put(Att.NATQUA, 114);     AttS57.put(Att.NMDATE, 115); AttS57.put(Att.OBJNAM, 116);
     49                AttS57.put(Att.ORIENT, 117); AttS57.put(Att.PEREND, 118);       AttS57.put(Att.PERSTA, 119); AttS57.put(Att.PICREP, 120);       AttS57.put(Att.PILDST, 121); AttS57.put(Att.PRCTRY, 122);
     50                AttS57.put(Att.PRODCT, 123); AttS57.put(Att.PUBREF, 124);       AttS57.put(Att.QUASOU, 125); AttS57.put(Att.RADWAL, 126);       AttS57.put(Att.RADIUS, 127); AttS57.put(Att.RECDAT, 128);
     51                AttS57.put(Att.RECIND, 129); AttS57.put(Att.RYRMGV, 130);       AttS57.put(Att.RESTRN, 131); AttS57.put(Att.SECTR1, 136);       AttS57.put(Att.SECTR2, 137); AttS57.put(Att.SHIPAM, 138);
     52                AttS57.put(Att.SIGFRQ, 139); AttS57.put(Att.SIGGEN, 140);       AttS57.put(Att.SIGGRP, 141); AttS57.put(Att.SIGPER, 142);       AttS57.put(Att.SIGSEQ, 143); AttS57.put(Att.SOUACC, 144);
     53                AttS57.put(Att.SDISMX, 145); AttS57.put(Att.SDISMN, 146);       AttS57.put(Att.SORDAT, 147); AttS57.put(Att.SORIND, 148);       AttS57.put(Att.STATUS, 149); AttS57.put(Att.SURATH, 150);
     54                AttS57.put(Att.SUREND, 151); AttS57.put(Att.SURSTA, 152);       AttS57.put(Att.SURTYP, 153); AttS57.put(Att.TECSOU, 156);       AttS57.put(Att.TXTDSC, 158); AttS57.put(Att.TIMEND, 168);
     55                AttS57.put(Att.TIMSTA, 169); AttS57.put(Att.TOPSHP, 171);       AttS57.put(Att.TRAFIC, 172); AttS57.put(Att.VALACM, 173);       AttS57.put(Att.VALDCO, 174); AttS57.put(Att.VALLMA, 175);
     56                AttS57.put(Att.VALMAG, 176); AttS57.put(Att.VALMXR, 177);       AttS57.put(Att.VALNMR, 178); AttS57.put(Att.VALSOU, 179);       AttS57.put(Att.VERACC, 180); AttS57.put(Att.VERCLR, 181);
     57                AttS57.put(Att.VERCCL, 182); AttS57.put(Att.VERCOP, 183);       AttS57.put(Att.VERCSA, 184); AttS57.put(Att.VERDAT, 185);       AttS57.put(Att.VERLEN, 186); AttS57.put(Att.WATLEV, 187);
     58                AttS57.put(Att.CAT_TS, 188); AttS57.put(Att.PUNITS, 189);       AttS57.put(Att.NINFOM, 300); AttS57.put(Att.NOBJNM, 301);       AttS57.put(Att.NPLDST, 302); AttS57.put(Att.NTXTDS, 304);
     59                AttS57.put(Att.HORDAT, 400); AttS57.put(Att.POSACC, 401);       AttS57.put(Att.QUAPOS, 402);
    6160        }
    6261
     
    10099                AttStr.put(Att.CATBRG, "category"); AttStr.put(Att.CATBUA, "category"); AttStr.put(Att.CATCBL, "category"); AttStr.put(Att.CATCAN, "category");
    101100                AttStr.put(Att.CATCAM, "category"); AttStr.put(Att.CATCHP, "category"); AttStr.put(Att.CATCOA, "category"); AttStr.put(Att.CATCTR, "category");
    102                 AttStr.put(Att.CATCON, "category"); AttStr.put(Att.CATCOV, "category"); AttStr.put(Att.CATCRN, "category"); AttStr.put(Att.CATDAM, "category");
     101                AttStr.put(Att.CATCON, "category"); AttStr.put(Att.CATCRN, "category"); AttStr.put(Att.CATDAM, "category");
    103102                AttStr.put(Att.CATDIS, "category"); AttStr.put(Att.CATDOC, "category"); AttStr.put(Att.CATDPG, "category"); AttStr.put(Att.CATFNC, "category");
    104103                AttStr.put(Att.CATFRY, "category"); AttStr.put(Att.CATFIF, "category"); AttStr.put(Att.CATFOG, "category"); AttStr.put(Att.CATFOR, "category");
     
    108107                AttStr.put(Att.CATNAV, "category"); AttStr.put(Att.CATOBS, "category"); AttStr.put(Att.CATOFP, "category"); AttStr.put(Att.CATOLB, "category");
    109108                AttStr.put(Att.CATPLE, "category"); AttStr.put(Att.CATPIL, "category"); AttStr.put(Att.CATPIP, "category"); AttStr.put(Att.CATPRA, "category");
    110                 AttStr.put(Att.CATPYL, "category"); AttStr.put(Att.CATQUA, "category"); AttStr.put(Att.CATRAS, "category"); AttStr.put(Att.CATRTB, "category");
     109                AttStr.put(Att.CATPYL, "category"); AttStr.put(Att.CATRAS, "category"); AttStr.put(Att.CATRTB, "category");
    111110                AttStr.put(Att.CATROS, "category"); AttStr.put(Att.CATTRK, "category"); AttStr.put(Att.CATRSC, "category"); AttStr.put(Att.CATREA, "category");
    112111                AttStr.put(Att.CATROD, "category"); AttStr.put(Att.CATRUN, "category"); AttStr.put(Att.CATSEA, "category"); AttStr.put(Att.CATSLC, "category");
     
    120119                AttStr.put(Att.FUNCTN, "function"); AttStr.put(Att.HEIGHT, "height"); AttStr.put(Att.HUNITS, "height_units"); AttStr.put(Att.HORACC, "accuracy");
    121120                AttStr.put(Att.HORCLR, "clearance"); AttStr.put(Att.HORLEN, "length"); AttStr.put(Att.HORWID, "width"); AttStr.put(Att.ICEFAC, "factor");
    122                 AttStr.put(Att.INFORM, "information"); AttStr.put(Att.JRSDTN, "jurisdiction"); AttStr.put(Att.$JUSTH, ""); AttStr.put(Att.$JUSTV, "");
    123                 AttStr.put(Att.LIFCAP, "maximum_load"); AttStr.put(Att.LITCHR, "character"); AttStr.put(Att.LITVIS, "visibility"); AttStr.put(Att.MARSYS, "system");
    124                 AttStr.put(Att.MLTYLT, "multiple"); AttStr.put(Att.NATION, "nationality"); AttStr.put(Att.NATCON, "construction"); AttStr.put(Att.NATSUR, "surface");
    125                 AttStr.put(Att.NATQUA, "surface_qualification"); AttStr.put(Att.NMDATE, "nm_date"); AttStr.put(Att.OBJNAM, "name"); AttStr.put(Att.ORIENT, "orientation");
    126                 AttStr.put(Att.PEREND, "end_date"); AttStr.put(Att.PERSTA, "start_date"); AttStr.put(Att.PICREP, "representation"); AttStr.put(Att.PILDST, "pilot_district");
    127                 AttStr.put(Att.PRCTRY, "producing_country"); AttStr.put(Att.PRODCT, "product"); AttStr.put(Att.PUBREF, "reference"); AttStr.put(Att.QUASOU, "quality");
    128                 AttStr.put(Att.RADWAL, "wavelength"); AttStr.put(Att.RADIUS, "radius"); AttStr.put(Att.RECDAT, "date"); AttStr.put(Att.RECIND, "indication");
    129                 AttStr.put(Att.RYRMGV, "year"); AttStr.put(Att.RESTRN, "restriction"); AttStr.put(Att.SECTR1, "sector_start"); AttStr.put(Att.SECTR2, "sector_end");
    130                 AttStr.put(Att.SHIPAM, "shift"); AttStr.put(Att.SIGFRQ, "frequency"); AttStr.put(Att.SIGGEN, "generation"); AttStr.put(Att.SIGGRP, "group");
    131                 AttStr.put(Att.SIGPER, "period"); AttStr.put(Att.SIGSEQ, "sequence"); AttStr.put(Att.SOUACC, "accuracy"); AttStr.put(Att.SDISMX, "maximum_sounding");
    132                 AttStr.put(Att.SDISMN, "minimum_sounding"); AttStr.put(Att.SORDAT, "source_date"); AttStr.put(Att.SORIND, "source"); AttStr.put(Att.STATUS, "status");
    133                 AttStr.put(Att.SURATH, "authority"); AttStr.put(Att.SUREND, "end_date"); AttStr.put(Att.SURSTA, "start_date"); AttStr.put(Att.SURTYP, "survey");
    134                 AttStr.put(Att.TECSOU, "technique"); AttStr.put(Att.TXTDSC, "description"); AttStr.put(Att.TIMEND, "end_time"); AttStr.put(Att.TIMSTA, "start_time");
    135                 AttStr.put(Att.TOPSHP, "shape"); AttStr.put(Att.TRAFIC, "flow"); AttStr.put(Att.VALACM, "variation_change"); AttStr.put(Att.VALDCO, "depth");
    136                 AttStr.put(Att.VALLMA, "anomaly"); AttStr.put(Att.VALMAG, "variation"); AttStr.put(Att.VALMXR, "maximum_range"); AttStr.put(Att.VALNMR, "range");
    137                 AttStr.put(Att.VALSOU, "sounding"); AttStr.put(Att.VERACC, "vertical_accuracy"); AttStr.put(Att.VERCLR, "clearance_height");
    138                 AttStr.put(Att.VERCCL, "clearance_height_closed"); AttStr.put(Att.VERCOP, "clearance_height_open"); AttStr.put(Att.VERCSA, "clearance_height_safe");
    139                 AttStr.put(Att.VERDAT, "vertical_datum"); AttStr.put(Att.VERLEN, "vertical_length"); AttStr.put(Att.WATLEV, "water_level"); AttStr.put(Att.CAT_TS, "category");
    140                 AttStr.put(Att.PUNITS, "units"); AttStr.put(Att.NINFOM, "national_information"); AttStr.put(Att.NOBJNM, "national_name"); AttStr.put(Att.NPLDST, "national_pilot_district");
    141                 AttStr.put(Att.NTXTDS, "national_description"); AttStr.put(Att.HORDAT, "horizontal_datum"); AttStr.put(Att.POSACC, "positional_accuracy");
    142                 AttStr.put(Att.QUAPOS, "position_quality"); AttStr.put(Att.ADDMRK, "addition"); AttStr.put(Att.BNKWTW, "bank");AttStr.put(Att.CATBNK, "category");
    143                 AttStr.put(Att.CATNMK, "category"); AttStr.put(Att.CLSDNG, "class"); AttStr.put(Att.DIRIMP, "impact"); AttStr.put(Att.DISBK1, "distance_start");
    144                 AttStr.put(Att.DISBK2, "distance_end");AttStr.put(Att.DISIPU, "distance_up"); AttStr.put(Att.DISIPD, "distance_down"); AttStr.put(Att.ELEVA1, "minimum_elevation");
    145                 AttStr.put(Att.ELEVA2, "maximum_elevation"); AttStr.put(Att.FNCTNM, "function"); AttStr.put(Att.WTWDIS, "distance"); AttStr.put(Att.BUNVES, "availibility");
    146                 AttStr.put(Att.CATBRT, "category"); AttStr.put(Att.CATBUN, "category"); AttStr.put(Att.CATCCL, "category"); AttStr.put(Att.CATHBR, "category");
    147                 AttStr.put(Att.CATRFD, "category"); AttStr.put(Att.CATTML, "category"); AttStr.put(Att.COMCTN, "communication"); AttStr.put(Att.HORCLL, "clearance_length");
    148                 AttStr.put(Att.HORCLW, "clearance_width"); AttStr.put(Att.TRSHGD, "goods"); AttStr.put(Att.UNLOCD, "locode"); AttStr.put(Att.CATGAG, "category");
    149                 AttStr.put(Att.HIGWAT, "high_value"); AttStr.put(Att.HIGNAM, "high_name"); AttStr.put(Att.LOWWAT, "low_value"); AttStr.put(Att.LOWNAM, "low_name");
    150                 AttStr.put(Att.MEAWAT, "mean_value"); AttStr.put(Att.MEANAM, "mean_name"); AttStr.put(Att.OTHWAT, "local_value"); AttStr.put(Att.OTHNAM, "local_name");
    151                 AttStr.put(Att.REFLEV, "gravity_reference"); AttStr.put(Att.SDRLEV, "sounding_name"); AttStr.put(Att.VCRLEV, "vertical_name"); AttStr.put(Att.CATVTR, "category");
    152                 AttStr.put(Att.CATTAB, "operation"); AttStr.put(Att.SCHREF, "schedule"); AttStr.put(Att.USESHP, "use"); AttStr.put(Att.CURVHW, "high_velocity");
     121                AttStr.put(Att.INFORM, "information"); AttStr.put(Att.JRSDTN, "jurisdiction"); AttStr.put(Att.LIFCAP, "maximum_load"); AttStr.put(Att.LITCHR, "character");
     122                AttStr.put(Att.LITVIS, "visibility"); AttStr.put(Att.MARSYS, "system"); AttStr.put(Att.MLTYLT, "multiple"); AttStr.put(Att.NATION, "nationality");
     123                AttStr.put(Att.NATCON, "construction"); AttStr.put(Att.NATSUR, "surface"); AttStr.put(Att.NATQUA, "surface_qualification"); AttStr.put(Att.NMDATE, "nm_date");
     124                AttStr.put(Att.OBJNAM, "name"); AttStr.put(Att.ORIENT, "orientation"); AttStr.put(Att.PEREND, "end_date"); AttStr.put(Att.PERSTA, "start_date");
     125                AttStr.put(Att.PICREP, "representation"); AttStr.put(Att.PILDST, "pilot_district");     AttStr.put(Att.PRCTRY, "producing_country"); AttStr.put(Att.PRODCT, "product");
     126                AttStr.put(Att.PUBREF, "reference"); AttStr.put(Att.QUASOU, "quality"); AttStr.put(Att.RADWAL, "wavelength"); AttStr.put(Att.RADIUS, "radius");
     127                AttStr.put(Att.RECDAT, "date"); AttStr.put(Att.RECIND, "indication");   AttStr.put(Att.RYRMGV, "year"); AttStr.put(Att.RESTRN, "restriction");
     128                AttStr.put(Att.SECTR1, "sector_start"); AttStr.put(Att.SECTR2, "sector_end");   AttStr.put(Att.SHIPAM, "shift"); AttStr.put(Att.SIGFRQ, "frequency");
     129                AttStr.put(Att.SIGGEN, "generation"); AttStr.put(Att.SIGGRP, "group"); AttStr.put(Att.SIGPER, "period"); AttStr.put(Att.SIGSEQ, "sequence");
     130                AttStr.put(Att.SOUACC, "accuracy"); AttStr.put(Att.SDISMX, "maximum_sounding"); AttStr.put(Att.SDISMN, "minimum_sounding"); AttStr.put(Att.SORDAT, "source_date");
     131                AttStr.put(Att.SORIND, "source"); AttStr.put(Att.STATUS, "status");     AttStr.put(Att.SURATH, "authority"); AttStr.put(Att.SUREND, "end_date");
     132                AttStr.put(Att.SURSTA, "start_date"); AttStr.put(Att.SURTYP, "survey"); AttStr.put(Att.TECSOU, "technique"); AttStr.put(Att.TXTDSC, "description");
     133                AttStr.put(Att.TIMEND, "end_time"); AttStr.put(Att.TIMSTA, "start_time");       AttStr.put(Att.TOPSHP, "shape"); AttStr.put(Att.TRAFIC, "flow");
     134                AttStr.put(Att.VALACM, "variation_change"); AttStr.put(Att.VALDCO, "depth"); AttStr.put(Att.VALLMA, "anomaly"); AttStr.put(Att.VALMAG, "variation");
     135                AttStr.put(Att.VALMXR, "maximum_range"); AttStr.put(Att.VALNMR, "range");       AttStr.put(Att.VALSOU, "sounding"); AttStr.put(Att.VERACC, "vertical_accuracy");
     136                AttStr.put(Att.VERCLR, "clearance_height");     AttStr.put(Att.VERCCL, "clearance_height_closed"); AttStr.put(Att.VERCOP, "clearance_height_open");
     137                AttStr.put(Att.VERCSA, "clearance_height_safe"); AttStr.put(Att.VERDAT, "vertical_datum"); AttStr.put(Att.VERLEN, "vertical_length"); AttStr.put(Att.WATLEV, "water_level");
     138                AttStr.put(Att.CAT_TS, "category");     AttStr.put(Att.PUNITS, "units"); AttStr.put(Att.NINFOM, "national_information"); AttStr.put(Att.NOBJNM, "national_name");
     139                AttStr.put(Att.NPLDST, "national_pilot_district"); AttStr.put(Att.NTXTDS, "national_description"); AttStr.put(Att.HORDAT, "horizontal_datum");
     140                AttStr.put(Att.POSACC, "positional_accuracy"); AttStr.put(Att.QUAPOS, "position_quality"); AttStr.put(Att.ADDMRK, "addition"); AttStr.put(Att.BNKWTW, "bank");
     141                AttStr.put(Att.CATBNK, "category");     AttStr.put(Att.CATNMK, "category"); AttStr.put(Att.CLSDNG, "class"); AttStr.put(Att.DIRIMP, "impact");
     142                AttStr.put(Att.DISBK1, "distance_start");       AttStr.put(Att.DISBK2, "distance_end");AttStr.put(Att.DISIPU, "distance_up"); AttStr.put(Att.DISIPD, "distance_down");
     143                AttStr.put(Att.ELEVA1, "minimum_elevation"); AttStr.put(Att.ELEVA2, "maximum_elevation"); AttStr.put(Att.FNCTNM, "function"); AttStr.put(Att.WTWDIS, "distance");
     144                AttStr.put(Att.BUNVES, "availibility"); AttStr.put(Att.CATBRT, "category"); AttStr.put(Att.CATBUN, "category"); AttStr.put(Att.CATCCL, "category");
     145                AttStr.put(Att.CATHBR, "category");     AttStr.put(Att.CATRFD, "category"); AttStr.put(Att.CATTML, "category"); AttStr.put(Att.COMCTN, "communication");
     146                AttStr.put(Att.HORCLL, "clearance_length");     AttStr.put(Att.HORCLW, "clearance_width"); AttStr.put(Att.TRSHGD, "goods"); AttStr.put(Att.UNLOCD, "locode");
     147                AttStr.put(Att.CATGAG, "category");     AttStr.put(Att.HIGWAT, "high_value"); AttStr.put(Att.HIGNAM, "high_name"); AttStr.put(Att.LOWWAT, "low_value");
     148                AttStr.put(Att.LOWNAM, "low_name");     AttStr.put(Att.MEAWAT, "mean_value"); AttStr.put(Att.MEANAM, "mean_name"); AttStr.put(Att.OTHWAT, "local_value");
     149                AttStr.put(Att.OTHNAM, "local_name");   AttStr.put(Att.REFLEV, "gravity_reference"); AttStr.put(Att.SDRLEV, "sounding_name"); AttStr.put(Att.VCRLEV, "vertical_name");
     150                AttStr.put(Att.CATVTR, "category");     AttStr.put(Att.CATTAB, "operation"); AttStr.put(Att.SCHREF, "schedule"); AttStr.put(Att.USESHP, "use"); AttStr.put(Att.CURVHW, "high_velocity");
    153151                AttStr.put(Att.CURVLW, "low_velocity"); AttStr.put(Att.CURVMW, "mean_velocity"); AttStr.put(Att.CURVOW, "other_velocity"); AttStr.put(Att.APTREF, "passing_time");
    154152                AttStr.put(Att.CATEXS, "category"); AttStr.put(Att.CATWWM, "category"); AttStr.put(Att.SHPTYP, "ship"); AttStr.put(Att.UPDMSG, "message"); AttStr.put(Att.LITRAD, "radius");
     
    187185          objatt.add(new ObjAtt(Obj.LNDRGN, Att.CATLND)); objatt.add(new ObjAtt(Obj.LNDMRK, Att.FUNCTN)); objatt.add(new ObjAtt(Obj.LNDMRK, Att.CATLMK));
    188186          objatt.add(new ObjAtt(Obj.MARCUL, Att.CATMFA)); objatt.add(new ObjAtt(Obj.MIPARE, Att.CATMPA)); objatt.add(new ObjAtt(Obj.MORFAC, Att.CATMOR));
    189           objatt.add(new ObjAtt(Obj.MORFAC, Att.BOYSHP)); objatt.add(new ObjAtt(Obj.M_COVR, Att.CATCOV)); objatt.add(new ObjAtt(Obj.M_QUAL, Att.CATQUA));
    190           objatt.add(new ObjAtt(Obj.M_QUAL, Att.CATZOC)); objatt.add(new ObjAtt(Obj.NAVLNE, Att.CATNAV)); objatt.add(new ObjAtt(Obj.NOTMRK, Att.CATNMK));
     187          objatt.add(new ObjAtt(Obj.MORFAC, Att.BOYSHP)); objatt.add(new ObjAtt(Obj.NAVLNE, Att.CATNAV)); objatt.add(new ObjAtt(Obj.NOTMRK, Att.CATNMK));
    191188          objatt.add(new ObjAtt(Obj.NOTMRK, Att.FNCTNM)); objatt.add(new ObjAtt(Obj.OBSTRN, Att.CATOBS)); objatt.add(new ObjAtt(Obj.OFSPLF, Att.CATOFP));
    192189          objatt.add(new ObjAtt(Obj.OILBAR, Att.CATOLB)); objatt.add(new ObjAtt(Obj.OSPARE, Att.CATPRA)); objatt.add(new ObjAtt(Obj.PILBOP, Att.CATPIL));
  • applications/editors/josm/plugins/smed2/src/s57/S57obj.java

    r29215 r29266  
    1818                SMCFAC, SOUNDG, SPRING, SQUARE, STSLNE, SUBTLN, SWPARE, TESARE, TS_PRH, TS_PNH, TS_PAD, TS_TIS, T_HMON, T_NHMN, T_TIMS, TIDEWY,
    1919                TOPMAR, TSELNE, TSSBND, TSSCRS, TSSLPT, TSSRON, TSEZNE, TUNNEL, TWRTPT, UWTROC, UNSARE, VEGATN, WATTUR, WATFAL, WEDKLP, WRECKS,
    20                 TS_FEB, M_ACCY, M_CSCL, M_COVR, M_HDAT, M_HOPA, M_NPUB, M_NSYS, M_PROD, M_QUAL, M_SDAT, M_SREL, M_UNIT, M_VDAT, C_AGGR, C_ASSO,
    21                 C_STAC, $AREAS, $LINES, $CSYMB, $COMPS, $TEXTS, NOTMRK, WTWAXS, WTWPRF, BRGARE, BUNSTA, COMARE, HRBBSN, LOKARE, LKBSPT, PRTARE,
    22                 BCNWTW, BOYWTW, REFDMP, RTPLPT, TERMNL, TRNBSN, WTWARE, WTWGAG, TISDGE, VEHTRF, EXCNST, LG_SDM, LG_VSP, LITMIN, LITMAJ
     20                TS_FEB, NOTMRK, WTWAXS, WTWPRF, BRGARE, BUNSTA, COMARE, HRBBSN, LOKARE, LKBSPT, PRTARE, BCNWTW, BOYWTW, REFDMP, RTPLPT, TERMNL,
     21                TRNBSN, WTWARE, WTWGAG, TISDGE, VEHTRF, EXCNST, LG_SDM, LG_VSP, LITMIN, LITMAJ
    2322        }
    2423
     
    5857                ObjS57.put(Obj.TSEZNE,150);     ObjS57.put(Obj.TUNNEL,151);     ObjS57.put(Obj.TWRTPT,152);     ObjS57.put(Obj.UWTROC,153);     ObjS57.put(Obj.UNSARE,154);
    5958                ObjS57.put(Obj.VEGATN,155);     ObjS57.put(Obj.WATTUR,156);     ObjS57.put(Obj.WATFAL,157);     ObjS57.put(Obj.WEDKLP,158);     ObjS57.put(Obj.WRECKS,159);
    60                 ObjS57.put(Obj.TS_FEB,160);     ObjS57.put(Obj.M_ACCY,300);     ObjS57.put(Obj.M_CSCL,301);     ObjS57.put(Obj.M_COVR,302);     ObjS57.put(Obj.M_HDAT,303);
    61                 ObjS57.put(Obj.M_HOPA,304);     ObjS57.put(Obj.M_NPUB,305);     ObjS57.put(Obj.M_NSYS,306);     ObjS57.put(Obj.M_PROD,307);     ObjS57.put(Obj.M_QUAL,308);
    62                 ObjS57.put(Obj.M_SDAT,309);     ObjS57.put(Obj.M_SREL,310);     ObjS57.put(Obj.M_UNIT,311);     ObjS57.put(Obj.M_VDAT,312);     ObjS57.put(Obj.C_AGGR,400);
    63                 ObjS57.put(Obj.C_ASSO,401);     ObjS57.put(Obj.C_STAC,402);     ObjS57.put(Obj.$AREAS,500);     ObjS57.put(Obj.$LINES,501);     ObjS57.put(Obj.$CSYMB,502);
    64                 ObjS57.put(Obj.$COMPS,503);     ObjS57.put(Obj.$TEXTS,504);
     59                ObjS57.put(Obj.TS_FEB,160);
    6560        }
    6661
     
    7065                ObjIENC.put(Obj.DISMAR, 17004); ObjIENC.put(Obj.RESARE, 17005); ObjIENC.put(Obj.RIVBNK, 17006); ObjIENC.put(Obj.SISTAT, 17007); ObjIENC.put(Obj.SISTAW, 17008);
    7166                ObjIENC.put(Obj.TOPMAR, 17009); ObjIENC.put(Obj.BERTHS, 17010); ObjIENC.put(Obj.BRIDGE, 17011); ObjIENC.put(Obj.CBLOHD, 17012); ObjIENC.put(Obj.FERYRT, 17013);
    72                 ObjIENC.put(Obj.HRBARE, 17014); ObjIENC.put(Obj.HRBFAC, 17015); ObjIENC.put(Obj.LOKBSN, 17016); ObjIENC.put(Obj.RDOCAL, 17017); ObjIENC.put(Obj.M_NSYS, 17018);
    73                 ObjIENC.put(Obj.CURENT, 17019); ObjIENC.put(Obj.HULKES, 17020); ObjIENC.put(Obj.PONTON, 17021); ObjIENC.put(Obj.M_SDAT, 17022); ObjIENC.put(Obj.M_VDAT, 17023);
    74                 ObjIENC.put(Obj.PIPOHD, 17024); ObjIENC.put(Obj.FLODOC, 17025); ObjIENC.put(Obj.CHKPNT, 17027); ObjIENC.put(Obj.BCNLAT, 17028); ObjIENC.put(Obj.BOYLAT, 17029);
    75                 ObjIENC.put(Obj.CRANES, 17030); ObjIENC.put(Obj.GATCON, 17031); ObjIENC.put(Obj.SLCONS, 17032); ObjIENC.put(Obj.UWTROC, 17033); ObjIENC.put(Obj.CONVYR, 17034);
    76                 ObjIENC.put(Obj.NOTMRK, 17050); ObjIENC.put(Obj.WTWAXS, 17051); ObjIENC.put(Obj.WTWPRF, 17052); ObjIENC.put(Obj.BRGARE, 17053); ObjIENC.put(Obj.BUNSTA, 17054);
    77                 ObjIENC.put(Obj.COMARE, 17055); ObjIENC.put(Obj.HRBBSN, 17056); ObjIENC.put(Obj.LOKARE, 17057); ObjIENC.put(Obj.LKBSPT, 17058); ObjIENC.put(Obj.PRTARE, 17059);
    78                 ObjIENC.put(Obj.BCNWTW, 17060); ObjIENC.put(Obj.BOYWTW, 17061); ObjIENC.put(Obj.REFDMP, 17062); ObjIENC.put(Obj.RTPLPT, 17063); ObjIENC.put(Obj.TERMNL, 17064);
    79                 ObjIENC.put(Obj.TRNBSN, 17065); ObjIENC.put(Obj.WTWARE, 17066); ObjIENC.put(Obj.WTWGAG, 17067); ObjIENC.put(Obj.TISDGE, 17068); ObjIENC.put(Obj.VEHTRF, 17069);
    80                 ObjIENC.put(Obj.EXCNST, 17070); ObjIENC.put(Obj.LG_SDM, 18001); ObjIENC.put(Obj.LG_VSP, 18002);
     67                ObjIENC.put(Obj.HRBARE, 17014); ObjIENC.put(Obj.HRBFAC, 17015); ObjIENC.put(Obj.LOKBSN, 17016); ObjIENC.put(Obj.RDOCAL, 17017); ObjIENC.put(Obj.CURENT, 17019);
     68                ObjIENC.put(Obj.HULKES, 17020); ObjIENC.put(Obj.PONTON, 17021); ObjIENC.put(Obj.PIPOHD, 17024); ObjIENC.put(Obj.FLODOC, 17025); ObjIENC.put(Obj.CHKPNT, 17027);
     69                ObjIENC.put(Obj.BCNLAT, 17028); ObjIENC.put(Obj.BOYLAT, 17029); ObjIENC.put(Obj.CRANES, 17030); ObjIENC.put(Obj.GATCON, 17031); ObjIENC.put(Obj.SLCONS, 17032);
     70                ObjIENC.put(Obj.UWTROC, 17033); ObjIENC.put(Obj.CONVYR, 17034); ObjIENC.put(Obj.NOTMRK, 17050); ObjIENC.put(Obj.WTWAXS, 17051); ObjIENC.put(Obj.WTWPRF, 17052);
     71                ObjIENC.put(Obj.BRGARE, 17053); ObjIENC.put(Obj.BUNSTA, 17054); ObjIENC.put(Obj.COMARE, 17055); ObjIENC.put(Obj.HRBBSN, 17056); ObjIENC.put(Obj.LOKARE, 17057);
     72                ObjIENC.put(Obj.LKBSPT, 17058); ObjIENC.put(Obj.PRTARE, 17059); ObjIENC.put(Obj.BCNWTW, 17060); ObjIENC.put(Obj.BOYWTW, 17061); ObjIENC.put(Obj.REFDMP, 17062);
     73                ObjIENC.put(Obj.RTPLPT, 17063); ObjIENC.put(Obj.TERMNL, 17064); ObjIENC.put(Obj.TRNBSN, 17065); ObjIENC.put(Obj.WTWARE, 17066); ObjIENC.put(Obj.WTWGAG, 17067);
     74                ObjIENC.put(Obj.TISDGE, 17068); ObjIENC.put(Obj.VEHTRF, 17069); ObjIENC.put(Obj.EXCNST, 17070); ObjIENC.put(Obj.LG_SDM, 18001); ObjIENC.put(Obj.LG_VSP, 18002);
    8175        }
    8276
     
    135129                ObjStr.put(Obj.TWRTPT, "two-way_route"); ObjStr.put(Obj.UWTROC, "rock"); ObjStr.put(Obj.UNSARE, "unsurveyed_area");     ObjStr.put(Obj.VEGATN, "vegetation");
    136130                ObjStr.put(Obj.WATTUR, "water_turbulence");     ObjStr.put(Obj.WATFAL, "waterfall"); ObjStr.put(Obj.WEDKLP, "weed"); ObjStr.put(Obj.WRECKS, "wreck");
    137                 ObjStr.put(Obj.TS_FEB, "tidal_stream"); ObjStr.put(Obj.M_ACCY, "");     ObjStr.put(Obj.M_CSCL, "");     ObjStr.put(Obj.M_COVR, "coverage");     ObjStr.put(Obj.M_HDAT, "");
    138                 ObjStr.put(Obj.M_HOPA, "");     ObjStr.put(Obj.M_NPUB, "");     ObjStr.put(Obj.M_NSYS, "");     ObjStr.put(Obj.M_PROD, "");     ObjStr.put(Obj.M_QUAL, "data_quality");
    139                 ObjStr.put(Obj.M_SDAT, "");     ObjStr.put(Obj.M_SREL, "");     ObjStr.put(Obj.M_UNIT, "");     ObjStr.put(Obj.M_VDAT, "");     ObjStr.put(Obj.C_AGGR, "");     ObjStr.put(Obj.C_ASSO, "");
    140                 ObjStr.put(Obj.C_STAC, "");     ObjStr.put(Obj.$AREAS, "");     ObjStr.put(Obj.$LINES, "");     ObjStr.put(Obj.$CSYMB, "");     ObjStr.put(Obj.$COMPS, "");     ObjStr.put(Obj.$TEXTS, "");
    141                 ObjStr.put(Obj.NOTMRK, "notice");       ObjStr.put(Obj.WTWAXS, "waterway_axis"); ObjStr.put(Obj.WTWPRF, "waterway_profile"); ObjStr.put(Obj.BRGARE, "bridge_area");
    142                 ObjStr.put(Obj.BUNSTA, "bunker_station");       ObjStr.put(Obj.COMARE, "communication_area");   ObjStr.put(Obj.HRBBSN, "harbour_basin"); ObjStr.put(Obj.LOKARE, "lock_area");
    143                 ObjStr.put(Obj.LKBSPT, "lock_basin_part"); ObjStr.put(Obj.PRTARE, "port_area"); ObjStr.put(Obj.BCNWTW, "beacon_waterway"); ObjStr.put(Obj.BOYWTW, "buoy_waterway");
    144                 ObjStr.put(Obj.REFDMP, "refuse_dump"); ObjStr.put(Obj.RTPLPT, "route_planning_point"); ObjStr.put(Obj.TERMNL, "terminal"); ObjStr.put(Obj.TRNBSN, "turning_basin");
    145                 ObjStr.put(Obj.WTWARE, "waterway_area"); ObjStr.put(Obj.WTWGAG, "waterway_gauge"); ObjStr.put(Obj.TISDGE, "time_schedule");     ObjStr.put(Obj.VEHTRF, "vehicle_transfer");
    146                 ObjStr.put(Obj.EXCNST, "exceptional_structure"); ObjStr.put(Obj.LG_SDM, ""); ObjStr.put(Obj.LG_VSP, ""); ObjStr.put(Obj.LITMAJ, "light_major"); ObjStr.put(Obj.LITMIN, "light_minor");
     131                ObjStr.put(Obj.TS_FEB, "tidal_stream"); ObjStr.put(Obj.NOTMRK, "notice");       ObjStr.put(Obj.WTWAXS, "waterway_axis"); ObjStr.put(Obj.WTWPRF, "waterway_profile");
     132                ObjStr.put(Obj.BRGARE, "bridge_area"); ObjStr.put(Obj.BUNSTA, "bunker_station");        ObjStr.put(Obj.COMARE, "communication_area");   ObjStr.put(Obj.HRBBSN, "harbour_basin");
     133                ObjStr.put(Obj.LOKARE, "lock_area"); ObjStr.put(Obj.LKBSPT, "lock_basin_part"); ObjStr.put(Obj.PRTARE, "port_area");    ObjStr.put(Obj.BCNWTW, "beacon_waterway");
     134                ObjStr.put(Obj.BOYWTW, "buoy_waterway"); ObjStr.put(Obj.REFDMP, "refuse_dump"); ObjStr.put(Obj.RTPLPT, "route_planning_point"); ObjStr.put(Obj.TERMNL, "terminal");
     135                ObjStr.put(Obj.TRNBSN, "turning_basin"); ObjStr.put(Obj.WTWARE, "waterway_area"); ObjStr.put(Obj.WTWGAG, "waterway_gauge"); ObjStr.put(Obj.TISDGE, "time_schedule");
     136                ObjStr.put(Obj.VEHTRF, "vehicle_transfer"); ObjStr.put(Obj.EXCNST, "exceptional_structure"); ObjStr.put(Obj.LG_SDM, ""); ObjStr.put(Obj.LG_VSP, "");
     137                ObjStr.put(Obj.LITMAJ, "light_major"); ObjStr.put(Obj.LITMIN, "light_minor");
    147138        }
    148139       
  • applications/editors/josm/plugins/smed2/src/s57/S57val.java

    r29209 r29266  
    115115                Catcon.put(CatCON.CAT_AERL, new S57enum(1, "aerial")); Catcon.put(CatCON.CAT_BELT, new S57enum(2, "belt"));
    116116        }
    117         public enum CatCOV { COV_UNKN, COV_COVG, COV_NCOV }
    118         private static final EnumMap<CatCOV, S57enum> Catcov = new EnumMap<CatCOV, S57enum>(CatCOV.class); static { Catcov.put(CatCOV.COV_UNKN, new S57enum(0, ""));
    119                 Catcov.put(CatCOV.COV_COVG, new S57enum(1, "coverage")); Catcov.put(CatCOV.COV_NCOV, new S57enum(2, "no_coverage"));
    120         }
    121117        public enum CatCRN { CRN_UNKN, CRN_NONS, CRN_CONT, CRN_SHRL, CRN_TRAV, CRN_AFRM }
    122118        private static final EnumMap<CatCRN, S57enum> Catcrn = new EnumMap<CatCRN, S57enum>(CatCRN.class); static { Catcrn.put(CatCRN.CRN_UNKN, new S57enum(0, ""));
     
    308304                Catpyl.put(CatPYL.PYL_BRDG, new S57enum(4, "bridge")); Catpyl.put(CatPYL.PYL_PIER, new S57enum(5, "bridge_pier"));
    309305        }
    310         public enum CatQUA { QUA_UNKN, QUA_A, QUA_B, QUA_C, QUA_D, QUA_E, QUA_NEVL }
    311         private static final EnumMap<CatQUA, S57enum> Catqua = new EnumMap<CatQUA, S57enum>(CatQUA.class); static { Catqua.put(CatQUA.QUA_UNKN, new S57enum(0, ""));
    312                 Catqua.put(CatQUA.QUA_A, new S57enum(1, "a")); Catqua.put(CatQUA.QUA_B, new S57enum(2, "b")); Catqua.put(CatQUA.QUA_C, new S57enum(3, "c"));
    313                 Catqua.put(CatQUA.QUA_D, new S57enum(4, "d")); Catqua.put(CatQUA.QUA_E, new S57enum(5, "e")); Catqua.put(CatQUA.QUA_NEVL, new S57enum(6, "not_evaluated"));
    314         }
    315306        public enum CatRAS { RAS_UNKN, RAS_SURV, RAS_COST }
    316307        private static final EnumMap<CatRAS, S57enum> Catras = new EnumMap<CatRAS, S57enum>(CatRAS.class); static { Catras.put(CatRAS.RAS_UNKN, new S57enum(0, ""));
     
    340331        }
    341332        public enum CatREA { REA_UNKN, REA_SFTY, REA_NANC, REA_NFSH, REA_NATR, REA_BRDS, REA_GRSV, REA_SEAL, REA_DEGR, REA_MILY, REA_HIST, REA_INST,
    342                 REA_NASF, REA_STRD, REA_MINE, REA_NDIV, REA_TBAV, REA_PROH, REA_SWIM, REA_WAIT, REA_RSCH, REA_DREG, REA_FSNC, REA_ERES, REA_NWAK, REA_SWNG, REA_WSKI }
     333                REA_NASF, REA_STRD, REA_MINE, REA_NDIV, REA_TBAV, REA_PROH, REA_SWIM, REA_WAIT, REA_RSCH, REA_DREG, REA_FSNC, REA_ERES, REA_NWAK, REA_SWNG, REA_WSKI, REA_ESSA, REA_PSSA }
    343334        private static final EnumMap<CatREA, S57enum> Catrea = new EnumMap<CatREA, S57enum>(CatREA.class); static { Catrea.put(CatREA.REA_UNKN, new S57enum(0, ""));
    344335                Catrea.put(CatREA.REA_SFTY, new S57enum(1, "safety")); Catrea.put(CatREA.REA_NANC, new S57enum(2, "no_anchoring")); Catrea.put(CatREA.REA_NFSH, new S57enum(3, "no_fishing"));
     
    351342          Catrea.put(CatREA.REA_FSNC, new S57enum(22, "fish_sanctuary")); Catrea.put(CatREA.REA_ERES, new S57enum(23, "ecological_reserve")); Catrea.put(CatREA.REA_NWAK, new S57enum(24, "no_wake"));
    352343          Catrea.put(CatREA.REA_SWNG, new S57enum(25, "swinging")); Catrea.put(CatREA.REA_WSKI, new S57enum(26, "water_skiing"));
     344          Catrea.put(CatREA.REA_ESSA, new S57enum(27, "environmentally_sensitive")); Catrea.put(CatREA.REA_PSSA, new S57enum(28, "particularly_sensitive"));
    353345        }
    354346        public enum CatROD { ROD_UNKN, ROD_MWAY, ROD_MAJR, ROD_MINR, ROD_TRAK, ROD_MAJS, ROD_MINS, ROD_CRSG, ROD_PATH }
     
    997989                keys.put(Att.CATCAN, new S57key(Conv.E, Catcan)); keys.put(Att.CATCAM, new S57key(Conv.E, Catcam)); keys.put(Att.CATCHP, new S57key(Conv.E, Catchp));
    998990                keys.put(Att.CATCOA, new S57key(Conv.E, Catcoa)); keys.put(Att.CATCTR, new S57key(Conv.E, Catctr)); keys.put(Att.CATCON, new S57key(Conv.E, Catcon));
    999                 keys.put(Att.CATCOV, new S57key(Conv.E, Catcov)); keys.put(Att.CATCRN, new S57key(Conv.E, Catcrn)); keys.put(Att.CATDAM, new S57key(Conv.E, Catdam));
    1000                 keys.put(Att.CATDIS, new S57key(Conv.E, Catdis)); keys.put(Att.CATDOC, new S57key(Conv.E, Catdoc)); keys.put(Att.CATDPG, new S57key(Conv.L, Catdpg));
    1001                 keys.put(Att.CATFNC, new S57key(Conv.E, Catfnc)); keys.put(Att.CATFRY, new S57key(Conv.E, Catfry)); keys.put(Att.CATFIF, new S57key(Conv.E, Catfif));
    1002                 keys.put(Att.CATFOG, new S57key(Conv.E, Catfog)); keys.put(Att.CATFOR, new S57key(Conv.E, Catfor)); keys.put(Att.CATGAT, new S57key(Conv.E, Catgat));
    1003                 keys.put(Att.CATHAF, new S57key(Conv.L, Cathaf)); keys.put(Att.CATHLK, new S57key(Conv.L, Cathlk)); keys.put(Att.CATICE, new S57key(Conv.E, Catice));
    1004                 keys.put(Att.CATINB, new S57key(Conv.E, Catinb)); keys.put(Att.CATLND, new S57key(Conv.L, Catlnd)); keys.put(Att.CATLMK, new S57key(Conv.L, Catlmk));
    1005                 keys.put(Att.CATLAM, new S57key(Conv.E, Catlam)); keys.put(Att.CATLIT, new S57key(Conv.L, Catlit)); keys.put(Att.CATMFA, new S57key(Conv.E, Catmfa));
    1006                 keys.put(Att.CATMPA, new S57key(Conv.L, Catmpa)); keys.put(Att.CATMOR, new S57key(Conv.E, Catmor)); keys.put(Att.CATNAV, new S57key(Conv.E, Catnav));
    1007                 keys.put(Att.CATOBS, new S57key(Conv.E, Catobs)); keys.put(Att.CATOFP, new S57key(Conv.L, Catofp)); keys.put(Att.CATOLB, new S57key(Conv.E, Catolb));
    1008                 keys.put(Att.CATPLE, new S57key(Conv.E, Catple)); keys.put(Att.CATPIL, new S57key(Conv.E, Catpil)); keys.put(Att.CATPIP, new S57key(Conv.L, Catpip));
    1009                 keys.put(Att.CATPRA, new S57key(Conv.E, Catpra)); keys.put(Att.CATPYL, new S57key(Conv.E, Catpyl)); keys.put(Att.CATQUA, new S57key(Conv.E, Catqua));
    1010                 keys.put(Att.CATRAS, new S57key(Conv.E, Catras)); keys.put(Att.CATRTB, new S57key(Conv.E, Catrtb)); keys.put(Att.CATROS, new S57key(Conv.L, Catros));
    1011                 keys.put(Att.CATTRK, new S57key(Conv.E, Cattrk)); keys.put(Att.CATRSC, new S57key(Conv.L, Catrsc)); keys.put(Att.CATREA, new S57key(Conv.L, Catrea));
    1012                 keys.put(Att.CATROD, new S57key(Conv.E, Catrod)); keys.put(Att.CATRUN, new S57key(Conv.E, Catrun)); keys.put(Att.CATSEA, new S57key(Conv.E, Catsea));
    1013                 keys.put(Att.CATSIL, new S57key(Conv.E, Catsil)); keys.put(Att.CATSLO, new S57key(Conv.E, Catslo)); keys.put(Att.CATSCF, new S57key(Conv.L, Catscf));
    1014                 keys.put(Att.CATSLC, new S57key(Conv.E, Catslc)); keys.put(Att.CATSIT, new S57key(Conv.L, Catsit)); keys.put(Att.CATSIW, new S57key(Conv.L, Catsiw));
    1015                 keys.put(Att.CATSPM, new S57key(Conv.L, Catspm)); keys.put(Att.CATTSS, new S57key(Conv.E, Cattss)); keys.put(Att.CATVEG, new S57key(Conv.L, Catveg));
    1016                 keys.put(Att.CATWAT, new S57key(Conv.E, Catwat)); keys.put(Att.CATWED, new S57key(Conv.E, Catwed)); keys.put(Att.CATWRK, new S57key(Conv.E, Catwrk));
    1017                 keys.put(Att.CATZOC, new S57key(Conv.E, Catzoc)); keys.put(Att.$SPACE, new S57key(Conv.E, null)); keys.put(Att.$CHARS, new S57key(Conv.A, null));
    1018                 keys.put(Att.COLOUR, new S57key(Conv.L, Colour)); keys.put(Att.COLPAT, new S57key(Conv.L, Colpat)); keys.put(Att.COMCHA, new S57key(Conv.A, null));
    1019                 keys.put(Att.$CSIZE, new S57key(Conv.F, null)); keys.put(Att.CPDATE, new S57key(Conv.A, null)); keys.put(Att.CSCALE, new S57key(Conv.I, null));
    1020                 keys.put(Att.CONDTN, new S57key(Conv.E, Condtn)); keys.put(Att.CONRAD, new S57key(Conv.E, Conrad)); keys.put(Att.CONVIS, new S57key(Conv.E, Convis));
    1021                 keys.put(Att.CURVEL, new S57key(Conv.F, null)); keys.put(Att.DATEND, new S57key(Conv.A, null)); keys.put(Att.DATSTA, new S57key(Conv.A, null));
    1022                 keys.put(Att.DRVAL1, new S57key(Conv.F, null)); keys.put(Att.DRVAL2, new S57key(Conv.F, null)); keys.put(Att.DUNITS, new S57key(Conv.E, Dunits));
    1023                 keys.put(Att.ELEVAT, new S57key(Conv.F, null)); keys.put(Att.ESTRNG, new S57key(Conv.F, null)); keys.put(Att.EXCLIT, new S57key(Conv.E, Exclit));
    1024                 keys.put(Att.EXPSOU, new S57key(Conv.E, Expsou)); keys.put(Att.FUNCTN, new S57key(Conv.L, Functn)); keys.put(Att.HEIGHT, new S57key(Conv.F, null));
    1025                 keys.put(Att.HUNITS, new S57key(Conv.E, Hunits)); keys.put(Att.HORACC, new S57key(Conv.F, null)); keys.put(Att.HORCLR, new S57key(Conv.F, null));
    1026                 keys.put(Att.HORLEN, new S57key(Conv.F, null)); keys.put(Att.HORWID, new S57key(Conv.F, null)); keys.put(Att.ICEFAC, new S57key(Conv.F, null));
    1027                 keys.put(Att.INFORM, new S57key(Conv.S, null)); keys.put(Att.JRSDTN, new S57key(Conv.E, Jrsdtn)); keys.put(Att.$JUSTH, new S57key(Conv.E, null));
    1028                 keys.put(Att.$JUSTV, new S57key(Conv.E, null)); keys.put(Att.LIFCAP, new S57key(Conv.F, null)); keys.put(Att.LITCHR, new S57key(Conv.E, Litchr));
    1029                 keys.put(Att.LITVIS, new S57key(Conv.L, Litvis)); keys.put(Att.MARSYS, new S57key(Conv.E, Marsys)); keys.put(Att.MLTYLT, new S57key(Conv.I, null));
    1030                 keys.put(Att.NATION, new S57key(Conv.A, null)); keys.put(Att.NATCON, new S57key(Conv.E, Natcon)); keys.put(Att.NATSUR, new S57key(Conv.L, Natsur));
    1031                 keys.put(Att.NATQUA, new S57key(Conv.L, Natqua)); keys.put(Att.NMDATE, new S57key(Conv.A, null)); keys.put(Att.OBJNAM, new S57key(Conv.S, null));
    1032                 keys.put(Att.ORIENT, new S57key(Conv.F, null)); keys.put(Att.PEREND, new S57key(Conv.A, null)); keys.put(Att.PERSTA, new S57key(Conv.A, null));
    1033                 keys.put(Att.PICREP, new S57key(Conv.S, null)); keys.put(Att.PILDST, new S57key(Conv.S, null)); keys.put(Att.PRCTRY, new S57key(Conv.A, null));
    1034                 keys.put(Att.PRODCT, new S57key(Conv.L, Prodct)); keys.put(Att.PUBREF, new S57key(Conv.S, null)); keys.put(Att.QUASOU, new S57key(Conv.L, Quasou));
    1035                 keys.put(Att.RADWAL, new S57key(Conv.A, null)); keys.put(Att.RADIUS, new S57key(Conv.F, null)); keys.put(Att.RECDAT, new S57key(Conv.A, null));
    1036                 keys.put(Att.RECIND, new S57key(Conv.A, null)); keys.put(Att.RYRMGV, new S57key(Conv.A, null)); keys.put(Att.RESTRN, new S57key(Conv.L, Restrn));
    1037                 keys.put(Att.SCAMAX, new S57key(Conv.I, null)); keys.put(Att.SCAMIN, new S57key(Conv.I, null)); keys.put(Att.SCVAL1, new S57key(Conv.I, null));
    1038                 keys.put(Att.SCVAL2, new S57key(Conv.I, null)); keys.put(Att.SECTR1, new S57key(Conv.F, null)); keys.put(Att.SECTR2, new S57key(Conv.F, null));
    1039                 keys.put(Att.SHIPAM, new S57key(Conv.A, null)); keys.put(Att.SIGFRQ, new S57key(Conv.I, null)); keys.put(Att.SIGGEN, new S57key(Conv.E, Siggen));
    1040                 keys.put(Att.SIGGRP, new S57key(Conv.A, null)); keys.put(Att.SIGPER, new S57key(Conv.F, null)); keys.put(Att.SIGSEQ, new S57key(Conv.A, null));
    1041                 keys.put(Att.SOUACC, new S57key(Conv.F, null)); keys.put(Att.SDISMX, new S57key(Conv.I, null)); keys.put(Att.SDISMN, new S57key(Conv.I, null));
    1042                 keys.put(Att.SORDAT, new S57key(Conv.A, null)); keys.put(Att.SORIND, new S57key(Conv.A, null)); keys.put(Att.STATUS, new S57key(Conv.L, Status));
    1043                 keys.put(Att.SURATH, new S57key(Conv.S, null)); keys.put(Att.SUREND, new S57key(Conv.A, null)); keys.put(Att.SURSTA, new S57key(Conv.A, null));
    1044                 keys.put(Att.SURTYP, new S57key(Conv.L, Surtyp)); keys.put(Att.$SCALE, new S57key(Conv.F, null)); keys.put(Att.$SCODE, new S57key(Conv.A, null));
    1045                 keys.put(Att.TECSOU, new S57key(Conv.L, Tecsou)); keys.put(Att.$TXSTR, new S57key(Conv.S, null)); keys.put(Att.TXTDSC, new S57key(Conv.S, null));
    1046                 keys.put(Att.TS_TSP, new S57key(Conv.A, null)); keys.put(Att.TS_TSV, new S57key(Conv.A, null)); keys.put(Att.T_ACWL, new S57key(Conv.E, null));
    1047                 keys.put(Att.T_HWLW, new S57key(Conv.A, null)); keys.put(Att.T_MTOD, new S57key(Conv.E, null)); keys.put(Att.T_THDF, new S57key(Conv.A, null));
    1048                 keys.put(Att.T_TINT, new S57key(Conv.I, null)); keys.put(Att.T_TSVL, new S57key(Conv.A, null)); keys.put(Att.T_VAHC, new S57key(Conv.A, null));
    1049                 keys.put(Att.TIMEND, new S57key(Conv.A, null)); keys.put(Att.TIMSTA, new S57key(Conv.A, null)); keys.put(Att.$TINTS, new S57key(Conv.E, null));
    1050                 keys.put(Att.TOPSHP, new S57key(Conv.E, Topshp)); keys.put(Att.TRAFIC, new S57key(Conv.E, Trafic)); keys.put(Att.VALACM, new S57key(Conv.F, null));
    1051                 keys.put(Att.VALDCO, new S57key(Conv.F, null)); keys.put(Att.VALLMA, new S57key(Conv.F, null)); keys.put(Att.VALMAG, new S57key(Conv.F, null));
    1052                 keys.put(Att.VALMXR, new S57key(Conv.F, null)); keys.put(Att.VALNMR, new S57key(Conv.F, null)); keys.put(Att.VALSOU, new S57key(Conv.F, null));
    1053                 keys.put(Att.VERACC, new S57key(Conv.F, null)); keys.put(Att.VERCLR, new S57key(Conv.F, null)); keys.put(Att.VERCCL, new S57key(Conv.F, null));
    1054                 keys.put(Att.VERCOP, new S57key(Conv.F, null)); keys.put(Att.VERCSA, new S57key(Conv.F, null)); keys.put(Att.VERDAT, new S57key(Conv.E, Verdat));
    1055                 keys.put(Att.VERLEN, new S57key(Conv.F, null)); keys.put(Att.WATLEV, new S57key(Conv.E, Watlev)); keys.put(Att.CAT_TS, new S57key(Conv.E, Cat_ts));
    1056                 keys.put(Att.PUNITS, new S57key(Conv.E, Punits)); keys.put(Att.NINFOM, new S57key(Conv.S, null)); keys.put(Att.NOBJNM, new S57key(Conv.S, null));
    1057                 keys.put(Att.NPLDST, new S57key(Conv.S, null)); keys.put(Att.$NTXST, new S57key(Conv.S, null)); keys.put(Att.NTXTDS, new S57key(Conv.S, null));
    1058                 keys.put(Att.HORDAT, new S57key(Conv.E, null)); keys.put(Att.POSACC, new S57key(Conv.F, null)); keys.put(Att.QUAPOS, new S57key(Conv.E, Quapos));
    1059                 keys.put(Att.CLSDNG, new S57key(Conv.E, Clsdng)); keys.put(Att.DIRIMP, new S57key(Conv.L, Dirimp)); keys.put(Att.DISBK1, new S57key(Conv.F, null));
    1060                 keys.put(Att.DISBK2, new S57key(Conv.F, null)); keys.put(Att.DISIPU, new S57key(Conv.F, null)); keys.put(Att.DISIPD, new S57key(Conv.F, null));
    1061                 keys.put(Att.ELEVA1, new S57key(Conv.F, null)); keys.put(Att.ELEVA2, new S57key(Conv.F, null)); keys.put(Att.FNCTNM, new S57key(Conv.E, Fnctnm));
    1062                 keys.put(Att.WTWDIS, new S57key(Conv.F, null)); keys.put(Att.BUNVES, new S57key(Conv.E, Bunves)); keys.put(Att.COMCTN, new S57key(Conv.S, null));
    1063                 keys.put(Att.HORCLL, new S57key(Conv.F, null)); keys.put(Att.HORCLW, new S57key(Conv.F, null)); keys.put(Att.TRSHGD, new S57key(Conv.L, Trshgd));
    1064                 keys.put(Att.UNLOCD, new S57key(Conv.S, null)); keys.put(Att.HIGWAT, new S57key(Conv.F, null)); keys.put(Att.HIGNAM, new S57key(Conv.S, null));
    1065                 keys.put(Att.LOWWAT, new S57key(Conv.F, null)); keys.put(Att.LOWNAM, new S57key(Conv.S, null)); keys.put(Att.MEAWAT, new S57key(Conv.F, null));
    1066                 keys.put(Att.MEANAM, new S57key(Conv.S, null)); keys.put(Att.OTHWAT, new S57key(Conv.F, null)); keys.put(Att.OTHNAM, new S57key(Conv.S, null));
    1067                 keys.put(Att.REFLEV, new S57key(Conv.E, Reflev)); keys.put(Att.SDRLEV, new S57key(Conv.S, null)); keys.put(Att.VCRLEV, new S57key(Conv.S, null));
    1068                 keys.put(Att.SCHREF, new S57key(Conv.S, null)); keys.put(Att.USESHP, new S57key(Conv.E, Useshp)); keys.put(Att.CURVHW, new S57key(Conv.F, null));
    1069                 keys.put(Att.CURVLW, new S57key(Conv.F, null)); keys.put(Att.CURVMW, new S57key(Conv.F, null)); keys.put(Att.CURVOW, new S57key(Conv.F, null));
    1070                 keys.put(Att.APTREF, new S57key(Conv.S, null)); keys.put(Att.SHPTYP, new S57key(Conv.E, Shptyp)); keys.put(Att.UPDMSG, new S57key(Conv.S, null));
    1071                 keys.put(Att.ADDMRK, new S57key(Conv.L, Addmrk)); keys.put(Att.BNKWTW, new S57key(Conv.E, Bnkwtw)); keys.put(Att.CATBNK, new S57key(Conv.E, Catbnk));
    1072                 keys.put(Att.CATNMK, new S57key(Conv.E, Catnmk)); keys.put(Att.CATBRT, new S57key(Conv.L, Catbrt)); keys.put(Att.CATBUN, new S57key(Conv.L, Catbun));
    1073                 keys.put(Att.CATCCL, new S57key(Conv.L, Catccl)); keys.put(Att.CATCOM, new S57key(Conv.L, Catcom)); keys.put(Att.CATHBR, new S57key(Conv.L, Cathbr));
    1074                 keys.put(Att.CATRFD, new S57key(Conv.L, Catrfd)); keys.put(Att.CATTML, new S57key(Conv.L, Cattml)); keys.put(Att.CATGAG, new S57key(Conv.L, Catgag));
    1075                 keys.put(Att.CATVTR, new S57key(Conv.L, Catvtr)); keys.put(Att.CATTAB, new S57key(Conv.E, Cattab)); keys.put(Att.CATEXS, new S57key(Conv.E, Catexs));
    1076                 keys.put(Att.CATWWM, new S57key(Conv.E, Catwwm)); keys.put(Att.LG_SPD, new S57key(Conv.F, null)); keys.put(Att.LG_SPR, new S57key(Conv.L, Lg_spr));
    1077                 keys.put(Att.LG_BME, new S57key(Conv.F, null)); keys.put(Att.LG_LGS, new S57key(Conv.F, null)); keys.put(Att.LG_DRT, new S57key(Conv.F, null));
    1078                 keys.put(Att.LG_WDP, new S57key(Conv.F, null)); keys.put(Att.LG_WDU, new S57key(Conv.E, Lg_wdu)); keys.put(Att.LG_REL, new S57key(Conv.L, Lg_rel));
    1079                 keys.put(Att.LG_FNC, new S57key(Conv.L, Lg_fnc)); keys.put(Att.LG_DES, new S57key(Conv.S, null)); keys.put(Att.LG_PBR, new S57key(Conv.S, null));
    1080                 keys.put(Att.LC_CSI, new S57key(Conv.L, Lc_csi)); keys.put(Att.LC_CSE, new S57key(Conv.L, Lc_cse)); keys.put(Att.LC_ASI, new S57key(Conv.L, Lc_asi));
    1081                 keys.put(Att.LC_ASE, new S57key(Conv.L, Lc_ase)); keys.put(Att.LC_CCI, new S57key(Conv.L, Lc_cci)); keys.put(Att.LC_CCE, new S57key(Conv.L, Lc_cce));
    1082                 keys.put(Att.LC_BM1, new S57key(Conv.F, null)); keys.put(Att.LC_BM2, new S57key(Conv.F, null)); keys.put(Att.LC_LG1, new S57key(Conv.F, null));
    1083                 keys.put(Att.LC_LG2, new S57key(Conv.F, null)); keys.put(Att.LC_DR1, new S57key(Conv.F, null)); keys.put(Att.LC_DR2, new S57key(Conv.F, null));
    1084                 keys.put(Att.LC_SP1, new S57key(Conv.F, null)); keys.put(Att.LC_SP2, new S57key(Conv.F, null)); keys.put(Att.LC_WD1, new S57key(Conv.F, null));
    1085                 keys.put(Att.LC_WD2, new S57key(Conv.F, null)); keys.put(Att.LITRAD, new S57key(Conv.A, null));
     991                keys.put(Att.CATCRN, new S57key(Conv.E, Catcrn)); keys.put(Att.CATDAM, new S57key(Conv.E, Catdam));     keys.put(Att.CATDIS, new S57key(Conv.E, Catdis));
     992                keys.put(Att.CATDOC, new S57key(Conv.E, Catdoc)); keys.put(Att.CATDPG, new S57key(Conv.L, Catdpg));     keys.put(Att.CATFNC, new S57key(Conv.E, Catfnc));
     993                keys.put(Att.CATFRY, new S57key(Conv.E, Catfry)); keys.put(Att.CATFIF, new S57key(Conv.E, Catfif));     keys.put(Att.CATFOG, new S57key(Conv.E, Catfog));
     994                keys.put(Att.CATFOR, new S57key(Conv.E, Catfor)); keys.put(Att.CATGAT, new S57key(Conv.E, Catgat));     keys.put(Att.CATHAF, new S57key(Conv.L, Cathaf));
     995                keys.put(Att.CATHLK, new S57key(Conv.L, Cathlk)); keys.put(Att.CATICE, new S57key(Conv.E, Catice));     keys.put(Att.CATINB, new S57key(Conv.E, Catinb));
     996                keys.put(Att.CATLND, new S57key(Conv.L, Catlnd)); keys.put(Att.CATLMK, new S57key(Conv.L, Catlmk));     keys.put(Att.CATLAM, new S57key(Conv.E, Catlam));
     997                keys.put(Att.CATLIT, new S57key(Conv.L, Catlit)); keys.put(Att.CATMFA, new S57key(Conv.E, Catmfa));     keys.put(Att.CATMPA, new S57key(Conv.L, Catmpa));
     998                keys.put(Att.CATMOR, new S57key(Conv.E, Catmor)); keys.put(Att.CATNAV, new S57key(Conv.E, Catnav));     keys.put(Att.CATOBS, new S57key(Conv.E, Catobs));
     999                keys.put(Att.CATOFP, new S57key(Conv.L, Catofp)); keys.put(Att.CATOLB, new S57key(Conv.E, Catolb));     keys.put(Att.CATPLE, new S57key(Conv.E, Catple));
     1000                keys.put(Att.CATPIL, new S57key(Conv.E, Catpil)); keys.put(Att.CATPIP, new S57key(Conv.L, Catpip));     keys.put(Att.CATPRA, new S57key(Conv.E, Catpra));
     1001                keys.put(Att.CATPYL, new S57key(Conv.E, Catpyl)); keys.put(Att.CATRAS, new S57key(Conv.E, Catras)); keys.put(Att.CATRTB, new S57key(Conv.E, Catrtb));
     1002                keys.put(Att.CATROS, new S57key(Conv.L, Catros));       keys.put(Att.CATTRK, new S57key(Conv.E, Cattrk)); keys.put(Att.CATRSC, new S57key(Conv.L, Catrsc));
     1003                keys.put(Att.CATREA, new S57key(Conv.L, Catrea));       keys.put(Att.CATROD, new S57key(Conv.E, Catrod)); keys.put(Att.CATRUN, new S57key(Conv.E, Catrun));
     1004                keys.put(Att.CATSEA, new S57key(Conv.E, Catsea));       keys.put(Att.CATSIL, new S57key(Conv.E, Catsil)); keys.put(Att.CATSLO, new S57key(Conv.E, Catslo));
     1005                keys.put(Att.CATSCF, new S57key(Conv.L, Catscf));       keys.put(Att.CATSLC, new S57key(Conv.E, Catslc)); keys.put(Att.CATSIT, new S57key(Conv.L, Catsit));
     1006                keys.put(Att.CATSIW, new S57key(Conv.L, Catsiw));       keys.put(Att.CATSPM, new S57key(Conv.L, Catspm)); keys.put(Att.CATTSS, new S57key(Conv.E, Cattss));
     1007                keys.put(Att.CATVEG, new S57key(Conv.L, Catveg));       keys.put(Att.CATWAT, new S57key(Conv.E, Catwat)); keys.put(Att.CATWED, new S57key(Conv.E, Catwed));
     1008                keys.put(Att.CATWRK, new S57key(Conv.E, Catwrk));       keys.put(Att.CATZOC, new S57key(Conv.E, Catzoc));       keys.put(Att.COLOUR, new S57key(Conv.L, Colour));
     1009                keys.put(Att.COLPAT, new S57key(Conv.L, Colpat));       keys.put(Att.COMCHA, new S57key(Conv.A, null)); keys.put(Att.CPDATE, new S57key(Conv.A, null));
     1010                keys.put(Att.CSCALE, new S57key(Conv.I, null)); keys.put(Att.CONDTN, new S57key(Conv.E, Condtn)); keys.put(Att.CONRAD, new S57key(Conv.E, Conrad));
     1011                keys.put(Att.CONVIS, new S57key(Conv.E, Convis));       keys.put(Att.CURVEL, new S57key(Conv.F, null)); keys.put(Att.DATEND, new S57key(Conv.A, null));
     1012                keys.put(Att.DATSTA, new S57key(Conv.A, null)); keys.put(Att.DRVAL1, new S57key(Conv.F, null)); keys.put(Att.DRVAL2, new S57key(Conv.F, null));
     1013                keys.put(Att.DUNITS, new S57key(Conv.E, Dunits));       keys.put(Att.ELEVAT, new S57key(Conv.F, null)); keys.put(Att.ESTRNG, new S57key(Conv.F, null));
     1014                keys.put(Att.EXCLIT, new S57key(Conv.E, Exclit));       keys.put(Att.EXPSOU, new S57key(Conv.E, Expsou)); keys.put(Att.FUNCTN, new S57key(Conv.L, Functn));
     1015                keys.put(Att.HEIGHT, new S57key(Conv.F, null)); keys.put(Att.HUNITS, new S57key(Conv.E, Hunits)); keys.put(Att.HORACC, new S57key(Conv.F, null));
     1016                keys.put(Att.HORCLR, new S57key(Conv.F, null)); keys.put(Att.HORLEN, new S57key(Conv.F, null)); keys.put(Att.HORWID, new S57key(Conv.F, null));
     1017                keys.put(Att.ICEFAC, new S57key(Conv.F, null)); keys.put(Att.INFORM, new S57key(Conv.S, null)); keys.put(Att.JRSDTN, new S57key(Conv.E, Jrsdtn));
     1018                keys.put(Att.LIFCAP, new S57key(Conv.F, null)); keys.put(Att.LITCHR, new S57key(Conv.E, Litchr));       keys.put(Att.LITVIS, new S57key(Conv.L, Litvis));
     1019                keys.put(Att.MARSYS, new S57key(Conv.E, Marsys));       keys.put(Att.MLTYLT, new S57key(Conv.I, null)); keys.put(Att.NATION, new S57key(Conv.A, null));
     1020                keys.put(Att.NATCON, new S57key(Conv.E, Natcon));       keys.put(Att.NATSUR, new S57key(Conv.L, Natsur));       keys.put(Att.NATQUA, new S57key(Conv.L, Natqua));
     1021                keys.put(Att.NMDATE, new S57key(Conv.A, null)); keys.put(Att.OBJNAM, new S57key(Conv.S, null)); keys.put(Att.ORIENT, new S57key(Conv.F, null));
     1022                keys.put(Att.PEREND, new S57key(Conv.A, null)); keys.put(Att.PERSTA, new S57key(Conv.A, null)); keys.put(Att.PICREP, new S57key(Conv.S, null));
     1023                keys.put(Att.PILDST, new S57key(Conv.S, null)); keys.put(Att.PRCTRY, new S57key(Conv.A, null)); keys.put(Att.PRODCT, new S57key(Conv.L, Prodct));
     1024                keys.put(Att.PUBREF, new S57key(Conv.S, null)); keys.put(Att.QUASOU, new S57key(Conv.L, Quasou));       keys.put(Att.RADWAL, new S57key(Conv.A, null));
     1025                keys.put(Att.RADIUS, new S57key(Conv.F, null)); keys.put(Att.RECDAT, new S57key(Conv.A, null)); keys.put(Att.RECIND, new S57key(Conv.A, null));
     1026                keys.put(Att.RYRMGV, new S57key(Conv.A, null)); keys.put(Att.RESTRN, new S57key(Conv.L, Restrn));       keys.put(Att.SCAMAX, new S57key(Conv.I, null));
     1027                keys.put(Att.SCAMIN, new S57key(Conv.I, null)); keys.put(Att.SCVAL1, new S57key(Conv.I, null)); keys.put(Att.SCVAL2, new S57key(Conv.I, null));
     1028                keys.put(Att.SECTR1, new S57key(Conv.F, null)); keys.put(Att.SECTR2, new S57key(Conv.F, null)); keys.put(Att.SHIPAM, new S57key(Conv.A, null));
     1029                keys.put(Att.SIGFRQ, new S57key(Conv.I, null)); keys.put(Att.SIGGEN, new S57key(Conv.E, Siggen));       keys.put(Att.SIGGRP, new S57key(Conv.A, null));
     1030                keys.put(Att.SIGPER, new S57key(Conv.F, null)); keys.put(Att.SIGSEQ, new S57key(Conv.A, null)); keys.put(Att.SOUACC, new S57key(Conv.F, null));
     1031                keys.put(Att.SDISMX, new S57key(Conv.I, null)); keys.put(Att.SDISMN, new S57key(Conv.I, null)); keys.put(Att.SORDAT, new S57key(Conv.A, null));
     1032                keys.put(Att.SORIND, new S57key(Conv.A, null)); keys.put(Att.STATUS, new S57key(Conv.L, Status));       keys.put(Att.SURATH, new S57key(Conv.S, null));
     1033                keys.put(Att.SUREND, new S57key(Conv.A, null)); keys.put(Att.SURSTA, new S57key(Conv.A, null)); keys.put(Att.SURTYP, new S57key(Conv.L, Surtyp));
     1034                keys.put(Att.TECSOU, new S57key(Conv.L, Tecsou));       keys.put(Att.TXTDSC, new S57key(Conv.S, null)); keys.put(Att.TS_TSP, new S57key(Conv.A, null));
     1035                keys.put(Att.TS_TSV, new S57key(Conv.A, null)); keys.put(Att.T_ACWL, new S57key(Conv.E, null)); keys.put(Att.T_HWLW, new S57key(Conv.A, null));
     1036                keys.put(Att.T_MTOD, new S57key(Conv.E, null)); keys.put(Att.T_THDF, new S57key(Conv.A, null)); keys.put(Att.T_TINT, new S57key(Conv.I, null));
     1037                keys.put(Att.T_TSVL, new S57key(Conv.A, null)); keys.put(Att.T_VAHC, new S57key(Conv.A, null)); keys.put(Att.TIMEND, new S57key(Conv.A, null));
     1038                keys.put(Att.TIMSTA, new S57key(Conv.A, null)); keys.put(Att.TOPSHP, new S57key(Conv.E, Topshp)); keys.put(Att.TRAFIC, new S57key(Conv.E, Trafic));
     1039                keys.put(Att.VALACM, new S57key(Conv.F, null)); keys.put(Att.VALDCO, new S57key(Conv.F, null)); keys.put(Att.VALLMA, new S57key(Conv.F, null));
     1040                keys.put(Att.VALMAG, new S57key(Conv.F, null)); keys.put(Att.VALMXR, new S57key(Conv.F, null)); keys.put(Att.VALNMR, new S57key(Conv.F, null));
     1041                keys.put(Att.VALSOU, new S57key(Conv.F, null)); keys.put(Att.VERACC, new S57key(Conv.F, null)); keys.put(Att.VERCLR, new S57key(Conv.F, null));
     1042                keys.put(Att.VERCCL, new S57key(Conv.F, null)); keys.put(Att.VERCOP, new S57key(Conv.F, null)); keys.put(Att.VERCSA, new S57key(Conv.F, null));
     1043                keys.put(Att.VERDAT, new S57key(Conv.E, Verdat));       keys.put(Att.VERLEN, new S57key(Conv.F, null)); keys.put(Att.WATLEV, new S57key(Conv.E, Watlev));
     1044                keys.put(Att.CAT_TS, new S57key(Conv.E, Cat_ts));       keys.put(Att.PUNITS, new S57key(Conv.E, Punits)); keys.put(Att.NINFOM, new S57key(Conv.S, null));
     1045                keys.put(Att.NOBJNM, new S57key(Conv.S, null)); keys.put(Att.NPLDST, new S57key(Conv.S, null)); keys.put(Att.NTXTDS, new S57key(Conv.S, null));
     1046                keys.put(Att.HORDAT, new S57key(Conv.E, null)); keys.put(Att.POSACC, new S57key(Conv.F, null)); keys.put(Att.QUAPOS, new S57key(Conv.E, Quapos));
     1047                keys.put(Att.CLSDNG, new S57key(Conv.E, Clsdng));       keys.put(Att.DIRIMP, new S57key(Conv.L, Dirimp)); keys.put(Att.DISBK1, new S57key(Conv.F, null));
     1048                keys.put(Att.DISBK2, new S57key(Conv.F, null)); keys.put(Att.DISIPU, new S57key(Conv.F, null)); keys.put(Att.DISIPD, new S57key(Conv.F, null));
     1049                keys.put(Att.ELEVA1, new S57key(Conv.F, null)); keys.put(Att.ELEVA2, new S57key(Conv.F, null)); keys.put(Att.FNCTNM, new S57key(Conv.E, Fnctnm));
     1050                keys.put(Att.WTWDIS, new S57key(Conv.F, null)); keys.put(Att.BUNVES, new S57key(Conv.E, Bunves)); keys.put(Att.COMCTN, new S57key(Conv.S, null));
     1051                keys.put(Att.HORCLL, new S57key(Conv.F, null)); keys.put(Att.HORCLW, new S57key(Conv.F, null)); keys.put(Att.TRSHGD, new S57key(Conv.L, Trshgd));
     1052                keys.put(Att.UNLOCD, new S57key(Conv.S, null)); keys.put(Att.HIGWAT, new S57key(Conv.F, null)); keys.put(Att.HIGNAM, new S57key(Conv.S, null));
     1053                keys.put(Att.LOWWAT, new S57key(Conv.F, null)); keys.put(Att.LOWNAM, new S57key(Conv.S, null)); keys.put(Att.MEAWAT, new S57key(Conv.F, null));
     1054                keys.put(Att.MEANAM, new S57key(Conv.S, null)); keys.put(Att.OTHWAT, new S57key(Conv.F, null)); keys.put(Att.OTHNAM, new S57key(Conv.S, null));
     1055                keys.put(Att.REFLEV, new S57key(Conv.E, Reflev));       keys.put(Att.SDRLEV, new S57key(Conv.S, null)); keys.put(Att.VCRLEV, new S57key(Conv.S, null));
     1056                keys.put(Att.SCHREF, new S57key(Conv.S, null)); keys.put(Att.USESHP, new S57key(Conv.E, Useshp)); keys.put(Att.CURVHW, new S57key(Conv.F, null));
     1057                keys.put(Att.CURVLW, new S57key(Conv.F, null)); keys.put(Att.CURVMW, new S57key(Conv.F, null)); keys.put(Att.CURVOW, new S57key(Conv.F, null));
     1058                keys.put(Att.APTREF, new S57key(Conv.S, null)); keys.put(Att.SHPTYP, new S57key(Conv.E, Shptyp)); keys.put(Att.UPDMSG, new S57key(Conv.S, null));
     1059                keys.put(Att.ADDMRK, new S57key(Conv.L, Addmrk));       keys.put(Att.BNKWTW, new S57key(Conv.E, Bnkwtw)); keys.put(Att.CATBNK, new S57key(Conv.E, Catbnk));
     1060                keys.put(Att.CATNMK, new S57key(Conv.E, Catnmk));       keys.put(Att.CATBRT, new S57key(Conv.L, Catbrt)); keys.put(Att.CATBUN, new S57key(Conv.L, Catbun));
     1061                keys.put(Att.CATCCL, new S57key(Conv.L, Catccl));       keys.put(Att.CATCOM, new S57key(Conv.L, Catcom)); keys.put(Att.CATHBR, new S57key(Conv.L, Cathbr));
     1062                keys.put(Att.CATRFD, new S57key(Conv.L, Catrfd));       keys.put(Att.CATTML, new S57key(Conv.L, Cattml)); keys.put(Att.CATGAG, new S57key(Conv.L, Catgag));
     1063                keys.put(Att.CATVTR, new S57key(Conv.L, Catvtr));       keys.put(Att.CATTAB, new S57key(Conv.E, Cattab)); keys.put(Att.CATEXS, new S57key(Conv.E, Catexs));
     1064                keys.put(Att.CATWWM, new S57key(Conv.E, Catwwm));       keys.put(Att.LG_SPD, new S57key(Conv.F, null)); keys.put(Att.LG_SPR, new S57key(Conv.L, Lg_spr));
     1065                keys.put(Att.LG_BME, new S57key(Conv.F, null)); keys.put(Att.LG_LGS, new S57key(Conv.F, null)); keys.put(Att.LG_DRT, new S57key(Conv.F, null));
     1066                keys.put(Att.LG_WDP, new S57key(Conv.F, null)); keys.put(Att.LG_WDU, new S57key(Conv.E, Lg_wdu)); keys.put(Att.LG_REL, new S57key(Conv.L, Lg_rel));
     1067                keys.put(Att.LG_FNC, new S57key(Conv.L, Lg_fnc));       keys.put(Att.LG_DES, new S57key(Conv.S, null)); keys.put(Att.LG_PBR, new S57key(Conv.S, null));
     1068                keys.put(Att.LC_CSI, new S57key(Conv.L, Lc_csi));       keys.put(Att.LC_CSE, new S57key(Conv.L, Lc_cse)); keys.put(Att.LC_ASI, new S57key(Conv.L, Lc_asi));
     1069                keys.put(Att.LC_ASE, new S57key(Conv.L, Lc_ase));       keys.put(Att.LC_CCI, new S57key(Conv.L, Lc_cci)); keys.put(Att.LC_CCE, new S57key(Conv.L, Lc_cce));
     1070                keys.put(Att.LC_BM1, new S57key(Conv.F, null)); keys.put(Att.LC_BM2, new S57key(Conv.F, null)); keys.put(Att.LC_LG1, new S57key(Conv.F, null));
     1071                keys.put(Att.LC_LG2, new S57key(Conv.F, null)); keys.put(Att.LC_DR1, new S57key(Conv.F, null)); keys.put(Att.LC_DR2, new S57key(Conv.F, null));
     1072                keys.put(Att.LC_SP1, new S57key(Conv.F, null)); keys.put(Att.LC_SP2, new S57key(Conv.F, null)); keys.put(Att.LC_WD1, new S57key(Conv.F, null));
     1073                keys.put(Att.LC_WD2, new S57key(Conv.F, null)); keys.put(Att.LITRAD, new S57key(Conv.A, null));
    10861074        }
    10871075       
  • applications/editors/josm/plugins/smed2/src/seamap/MapHelper.java

    r29174 r29266  
    33import java.awt.geom.Point2D;
    44
    5 import seamap.SeaMap.Coord;
     5import seamap.SeaMap.*;
    66
    77public interface MapHelper {
    8         Point2D getPoint(Coord coord);
     8        Point2D getPoint(Snode coord);
    99}
  • applications/editors/josm/plugins/smed2/src/seamap/Renderer.java

    r29215 r29266  
    1010package seamap;
    1111
    12 import java.awt.BasicStroke;
    13 import java.awt.Color;
    14 import java.awt.Font;
    15 import java.awt.Graphics2D;
    16 import java.awt.Rectangle;
    17 import java.awt.RenderingHints;
    18 import java.awt.geom.AffineTransform;
    19 import java.awt.geom.GeneralPath;
    20 import java.awt.geom.Path2D;
    21 import java.awt.geom.Point2D;
    22 import java.util.ArrayList;
    23 import java.util.HashMap;
    24 
    25 import s57.S57att.Att;
    26 import s57.S57obj.Obj;
     12import java.awt.*;
     13import java.awt.geom.*;
     14import java.util.*;
     15
     16import s57.S57att.*;
     17import s57.S57obj.*;
    2718import s57.S57val.*;
    2819import s57.S57val;
     
    7162        }
    7263
    73         public static double signedArea(Feature feature) {
    74           if (feature.flag == Fflag.AREA) {
    75                         ArrayList<Long> way;
    76                         if (map.mpolys.containsKey(feature.refs)) {
    77                                 way = map.ways.get(map.mpolys.get(feature.refs));
    78                         } else {
    79                                 way = map.ways.get(feature.refs);
    80                         }
    81                         Coord coord = map.nodes.get(way.get(0));
    82             double llon = coord.lon;
    83             double llat = coord.lat;
    84             double sigma = 0.0;
    85                         for (long node : way) {
    86                                 coord = map.nodes.get(node);
    87                                 double lat = coord.lat;
    88                                 double lon = coord.lon;
    89                                 sigma += (lon * Math.sin(llat)) - (llon * Math.sin(lat));
    90                                 llon = lon;
    91                                 llat = lat;
    92             }
    93             return sigma;
    94           }
    95           return 0;
    96         }
    97 
    98         public boolean handOfArea(Feature feature) {
    99                 return (signedArea(feature) < 0);
    100         }
    101        
    102         public static double calcArea(Feature feature) {
    103           return Math.abs(signedArea(feature)) * 3444 * 3444 / 2.0;
    104         }
    105 
    106         public static Coord findCentroid(Feature feature) {
    107                 Coord coord;
    108                 ArrayList<Long> way;
    109                 if (map.mpolys.containsKey(feature.refs)) {
    110                         way = map.ways.get(map.mpolys.get(feature.refs).get(0));
    111                 } else {
    112                         way = map.ways.get(feature.refs);
    113                 }
    114                 switch (feature.flag) {
    115                 case NODE:
    116                         return map.nodes.get(feature.refs);
    117                 case LINE:
    118                         coord = map.nodes.get(way.get(1));
    119                         break;
    120                 case AREA:
    121                 default:
    122                         coord = map.nodes.get(way.get(0));
    123                 }
    124     double slat = 0.0;
    125     double slon = 0.0;
    126     double sarc = 0.0;
    127     double llat = coord.lat;
    128     double llon = coord.lon;
    129                 for (long node : way) {
    130                         coord = map.nodes.get(node);
    131       double lon = coord.lon;
    132       double lat = coord.lat;
    133       double arc = (Math.acos(Math.cos(lon-llon) * Math.cos(lat-llat)));
    134       slat += (lat * arc);
    135       slon += (lon * arc);
    136       sarc += arc;
    137       llat = lat;
    138       llon = lon;
    139                 }
    140                 return map.new Coord((sarc > 0.0 ? slat/sarc : 0.0), (sarc > 0.0 ? slon/sarc : 0.0));
    141         }
    142        
    14364        public static void symbol(Feature feature, Symbol symbol, Obj obj, Delta delta) {
    144                 Point2D point = helper.getPoint(findCentroid(feature));
     65                Point2D point = helper.getPoint(feature.centre);
    14566                if (obj == null) {
    14667                        Symbols.drawSymbol(g2, symbol, sScale, point.getX(), point.getY(), delta, null);
     
    17192       
    17293        public static void lineSymbols(Feature feature, Symbol prisymb, double space, Symbol secsymb, int ratio) {
    173                 if (feature.flag != Fflag.NODE) {
     94                if (feature.flag != Fflag.POINT) {
    17495                        Rectangle prect = symbolSize(prisymb);
    17596                        Rectangle srect = symbolSize(secsymb);
     
    180101                                double psize = Math.abs(prect.getY()) * sScale;
    181102                                double ssize = (srect != null) ? Math.abs(srect.getY()) * sScale : 0;
    182                                 if (map.outers.containsKey(feature.refs)) {
    183                                         ways.addAll(map.mpolys.get(map.outers.get(feature.refs)));
    184                                 } else {
    185                                         if (map.mpolys.containsKey(feature.refs)) {
    186                                                 ways.addAll(map.mpolys.get(feature.refs));
    187                                         } else {
    188                                                 ways.add(feature.refs);
    189                                         }
    190                                 }
     103//                              if (map.outers.containsKey(feature.refs)) {
     104//                                      ways.addAll(map.mpolys.get(map.outers.get(feature.refs)));
     105//                              } else {
     106//                                      if (map.mpolys.containsKey(feature.refs)) {
     107//                                              ways.addAll(map.mpolys.get(feature.refs));
     108//                                      } else {
     109//                                              ways.add(feature.refs);
     110//                                      }
     111//                              }
    191112                                Point2D prev = new Point2D.Double();
    192113                                Point2D next = new Point2D.Double();
     
    201122                                for (long way : ways) {
    202123                                        boolean first = true;
    203                                         for (long node : map.ways.get(way)) {
     124/*                                      for (long node : map.ways.get(way)) {
    204125                                                prev = next;
    205                                                 next = helper.getPoint(map.nodes.get(node));
     126                                                next = helper.getPoint(map.points.get(node));
    206127                                                angle = Math.atan2(next.getY() - prev.getY(), next.getX() - prev.getX());
    207128                                                piv = true;
     
    246167                                                }
    247168                                        }
    248                                 }
     169*/                              }
    249170                        }
    250171                }
     
    252173
    253174        public static void lineVector (Feature feature, LineStyle style) {
    254                 if (feature.flag != Fflag.NODE) {
     175                if (feature.flag != Fflag.POINT) {
    255176                        ArrayList<Long> ways = new ArrayList<Long>();
    256                         if (map.outers.containsKey(feature.refs)) {
    257                                 ways.addAll(map.mpolys.get(map.outers.get(feature.refs)));
    258                         } else {
    259                                 if (map.mpolys.containsKey(feature.refs)) {
    260                                         ways.addAll(map.mpolys.get(feature.refs));
    261                                 } else {
    262                                         ways.add(feature.refs);
    263                                 }
    264                         }
     177//                      if (map.outers.containsKey(feature.refs)) {
     178//                              ways.addAll(map.mpolys.get(map.outers.get(feature.refs)));
     179//                      } else {
     180//                              if (map.mpolys.containsKey(feature.refs)) {
     181//                                      ways.addAll(map.mpolys.get(feature.refs));
     182//                              } else {
     183//                                      ways.add(feature.refs);
     184//                              }
     185//                      }
    265186                        Path2D.Double p = new Path2D.Double();
    266187                        p.setWindingRule(GeneralPath.WIND_EVEN_ODD);
    267188                        for (long way : ways) {
    268189                                boolean first = true;
    269                                 for (long node : map.ways.get(way)) {
    270                                         Point2D point = helper.getPoint(map.nodes.get(node));
     190/*                              for (long node : map.ways.get(way)) {
     191                                        Point2D point = helper.getPoint(map.points.get(node));
    271192                                        if (first) {
    272193                                                p.moveTo(point.getX(), point.getY());
     
    294215                                g2.setPaint(style.fill);
    295216                                g2.fill(p);
    296                         }
     217*/                      }
    297218                }
    298219        }
     
    301222                Symbol label = new Symbol();
    302223                label.add(new Instr(Prim.TEXT, new Caption(str, font, colour, (delta == null) ? new Delta(Handle.CC, null) : delta)));
    303                 Point2D point = helper.getPoint(findCentroid(feature));
     224                Point2D point = helper.getPoint(feature.centre);
    304225                Symbols.drawSymbol(g2, label, tScale, point.getX(), point.getY(), null, null);
    305226        }
  • applications/editors/josm/plugins/smed2/src/seamap/Rules.java

    r29206 r29266  
    1010package seamap;
    1111
    12 import java.awt.BasicStroke;
    1312import java.awt.Color;
    1413import java.awt.Font;
     
    179178                        break;
    180179                case FAIRWY:
    181                         if (Renderer.calcArea(feature) > 2.0) {
     180                        if (feature.area > 2.0) {
    182181                                if (zoom < 16)
    183182                                        Renderer.lineVector(feature, new LineStyle(new Color(0xc480ff), 8, new float[] { 50, 50 }, new Color(0x40ffffff, true)));
  • applications/editors/josm/plugins/smed2/src/seamap/SeaMap.java

    r29215 r29266  
    1010package seamap;
    1111
    12 import java.util.ArrayList;
    13 import java.util.EnumMap;
    14 import java.util.HashMap;
     12import java.util.*;
    1513
    1614import s57.S57att;
     
    2321public class SeaMap {
    2422
    25         public enum Fflag {
    26                 UNKN, NODE, LINE, AREA
    27         }
    28        
    2923        public enum Nflag {
    3024                ANON, ISOL, CONN
    3125        }
    32 
    33         public class Coord {
     26       
     27        public class Snode {
    3428                public double lat;
    3529                public double lon;
    3630                public Nflag flg;
    3731
    38                 public Coord(double ilat, double ilon) {
     32                public Snode() {
     33                        flg = Nflag.ANON;
     34                        lat = 0;
     35                        lon = 0;
     36                }
     37                public Snode(double ilat, double ilon) {
     38                        flg = Nflag.ANON;
    3939                        lat = ilat;
    4040                        lon = ilon;
    41                         flg = Nflag.ANON;
    42                 }
    43                 public Coord(double ilat, double ilon, Nflag iflg) {
     41                }
     42                public Snode(double ilat, double ilon, Nflag iflg) {
    4443                        lat = ilat;
    4544                        lon = ilon;
     
    4746                }
    4847        }
     48       
     49        public class Edge {
     50                public boolean forward;
     51                public long first;
     52                public long last;
     53                public ArrayList<Long> nodes;
     54                public Edge() {
     55                        forward = true;
     56                        first = 0;
     57                        last = 0;
     58                        nodes = new ArrayList<Long>();
     59                }
     60        }
     61       
     62        public class Side {
     63                Edge edge;
     64                boolean forward;
     65                public Side(Edge iedge, boolean ifwd) {
     66                        edge = iedge;
     67                        forward = ifwd;
     68                }
     69        }
     70       
     71        public class Bound {
     72                public boolean outer;
     73                ArrayList<Side> sides;
     74                public Bound() {
     75                        outer = true;
     76                        sides = new ArrayList<Side>();
     77                }
     78                public Bound(Side iside, boolean irole) {
     79                        outer = irole;
     80                        sides = new ArrayList<Side>();
     81                        sides.add(iside);
     82                }
     83        }
     84
     85        public class Area extends ArrayList<Bound> {
     86                public Area() {
     87                        super();
     88                }
     89        }
    4990
    5091        public class AttItem {
     
    5798                }
    5899        }
    59 
     100       
    60101        public class AttMap extends EnumMap<Att, AttItem> {
    61102                public AttMap() {
     
    76117        }
    77118       
    78         public class NodeTab extends HashMap<Long, Coord> {
     119        public class NodeTab extends HashMap<Long, Snode> {
    79120                public NodeTab() {
    80121                        super();
     
    82123        }
    83124       
    84         public class WayTab extends HashMap<Long, ArrayList<Long>> {
    85                 public WayTab() {
     125        public class EdgeTab extends HashMap<Long, Edge> {
     126                public EdgeTab() {
    86127                        super();
    87128                }
    88129        }
    89130       
    90         public class MpolyTab extends HashMap<Long, Long> {
    91                 public MpolyTab() {
     131        public class AreaTab extends HashMap<Long, Area> {
     132                public AreaTab() {
    92133                        super();
    93134                }
     
    104145                        super();
    105146                }
     147        }
     148       
     149        public enum Fflag {
     150                UNKN, POINT, LINE, AREA
    106151        }
    107152       
     
    112157                public AttMap atts;
    113158                public ObjMap objs;
     159                public long area;
     160                public Snode centre;
    114161
    115162                Feature() {
     
    119166                        atts = new AttMap();
    120167                        objs = new ObjMap();
     168                        area = 0;
     169                        centre = new Snode();
    121170                }
    122171        }
    123172
    124173        public NodeTab nodes;
    125         public WayTab ways;
    126         public WayTab mpolys;
    127         public MpolyTab outers;
     174        public EdgeTab edges;
     175        public AreaTab areas;
     176       
    128177        public FtrMap features;
    129178        public FtrTab index;
    130179
    131180        private Feature feature;
    132         private ArrayList<Long> list;
     181        private Edge edge;
     182        private ArrayList<Long> outers;
     183        private ArrayList<Long> inners;
    133184
    134185        public SeaMap() {
    135186                nodes = new NodeTab();
    136                 ways = new WayTab();
    137                 mpolys = new WayTab();
    138                 outers = new MpolyTab();
     187                edges = new EdgeTab();
     188                areas = new AreaTab();
    139189                feature = new Feature();
    140190                features = new FtrMap();
     
    143193
    144194        public void addNode(long id, double lat, double lon) {
    145                 nodes.put(id, new Coord(Math.toRadians(lat), Math.toRadians(lon)));
     195                nodes.put(id, new Snode(Math.toRadians(lat), Math.toRadians(lon)));
    146196                feature = new Feature();
    147197                feature.refs = id;
    148                 feature.flag = Fflag.NODE;
    149         }
    150 
    151         public void moveNode(long id, double lat, double lon) {
    152                 nodes.put(id, new Coord(Math.toRadians(lat), Math.toRadians(lon)));
    153         }
    154 
    155         public void addWay(long id) {
    156                 list = new ArrayList<Long>();
    157                 ways.put(id, list);
     198                feature.flag = Fflag.POINT;
     199                edge = null;
     200        }
     201
     202        public void addEdge(long id) {
    158203                feature = new Feature();
    159204                feature.refs = id;
    160205                feature.flag = Fflag.LINE;
    161         }
    162 
    163         public void addMpoly(long id) {
    164                 list = new ArrayList<Long>();
    165                 mpolys.put(id, list);
     206                edge = new Edge();
     207        }
     208
     209        public void addToEdge(long node) {
     210                if (edge.first == 0) {
     211                        edge.first = node;
     212                } else {
     213                        if (edge.last != 0) {
     214                                edge.nodes.add(edge.last);
     215                        }
     216                        edge.last = node;
     217                }
     218        }
     219
     220        public void addArea(long id) {
    166221                feature = new Feature();
    167222                feature.refs = id;
    168223                feature.flag = Fflag.AREA;
    169         }
    170 
    171         public void addToWay(long node) {
    172                 list.add(node);
    173         }
    174 
    175         public void addToMpoly(long way, boolean outer) {
     224                outers = new ArrayList<Long>();
     225                inners = new ArrayList<Long>();
     226                edge = null;
     227        }
     228
     229        public void addToArea(long id, boolean outer) {
    176230                if (outer) {
    177                         list.add(0, way);
    178                         outers.put(way, feature.refs);
     231                        outers.add(id);
    179232                } else {
    180                         list.add(way);
    181                 }
    182         }
    183 
    184         public void tagsDone(long id) {
    185                 if ((feature.type != Obj.UNKOBJ) && !((feature.flag == Fflag.LINE) && (list.size() < 2))) {
    186                         index.put(id, feature);
    187                         if ((feature.flag == Fflag.LINE) && (list.size() > 0) && (list.get(0).equals(list.get(list.size() - 1)))) {
    188                                 feature.flag = Fflag.AREA;
    189                         }
    190                         if (features.get(feature.type) == null) {
    191                                 features.put(feature.type, new ArrayList<Feature>());
    192                         }
    193                         features.get(feature.type).add(feature);
    194                 }
    195         }
    196 
     233                        inners.add(id);
     234                }
     235        }
     236       
    197237        public void addTag(String key, String val) {
    198238                String subkeys[] = key.split(":");
     
    235275                }
    236276        }
     277
     278        public void tagsDone(long id) {
     279                if ((feature.type != Obj.UNKOBJ) && !((edge != null) && (edge.last == 0))) {
     280                        index.put(id, feature);
     281                        if (features.get(feature.type) == null) {
     282                                features.put(feature.type, new ArrayList<Feature>());
     283                        }
     284                        features.get(feature.type).add(feature);
     285                }
     286                switch (feature.flag) {
     287                case POINT:
     288                        Snode node = nodes.get(id);
     289                        if (node.flg != Nflag.CONN) {
     290                                node.flg = Nflag.ISOL;
     291                        }
     292                        break;
     293                case LINE:
     294                        edges.put(id, edge);
     295                        nodes.get(edge.first).flg = Nflag.CONN;
     296                        nodes.get(edge.last).flg = Nflag.CONN;
     297                        if (edge.first == edge.last) {
     298                                feature.flag = Fflag.AREA;
     299                                Area area = new Area();
     300                                area.add(new Bound(new Side(edge, edge.forward), true));
     301                                areas.put(id, area);
     302                        }
     303                        break;
     304                case AREA:
     305                        Area area = new Area();
     306                        for (ArrayList<Long> role = outers; role != null; role = inners) {
     307                                while (!role.isEmpty()) {
     308                                        Edge edge = edges.get(role.remove(0));
     309                                        long node1 = edge.first;
     310                                        long node2 = edge.last;
     311                                        Bound bound = new Bound(new Side(edge, edge.forward), (role == outers));
     312                                        if (node1 != node2) {
     313                                                for (ListIterator<Long> it = role.listIterator(0); it.hasNext(); ) {
     314                                            Edge nedge = edges.get(it.next());
     315                                            if (nedge.first == node2) {
     316                                                bound.sides.add(new Side(nedge, true));
     317                                                it.remove();
     318                                                if (nedge.last == node2) break;
     319                                            } else if (nedge.last == node2) {
     320                                                bound.sides.add(new Side(nedge, false));
     321                                                it.remove();
     322                                                if (nedge.first == node2) break;
     323                                            }
     324                                                }
     325                                        }
     326                                        area.add(bound);
     327                                }
     328                                if (role == outers) {
     329                                        if (area.isEmpty()) {
     330                                                role = null;
     331                                        } else {
     332                                                areas.put(id, area);
     333                                        }
     334                                }
     335                        }
     336                        break;
     337                }
     338                feature.centre = findCentroid(feature);
     339        }
     340
     341        public double signedArea(Bound bound) {
     342                Snode node;
     343                double lat, lon, llon, llat;
     344                lat = lon = llon = llat = 0;
     345                double sigma = 0;
     346                ListIterator<Long> it;
     347                for (Side side : bound.sides) {
     348                        if (side.forward) {
     349                                node = nodes.get(side.edge.first);
     350                                lat = node.lat;
     351                                lon = node.lon;
     352                                it = side.edge.nodes.listIterator();
     353                                while (it.hasNext()) {
     354                                        llon = lon;
     355                                        llat = lat;
     356                                        node = nodes.get(it.next());
     357                                        lat = node.lat;
     358                                        lon = node.lon;
     359                                        sigma += (lon * Math.sin(llat)) - (llon * Math.sin(lat));
     360                                }
     361                                llon = lon;
     362                                llat = lat;
     363                                node = nodes.get(side.edge.last);
     364                                lat = node.lat;
     365                                lon = node.lon;
     366                                sigma += (lon * Math.sin(llat)) - (llon * Math.sin(lat));
     367                        } else {
     368                                node = nodes.get(side.edge.last);
     369                                lat = node.lat;
     370                                lon = node.lon;
     371                                it = side.edge.nodes.listIterator(side.edge.nodes.size());
     372                                while (it.hasPrevious()) {
     373                                        llon = lon;
     374                                        llat = lat;
     375                                        node = nodes.get(it.previous());
     376                                        lat = node.lat;
     377                                        lon = node.lon;
     378                                        sigma += (lon * Math.sin(llat)) - (llon * Math.sin(lat));
     379                                }
     380                                llon = lon;
     381                                llat = lat;
     382                                node = nodes.get(side.edge.first);
     383                                lat = node.lat;
     384                                lon = node.lon;
     385                                sigma += (lon * Math.sin(llat)) - (llon * Math.sin(lat));
     386                        }
     387                }
     388                return sigma;
     389        }
     390
     391        public boolean handOfArea(Bound bound) {
     392                return (signedArea(bound) < 0);
     393        }
     394       
     395        public double calcArea(Bound bound) {
     396          return Math.abs(signedArea(bound)) * 3444 * 3444 / 2.0;
     397        }
     398
     399        public Snode findCentroid(Feature feature) {
     400    double lat, lon, slat, slon, sarc, llat, llon;
     401    lat = lon = slat = slon = sarc = llat = llon = 0;
     402                switch (feature.flag) {
     403                case POINT:
     404                        return nodes.get(feature.refs);
     405                case LINE:
     406                        Edge edge = edges.get(feature.refs);
     407                        llat = nodes.get(edge.first).lat;
     408                        llon = nodes.get(edge.first).lon;
     409                        for (long id : edge.nodes) {
     410                                lat = nodes.get(id).lat;
     411                                lon = nodes.get(id).lon;
     412                                sarc += (Math.acos(Math.cos(lon-llon) * Math.cos(lat-llat)));
     413                                llat = lat;
     414                                llon = lon;
     415                        }
     416                        lat = nodes.get(edge.last).lat;
     417                        lon = nodes.get(edge.last).lon;
     418                        sarc += (Math.acos(Math.cos(lon-llon) * Math.cos(lat-llat)));
     419                        double harc = sarc / 2;
     420                        sarc = 0;
     421                        llat = nodes.get(edge.first).lat;
     422                        llon = nodes.get(edge.first).lon;
     423                        for (long id : edge.nodes) {
     424                                lat = nodes.get(id).lat;
     425                                lon = nodes.get(id).lon;
     426                                sarc = (Math.acos(Math.cos(lon-llon) * Math.cos(lat-llat)));
     427                                if (sarc > harc) break;
     428                                harc -= sarc;
     429                                llat = lat;
     430                                llon = lon;
     431                        }
     432                        if (sarc <= harc) {
     433                                lat = nodes.get(edge.last).lat;
     434                                lon = nodes.get(edge.last).lon;
     435                                sarc = (Math.acos(Math.cos(lon-llon) * Math.cos(lat-llat)));
     436                        }
     437                        double frac = harc / sarc;
     438                        return new Snode(llat + ((lat - llat) / frac), llon + ((lon - llon) / frac));
     439                case AREA:
     440                        Bound bound = areas.get(feature.refs).get(0);
     441                        Snode node;
     442                        ListIterator<Long> it;
     443                        for (Side side : bound.sides) {
     444                                if (side.forward) {
     445                                        node = nodes.get(side.edge.first);
     446                                        lat = node.lat;
     447                                        lon = node.lon;
     448                                        it = side.edge.nodes.listIterator();
     449                                        while (it.hasNext()) {
     450                                                llon = lon;
     451                                                llat = lat;
     452                                                node = nodes.get(it.next());
     453                                                lat = node.lat;
     454                                                lon = node.lon;
     455                                                double arc = (Math.acos(Math.cos(lon-llon) * Math.cos(lat-llat)));
     456                                                slat += (lat * arc);
     457                                                slon += (lon * arc);
     458                                                sarc += arc;
     459                                        }
     460                                        llon = lon;
     461                                        llat = lat;
     462                                        node = nodes.get(side.edge.last);
     463                                        lat = node.lat;
     464                                        lon = node.lon;
     465                                        double arc = (Math.acos(Math.cos(lon-llon) * Math.cos(lat-llat)));
     466                                        slat += (lat * arc);
     467                                        slon += (lon * arc);
     468                                        sarc += arc;
     469                                } else {
     470                                        node = nodes.get(side.edge.last);
     471                                        lat = node.lat;
     472                                        lon = node.lon;
     473                                        it = side.edge.nodes.listIterator(side.edge.nodes.size());
     474                                        while (it.hasPrevious()) {
     475                                                llon = lon;
     476                                                llat = lat;
     477                                                node = nodes.get(it.previous());
     478                                                lat = node.lat;
     479                                                lon = node.lon;
     480                                                double arc = (Math.acos(Math.cos(lon-llon) * Math.cos(lat-llat)));
     481                                                slat += (lat * arc);
     482                                                slon += (lon * arc);
     483                                                sarc += arc;
     484                                        }
     485                                        llon = lon;
     486                                        llat = lat;
     487                                        node = nodes.get(side.edge.first);
     488                                        lat = node.lat;
     489                                        lon = node.lon;
     490                                        double arc = (Math.acos(Math.cos(lon-llon) * Math.cos(lat-llat)));
     491                                        slat += (lat * arc);
     492                                        slon += (lon * arc);
     493                                        sarc += arc;
     494                                }
     495                        }
     496                        return new Snode((sarc > 0.0 ? slat/sarc : 0.0), (sarc > 0.0 ? slon/sarc : 0.0));
     497                }
     498                return null;
     499        }
     500       
    237501}
  • applications/editors/josm/plugins/smed2/src/smed2/MapImage.java

    r29204 r29266  
    2121import seamap.MapHelper;
    2222import seamap.Renderer;
    23 import seamap.SeaMap.Coord;
     23import seamap.SeaMap.*;
    2424
    2525public class MapImage extends ImageryLayer implements ZoomChangeListener, MapHelper {
     
    8787        }
    8888
    89         public Point2D.Double getPoint(Coord coord) {
     89        public Point2D.Double getPoint(Snode coord) {
    9090                return (Double) Main.map.mapView.getPoint2D(new LatLon(Math.toDegrees(coord.lat), Math.toDegrees(coord.lon)));
    9191        }
  • applications/editors/josm/plugins/smed2/src/smed2/Smed2Action.java

    r29215 r29266  
    4747                public void nodeMoved(NodeMovedEvent e) {
    4848                        if (map != null) {
    49                                 Node node = e.getNode();
    50                                 map.moveNode(node.getUniqueId(), node.getCoor().lat(), node.getCoor().lon());
     49                                makeMap();
    5150                        }
    5251                }
     
    210209                                        map.addNode(((Node) osm).getUniqueId(), ((Node) osm).getCoor().lat(), ((Node) osm).getCoor().lon());
    211210                                } else if (osm instanceof Way) {
    212                                         map.addWay(((Way) osm).getUniqueId());
     211                                        map.addEdge(((Way) osm).getUniqueId());
    213212                                        for (Node node : ((Way) osm).getNodes()) {
    214                                                 map.addToWay((node.getUniqueId()));
     213                                                map.addToEdge((node.getUniqueId()));
    215214                                        }
    216215                                } else if ((osm instanceof Relation) && ((Relation) osm).isMultipolygon()) {
    217                                         map.addMpoly(((Relation) osm).getUniqueId());
     216                                        map.addArea(((Relation) osm).getUniqueId());
    218217                                        for (RelationMember mem : ((Relation) osm).getMembers()) {
    219218                                                if (mem.getType() == OsmPrimitiveType.WAY)
    220                                                         map.addToMpoly(mem.getUniqueId(), (mem.getRole().equals("outer")));
     219                                                        map.addToArea(mem.getUniqueId(), (mem.getRole().equals("outer")));
    221220                                        }
    222221                                }
Note: See TracChangeset for help on using the changeset viewer.