Changeset 30187 in osm for applications/editors
- Timestamp:
- 2014-01-07T01:00:40+01:00 (11 years ago)
- Location:
- applications/editors/josm/plugins/smed2
- Files:
-
- 1 deleted
- 1 edited
- 1 copied
Legend:
- Unmodified
- Added
- Removed
-
applications/editors/josm/plugins/smed2/src/s57/Js57toosm.java
r30186 r30187 8 8 */ 9 9 10 package js57toosm;10 package s57; 11 11 12 12 import java.io.*; 13 13 14 import s57.S57map;15 14 import s57.S57map.*; 16 import s57.S57dat;17 15 import s57.S57dat.*; 18 16 … … 57 55 len = Integer.parseInt(new String(record, idx+mapts, mapfl)); 58 56 pos = Integer.parseInt(new String(record, idx+mapts+mapfl, mapfp)); 59 if (!ddr) switch (tag) { 60 case "0001": 61 int i8rn = (int)(long)S57dat.getSubf(record, fields+pos, S57field.I8RI, S57subf.I8RN); 62 if (i8rn != ++rnum) { 63 out.println("Out of order record ID"); 64 in.close(); 65 System.exit(-1); 66 } 67 break; 68 case "DSID": 69 break; 70 case "DSSI": 71 break; 72 case "DSPM": 73 comf = (double)(long)S57dat.getSubf(record, fields+pos, S57field.DSPM, S57subf.COMF); 74 somf = (double)(long)S57dat.getSubf(S57subf.SOMF); 75 break; 76 case "FRID": 77 break; 78 case "FOID": 79 break; 80 case "ATTF": 81 break; 82 case "NATF": 83 break; 84 case "FFPC": 85 break; 86 case "FFPT": 87 break; 88 case "FSPC": 89 break; 90 case "FSPT": 91 break; 92 case "VRID": 93 name = (long)S57dat.getSubf(record, fields+pos, S57field.VRID, S57subf.RCNM); 94 switch ((int)name) { 95 case 110: 96 nflag = Nflag.ISOL; 97 break; 98 case 120: 99 nflag = Nflag.CONN; 100 break; 101 default: 102 nflag = Nflag.ANON; 103 break; 104 } 105 name <<= 32; 106 name += (long)S57dat.getSubf(record, fields+pos, S57field.VRID, S57subf.RCID); 107 name <<= 16; 108 if (nflag == Nflag.ANON) { 109 map.newEdge(name); 110 } 111 break; 112 case "ATTV": 113 break; 114 case "VRPC": 115 break; 116 case "VRPT": 117 name = (long)S57dat.getSubf(record, fields+pos, S57field.VRPT, S57subf.NAME) << 16; 118 int topi = (int)((long)S57dat.getSubf(S57subf.TOPI)); 119 map.addConn(name, topi); 120 name = (long)S57dat.getSubf(S57subf.NAME) << 16; 121 topi = (int)((long)S57dat.getSubf(S57subf.TOPI)); 122 map.addConn(name, topi); 123 break; 124 case "SGCC": 125 break; 126 case "SG2D": 127 S57dat.setField(record, fields + pos, S57field.SG2D, len); 128 while (S57dat.more()) { 129 double lat = (double) ((long) S57dat.getSubf(S57subf.YCOO)) / comf; 130 double lon = (double) ((long) S57dat.getSubf(S57subf.XCOO)) / comf; 131 if (nflag == Nflag.ANON) { 132 map.newNode(++name, lat, lon, nflag); 133 } else { 134 map.newNode(name, lat, lon, nflag); 135 } 136 if (lat < minlat) minlat = lat; 137 if (lat > maxlat) maxlat = lat; 138 if (lon < minlon) minlon = lon; 139 if (lon > maxlon) maxlon = lon; 140 } 141 break; 142 case "SG3D": 143 S57dat.setField(record, fields + pos, S57field.SG3D, len); 144 while (S57dat.more()) { 145 double lat = (double) ((long) S57dat.getSubf(S57subf.YCOO)) / comf; 146 double lon = (double) ((long) S57dat.getSubf(S57subf.XCOO)) / comf; 147 double depth = (double) ((long) S57dat.getSubf(S57subf.VE3D)) / somf; 148 map.newNode(name++, lat, lon, depth); 149 if (lat < minlat) minlat = lat; 150 if (lat > maxlat) maxlat = lat; 151 if (lon < minlon) minlon = lon; 152 if (lon > maxlon) maxlon = lon; 153 } 154 break; 57 if (!ddr) { 58 if ("0001".equals(tag)) { 59 int i8rn = ((Long)S57dat.getSubf(record, fields+pos, S57field.I8RI, S57subf.I8RN)).intValue(); 60 if (i8rn != ++rnum) { 61 out.println("Out of order record ID"); 62 in.close(); 63 System.exit(-1); 64 } 65 } else if ("DSID".equals(tag)) { 66 } else if ("DSSI".equals(tag)) { 67 } else if ("DSPM".equals(tag)) { 68 comf = (double)(Long)S57dat.getSubf(record, fields+pos, S57field.DSPM, S57subf.COMF); 69 somf = (double)(Long)S57dat.getSubf(S57subf.SOMF); 70 } else if ("FRID".equals(tag)) { 71 } else if ("FOID".equals(tag)) { 72 } else if ("ATTF".equals(tag)) { 73 } else if ("NATF".equals(tag)) { 74 } else if ("FFPC".equals(tag)) { 75 } else if ("FFPT".equals(tag)) { 76 } else if ("FSPC".equals(tag)) { 77 } else if ("FSPT".equals(tag)) { 78 } else if ("VRID".equals(tag)) { 79 name = (Long)S57dat.getSubf(record, fields+pos, S57field.VRID, S57subf.RCNM); 80 switch ((int)name) { 81 case 110: 82 nflag = Nflag.ISOL; 83 break; 84 case 120: 85 nflag = Nflag.CONN; 86 break; 87 default: 88 nflag = Nflag.ANON; 89 break; 90 } 91 name <<= 32; 92 name += (Long)S57dat.getSubf(record, fields+pos, S57field.VRID, S57subf.RCID); 93 name <<= 16; 94 if (nflag == Nflag.ANON) { 95 map.newEdge(name); 96 } 97 } else if ("ATTV".equals(tag)) { 98 } else if ("VRPC".equals(tag)) { 99 } else if ("VRPT".equals(tag)) { 100 name = (Long)S57dat.getSubf(record, fields+pos, S57field.VRPT, S57subf.NAME) << 16; 101 int topi = ((Long)S57dat.getSubf(S57subf.TOPI)).intValue(); 102 map.addConn(name, topi); 103 name = (Long)S57dat.getSubf(S57subf.NAME) << 16; 104 topi = ((Long)S57dat.getSubf(S57subf.TOPI)).intValue(); 105 map.addConn(name, topi); 106 } else if ("SGCC".equals(tag)) { 107 } else if ("SG2D".equals(tag)) { 108 S57dat.setField(record, fields + pos, S57field.SG2D, len); 109 while (S57dat.more()) { 110 double lat = (double) ((Long) S57dat.getSubf(S57subf.YCOO)) / comf; 111 double lon = (double) ((Long) S57dat.getSubf(S57subf.XCOO)) / comf; 112 if (nflag == Nflag.ANON) { 113 map.newNode(++name, lat, lon, nflag); 114 } else { 115 map.newNode(name, lat, lon, nflag); 116 } 117 if (lat < minlat) minlat = lat; 118 if (lat > maxlat) maxlat = lat; 119 if (lon < minlon) minlon = lon; 120 if (lon > maxlon) maxlon = lon; 121 } 122 } else if ("SG3D".equals(tag)) { 123 S57dat.setField(record, fields + pos, S57field.SG3D, len); 124 while (S57dat.more()) { 125 double lat = (double) ((Long) S57dat.getSubf(S57subf.YCOO)) / comf; 126 double lon = (double) ((Long) S57dat.getSubf(S57subf.XCOO)) / comf; 127 double depth = (double) ((Long) S57dat.getSubf(S57subf.VE3D)) / somf; 128 map.newNode(name++, lat, lon, depth); 129 if (lat < minlat) minlat = lat; 130 if (lat > maxlat) maxlat = lat; 131 if (lon < minlon) minlon = lon; 132 if (lon > maxlon) maxlon = lon; 133 } 134 } 155 135 } 156 136 } -
applications/editors/josm/plugins/smed2/src/s57/S57dat.java
r30186 r30187 4 4 import java.util.Arrays; 5 5 import java.util.EnumMap; 6 7 import js57toosm.Js57toosm;8 6 9 7 public class S57dat {
Note:
See TracChangeset
for help on using the changeset viewer.