Changeset 30285 in osm


Ignore:
Timestamp:
2014-02-17T14:27:01+01:00 (11 years ago)
Author:
malcolmh
Message:

save

Location:
applications/editors/josm/plugins/smed2
Files:
27 edited

Legend:

Unmodified
Added
Removed
  • applications/editors/josm/plugins/smed2/js57toosm/build.xml

    r30284 r30285  
    1111
    1212  <target name="compile" depends="init" description="compile the source " >
    13     <javac includeantruntime="false" srcdir="${src}" destdir="${build}"/>
     13    <javac includeantruntime="false" srcdir="${src}" destdir="${build}" encoding="UTF-8"/>
    1414  </target>
    1515
  • applications/editors/josm/plugins/smed2/js57toosm/src/js57toosm/Js57toosm.java

    r30284 r30285  
    1 /* Copyright 2013 Malcolm Herring
     1/* Copyright 2014 Malcolm Herring
    22 *
    33 * This is free software: you can redistribute it and/or modify
     
    5151                MapBounds bounds = S57dec.decodeFile(in, types, map);
    5252
    53                 out.format("<?xml version='1.0' encoding='UTF-8'?>");
    54                 out.format("<osm version='0.6' generator='js57toosm'>");
    55                 out.format("<bounds minlat='%.8f' minlon='%.8f' maxlat='%.8f' maxlon='%.8f'/>", bounds.minlat, bounds.minlon, bounds.maxlat, bounds.maxlon);
     53                out.format("<?xml version='1.0' encoding='UTF-8'?>%n");
     54                out.format("<osm version='0.6' generator='js57toosm'>%n");
     55                out.format("<bounds minlat='%.8f' minlon='%.8f' maxlat='%.8f' maxlon='%.8f'/>%n", bounds.minlat, bounds.minlon, bounds.maxlat, bounds.maxlon);
    5656
    5757                for (long id : map.index.keySet()) {
  • applications/editors/josm/plugins/smed2/src/messages/Messages.java

    r29996 r30285  
     1/* Copyright 2014 Malcolm Herring
     2 *
     3 * This is free software: you can redistribute it and/or modify
     4 * it under the terms of the GNU General Public License as published by
     5 * the Free Software Foundation, version 3 of the License.
     6 *
     7 * For a copy of the GNU General Public License, see <http://www.gnu.org/licenses/>.
     8 */
     9
    110package messages;
    211
  • applications/editors/josm/plugins/smed2/src/panels/PanelMain.java

    r30269 r30285  
     1/* Copyright 2014 Malcolm Herring
     2 *
     3 * This is free software: you can redistribute it and/or modify
     4 * it under the terms of the GNU General Public License as published by
     5 * the Free Software Foundation, version 3 of the License.
     6 *
     7 * For a copy of the GNU General Public License, see <http://www.gnu.org/licenses/>.
     8 */
     9
    110package panels;
    211
     
    918import java.awt.event.ActionListener;
    1019import java.awt.image.BufferedImage;
    11 import java.io.File;
    12 import java.util.ArrayList;
    13 import java.util.Iterator;
     20import java.io.*;
    1421
    1522import javax.imageio.ImageIO;
     
    2027import org.openstreetmap.josm.Main;
    2128
    22 import s57.S57att.Att;
    23 import s57.S57obj.Obj;
    24 import s57.S57val.*;
     29import s57.S57att.*;
     30import s57.S57obj.*;
    2531import s57.S57map.*;
    2632import render.Renderer;
     
    2935public class PanelMain extends JPanel {
    3036
    31         Smed2Action dlg;
    3237        BufferedImage img;
    3338        int w, h, z, f;
     
    4247        };
    4348        private JButton importButton = null;
    44         final JFileChooser ifc = new JFileChooser();
     49        JFileChooser ifc = new JFileChooser(Main.pref.get("smed2plugin.file"));
    4550        private ActionListener alImport = new ActionListener() {
    4651                public void actionPerformed(java.awt.event.ActionEvent e) {
    4752                        if (e.getSource() == importButton) {
    48         messageBar.setText("Select file");
    49         int returnVal = ifc.showOpenDialog(Main.parent);
    50         if (returnVal == JFileChooser.APPROVE_OPTION) {
    51 //          xxx.startImport(ifc.getSelectedFile());
    52          } else {
    53            messageBar.setText("");
    54          }
    55       }
     53                                Smed2Action.panelS57.setVisible(true);
     54        messageBar.setText("Select S-57 ENC file for import");
     55                                int returnVal = ifc.showOpenDialog(Main.parent);
     56                                if (returnVal == JFileChooser.APPROVE_OPTION) {
     57                                        try {
     58                                                Main.pref.put("smed2plugin.file", ifc.getSelectedFile().getPath());
     59                                                Smed2Action.panelS57.startImport(ifc.getSelectedFile());
     60                                        } catch (IOException e1) {
     61                                                Smed2Action.panelS57.setVisible(false);
     62                                                messageBar.setText("IO Exception");
     63                                        }
     64                                } else {
     65                                        Smed2Action.panelS57.setVisible(false);
     66                                        messageBar.setText("");
     67                                }
     68                        }
    5669                }
    5770        };
     
    6275                public void actionPerformed(java.awt.event.ActionEvent e) {
    6376                        if (e.getSource() == exportButton) {
    64         messageBar.setText("Select file");
     77                                Smed2Action.panelS57.setVisible(true);
     78        messageBar.setText("Select S-57 ENC file for export");
    6579        int returnVal = efc.showOpenDialog(Main.parent);
    6680        if (returnVal == JFileChooser.APPROVE_OPTION) {
    67 //          xxx.startExport(efc.getSelectedFile());
     81                try {
     82                                                Smed2Action.panelS57.startExport(efc.getSelectedFile());
     83                                        } catch (IOException e1) {
     84                                                Smed2Action.panelS57.setVisible(false);
     85                                                messageBar.setText("IO Exception");
     86                                        }
    6887         } else {
    69            messageBar.setText("");
     88                                        Smed2Action.panelS57.setVisible(false);
     89                                        messageBar.setText("");
    7090         }
    7191      }
     
    7393        };
    7494
    75         public PanelMain(Smed2Action dia) {
    76                 dlg = dia;
     95        public PanelMain() {
    7796                setLayout(null);
    7897                setSize(new Dimension(480, 480));
     
    120139                img = new BufferedImage(Integer.parseInt(wt.getText()), Integer.parseInt(ht.getText()), BufferedImage.TYPE_INT_ARGB);
    121140                Graphics2D g2 = img.createGraphics();
    122                 Renderer.reRender(g2, Integer.parseInt(zt.getText()), Integer.parseInt(ft.getText()), dlg.map, dlg.rendering);
     141                Renderer.reRender(g2, Integer.parseInt(zt.getText()), Integer.parseInt(ft.getText()), Smed2Action.map, Smed2Action.rendering);
    123142                try {
    124143                        ImageIO.write(img, "png", new File("/Users/mherring/Desktop/export.png"));
  • applications/editors/josm/plugins/smed2/src/panels/ShowFrame.java

    r30215 r30285  
     1/* Copyright 2014 Malcolm Herring
     2 *
     3 * This is free software: you can redistribute it and/or modify
     4 * it under the terms of the GNU General Public License as published by
     5 * the Free Software Foundation, version 3 of the License.
     6 *
     7 * For a copy of the GNU General Public License, see <http://www.gnu.org/licenses/>.
     8 */
     9
    110package panels;
    211
  • applications/editors/josm/plugins/smed2/src/render/MapContext.java

    r30150 r30285  
     1/* Copyright 2014 Malcolm Herring
     2 *
     3 * This is free software: you can redistribute it and/or modify
     4 * it under the terms of the GNU General Public License as published by
     5 * the Free Software Foundation, version 3 of the License.
     6 *
     7 * For a copy of the GNU General Public License, see <http://www.gnu.org/licenses/>.
     8 */
     9
    110package render;
    211
  • applications/editors/josm/plugins/smed2/src/render/Renderer.java

    r30281 r30285  
    1 /* Copyright 2013 Malcolm Herring
     1/* Copyright 2014 Malcolm Herring
    22 *
    33 * This is free software: you can redistribute it and/or modify
  • applications/editors/josm/plugins/smed2/src/render/Rules.java

    r30269 r30285  
    1 /* Copyright 2013 Malcolm Herring
     1/* Copyright 2014 Malcolm Herring
    22 *
    33 * This is free software: you can redistribute it and/or modify
  • applications/editors/josm/plugins/smed2/src/render/Signals.java

    r30190 r30285  
    1 /* Copyright 2013 Malcolm Herring
     1/* Copyright 2014 Malcolm Herring
    22 *
    33 * This is free software: you can redistribute it and/or modify
  • applications/editors/josm/plugins/smed2/src/s57/S57att.java

    r30269 r30285  
     1/* Copyright 2014 Malcolm Herring
     2 *
     3 * This is free software: you can redistribute it and/or modify
     4 * it under the terms of the GNU General Public License as published by
     5 * the Free Software Foundation, version 3 of the License.
     6 *
     7 * For a copy of the GNU General Public License, see <http://www.gnu.org/licenses/>.
     8 */
     9
    110package s57;
    211
  • applications/editors/josm/plugins/smed2/src/s57/S57dat.java

    r30284 r30285  
     1/* Copyright 2014 Malcolm Herring
     2 *
     3 * This is free software: you can redistribute it and/or modify
     4 * it under the terms of the GNU General Public License as published by
     5 * the Free Software Foundation, version 3 of the License.
     6 *
     7 * For a copy of the GNU General Public License, see <http://www.gnu.org/licenses/>.
     8 */
     9
    110package s57;
    211
     12import java.io.UnsupportedEncodingException;
    313import java.util.ArrayList;
    414import java.util.Arrays;
     
    165175        private static int index;
    166176        private static S57field field;
     177        private static String aall = "US-ASCII";
     178        private static String nall = "US-ASCII";
    167179        public static int rnum;
    168180       
     
    219231                if (conv.bin == 0) {
    220232                        String str = "";
     233                        int i = 0;
    221234                        if (conv.asc == 0) {
    222                                 while (buffer[offset] != 0x1f) {
    223                                         str += (char)(buffer[offset++]);
    224                                 }
    225                                 offset++;
     235                                for (i=0; buffer[offset+i] != 0x1f; i++) {}
     236                                try {
     237                                        String charset = "";
     238                                        if (field == S57field.ATTF) charset = aall;
     239                                        else if (field == S57field.NATF) charset = nall;
     240                                        else charset = "US-ASCII";
     241                                        str = new String(buffer, offset, i, charset);
     242                                } catch (UnsupportedEncodingException e) {
     243                                        e.printStackTrace();
     244                                }
     245                                offset += i + 1;
    226246                        } else {
    227247                                str = new String(buffer, offset, conv.asc);
     
    239259                                }
    240260                                offset += Math.abs(conv.bin);
     261                                if ((subf == S57subf.AALL) || (subf == S57subf.NALL)) {
     262                                        String charset = "";
     263                                        switch ((int)val) {
     264                                        case 0:
     265                                                charset = "US-ASCII";
     266                                                break;
     267                                        case 1:
     268                                                charset = "ISO-8859-1";
     269                                                break;
     270                                        case 2:
     271                                                charset = "UTF-16LE";
     272                                                break;
     273                                        }
     274                                        if (subf == S57subf.NALL) {
     275                                                nall = charset;
     276                                        } else {
     277                                                aall = charset;
     278                                        }
     279                                }
    241280                                return val;
    242281                        } else {
  • applications/editors/josm/plugins/smed2/src/s57/S57dec.java

    r30284 r30285  
    1 /* Copyright 2013 Malcolm Herring
     1/* Copyright 2014 Malcolm Herring
    22 *
    33 * This is free software: you can redistribute it and/or modify
     
    6565                                                }
    6666                                                break;
     67                                        case DSSI:
     68                                                S57dat.getSubf(record, fields + pos, S57field.DSSI, S57subf.AALL);
     69                                                S57dat.getSubf(S57subf.NALL);
     70                                                break;
    6771                                        case DSPM:
    6872                                                comf = (double) (Long) S57dat.getSubf(record, fields + pos, S57field.DSPM, S57subf.COMF);
  • applications/editors/josm/plugins/smed2/src/s57/S57map.java

    r30284 r30285  
    1 /* Copyright 2013 Malcolm Herring
     1/* Copyright 2014 Malcolm Herring
    22 *
    33 * This is free software: you can redistribute it and/or modify
     
    9393       
    9494        public enum Rflag {
    95                 UNKN, AGGR, MASTER, SLAVE
     95                UNKN, MASTER, SLAVE
    9696        }
    9797       
     
    120120                public ObjMap() {
    121121                        super(Obj.class);
    122                 }
    123         }
    124 
    125         public class Aggr {
    126                 public RelTab rels;
    127                 public long par;
    128                 public Aggr() {
    129                         rels = new RelTab();
    130                         par = 0;
    131122                }
    132123        }
     
    218209                public Obj type;                        // Feature type
    219210                public AttMap atts;             // Feature attributes
    220                 public Aggr aggr;                       // Related objects
     211                public RelTab rels;             // Related objects
    221212                public ObjMap objs;             // Slave object attributes
    222213
     
    224215                        reln = Rflag.UNKN;
    225216                        geom = new Geom(Pflag.NOSP);
    226                         type = Obj.C_AGGR;
     217                        type = Obj.UNKOBJ;
    227218                        atts = new AttMap();
    228                         aggr = new Aggr();
     219                        rels = new RelTab();
    229220                        objs = new ObjMap();
    230221                }
     
    271262                        obj = Obj.BOYLAT;
    272263                if (obj == Obj.C_AGGR)
    273                         feature.reln = Rflag.AGGR;
     264                        feature.reln = Rflag.UNKN;
    274265                feature.geom = new Geom(p);
    275266                feature.type = obj;
     
    280271       
    281272        public void newObj(long id, int rind) {
    282                 Rflag r = Rflag.AGGR;
     273                Rflag r = Rflag.UNKN;
    283274                switch (rind) {
    284275                case 1:
     
    292283                        break;
    293284                }
    294                 feature.aggr.rels.add(new Reln(id, r));
     285                feature.rels.add(new Reln(id, r));
    295286        }
    296287       
     
    354345                for (long id : index.keySet()) {
    355346                        Feature feature = index.get(id);
    356                         for (Reln reln : feature.aggr.rels) {
     347                        for (Reln reln : feature.rels) {
    357348                                Feature rel = index.get(reln.id);
    358349                                if (cmpGeoms(feature.geom, rel.geom)) {
    359350                                        switch (reln.reln) {
    360                                         case MASTER:
    361                                                 feature.reln = Rflag.AGGR;
    362                                                 break;
    363351                                        case SLAVE:
    364352                                                feature.reln = Rflag.MASTER;
     
    388376                for (long id : index.keySet()) {
    389377                        Feature feature = index.get(id);
    390                         for (Reln reln : feature.aggr.rels) {
     378                        for (Reln reln : feature.rels) {
    391379                                Feature rel = index.get(reln.id);
    392380                                if (rel.reln == Rflag.SLAVE) {
     
    408396                nodes.put(id, node);
    409397                feature = new Feature();
    410                 feature.reln = Rflag.AGGR;
     398                feature.reln = Rflag.UNKN;
    411399                feature.geom.prim = Pflag.POINT;
    412400                feature.geom.elems.add(new Prim(id));
     
    416404        public void addEdge(long id) {
    417405                feature = new Feature();
    418                 feature.reln = Rflag.AGGR;
     406                feature.reln = Rflag.UNKN;
    419407                feature.geom.prim = Pflag.LINE;
    420408                feature.geom.elems.add(new Prim(id));
     
    436424        public void addArea(long id) {
    437425                feature = new Feature();
    438                 feature.reln = Rflag.AGGR;
     426                feature.reln = Rflag.UNKN;
    439427                feature.geom.prim = Pflag.AREA;
    440428                feature.geom.elems.add(new Prim(id));
     
    447435
    448436        public void addTag(String key, String val) {
     437                feature.reln = Rflag.MASTER;
    449438                String subkeys[] = key.split(":");
    450439                if ((subkeys.length > 1) && subkeys[0].equals("seamark")) {
     
    461450                                        att = S57att.enumAttribute(subkeys[2], obj);
    462451                                }
    463                                 ObjTab items = feature.objs.get(obj);
    464                                 if (items == null) {
    465                                         items = new ObjTab();
    466                                         feature.objs.put(obj, items);
    467                                         Feature type = new Feature();
    468                                         type.reln = Rflag.SLAVE;
    469                                         type.type = obj;
    470                                         type.geom = feature.geom;
    471                                 }
    472 //                              AttMap atts = items.get(idx);
    473 //                              if (atts == null) {
    474 //                                      atts = new AttMap();
    475 //                                      items.put(idx, atts);
    476 //                              }
    477 //                              AttVal<?> attval = S57val.convertValue(val, att);
    478 //                              if (attval.val != null)
    479 //                                      atts.put(att, attval);
     452                                ObjTab objs = feature.objs.get(obj);
     453                                if (objs == null) {
     454                                        objs = new ObjTab();
     455                                        feature.objs.put(obj, objs);
     456                                }
     457                                AttMap atts = objs.get(idx);
     458                                if (atts == null) {
     459                                        atts = new AttMap();
     460                                        objs.put(idx, atts);
     461                                }
     462                                AttVal<?> attval = S57val.convertValue(val, att);
     463                                if (attval.val != null)
     464                                        atts.put(att, attval);
    480465                        } else {
    481466                                if (subkeys[1].equals("type")) {
    482467                                        obj = S57obj.enumType(val);
    483                                         if (feature.objs.get(feature.type) == null) {
    484                                                 feature.objs.put(feature.type, new ObjTab());
    485                                                 Feature type = new Feature();
    486                                                 type.reln = Rflag.MASTER;
    487                                                 type.type = obj;
    488                                                 type.geom = feature.geom;
     468                                        feature.type = obj;
     469                                        ObjTab objs = feature.objs.get(obj);
     470                                        if (objs == null) {
     471                                                objs = new ObjTab();
     472                                                feature.objs.put(obj, objs);
     473                                        }
     474                                        AttMap atts = objs.get(0);
     475                                        if (atts == null) {
     476                                                atts = new AttMap();
     477                                                objs.put(0, atts);
    489478                                        }
    490479                                } else {
  • applications/editors/josm/plugins/smed2/src/s57/S57obj.java

    r30283 r30285  
     1/* Copyright 2014 Malcolm Herring
     2 *
     3 * This is free software: you can redistribute it and/or modify
     4 * it under the terms of the GNU General Public License as published by
     5 * the Free Software Foundation, version 3 of the License.
     6 *
     7 * For a copy of the GNU General Public License, see <http://www.gnu.org/licenses/>.
     8 */
     9
    110package s57;
    211
  • applications/editors/josm/plugins/smed2/src/s57/S57val.java

    r30231 r30285  
     1/* Copyright 2014 Malcolm Herring
     2 *
     3 * This is free software: you can redistribute it and/or modify
     4 * it under the terms of the GNU General Public License as published by
     5 * the Free Software Foundation, version 3 of the License.
     6 *
     7 * For a copy of the GNU General Public License, see <http://www.gnu.org/licenses/>.
     8 */
     9
    110package s57;
    211
  • applications/editors/josm/plugins/smed2/src/smed2/MapImage.java

    r30150 r30285  
    1 /* Copyright 2013 Malcolm Herring
     1/* Copyright 2014 Malcolm Herring
    22 *
    33 * This is free software: you can redistribute it and/or modify
  • applications/editors/josm/plugins/smed2/src/smed2/Smed2.java

    r30269 r30285  
    1 /* Copyright 2013 Malcolm Herring
     1/* Copyright 2014 Malcolm Herring
    22 *
    33 * This is free software: you can redistribute it and/or modify
  • applications/editors/josm/plugins/smed2/src/smed2/Smed2Action.java

    r30157 r30285  
    1 /* Copyright 2013 Malcolm Herring
     1/* Copyright 2014 Malcolm Herring
    22 *
    33 * This is free software: you can redistribute it and/or modify
     
    3131import s57.S57map;
    3232import s57.S57map.*;
    33 
     33import panels.PanelS57;
    3434import panels.PanelMain;
    3535import panels.ShowFrame;
     
    4141        private boolean isOpen = false;
    4242        public static PanelMain panelMain = null;
    43         public MapImage rendering;
    44         public S57map map = null;
     43        public static PanelS57 panelS57 = null;
     44        public static MapImage rendering;
     45        public static S57map map = null;
    4546        public DataSet data = null;
    4647
     
    118119                editFrame.setAlwaysOnTop(true);
    119120                editFrame.setVisible(true);
    120                 panelMain = new PanelMain(this);
     121                panelMain = new PanelMain();
    121122                editFrame.add(panelMain);
     123
     124                panelS57 = new PanelS57();
     125                editFrame.add(panelS57);
    122126
    123127                showFrame = new ShowFrame(tr("Seamark Inspector"));
    124128                showFrame.setSize(new Dimension(300, 300));
    125                 Rectangle rect = Main.map.mapView.getBounds();
    126                 showFrame.setLocation(50, (rect.y + rect.height - 200));
     129                showFrame.setLocation(50, 400);
    127130                showFrame.setResizable(false);
    128131                showFrame.setAlwaysOnTop(true);
     
    159162                        newLayer.data.addDataSetListener(dataSetListener);
    160163                        data = newLayer.data;
    161                         makeMap();
     164//                      makeMap();
    162165                } else {
    163166                        data = null;
     
    181184                                                Feature id = map.index.get(feature.getUniqueId());
    182185                                                if (id != null) {
    183                                                         panelMain.parseMark(id);
     186//                                                      panelMain.parseMark(id);
    184187                                                        showFrame.setVisible(true);
    185188                                                        showFrame.showFeature(feature, map);
  • applications/editors/josm/plugins/smed2/src/symbols/Areas.java

    r30215 r30285  
    1 /* Copyright 2012 Malcolm Herring
     1/* Copyright 2014 Malcolm Herring
    22 *
    33 * This is free software: you can redistribute it and/or modify
  • applications/editors/josm/plugins/smed2/src/symbols/Beacons.java

    r30215 r30285  
    1 /* Copyright 2012 Malcolm Herring
     1/* Copyright 2014 Malcolm Herring
    22 *
    33 * This is free software: you can redistribute it and/or modify
  • applications/editors/josm/plugins/smed2/src/symbols/Buoys.java

    r30215 r30285  
    1 /* Copyright 2012 Malcolm Herring
     1/* Copyright 2014 Malcolm Herring
    22 *
    33 * This is free software: you can redistribute it and/or modify
  • applications/editors/josm/plugins/smed2/src/symbols/Facilities.java

    r30215 r30285  
    1 /* Copyright 2012 Malcolm Herring
     1/* Copyright 2014 Malcolm Herring
    22 *
    33 * This is free software: you can redistribute it and/or modify
  • applications/editors/josm/plugins/smed2/src/symbols/Harbours.java

    r30215 r30285  
    1 /* Copyright 2012 Malcolm Herring
     1/* Copyright 2014 Malcolm Herring
    22 *
    33 * This is free software: you can redistribute it and/or modify
  • applications/editors/josm/plugins/smed2/src/symbols/Landmarks.java

    r30215 r30285  
    1 /* Copyright 2012 Malcolm Herring
     1/* Copyright 2014 Malcolm Herring
    22 *
    33 * This is free software: you can redistribute it and/or modify
  • applications/editors/josm/plugins/smed2/src/symbols/Notices.java

    r30215 r30285  
    1 /* Copyright 2012 Malcolm Herring
     1/* Copyright 2014 Malcolm Herring
    22 *
    33 * This is free software: you can redistribute it and/or modify
  • applications/editors/josm/plugins/smed2/src/symbols/Symbols.java

    r30226 r30285  
    1 /* Copyright 2013 Malcolm Herring
     1/* Copyright 2014 Malcolm Herring
    22 *
    33 * This is free software: you can redistribute it and/or modify
  • applications/editors/josm/plugins/smed2/src/symbols/Topmarks.java

    r30215 r30285  
    1 /* Copyright 2012 Malcolm Herring
     1/* Copyright 2014 Malcolm Herring
    22 *
    33 * This is free software: you can redistribute it and/or modify
Note: See TracChangeset for help on using the changeset viewer.