Changeset 29156 in osm for applications/editors


Ignore:
Timestamp:
2013-01-03T13:37:21+01:00 (12 years ago)
Author:
malcolmh
Message:

save

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

Legend:

Unmodified
Added
Removed
  • applications/editors/josm/plugins/smed2/src/seamap/Map.java

    r29153 r29156  
    3939        public class Feature {
    4040                public Fflag flag;
    41                 public ArrayList<Long> refs;
     41                public long refs;
    4242                public Obj type;
    4343                public EnumMap<Att, AttItem> atts;
     
    4545
    4646                Feature() {
    47                         clean();
    48                 }
    49                
    50                 void clean() {
    5147                        flag = Fflag.UNKN;
    52                         refs = new ArrayList<Long>();
     48                        refs = 0;
    5349                        type = Obj.UNKOBJ;
    5450                        atts = new EnumMap<Att, AttItem>(Att.class);
     
    7066        public HashMap<Long, ArrayList<Long>> ways;
    7167        public HashMap<Long, ArrayList<Long>> mpolys;
    72         public ArrayList<Feature> features;
     68        public HashMap<Long, Feature> features;
    7369
    7470        private Feature feature;
     71        private ArrayList<Long> list;
    7572
    7673        public Map() {
     
    7976                mpolys = new HashMap<Long, ArrayList<Long>>();
    8077                feature = new Feature();
    81                 features = new ArrayList<Feature>();
    82                 features.add(feature);
     78                features = new HashMap<Long, Feature>();
    8379        }
    8480
    8581        public void addNode(long id, double lat, double lon) {
    8682                nodes.put(id, new Coord(lat, lon));
    87                 if (feature.type == Obj.UNKOBJ) {
    88                         feature.clean();
    89                 } else {
    90                         feature = new Feature();
    91                         features.add(feature);
    92                 }
     83                feature = new Feature();
     84                feature.refs = id;
     85                feature.flag = Fflag.NODE;
    9386        }
    9487
    9588        public void addWay(long id) {
    96                 ways.put(id, new ArrayList<Long>());
    97                 if (feature.type == Obj.UNKOBJ) {
    98                         feature.clean();
    99                 } else {
    100                         feature = new Feature();
    101                         features.add(feature);
    102                 }
    103         }
    104 
    105         public void addToWay(long way, long node) {
    106                 ways.get(way).add(node);
     89                list = new ArrayList<Long>();
     90                ways.put(id, list);
     91                feature = new Feature();
     92                feature.refs = id;
     93                feature.flag = Fflag.WAY;
    10794        }
    10895
    10996        public void addMpoly(long id) {
    110                 mpolys.put(id, new ArrayList<Long>());
     97                list = new ArrayList<Long>();
     98                mpolys.put(id, list);
    11199        }
    112100
    113         public void addToMpoly(long id, long way) {
    114                 mpolys.get(id).add(way);
     101        public void addToWay(long node) {
     102                list.add(node);
     103        }
     104
     105        public void addToMpoly(long way, boolean outer) {
     106                if (outer)
     107                        list.add(0, way);
     108                else
     109                        list.add(way);
     110        }
     111
     112        public void tagsDone() {
     113                if (feature.type != Obj.UNKOBJ) {
     114                        if ((feature.flag == Fflag.WAY) && (list.size() > 0) && (list.get(0) == list.get(list.size() - 1))) {
     115                                feature.flag = Fflag.AREA;
     116                        }
     117                        features.put(feature.refs, feature);
     118                }
    115119        }
    116120
  • applications/editors/josm/plugins/smed2/src/smed2/Smed2Action.java

    r29153 r29156  
    4141                @Override
    4242                public void dataChanged(DataChangedEvent e) {
    43                         reMap();
     43                        // reMap();
    4444                }
    4545
    4646                @Override
    4747                public void nodeMoved(NodeMovedEvent e) {
    48                         reMap();
     48                        // reMap();
    4949                }
    5050
    5151                @Override
    5252                public void otherDatasetChange(AbstractDatasetChangedEvent e) {
    53                         reMap();
     53                        // reMap();
    5454                }
    5555
    5656                @Override
    5757                public void primitivesAdded(PrimitivesAddedEvent e) {
    58                         reMap();
     58                        // reMap();
    5959                }
    6060
    6161                @Override
    6262                public void primitivesRemoved(PrimitivesRemovedEvent e) {
    63                         reMap();
     63                        // reMap();
    6464                }
    6565
    6666                @Override
    6767                public void relationMembersChanged(RelationMembersChangedEvent e) {
    68                         reMap();
     68                        // reMap();
    6969                }
    7070
    7171                @Override
    7272                public void tagsChanged(TagsChangedEvent e) {
    73                         reMap();
     73                        // reMap();
    7474                }
    7575
    7676                @Override
    7777                public void wayNodesChanged(WayNodesChangedEvent e) {
    78                         reMap();
     78                        // reMap();
    7979                }
    8080        };
     
    119119                panelS57.setVisible(false);
    120120                frame.add(panelS57);
    121 //              System.out.println("hello");
     121                // System.out.println("hello");
    122122                rendering = ImageryLayer.create(new ImageryInfo("OpenSeaMap"));
    123123                Main.main.addLayer(rendering);
     
    144144                        data = newLayer.data.allPrimitives();
    145145                        reMap();
    146                 } else {
     146                } else {
    147147                        data = null;
    148148                        map = null;
     
    155155
    156156        }
    157        
     157
    158158        void reMap() {
    159159                map = new Map();
    160160                for (OsmPrimitive osm : data) {
    161                         if (osm instanceof Node) {
    162                                 map.addNode(((Node)osm).getId(), ((Node)osm).getCoor().lat(), ((Node)osm).getCoor().lon());
    163                         } else if (osm instanceof Way) {
    164                                 map.addWay(((Way)osm).getId());
    165                                 for (Node node : ((Way)osm).getNodes()) {
    166                                         map.addToWay(((Way)osm).getUniqueId(), node.getUniqueId());
     161                        System.out.println(osm);
     162                        if ((osm instanceof Node) || (osm instanceof Way)) {
     163                                if (osm instanceof Node) {
     164                                        map.addNode(((Node) osm).getUniqueId(), ((Node) osm).getCoor().lat(), ((Node) osm).getCoor().lon());
     165                                } else {
     166                                        map.addWay(((Way) osm).getUniqueId());
     167                                        for (Node node : ((Way) osm).getNodes()) {
     168                                                map.addToWay((node.getUniqueId()));
     169                                        }
     170                                }
     171                                for (Entry<String, String> entry : osm.getKeys().entrySet()) {
     172                                        map.addTag(entry.getKey(), entry.getValue());
     173                                }
     174                                map.tagsDone();
     175                        } else if ((osm instanceof Relation) && ((Relation) osm).isMultipolygon()) {
     176                                map.addMpoly(((Relation) osm).getUniqueId());
     177                                for (RelationMember mem : ((Relation) osm).getMembers()) {
     178                                        if (mem.getType() == OsmPrimitiveType.WAY)
     179                                                map.addToMpoly(mem.getUniqueId(), (mem.getRole().equals("outer")));
    167180                                }
    168181                        }
    169                         for (Entry<String, String> entry : osm.getKeys().entrySet()) {
    170                                 map.addTag(entry.getKey(), entry.getValue());
    171                         }
    172182                }
    173        
    174183        }
    175184
Note: See TracChangeset for help on using the changeset viewer.