Ignore:
Timestamp:
2016-06-23T14:17:55+02:00 (9 years ago)
Author:
malcolmh
Message:

updates

Location:
applications/editors/josm/plugins/seachart/src/s57
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • applications/editors/josm/plugins/seachart/src/s57/S57dat.java

    r31846 r32380  
    224224                } else {
    225225                        int f = Math.abs(conv.bin);
    226                         if (f < 8) {
     226                        if (f < 5) {
    227227                                long val = buffer[offset + --f];
    228228                                if (conv.bin > 0)
     
    253253                                return val;
    254254                        } else {
    255                                 f /= 8;
    256                                 long val = 0;
    257                                 for (int i = 0; i < f; i++) {
     255                                if (f == 5) {
     256                                        long val = buffer[offset++] & 0xff;
     257                                        f--;
     258                                        while (f > 0) {
     259                                                val = (val << 8) + (buffer[offset + --f] & 0xff);
     260                                        }
     261                                        offset += 4;
     262                                        return val;
     263                                } else {
     264                                        long val = buffer[offset++] & 0xff;
    258265                                        val = (val << 8) + (buffer[offset++] & 0xff);
    259                                 }
    260                                 return val;
     266                                        f = 4;
     267                                        while (f > 0) {
     268                                                val = (val << 8) + (buffer[offset + --f] & 0xff);
     269                                        }
     270                                        offset += 4;
     271                                        f = 2;
     272                                        while (f > 0) {
     273                                                val = (val << 8) + (buffer[offset + --f] & 0xff);
     274                                        }
     275                                        offset += 2;
     276                                        return val;
     277                                }
    261278                        }
    262279                }
  • applications/editors/josm/plugins/seachart/src/s57/S57dec.java

    r31722 r32380  
    2121                S57dat.rnum = 0;
    2222                byte[] leader = new byte[24];
     23                byte[] record = new byte[0];
    2324                boolean ddr = false;
    2425                int length = 0;
     
    4041                        try {
    4142                        length = Integer.parseInt(new String(leader, 0, 5)) - 24;
     43                        record = new byte[length];
    4244                        ddr = (leader[6] == 'L');
    4345                        fields = Integer.parseInt(new String(leader, 12, 5)) - 24;
     
    5052                        mapts = leader[23] - '0';
    5153                        entry = mapfl + mapfp + mapts;
    52                         byte[] record = new byte[length];
    5354                        if (in.read(record) != length)
    5455                                break;
     
    6162                                        case "0001":
    6263                                                int i8rn = ((Long) S57dat.decSubf(record, fields + pos, S57field.I8RI, S57subf.I8RN)).intValue();
    63                                                 if (i8rn != ++S57dat.rnum) {
    64                                                         System.err.println("Out of order record ID");
    65                                                         in.close();
    66                                                         System.exit(-1);
    67                                                 }
     64//                                              if (i8rn != ++S57dat.rnum) {
     65//                                                      System.err.println("Out of order record ID");
     66//                                                      in.close();
     67//                                                      System.exit(-1);
     68//                                              }
    6869                                                break;
    6970                                        case "DSSI":
     
    9394                                                break;
    9495                                        case "FOID":
    95                                                 name = (Long) S57dat.decSubf(record, fields + pos, S57field.LNAM, S57subf.LNAM);
     96                                                name = (long) S57dat.decSubf(record, fields + pos, S57field.LNAM, S57subf.LNAM);
    9697                                                map.newFeature(name, pflag, objl);
    9798                                                break;
     
    109110                                                S57dat.setField(record, fields + pos, S57field.FFPT, len);
    110111                                                do {
    111                                                         name = (Long) S57dat.decSubf(S57subf.LNAM);
     112                                                        name = (long) S57dat.decSubf(S57subf.LNAM);
    112113                                                        int rind = ((Long) S57dat.decSubf(S57subf.RIND)).intValue();
    113114                                                        S57dat.decSubf(S57subf.COMT);
    114                                                         map.newObj(name, rind);
     115                                                        map.refObj(name, rind);
    115116                                                } while (S57dat.more());
    116117                                                break;
     
    118119                                                S57dat.setField(record, fields + pos, S57field.FSPT, len);
    119120                                                do {
    120                                                         name = (Long) S57dat.decSubf(S57subf.NAME) << 16;
     121                                                        name = (long) S57dat.decSubf(S57subf.NAME) << 16;
    121122                                                        map.newPrim(name, (Long) S57dat.decSubf(S57subf.ORNT), (Long) S57dat.decSubf(S57subf.USAG));
    122123                                                        S57dat.decSubf(S57subf.MASK);
     
    138139                                                }
    139140                                                name <<= 32;
    140                                                 name += (Long) S57dat.decSubf(S57subf.RCID);
     141                                                name += (long) S57dat.decSubf(S57subf.RCID);
    141142                                                name <<= 16;
    142143                                                if (nflag == Nflag.ANON) {
  • applications/editors/josm/plugins/seachart/src/s57/S57map.java

    r32090 r32380  
    273273        }
    274274       
    275         public void newObj(long id, int rind) {
     275        public void refObj(long id, int rind) {
    276276                Rflag r = Rflag.UNKN;
    277277                switch (rind) {
  • applications/editors/josm/plugins/seachart/src/s57/S57val.java

    r32101 r32380  
    812812  Catnmk.put(CatNMK.NMK_WEIR, new S57enum(52, "weir")); Catnmk.put(CatNMK.NMK_FERN, new S57enum(53, "ferry_non_independent"));  Catnmk.put(CatNMK.NMK_FERI, new S57enum(54, "ferry_independent"));
    813813  Catnmk.put(CatNMK.NMK_BRTP, new S57enum(55, "berthing_permitted")); Catnmk.put(CatNMK.NMK_BTLL, new S57enum(56, "berthing_lateral_limit")); Catnmk.put(CatNMK.NMK_BTLS, new S57enum(57, "berthing_lateral_limits"));
    814    Catnmk.put(CatNMK.NMK_BTRL, new S57enum(58, "berthing_rafting_limit"));  Catnmk.put(CatNMK.NMK_BTUP, new S57enum(59, "berthing_unmarked_pushing"));
     814   Catnmk.put(CatNMK.NMK_BTRL, new S57enum(58, "berth_rafting_limit"));  Catnmk.put(CatNMK.NMK_BTUP, new S57enum(59, "berthing_unmarked_pushing"));
    815815   Catnmk.put(CatNMK.NMK_BTP1, new S57enum(60, "berthing_marked_pushing_1")); Catnmk.put(CatNMK.NMK_BTP2, new S57enum(61, "berthing_marked_pushing_2"));
    816816   Catnmk.put(CatNMK.NMK_BTP3, new S57enum(62, "berthing_marked_pushing_3")); Catnmk.put(CatNMK.NMK_BTUN, new S57enum(63, "berthing_unmarked_non-pushing"));
Note: See TracChangeset for help on using the changeset viewer.