Changeset 30119 in osm


Ignore:
Timestamp:
2013-12-08T20:52:05+01:00 (11 years ago)
Author:
malcolmh
Message:

save

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

Legend:

Unmodified
Added
Removed
  • applications/editors/josm/plugins/smed2/src/s57/S57att.java

    r30046 r30119  
    118118                AttStr.put(Att.ELEVAT, "elevation"); AttStr.put(Att.ESTRNG, "estimated_range"); AttStr.put(Att.EXCLIT, "exhibition"); AttStr.put(Att.EXPSOU, "exposition");
    119119                AttStr.put(Att.FUNCTN, "function"); AttStr.put(Att.HEIGHT, "height"); AttStr.put(Att.HUNITS, "units"); AttStr.put(Att.HORACC, "accuracy");
    120                 AttStr.put(Att.HORCLR, "clearance"); AttStr.put(Att.HORLEN, "length"); AttStr.put(Att.HORWID, "width"); AttStr.put(Att.ICEFAC, "factor");
     120                AttStr.put(Att.HORCLR, "clearance_width"); AttStr.put(Att.HORLEN, "length"); AttStr.put(Att.HORWID, "width"); AttStr.put(Att.ICEFAC, "factor");
    121121                AttStr.put(Att.INFORM, "information"); AttStr.put(Att.JRSDTN, "jurisdiction"); AttStr.put(Att.LIFCAP, "maximum_load"); AttStr.put(Att.LITCHR, "character");
    122122                AttStr.put(Att.LITVIS, "visibility"); AttStr.put(Att.MARSYS, "system"); AttStr.put(Att.MLTYLT, "multiple"); AttStr.put(Att.NATION, "nationality");
     
    144144                AttStr.put(Att.BUNVES, "availability"); AttStr.put(Att.CATBRT, "category"); AttStr.put(Att.CATBUN, "category"); AttStr.put(Att.CATCCL, "category");
    145145                AttStr.put(Att.CATHBR, "category");     AttStr.put(Att.CATRFD, "category"); AttStr.put(Att.CATTML, "category"); AttStr.put(Att.COMCTN, "communication");
    146                 AttStr.put(Att.HORCLL, "clearance_length");     AttStr.put(Att.HORCLW, "clearance_width"); AttStr.put(Att.TRSHGD, "goods"); AttStr.put(Att.UNLOCD, "locode");
     146                AttStr.put(Att.HORCLL, "horizontal_clearance_length");  AttStr.put(Att.HORCLW, "horizontal_clearance_width"); AttStr.put(Att.TRSHGD, "goods"); AttStr.put(Att.UNLOCD, "locode");
    147147                AttStr.put(Att.CATGAG, "category");     AttStr.put(Att.HIGWAT, "high_value"); AttStr.put(Att.HIGNAM, "high_name"); AttStr.put(Att.LOWWAT, "low_value");
    148148                AttStr.put(Att.LOWNAM, "low_name");     AttStr.put(Att.MEAWAT, "mean_value"); AttStr.put(Att.MEANAM, "mean_name"); AttStr.put(Att.OTHWAT, "local_value");
  • applications/editors/josm/plugins/smed2/src/seamap/Renderer.java

    r30046 r30119  
    2828
    2929        public static final Color Yland = new Color(0x50b0ff);
    30         public static final Color Mline = new Color(0x80c480);
     30        public static final Color Mline = new Color(0xc480ff);
    3131        public static final Color Msymb = new Color(0xa30075);
    3232       
     
    446446                        label.add(new Instr(Prim.PLIN, p));
    447447                        break;
     448                case HCLR:
     449                        width += height * 1.5;
     450                        height *= 1.5;
     451            if (width < height) width = height;
     452            lx = -width / 2;
     453            ly = -height / 2;
     454            tx = lx + (height * 0.5);
     455            ty = ly + (height * 0.17);
     456                        label.add(new Instr(Prim.BBOX, new Rectangle2D.Double(lx,ly,width,height)));
     457                        label.add(new Instr(Prim.FILL, bg));
     458                        label.add(new Instr(Prim.RSHP, new RoundRectangle2D.Double(lx,ly,width,height,height,height)));
     459                        label.add(new Instr(Prim.FILL, fg));
     460                        sw = 1 + (int)(height/10);
     461                        double vo = height / 4;
     462                        label.add(new Instr(Prim.STRK, new BasicStroke(sw, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
     463                        p = new Path2D.Double(); p.moveTo(-width*0.4-sw,-ly-vo); p.lineTo(-width*0.4-sw,ly+vo); p.moveTo(-width*0.4-sw,0); p.lineTo(-width*0.4+sw,0);
     464                        p.moveTo(width*0.4+sw,-ly-vo); p.lineTo(width*0.4+sw,ly+vo); p.moveTo(width*0.4-sw,0); p.lineTo(width*0.4+sw,0);
     465                        label.add(new Instr(Prim.PLIN, p));
     466                        break;
    448467                default:
    449468                        lx = -width / 2;
  • applications/editors/josm/plugins/smed2/src/seamap/Rules.java

    r30046 r30119  
    3333                AttItem name = feature.atts.get(Att.OBJNAM);
    3434                if (name == null) {
    35                         name = feature.objs.get(feature.type).get(0).get(Att.OBJNAM);
    36                 }
    37                 if (name != null) return (String)name.val;
    38                 return null;
     35                        AttMap atts = feature.objs.get(feature.type).get(0);
     36                        if (atts != null) {
     37                                name = atts.get(Att.OBJNAM);
     38                        }
     39                }
     40                return (name != null) ? (String)name.val: null;
    3941        }
    4042
     
    203205                        break;
    204206                case MARCUL:
    205                         if (zoom >= 14)
    206                                 Renderer.symbol(feature, Areas.MarineFarm);
    207                         if (zoom >= 16)
    208                                 Renderer.lineVector(feature, new LineStyle(Color.black, 4, new float[] { 10, 10 }));
     207                        if (zoom >= 12) {
     208                                if (zoom >= 14) {
     209                                        Renderer.symbol(feature, Areas.MarineFarm);
     210                                }
     211                                if ((feature.area > 0.2) || ((feature.area > 0.05) && (zoom >= 14)) || ((feature.area > 0.005) && (zoom >= 16))) {
     212                                        Renderer.lineVector(feature, new LineStyle(Color.black, 4, new float[] { 10, 10 }));
     213                                }
     214                        }
    209215                        break;
    210216                case OSPARE:
     
    219225                        if (zoom >= 12) {
    220226                                Renderer.lineSymbols(feature, Areas.Restricted, 1.0, null, null, 0, Renderer.Mline);
    221                                 if (testAttribute(feature, feature.type, Att.CATPRA, CatREA.REA_NWAK)) {
     227                                if (testAttribute(feature, feature.type, Att.CATREA, CatREA.REA_NWAK)) {
    222228                                        Renderer.symbol(feature, Areas.NoWake);
    223229                                }
     
    277283                case SPLARE:
    278284                        if (zoom >= 12) {
    279                                 Renderer.symbol(feature, Areas.Plane);
     285                                Renderer.symbol(feature, Areas.Plane, new Scheme(Renderer.Msymb));
    280286                                Renderer.lineSymbols(feature, Areas.Restricted, 0.5, Areas.LinePlane, null, 10, Renderer.Mline);
    281287                        }
     
    327333        private static void bridges(Feature feature) {
    328334                if (zoom >= 16) {
    329                         double verclr, verccl, vercop;
     335                        double verclr, verccl, vercop, horclr;
    330336                        AttMap atts = feature.objs.get(Obj.BRIDGE).get(0);
    331                         String str = "";
     337                        String vstr = "";
     338                        String hstr = "";
    332339                        if (atts != null) {
    333                                 if (atts.containsKey(Att.VERCLR)) {
    334                                         verclr = (Double) atts.get(Att.VERCLR).val;
     340                                if (atts.containsKey(Att.HORCLR)) {
     341                                        horclr = (Double) atts.get(Att.HORCLR).val;
     342                                        hstr = String.valueOf(horclr);
     343                                }
     344                                        if (atts.containsKey(Att.VERCLR)) {
     345                                                verclr = (Double) atts.get(Att.VERCLR).val;
    335346                                } else {
    336347                                        verclr = atts.containsKey(Att.VERCSA) ? (Double) atts.get(Att.VERCSA).val : 0;
     
    339350                                vercop = atts.containsKey(Att.VERCOP) ? (Double) atts.get(Att.VERCOP).val : 0;
    340351                                if (verclr > 0) {
    341                                         str += String.valueOf(verclr);
     352                                        vstr += String.valueOf(verclr);
    342353                                } else if (verccl > 0) {
    343354                                        if (vercop == 0) {
    344                                                 str += String.valueOf(verccl) + "/-";
     355                                                vstr += String.valueOf(verccl) + "/-";
    345356                                        } else {
    346                                                 str += String.valueOf(verccl) + "/" + String.valueOf(vercop);
     357                                                vstr += String.valueOf(verccl) + "/" + String.valueOf(vercop);
    347358                                        }
    348359                                }
    349                                 if (!str.isEmpty())
    350                                         Renderer.labelText(feature, str, new Font("Arial", Font.PLAIN, 30), LabelStyle.VCLR, Color.black, Color.white, new Delta(Handle.CC));
     360                                if (hstr.isEmpty() && !vstr.isEmpty()) {
     361                                        Renderer.labelText(feature, vstr, new Font("Arial", Font.PLAIN, 30), LabelStyle.VCLR, Color.black, Color.white, new Delta(Handle.CC));
     362                                } else if (!hstr.isEmpty() && !vstr.isEmpty()) {
     363                                        Renderer.labelText(feature, vstr, new Font("Arial", Font.PLAIN, 30), LabelStyle.VCLR, Color.black, Color.white, new Delta(Handle.BC));
     364                                        Renderer.labelText(feature, hstr, new Font("Arial", Font.PLAIN, 30), LabelStyle.HCLR, Color.black, Color.white, new Delta(Handle.TC));
     365                                } else if (!hstr.isEmpty() && vstr.isEmpty()) {
     366                                        Renderer.labelText(feature, hstr, new Font("Arial", Font.PLAIN, 30), LabelStyle.HCLR, Color.black, Color.white, new Delta(Handle.CC));
     367                                }
    351368                        }
    352369                }
  • applications/editors/josm/plugins/smed2/src/seamap/SeaMap.java

    r29995 r30119  
    2222
    2323        public enum Nflag {
    24                 ANON, ISOL, CONN
    25         }
    26 
    27         public class Snode {
    28                 public double lat;
    29                 public double lon;
    30                 public Nflag flg;
     24                ANON,   // Edge inner nodes
     25                ISOL,   // Node not part of Edge
     26                CONN    // Edge first and last nodes
     27        }
     28
     29        public class Snode {    // All coordinates in map
     30                public double lat;      // Latitude
     31                public double lon;      // Longitude
     32                public Nflag flg;               // Role of node
    3133
    3234                public Snode() {
     
    3537                        lon = 0;
    3638                }
    37 
    3839                public Snode(double ilat, double ilon) {
    3940                        flg = Nflag.ANON;
     
    4142                        lon = ilon;
    4243                }
    43 
    4444                public Snode(double ilat, double ilon, Nflag iflg) {
    4545                        lat = ilat;
     
    4949        }
    5050
    51         public class Edge {
    52                 public boolean forward;
    53                 public long first;
    54                 public long last;
    55                 public ArrayList<Long> nodes;
     51        public class Edge {             // A polyline segment
     52                public long first;      // First CONN node
     53                public long last;               // Last CONN node
     54                public ArrayList<Long> nodes; // Inner ANON nodes
    5655
    5756                public Edge() {
    58                         forward = true;
    5957                        first = 0;
    6058                        last = 0;
     
    6361        }
    6462
    65         public class Side {
    66                 Edge edge;
    67                 boolean forward;
     63        public class Side {     // An edge as used in a line or area feature
     64                Edge edge;                              // Side is formed by this Edge...
     65                boolean forward;        // ... in this direction
    6866
    6967                public Side(Edge iedge, boolean ifwd) {
     
    7371        }
    7472
    75         public class Bound {
    76                 public boolean outer;
    77                 ArrayList<Side> sides;
     73        public class Bound { // A single closed area
     74                public boolean outer;           // Role
     75                ArrayList<Side> sides;  // Sides that make up this area
    7876
    7977                public Bound() {
     
    8179                        sides = new ArrayList<Side>();
    8280                }
    83 
    8481                public Bound(Side iside, boolean irole) {
    8582                        outer = irole;
     
    8986        }
    9087
    91         public class Area extends ArrayList<Bound> {
     88        public class Area extends ArrayList<Bound> {    // The collection of bounds for an area.
    9289                public Area() {
    9390                        super();
     
    389386                        nodes.get(edge.first).flg = Nflag.CONN;
    390387                        nodes.get(edge.last).flg = Nflag.CONN;
    391                         Bound ebound = (new Bound(new Side(edge, edge.forward), true));
     388                        Bound ebound = (new Bound(new Side(edge, true), true));
    392389                        feature.length = calcLength(ebound);
    393390                        if (edge.first == edge.last) {
     
    410407                                        long node1 = edge.first;
    411408                                        long node2 = edge.last;
    412                                         bound = new Bound(new Side(edge, edge.forward), (role == outers));
     409                                        bound = new Bound(new Side(edge, true), (role == outers));
    413410                                        if (node1 != node2) {
    414411                                                for (ListIterator<Long> it = role.listIterator(0); it.hasNext();) {
     
    551548                                } else {
    552549                                        double arc = (Math.acos(Math.cos(lon - llon) * Math.cos(lat - llat)));
    553                                         slat += (lat * arc);
    554                                         slon += (lon * arc);
     550                                        slat += ((lat + llat) / 2 * arc);
     551                                        slon += ((lon + llon) / 2 * arc);
    555552                                        sarc += arc;
    556553                                }
  • applications/editors/josm/plugins/smed2/src/symbols/Areas.java

    r30033 r30119  
    6565        public static final Symbol LinePlane = new Symbol();
    6666        static {
     67                LinePlane.add(new Instr(Prim.BBOX, new Rectangle2D.Double(-30,-60,60,90)));
    6768                LinePlane.add(new Instr(Prim.FILL, new Color(0xc480ff)));
    6869                LinePlane.add(new Instr(Prim.SYMB, new Symbols.SubSymbol(Areas.Plane, 0.5, 0, 0, null, new Delta(Handle.CC, AffineTransform.getRotateInstance(Math.toRadians(-90.0))))));
Note: See TracChangeset for help on using the changeset viewer.