Ignore:
Timestamp:
2015-10-21T11:34:01+02:00 (9 years ago)
Author:
malcolmh
Message:

Multipolygon processing

File:
1 edited

Legend:

Unmodified
Added
Removed
  • applications/editors/josm/plugins/seachart/js57toosm/src/js57toosm/Js57toosm.java

    r31598 r31659  
    3030        static PrintStream out;
    3131        static S57map map;
     32        static final ArrayList<Att> typatts = new ArrayList<Att>(); static {
     33                typatts.add(Att.OBJNAM); typatts.add(Att.NOBJNM); typatts.add(Att.STATUS); typatts.add(Att.INFORM); typatts.add(Att.NINFOM);
     34                typatts.add(Att.PEREND); typatts.add(Att.PERSTA); typatts.add(Att.CONDTN); typatts.add(Att.CONRAD); typatts.add(Att.CONVIS);
     35        }
    3236       
    3337        public static void main(String[] args) throws IOException {
     
    3943                        System.exit(-1);
    4044                }
    41                 in = new FileInputStream(args[0]);
    42                 out = new PrintStream(args[2]);
     45                try {
     46                        in = new FileInputStream(args[0]);
     47                } catch (IOException e) {
     48                        System.err.println("Input file: " + e.getMessage());
     49                        System.exit(-1);
     50                }
     51                try {
     52                        out = new PrintStream(args[2]);
     53                } catch (IOException e) {
     54                        System.err.println("Output file: " + e.getMessage());
     55                        in.close();
     56                        System.exit(-1);
     57                }
    4358                ArrayList<Obj> types = new ArrayList<Obj>();
     59                try {
    4460                        Scanner tin = new Scanner(new FileInputStream(args[1]));
    4561                        while (tin.hasNext()) {
     
    4965                        }
    5066                        tin.close();
     67                } catch (IOException e) {
     68                        System.err.println("Types file: " + e.getMessage());
     69                        in.close();
     70                        out.close();
     71                        System.exit(-1);
     72                }
    5173               
    5274                map = new S57map(true);
     
    7294                                                                        if ((feature.type == Obj.SOUNDG) && (node.flg == S57map.Nflag.DPTH))
    7395                                                                                out.format("    <tag k='seamark:sounding:depth' v='%.1f'/>%n", ((Dnode) node).val);
    74                                                                         writeAtts(feature, type);
     96                                                                        writeAtts(feature);
    7597                                                                        out.format("  </node>%n");
    7698                                                                        done.add(ref);
     
    116138                                                        }
    117139                                                        out.format("    <tag k='seamark:type' v='%s'/>%n", type);
    118                                                         writeAtts(feature, type);
     140                                                        writeAtts(feature);
    119141                                                        out.format("  </way>%n");
    120142                                                }
     
    161183                                                }
    162184                                                out.format("    <tag k='seamark:type' v='%s'/>%n", type);
    163                                                 writeAtts(feature, type);
     185                                                writeAtts(feature);
    164186                                                out.format("  </relation>%n");
    165187                                        }
     
    172194        }
    173195       
    174         static void writeAtts(Feature feature, String type) {
     196        static void writeAtts(Feature feature) {
    175197                for (Map.Entry<Att, AttVal<?>> item : feature.atts.entrySet()) {
    176198                        String attstr = S57att.stringAttribute(item.getKey());
    177199                        String valstr = S57val.stringValue(item.getValue(), item.getKey());
    178                         if (!attstr.isEmpty() && !valstr.isEmpty())
    179                                 out.format("    <tag k='seamark:%s:%s' v='%s'/>%n", type, attstr, StringEscapeUtils.escapeXml10(valstr));
     200                        if (!attstr.isEmpty() && !valstr.isEmpty()) {
     201                                if (typatts.contains(item.getKey())) {
     202                                        out.format("    <tag k='seamark:%s' v='%s'/>%n", attstr, StringEscapeUtils.escapeXml10(valstr));
     203                                } else {
     204                                        out.format("    <tag k='seamark:%s:%s' v='%s'/>%n", S57obj.stringType(feature.type), attstr, StringEscapeUtils.escapeXml10(valstr));
     205                                }
     206                        }
    180207                }
    181208                for (Obj obj : feature.objs.keySet()) {
    182209                        ObjTab tab = feature.objs.get(obj);
    183210                        for (int ix : tab.keySet()) {
    184                                 type = S57obj.stringType(obj);
    185211                                AttMap atts = tab.get(ix);
    186212                                for (Map.Entry<Att, AttVal<?>> item : atts.entrySet()) {
     
    189215                                        if (!attstr.isEmpty() && !valstr.isEmpty()) {
    190216                                                if ((ix == 0) && (tab.size() == 1)) {
    191                                                         out.format("    <tag k='seamark:%s:%s' v='%s'/>%n", type, attstr, StringEscapeUtils.escapeXml10(valstr));
     217                                                        out.format("    <tag k='seamark:%s:%s' v='%s'/>%n", S57obj.stringType(obj), attstr, StringEscapeUtils.escapeXml10(valstr));
    192218                                                } else {
    193                                                         out.format("    <tag k='seamark:%s:%d:%s' v='%s'/>%n", type, ix + 1, attstr, StringEscapeUtils.escapeXml10(valstr));
     219                                                        out.format("    <tag k='seamark:%s:%d:%s' v='%s'/>%n", S57obj.stringType(obj), ix + 1, attstr, StringEscapeUtils.escapeXml10(valstr));
    194220                                                }
    195221                                        }
Note: See TracChangeset for help on using the changeset viewer.