Ignore:
Timestamp:
2013-01-14T19:11:27+01:00 (13 years ago)
Author:
malcolmh
Message:

save

Location:
applications/editors/josm/plugins/smed2/src/seamap
Files:
3 edited

Legend:

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

    r29189 r29198  
    1818import s57.S57att.Att;
    1919import s57.S57obj.Obj;
    20 import s57.S57val.ColCOL;
    2120import s57.S57val.*;
    2221import s57.S57val;
     
    6665                        ArrayList<Long> way = map.ways.get(feature.refs);
    6766                        Coord coord = map.nodes.get(way.get(0));
    68             double llon = Math.toRadians(coord.lon);
    69             double llat = Math.toRadians(coord.lat);
     67            double llon = coord.lon;
     68            double llat = coord.lat;
    7069            double sigma = 0.0;
    7170                        for (long node : way) {
    7271                                coord = map.nodes.get(node);
    73                                 double lat = Math.toRadians(coord.lat);
    74                                 double lon = Math.toRadians(coord.lon);
     72                                double lat = coord.lat;
     73                                double lon = coord.lon;
    7574                                sigma += (lon * Math.sin(llat)) - (llon * Math.sin(lat));
    7675                                llon = lon;
    7776                                llat = lat;
    7877            }
    79             return Math.abs(sigma) / 2.0 * 3444 * 3444;
     78            return Math.abs(sigma) * 3444 * 3444 / 2.0;
    8079          }
    8180          return 0.0;
     
    8382
    8483        public static Coord findCentroid(Feature feature) {
    85                 double tst = calcArea(feature);
    8684                Coord coord;
    8785                ArrayList<Long> way = map.ways.get(feature.refs);
     
    105103      double lon = coord.lon;
    106104      double lat = coord.lat;
    107       double arc = (Math.acos(Math.cos(Math.toRadians(lon-llon)) * Math.cos(Math.toRadians(lat-llat))));
     105      double arc = (Math.acos(Math.cos(lon-llon) * Math.cos(lat-llat)));
    108106      slat += (lat * arc);
    109107      slon += (lon * arc);
     
    122120        }
    123121       
     122        public static void lineSymbols(Feature feature, Symbol prisymb, double space, Symbol secsymb, int ratio) {
     123                if (feature.flag != Fflag.NODE) {
     124                        ArrayList<Long> way = map.ways.get(feature.refs);
     125                        for (long node : way) {
     126                                Point2D point = helper.getPoint(map.nodes.get(node));
     127                               
     128                        }
     129                }
     130        }
     131       
     132        public static void lineVector (Feature feature, LineStyle style) {
     133               
     134        }
     135       
     136        public static void labelText (Feature feature, String str, TextStyle style, Delta delta) {
     137               
     138        }
     139       
     140        public static void lineText (Feature feature, String str, TextStyle style, double offset, Delta delta) {
     141               
     142        }
    124143}
  • applications/editors/josm/plugins/smed2/src/seamap/Rules.java

    r29186 r29198  
    1010package seamap;
    1111
     12import java.awt.BasicStroke;
     13import java.awt.Color;
     14import java.awt.Font;
     15import java.awt.geom.AffineTransform;
    1216import java.util.ArrayList;
    1317
     
    1620import s57.S57obj.*;
    1721
    18 import seamap.SeaMap.AttItem;
    1922import seamap.SeaMap.*;
    2023import symbols.*;
     
    2932                map = m;
    3033                zoom = z;
    31                 ArrayList<Feature> feature;
    32                 if ((feature = map.features.get(Obj.SLCONS)) != null) shoreline(feature);
    33                 if ((feature = map.features.get(Obj.SLCONS)) != null) shoreline(feature);
    34                 if ((feature = map.features.get(Obj.PIPSOL)) != null) pipelines(feature);
    35                 if ((feature = map.features.get(Obj.CBLSUB)) != null) cables(feature);
    36                 if ((feature = map.features.get(Obj.PIPOHD)) != null) pipelines(feature);
    37                 if ((feature = map.features.get(Obj.CBLOHD)) != null) cables(feature);
    38                 if ((feature = map.features.get(Obj.TSEZNE)) != null) separation(feature);
    39                 if ((feature = map.features.get(Obj.TSSCRS)) != null) separation(feature);
    40                 if ((feature = map.features.get(Obj.TSSRON)) != null) separation(feature);
    41                 if ((feature = map.features.get(Obj.TSELNE)) != null) separation(feature);
    42                 if ((feature = map.features.get(Obj.TSSLPT)) != null) separation(feature);
    43                 if ((feature = map.features.get(Obj.TSSBND)) != null) separation(feature);
    44                 if ((feature = map.features.get(Obj.SNDWAV)) != null) areas(feature);
    45                 if ((feature = map.features.get(Obj.OSPARE)) != null) areas(feature);
    46                 if ((feature = map.features.get(Obj.FAIRWY)) != null) areas(feature);
    47                 if ((feature = map.features.get(Obj.DRGARE)) != null) areas(feature);
    48                 if ((feature = map.features.get(Obj.RESARE)) != null) areas(feature);
    49                 if ((feature = map.features.get(Obj.SPLARE)) != null) areas(feature);
    50                 if ((feature = map.features.get(Obj.SEAARE)) != null) areas(feature);
    51                 if ((feature = map.features.get(Obj.OBSTRN)) != null) obstructions(feature);
    52                 if ((feature = map.features.get(Obj.UWTROC)) != null) obstructions(feature);
    53                 if ((feature = map.features.get(Obj.MARCUL)) != null) areas(feature);
    54                 if ((feature = map.features.get(Obj.WTWAXS)) != null) waterways(feature);
    55                 if ((feature = map.features.get(Obj.RECTRC)) != null) transits(feature);
    56                 if ((feature = map.features.get(Obj.NAVLNE)) != null) transits(feature);
    57                 if ((feature = map.features.get(Obj.HRBFAC)) != null) harbours(feature);
    58                 if ((feature = map.features.get(Obj.ACHARE)) != null) harbours(feature);
    59                 if ((feature = map.features.get(Obj.ACHBRT)) != null) harbours(feature);
    60                 if ((feature = map.features.get(Obj.LOKBSN)) != null) locks(feature);
    61                 if ((feature = map.features.get(Obj.LKBSPT)) != null) locks(feature);
    62                 if ((feature = map.features.get(Obj.GATCON)) != null) locks(feature);
    63                 if ((feature = map.features.get(Obj.DISMAR)) != null) distances(feature);
    64                 if ((feature = map.features.get(Obj.HULKES)) != null) ports(feature);
    65                 if ((feature = map.features.get(Obj.CRANES)) != null) ports(feature);
    66                 if ((feature = map.features.get(Obj.LNDMRK)) != null) landmarks(feature);
    67                 if ((feature = map.features.get(Obj.MORFAC)) != null) moorings(feature);
    68                 if ((feature = map.features.get(Obj.NOTMRK)) != null) notices(feature);
    69                 if ((feature = map.features.get(Obj.SMCFAC)) != null) marinas(feature);
    70                 if ((feature = map.features.get(Obj.BRIDGE)) != null) bridges(feature);
    71                 if ((feature = map.features.get(Obj.LITMAJ)) != null) lights(feature);
    72                 if ((feature = map.features.get(Obj.LITMIN)) != null) lights(feature);
    73                 if ((feature = map.features.get(Obj.LIGHTS)) != null) lights(feature);
    74                 if ((feature = map.features.get(Obj.SISTAT)) != null) signals(feature);
    75                 if ((feature = map.features.get(Obj.SISTAW)) != null) signals(feature);
    76                 if ((feature = map.features.get(Obj.CGUSTA)) != null) signals(feature);
    77                 if ((feature = map.features.get(Obj.RDOSTA)) != null) signals(feature);
    78                 if ((feature = map.features.get(Obj.RADSTA)) != null) signals(feature);
    79                 if ((feature = map.features.get(Obj.RSCSTA)) != null) signals(feature);
    80                 if ((feature = map.features.get(Obj.PILBOP)) != null) signals(feature);
    81                 if ((feature = map.features.get(Obj.WTWGAG)) != null) gauges(feature);
    82                 if ((feature = map.features.get(Obj.OFSPLF)) != null) platforms(feature);
    83                 if ((feature = map.features.get(Obj.WRECKS)) != null) wrecks(feature);
    84                 if ((feature = map.features.get(Obj.LITVES)) != null) floats(feature);
    85                 if ((feature = map.features.get(Obj.LITFLT)) != null) floats(feature);
    86                 if ((feature = map.features.get(Obj.BOYINB)) != null) floats(feature);
    87                 if ((feature = map.features.get(Obj.BOYLAT)) != null) buoys(feature);
    88                 if ((feature = map.features.get(Obj.BOYCAR)) != null) buoys(feature);
    89                 if ((feature = map.features.get(Obj.BOYISD)) != null) buoys(feature);
    90                 if ((feature = map.features.get(Obj.BOYSAW)) != null) buoys(feature);
    91                 if ((feature = map.features.get(Obj.BOYSPP)) != null) buoys(feature);
    92                 if ((feature = map.features.get(Obj.BOYWTW)) != null) buoys(feature);
    93                 if ((feature = map.features.get(Obj.BCNLAT)) != null) beacons(feature);
    94                 if ((feature = map.features.get(Obj.BCNCAR)) != null) beacons(feature);
    95                 if ((feature = map.features.get(Obj.BCNISD)) != null) beacons(feature);
    96                 if ((feature = map.features.get(Obj.BCNSAW)) != null) beacons(feature);
    97                 if ((feature = map.features.get(Obj.BCNSPP)) != null) beacons(feature);
    98                 if ((feature = map.features.get(Obj.BCNWTW)) != null) beacons(feature);
     34                ArrayList<Feature> objects;
     35                if ((objects = map.features.get(Obj.SLCONS)) != null) for (Feature feature : objects) shoreline(feature);
     36                if ((objects = map.features.get(Obj.SLCONS)) != null) for (Feature feature : objects) shoreline(feature);;
     37                if ((objects = map.features.get(Obj.PIPSOL)) != null) for (Feature feature : objects) pipelines(feature);
     38                if ((objects = map.features.get(Obj.CBLSUB)) != null) for (Feature feature : objects) cables(feature);
     39                if ((objects = map.features.get(Obj.PIPOHD)) != null) for (Feature feature : objects) pipelines(feature);
     40                if ((objects = map.features.get(Obj.CBLOHD)) != null) for (Feature feature : objects) cables(feature);
     41                if ((objects = map.features.get(Obj.TSEZNE)) != null) for (Feature feature : objects) separation(feature);
     42                if ((objects = map.features.get(Obj.TSSCRS)) != null) for (Feature feature : objects) separation(feature);
     43                if ((objects = map.features.get(Obj.TSSRON)) != null) for (Feature feature : objects) separation(feature);
     44                if ((objects = map.features.get(Obj.TSELNE)) != null) for (Feature feature : objects) separation(feature);
     45                if ((objects = map.features.get(Obj.TSSLPT)) != null) for (Feature feature : objects) separation(feature);
     46                if ((objects = map.features.get(Obj.TSSBND)) != null) for (Feature feature : objects) separation(feature);
     47                if ((objects = map.features.get(Obj.SNDWAV)) != null) for (Feature feature : objects) areas(feature);
     48                if ((objects = map.features.get(Obj.OSPARE)) != null) for (Feature feature : objects) areas(feature);
     49                if ((objects = map.features.get(Obj.FAIRWY)) != null) for (Feature feature : objects) areas(feature);
     50                if ((objects = map.features.get(Obj.DRGARE)) != null) for (Feature feature : objects) areas(feature);
     51                if ((objects = map.features.get(Obj.RESARE)) != null) for (Feature feature : objects) areas(feature);
     52                if ((objects = map.features.get(Obj.SPLARE)) != null) for (Feature feature : objects) areas(feature);
     53                if ((objects = map.features.get(Obj.SEAARE)) != null) for (Feature feature : objects) areas(feature);
     54                if ((objects = map.features.get(Obj.OBSTRN)) != null) for (Feature feature : objects) obstructions(feature);
     55                if ((objects = map.features.get(Obj.UWTROC)) != null) for (Feature feature : objects) obstructions(feature);
     56                if ((objects = map.features.get(Obj.MARCUL)) != null) for (Feature feature : objects) areas(feature);
     57                if ((objects = map.features.get(Obj.WTWAXS)) != null) for (Feature feature : objects) waterways(feature);
     58                if ((objects = map.features.get(Obj.RECTRC)) != null) for (Feature feature : objects) transits(feature);
     59                if ((objects = map.features.get(Obj.NAVLNE)) != null) for (Feature feature : objects) transits(feature);
     60                if ((objects = map.features.get(Obj.HRBFAC)) != null) for (Feature feature : objects) harbours(feature);
     61                if ((objects = map.features.get(Obj.ACHARE)) != null) for (Feature feature : objects) harbours(feature);
     62                if ((objects = map.features.get(Obj.ACHBRT)) != null) for (Feature feature : objects) harbours(feature);
     63                if ((objects = map.features.get(Obj.LOKBSN)) != null) for (Feature feature : objects) locks(feature);
     64                if ((objects = map.features.get(Obj.LKBSPT)) != null) for (Feature feature : objects) locks(feature);
     65                if ((objects = map.features.get(Obj.GATCON)) != null) for (Feature feature : objects) locks(feature);
     66                if ((objects = map.features.get(Obj.DISMAR)) != null) for (Feature feature : objects) distances(feature);
     67                if ((objects = map.features.get(Obj.HULKES)) != null) for (Feature feature : objects) ports(feature);
     68                if ((objects = map.features.get(Obj.CRANES)) != null) for (Feature feature : objects) ports(feature);
     69                if ((objects = map.features.get(Obj.LNDMRK)) != null) for (Feature feature : objects) landmarks(feature);
     70                if ((objects = map.features.get(Obj.MORFAC)) != null) for (Feature feature : objects) moorings(feature);
     71                if ((objects = map.features.get(Obj.NOTMRK)) != null) for (Feature feature : objects) notices(feature);
     72                if ((objects = map.features.get(Obj.SMCFAC)) != null) for (Feature feature : objects) marinas(feature);
     73                if ((objects = map.features.get(Obj.BRIDGE)) != null) for (Feature feature : objects) bridges(feature);
     74                if ((objects = map.features.get(Obj.LITMAJ)) != null) for (Feature feature : objects) lights(feature);
     75                if ((objects = map.features.get(Obj.LITMIN)) != null) for (Feature feature : objects) lights(feature);
     76                if ((objects = map.features.get(Obj.LIGHTS)) != null) for (Feature feature : objects) lights(feature);
     77                if ((objects = map.features.get(Obj.SISTAT)) != null) for (Feature feature : objects) signals(feature);
     78                if ((objects = map.features.get(Obj.SISTAW)) != null) for (Feature feature : objects) signals(feature);
     79                if ((objects = map.features.get(Obj.CGUSTA)) != null) for (Feature feature : objects) signals(feature);
     80                if ((objects = map.features.get(Obj.RDOSTA)) != null) for (Feature feature : objects) signals(feature);
     81                if ((objects = map.features.get(Obj.RADSTA)) != null) for (Feature feature : objects) signals(feature);
     82                if ((objects = map.features.get(Obj.RSCSTA)) != null) for (Feature feature : objects) signals(feature);
     83                if ((objects = map.features.get(Obj.PILBOP)) != null) for (Feature feature : objects) signals(feature);
     84                if ((objects = map.features.get(Obj.WTWGAG)) != null) for (Feature feature : objects) gauges(feature);
     85                if ((objects = map.features.get(Obj.OFSPLF)) != null) for (Feature feature : objects) platforms(feature);
     86                if ((objects = map.features.get(Obj.WRECKS)) != null) for (Feature feature : objects) wrecks(feature);
     87                if ((objects = map.features.get(Obj.LITVES)) != null) for (Feature feature : objects) floats(feature);
     88                if ((objects = map.features.get(Obj.LITFLT)) != null) for (Feature feature : objects) floats(feature);
     89                if ((objects = map.features.get(Obj.BOYINB)) != null) for (Feature feature : objects) floats(feature);
     90                if ((objects = map.features.get(Obj.BOYLAT)) != null) for (Feature feature : objects) buoys(feature);
     91                if ((objects = map.features.get(Obj.BOYCAR)) != null) for (Feature feature : objects) buoys(feature);
     92                if ((objects = map.features.get(Obj.BOYISD)) != null) for (Feature feature : objects) buoys(feature);
     93                if ((objects = map.features.get(Obj.BOYSAW)) != null) for (Feature feature : objects) buoys(feature);
     94                if ((objects = map.features.get(Obj.BOYSPP)) != null) for (Feature feature : objects) buoys(feature);
     95                if ((objects = map.features.get(Obj.BOYWTW)) != null) for (Feature feature : objects) buoys(feature);
     96                if ((objects = map.features.get(Obj.BCNLAT)) != null) for (Feature feature : objects) beacons(feature);
     97                if ((objects = map.features.get(Obj.BCNCAR)) != null) for (Feature feature : objects) beacons(feature);
     98                if ((objects = map.features.get(Obj.BCNISD)) != null) for (Feature feature : objects) beacons(feature);
     99                if ((objects = map.features.get(Obj.BCNSAW)) != null) for (Feature feature : objects) beacons(feature);
     100                if ((objects = map.features.get(Obj.BCNSPP)) != null) for (Feature feature : objects) beacons(feature);
     101                if ((objects = map.features.get(Obj.BCNWTW)) != null) for (Feature feature : objects) beacons(feature);
    99102        }
    100103       
    101         private static void shoreline(ArrayList<Feature> features) {
    102 //              for (Feature feature : features) {
    103 //              }
    104         }
    105         private static void pipelines(ArrayList<Feature> features) {}
    106         private static void cables(ArrayList<Feature> features) {}
    107         private static void separation(ArrayList<Feature> features) {}
    108         private static void areas(ArrayList<Feature> features) {}
    109         private static void obstructions(ArrayList<Feature> features) {}
    110         private static void waterways(ArrayList<Feature> features) {}
    111         private static void transits(ArrayList<Feature> features) {}
    112         private static void harbours(ArrayList<Feature> features) {}
    113         private static void locks(ArrayList<Feature> features) {}
    114         private static void distances(ArrayList<Feature> features) {}
    115         private static void ports(ArrayList<Feature> features) {}
    116         private static void landmarks(ArrayList<Feature> features) {
    117                 for (Feature feature : features) {
    118                         ArrayList<CatLMK> cats = (ArrayList<CatLMK>) Renderer.getAttVal(feature, feature.type, 0, Att.CATLMK);
    119                         Symbol catSym = Landmarks.Shapes.get(cats.get(0));
    120                         ArrayList<FncFNC> fncs = (ArrayList<FncFNC>) Renderer.getAttVal(feature, feature.type, 0, Att.FUNCTN);
    121                         Symbol fncSym = Landmarks.Funcs.get(fncs.get(0));
    122                         if ((fncs.get(0) == FncFNC.FNC_CHCH) && (cats.get(0) == CatLMK.LMK_TOWR)) catSym = Landmarks.ChurchTower;
    123                         if ((cats.get(0) == CatLMK.LMK_UNKN) && (fncs.get(0) == FncFNC.FNC_UNKN) && (feature.objs.get(Obj.LIGHTS) != null)) catSym = Beacons.LightMajor;
    124                         if (cats.get(0) == CatLMK.LMK_RADR) fncSym = Landmarks.RadioTV;
    125                         Renderer.symbol(feature, catSym, feature.type, null);
    126                         Renderer.symbol(feature, fncSym, feature.type, null);
    127                 }
    128         }
    129         private static void moorings(ArrayList<Feature> features) {
    130                 for (Feature feature : features) {
    131                         CatMOR cat = (CatMOR) Renderer.getAttVal(feature, feature.type, 0, Att.CATMOR);
     104        private static void shoreline(Feature feature) {
     105                CatSLC cat = (CatSLC) Renderer.getAttVal(feature, feature.type, 0, Att.CATSLC);
     106                if (zoom >= 12) {
    132107                        switch (cat) {
    133                         case MOR_DLPN:
    134                                 Renderer.symbol(feature, Harbours.Dolphin, feature.type, null);
    135                                 break;
    136                         case MOR_DDPN:
    137                                 Renderer.symbol(feature, Harbours.DeviationDolphin, feature.type, null);
    138                                 break;
    139                         case MOR_BLRD:
    140                         case MOR_POST:
    141                                 Renderer.symbol(feature, Harbours.Bollard, feature.type, null);
    142                                 break;
    143                         case MOR_BUOY:
    144                                 BoySHP shape = (BoySHP) Renderer.getAttVal(feature, feature.type, 0, Att.BOYSHP);
    145                                 if (shape == BoySHP.BOY_UNKN) shape = BoySHP.BOY_SPHR;
    146                                 Renderer.symbol(feature, Buoys.Shapes.get(shape), feature.type, null);
    147                                 break;
    148                         }
    149                 }
    150         }
    151         private static void notices(ArrayList<Feature> features) {}
    152         private static void marinas(ArrayList<Feature> features) {}
    153         private static void bridges(ArrayList<Feature> features) {}
    154         private static void wrecks(ArrayList<Feature> features) {}
    155         private static void gauges(ArrayList<Feature> features) {}
    156         private static void lights(ArrayList<Feature> features) {
    157                 for (Feature feature : features) {
    158                         switch (feature.type) {
    159                         case LITMAJ:
    160                                 Renderer.symbol(feature, Beacons.LightMajor, feature.type, null);
    161                                 break;
    162                         case LITMIN:
    163                         case LIGHTS:
    164                                 Renderer.symbol(feature, Beacons.LightMinor, feature.type, null);
    165                                 break;
    166                         }
    167                 }
    168         }
    169         private static void signals(ArrayList<Feature> features) {
    170                 for (Feature feature : features) {
    171                         switch (feature.type) {
    172                         case SISTAT:
    173                         case SISTAW:
    174                                 Renderer.symbol(feature, Harbours.SignalStation, feature.type, null);
    175                                 break;
    176                         case RDOSTA:
    177                                 Renderer.symbol(feature, Harbours.SignalStation, feature.type, null);
    178                                 break;
    179                         case RADSTA:
    180                                 Renderer.symbol(feature, Harbours.SignalStation, feature.type, null);
    181                                 break;
    182                         case PILBOP:
    183                                 Renderer.symbol(feature, Harbours.SignalStation, feature.type, null);
    184                                 break;
    185                         case CGUSTA:
    186 //                      Renderer.symbol(feature, Harbours.CGuardStation, feature.type, null);
    187                         break;
    188                         case RSCSTA:
    189 //                              Renderer.symbol(feature, Harbours.RescueStation, feature.type, null);
    190                                 break;
    191                         }
    192                 }
    193         }
    194         private static void floats(ArrayList<Feature> features) {
    195                 for (Feature feature : features) {
    196                         switch (feature.type) {
    197                         case LITVES:
    198                                 Renderer.symbol(feature, Buoys.Super, feature.type, null);
    199                                 break;
    200                         case LITFLT:
    201                                 Renderer.symbol(feature, Buoys.Float, feature.type, null);
    202                                 break;
    203                         case BOYINB:
    204                                 Renderer.symbol(feature, Buoys.Storage, feature.type, null);
    205                                 break;
    206                         }
     108                        case SLC_TWAL:
     109                                WatLEV lev = (WatLEV) Renderer.getAttVal(feature, feature.type, 0, Att.WATLEV);
     110                                if (lev == WatLEV.LEV_CVRS) {
     111                                        Renderer.lineVector(feature, new LineStyle(new BasicStroke(10, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND, 1, new float[] { 40, 40 }, 0), Color.black, null));
     112                                        if (zoom >= 15)
     113                                                Renderer.lineText(feature, "(covers)", new TextStyle(new Font("Arial", Font.PLAIN, 80)), 0.5, new Delta(Handle.TC, AffineTransform.getTranslateInstance(0, 20)));
     114                                } else {
     115                                        Renderer.lineVector(feature, new LineStyle(new BasicStroke(10, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND), Color.black, null));
     116                                }
     117                                if (zoom >= 15)
     118                                        Renderer.lineText(feature, "Training Wall", new TextStyle(new Font("Arial", Font.PLAIN, 80)), 0.5, new Delta(Handle.BC, AffineTransform.getTranslateInstance(0, -20)));
     119                        }
     120                }
     121        }
     122        private static void pipelines(Feature feature) {
     123                if (zoom >= 14) {
     124                        if (feature.type == Obj.PIPSOL) {
     125                                Renderer.lineSymbols(feature, Areas.Pipeline, 1.0, null, 0);
     126                        } else if (feature.type == Obj.PIPOHD) {
     127
     128                        }
     129                }
     130        }
     131        private static void cables(Feature feature) {
     132                if (zoom >= 14) {
     133                        if (feature.type == Obj.CBLSUB) {
     134                                Renderer.lineSymbols(feature, Areas.Cable, 0.0, null, 0);
     135                        } else if (feature.type == Obj.CBLOHD) {
     136
     137                        }
     138                }
     139        }
     140        private static void separation(Feature feature) {
     141                switch (feature.type) {
     142                case TSEZNE:
     143                case TSSCRS:
     144                case TSSRON:
     145                        if (zoom <= 15)
     146                                Renderer.lineVector(feature, new LineStyle(null, null, new Color(0x80c480ff, true)));
     147                        else
     148                                Renderer.lineVector(feature, new LineStyle(new BasicStroke(20, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND), new Color(0x80c480ff, true), null));
     149                        AttItem name = feature.atts.get(Att.OBJNAM);
     150                        if ((zoom >= 10) && (name != null))
     151                                Renderer.labelText(feature, (String) name.val, new TextStyle(new Font("Arial", Font.BOLD, 150)), null);
     152                        break;
     153                case TSELNE:
     154                        Renderer.lineVector(feature, new LineStyle(new BasicStroke(20, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND), new Color(0x80c480ff, true), null));
     155                        break;
     156                case TSSLPT:
     157                        Renderer.lineSymbols(feature, Areas.LaneArrow, 0.5, null, 0);
     158                        break;
     159                case TSSBND:
     160                        Renderer.lineVector(feature, new LineStyle(new BasicStroke(20, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND, 1, new float[] { 40, 40 }, 0), new Color(0x80c480ff, true), null));
     161                        break;
     162                }
     163        }
     164        private static void areas(Feature feature) {
     165                AttItem name = feature.atts.get(Att.OBJNAM);
     166                switch (feature.type) {
     167                case SPLARE:
     168                        if (zoom >= 12) {
     169                                Renderer.symbol(feature, Areas.Plane, Obj.SPLARE, null);
     170                                Renderer.lineSymbols(feature, Areas.Restricted, 0.5, Areas.LinePlane, 10);
     171                        }
     172                        if ((zoom >= 15) && (name != null))
     173                                Renderer.labelText(feature, (String) name.val, new TextStyle(new Font("Arial", Font.BOLD, 80)), new Delta(Handle.BC, AffineTransform.getTranslateInstance(0, -90)));
     174                        break;
     175                case MARCUL:
     176                        if (zoom >= 14)
     177                                Renderer.symbol(feature, Areas.MarineFarm, Obj.MARCUL, null);
     178                        if (zoom >= 16)
     179                                Renderer.lineVector(feature, new LineStyle(new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND, 1, new float[] { 10, 10 }, 0), Color.black, null));
     180                        break;
     181                case FAIRWY:
     182                        if (Renderer.calcArea(feature) > 2.0) {
     183                                if (zoom < 16)
     184                                        Renderer.lineVector(feature, new LineStyle(new BasicStroke(8, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND, 1, new float[] { 50, 50 }, 0), new Color(0xc480ff), new Color(0x40ffffff, true)));
     185                                else
     186                                        Renderer.lineVector(feature, new LineStyle(new BasicStroke(8, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND, 1, new float[] { 50, 50 }, 0), new Color(0xc480ff), null));
     187                        } else {
     188                                if (zoom >= 14)
     189                                        Renderer.lineVector(feature, new LineStyle(null, null, new Color(0x40ffffff, true)));
     190                        }
     191                        break;
     192                case DRGARE:
     193                        if (zoom < 16)
     194                                Renderer.lineVector(feature, new LineStyle(new BasicStroke(8, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND, 1, new float[] { 25, 25 }, 0), Color.black, new Color(0x40ffffff, true)));
     195                        else
     196                                Renderer.lineVector(feature, new LineStyle(new BasicStroke(8, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND, 1, new float[] { 25, 25 }, 0), Color.black, null));
     197                        if ((zoom >= 12) && (name != null))
     198                                Renderer.labelText(feature, (String) name.val, new TextStyle(new Font("Arial", Font.PLAIN, 100)), new Delta(Handle.BC, AffineTransform.getTranslateInstance(0, 0)));
     199                        break;
     200                case RESARE:
     201                        if (zoom >= 12) {
     202                                Renderer.lineSymbols(feature, Areas.Restricted, 1.0, null, 0);
     203                                if ((CatREA)Renderer.getAttVal(feature, feature.type, 0, Att.CATREA) == CatREA.REA_NWAK)
     204                                        Renderer.symbol(feature, Areas.NoWake, Obj.RESARE, null);
     205                        }
     206                        break;
     207                case OSPARE:
     208                        if ((CatPRA)Renderer.getAttVal(feature, feature.type, 0, Att.CATPRA) == CatPRA.PRA_WFRM) {
     209                                Renderer.symbol(feature, Areas.WindFarm, Obj.OSPARE, null);
     210                                Renderer.lineVector(feature, new LineStyle(new BasicStroke(20, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND, 1, new float[] { 40, 40 }, 0), Color.black, null));
     211                                if ((zoom >= 15) && (name != null))
     212                                        Renderer.labelText(feature, (String) name.val, new TextStyle(new Font("Arial", Font.BOLD, 80)), new Delta(Handle.TC, AffineTransform.getTranslateInstance(0, 10)));
     213                        }
     214                        break;
     215                case SEAARE:
     216                        break;
     217                case SNDWAV:
     218//        if (zoom>=12)) area("fill:url(#sandwaves)");
     219                        break;
     220                }
     221/*
     222  if (is_type("sea_area")) {
     223    if (has_attribute("category")) {
     224      make_string("");
     225      attribute_switch("category")
     226      attribute_case("reach") { if (zoom >= 10) add_string("font-family:Arial;font-weight:normal;font-style:italic;font-size:150;text-anchor:middle") }
     227      attribute_case("bay") { if (zoom >= 12) add_string("font-family:Arial;font-weight:normal;font-style:italic;font-size:150;text-anchor:middle") }
     228      attribute_case("shoal") { if (zoom >= 14) {
     229        if (is_area) {
     230          area("stroke:#c480ff;stroke-width:4;stroke-dasharray:25,25;fill:none");
     231          if (has_item_attribute("name")) text(item_attribute("name"), "font-family:Arial;font-weight:normal;font-style:italic;font-size:75;text-anchor:middle", 0, -40);
     232          text("(Shoal)", "font-family:Arial;font-weight:normal;font-size:60;text-anchor:middle", 0, 0);
     233        } else if (is_line) {
     234          if (has_item_attribute("name")) way_text(item_attribute("name"), "font-family:Arial;font-weight:normal;font-style:italic;font-size:75;text-anchor:middle", 0.5, -40, line("stroke:none;fill:none"));
     235          way_text("(Shoal)", "font-family:Arial;font-weight:normal;font-size:60;text-anchor:middle", 0.5, 0, line("stroke:none;fill:none"));
     236        } else {
     237          if (has_item_attribute("name")) text(item_attribute("name"), "font-family:Arial;font-weight:normal;font-style:italic;font-size:75;text-anchor:middle", 0, -40);
     238          text("(Shoal)", "font-family:Arial;font-weight:normal;font-size:60;text-anchor:middle", 0, 0);
     239        }
     240      }
     241      }
     242      attribute_case("gat|narrows") { if (zoom >= 12) add_string("font-family:Arial;font-weight:normal;font-style:italic;font-size:100;text-anchor:middle") }
     243      end_switch
     244      if ((strlen(string) > 0) && !attribute_test("category", "shoal")) {
     245        int ref = line("stroke:none;fill:none");
     246        if (ref != 0) {
     247          if (has_item_attribute("name")) way_text(item_attribute("name"), string, 0.5, 0, ref);
     248        } else {
     249          if (has_item_attribute("name")) text(item_attribute("name"), string, 0, 0);
     250        }
     251      }
     252      free_string
     253    }
     254  }
     255 */
     256        }
     257
     258        private static void obstructions(Feature feature) {
     259                if ((zoom >= 14) && (feature.type == Obj.UWTROC)) {
     260                        WatLEV lvl = (WatLEV) Renderer.getAttVal(feature, feature.type, 0, Att.WATLEV);
     261                        switch (lvl) {
     262                        case LEV_CVRS:
     263                                Renderer.symbol(feature, Areas.RockC, feature.type, null);
     264                                break;
     265                        case LEV_AWSH:
     266                                Renderer.symbol(feature, Areas.RockA, feature.type, null);
     267                                break;
     268                        default:
     269                                Renderer.symbol(feature, Areas.Rock, feature.type, null);
     270                        }
     271                } else {
     272                        Renderer.symbol(feature, Areas.Rock, feature.type, null);
     273                }
     274        }
     275        private static void waterways(Feature feature) {
     276                if ((zoom >= 14) && (feature.atts.get(Att.OBJNAM) != null)) {
     277                        // lineText(item_attribute("name"), "font-family:Arial;font-weight:bold;font-size:80;text-anchor:middle", 0.5, 15, line("stroke:none;fill:none"));
     278                }
     279        }
     280        private static void transits(Feature feature) {
     281        }
     282        private static void harbours(Feature feature) {
     283        }
     284        private static void locks(Feature feature) {
     285        }
     286        private static void distances(Feature feature) {
     287        }
     288        private static void ports(Feature feature) {
     289        }
     290        private static void landmarks(Feature feature) {
     291                ArrayList<CatLMK> cats = (ArrayList<CatLMK>) Renderer.getAttVal(feature, feature.type, 0, Att.CATLMK);
     292                Symbol catSym = Landmarks.Shapes.get(cats.get(0));
     293                ArrayList<FncFNC> fncs = (ArrayList<FncFNC>) Renderer.getAttVal(feature, feature.type, 0, Att.FUNCTN);
     294                Symbol fncSym = Landmarks.Funcs.get(fncs.get(0));
     295                if ((fncs.get(0) == FncFNC.FNC_CHCH) && (cats.get(0) == CatLMK.LMK_TOWR))
     296                        catSym = Landmarks.ChurchTower;
     297                if ((cats.get(0) == CatLMK.LMK_UNKN) && (fncs.get(0) == FncFNC.FNC_UNKN) && (feature.objs.get(Obj.LIGHTS) != null))
     298                        catSym = Beacons.LightMajor;
     299                if (cats.get(0) == CatLMK.LMK_RADR)
     300                        fncSym = Landmarks.RadioTV;
     301                Renderer.symbol(feature, catSym, feature.type, null);
     302                Renderer.symbol(feature, fncSym, feature.type, null);
     303        }
     304        private static void moorings(Feature feature) {
     305                CatMOR cat = (CatMOR) Renderer.getAttVal(feature, feature.type, 0, Att.CATMOR);
     306                switch (cat) {
     307                case MOR_DLPN:
     308                        Renderer.symbol(feature, Harbours.Dolphin, feature.type, null);
     309                        break;
     310                case MOR_DDPN:
     311                        Renderer.symbol(feature, Harbours.DeviationDolphin, feature.type, null);
     312                        break;
     313                case MOR_BLRD:
     314                case MOR_POST:
     315                        Renderer.symbol(feature, Harbours.Bollard, feature.type, null);
     316                        break;
     317                case MOR_BUOY:
     318                        BoySHP shape = (BoySHP) Renderer.getAttVal(feature, feature.type, 0, Att.BOYSHP);
     319                        if (shape == BoySHP.BOY_UNKN)
     320                                shape = BoySHP.BOY_SPHR;
     321                        Renderer.symbol(feature, Buoys.Shapes.get(shape), feature.type, null);
     322                        break;
     323                }
     324        }
     325        private static void notices(Feature feature) {
     326        }
     327        private static void marinas(Feature feature) {
     328        }
     329        private static void bridges(Feature feature) {
     330        }
     331        private static void wrecks(Feature feature) {
     332                if (zoom >= 14) {
     333                        CatWRK cat = (CatWRK) Renderer.getAttVal(feature, feature.type, 0, Att.CATWRK);
     334                        switch (cat) {
     335                        case WRK_DNGR:
     336                        case WRK_MSTS:
     337                                Renderer.symbol(feature, Areas.WreckD, feature.type, null);
     338                                break;
     339                        case WRK_HULS:
     340                                Renderer.symbol(feature, Areas.WreckS, feature.type, null);
     341                                break;
     342                        default:
     343                                Renderer.symbol(feature, Areas.WreckND, feature.type, null);
     344                        }
     345                } else {
     346                        Renderer.symbol(feature, Areas.WreckND, feature.type, null);
     347                }
     348        }
     349        private static void gauges(Feature feature) {
     350        }
     351        private static void lights(Feature feature) {
     352                switch (feature.type) {
     353                case LITMAJ:
     354                        Renderer.symbol(feature, Beacons.LightMajor, feature.type, null);
     355                        break;
     356                case LITMIN:
     357                case LIGHTS:
     358                        Renderer.symbol(feature, Beacons.LightMinor, feature.type, null);
     359                        break;
     360                }
     361        }
     362        private static void signals(Feature feature) {
     363                switch (feature.type) {
     364                case SISTAT:
     365                case SISTAW:
     366                        Renderer.symbol(feature, Harbours.SignalStation, feature.type, null);
     367                        break;
     368                case RDOSTA:
     369                        Renderer.symbol(feature, Harbours.SignalStation, feature.type, null);
     370                        break;
     371                case RADSTA:
     372                        Renderer.symbol(feature, Harbours.SignalStation, feature.type, null);
     373                        break;
     374                case PILBOP:
     375                        Renderer.symbol(feature, Harbours.SignalStation, feature.type, null);
     376                        break;
     377                case CGUSTA:
     378                        Renderer.symbol(feature, Harbours.CoastGStation, feature.type, null);
     379                        break;
     380                case RSCSTA:
     381                        Renderer.symbol(feature, Harbours.RescueStation, feature.type, null);
     382                        break;
     383                }
     384        }
     385        private static void floats(Feature feature) {
     386                switch (feature.type) {
     387                case LITVES:
     388                        Renderer.symbol(feature, Buoys.Super, feature.type, null);
     389                        break;
     390                case LITFLT:
     391                        Renderer.symbol(feature, Buoys.Float, feature.type, null);
     392                        break;
     393                case BOYINB:
     394                        Renderer.symbol(feature, Buoys.Storage, feature.type, null);
     395                        break;
     396                }
     397                if (feature.objs.get(Obj.TOPMAR) != null)
     398                        Renderer.symbol(feature, Topmarks.Shapes.get(feature.objs.get(Obj.TOPMAR).get(0).get(Att.TOPSHP).val), Obj.TOPMAR, Topmarks.Floats);
     399        }
     400        private static void platforms(Feature feature) {
     401                Renderer.symbol(feature, Landmarks.Platform, feature.type, null);
     402        }
     403        private static void buoys(Feature feature) {
     404                BoySHP shape = (BoySHP) Renderer.getAttVal(feature, feature.type, 0, Att.BOYSHP);
     405                Renderer.symbol(feature, Buoys.Shapes.get(shape), feature.type, null);
     406                if (feature.objs.get(Obj.TOPMAR) != null) {
     407                        Renderer.symbol(feature, Topmarks.Shapes.get(feature.objs.get(Obj.TOPMAR).get(0).get(Att.TOPSHP).val), Obj.TOPMAR, Topmarks.Buoys.get(shape));
     408                }
     409        }
     410        private static void beacons(Feature feature) {
     411                BcnSHP shape = (BcnSHP) Renderer.getAttVal(feature, feature.type, 0, Att.BCNSHP);
     412                if (((shape == BcnSHP.BCN_PRCH) || (shape == BcnSHP.BCN_WTHY)) && (feature.type == Obj.BCNLAT)) {
     413                        CatLAM cat = (CatLAM) Renderer.getAttVal(feature, feature.type, 0, Att.CATLAM);
     414                        switch (cat) {
     415                        case LAM_PORT:
     416                                if (shape == BcnSHP.BCN_PRCH)
     417                                        Renderer.symbol(feature, Beacons.PerchPort, feature.type, null);
     418                                else
     419                                        Renderer.symbol(feature, Beacons.WithyPort, feature.type, null);
     420                                break;
     421                        case LAM_STBD:
     422                                if (shape == BcnSHP.BCN_PRCH)
     423                                        Renderer.symbol(feature, Beacons.PerchStarboard, feature.type, null);
     424                                else
     425                                        Renderer.symbol(feature, Beacons.WithyStarboard, feature.type, null);
     426                                break;
     427                        default:
     428                                Renderer.symbol(feature, Beacons.Stake, feature.type, null);
     429                        }
     430                } else {
     431                        Renderer.symbol(feature, Beacons.Shapes.get(shape), feature.type, null);
    207432                        if (feature.objs.get(Obj.TOPMAR) != null)
    208                                 Renderer.symbol(feature, Topmarks.Shapes.get(feature.objs.get(Obj.TOPMAR).get(0).get(Att.TOPSHP).val), Obj.TOPMAR, Topmarks.Floats);
    209                 }
    210         }
    211         private static void platforms(ArrayList<Feature> features) {
    212                 for (Feature feature : features) {
    213                         Renderer.symbol(feature, Landmarks.Platform, feature.type, null);
    214                 }
    215         }
    216         private static void buoys(ArrayList<Feature> features) {
    217                 for (Feature feature : features) {
    218                         BoySHP shape = (BoySHP) Renderer.getAttVal(feature, feature.type, 0, Att.BOYSHP);
    219                         Renderer.symbol(feature, Buoys.Shapes.get(shape), feature.type, null);
    220                         if (feature.objs.get(Obj.TOPMAR) != null) {
    221                                 Renderer.symbol(feature, Topmarks.Shapes.get(feature.objs.get(Obj.TOPMAR).get(0).get(Att.TOPSHP).val), Obj.TOPMAR, Topmarks.Buoys.get(shape));
    222                         }
    223                 }
    224         }
    225         private static void beacons(ArrayList<Feature> features) {
    226                 for (Feature feature : features) {
    227                         BcnSHP shape = (BcnSHP) Renderer.getAttVal(feature, feature.type, 0, Att.BCNSHP);
    228                         if (((shape == BcnSHP.BCN_PRCH) || (shape == BcnSHP.BCN_WTHY)) && (feature.type == Obj.BCNLAT)) {
    229                                 CatLAM cat = (CatLAM) Renderer.getAttVal(feature, feature.type, 0, Att.CATLAM);
    230                                 switch (cat) {
    231                                 case LAM_PORT:
    232                                         if (shape == BcnSHP.BCN_PRCH)
    233                                                 Renderer.symbol(feature, Beacons.PerchPort, feature.type, null);
    234                                         else
    235                                                 Renderer.symbol(feature, Beacons.WithyPort, feature.type, null);
    236                                         break;
    237                                 case LAM_STBD:
    238                                         if (shape == BcnSHP.BCN_PRCH)
    239                                                 Renderer.symbol(feature, Beacons.PerchStarboard, feature.type, null);
    240                                         else
    241                                                 Renderer.symbol(feature, Beacons.WithyStarboard, feature.type, null);
    242                                         break;
    243                                 default:
    244                                         Renderer.symbol(feature, Beacons.Stake, feature.type, null);
    245                                 }
    246                         } else {
    247                                 Renderer.symbol(feature, Beacons.Shapes.get(shape), feature.type, null);
    248                                 if (feature.objs.get(Obj.TOPMAR) != null)
    249                                         Renderer.symbol(feature, Topmarks.Shapes.get(feature.objs.get(Obj.TOPMAR).get(0).get(Att.TOPSHP).val), Obj.TOPMAR, Topmarks.Beacons);
    250                         }
     433                                Renderer.symbol(feature, Topmarks.Shapes.get(feature.objs.get(Obj.TOPMAR).get(0).get(Att.TOPSHP).val), Obj.TOPMAR, Topmarks.Beacons);
    251434                }
    252435        }
  • applications/editors/josm/plugins/smed2/src/seamap/SeaMap.java

    r29184 r29198  
    3838
    3939        public class AttMap extends EnumMap<Att, AttItem> {
    40                 private static final long serialVersionUID = 1L;
    4140                public AttMap() {
    4241                        super(Att.class);
     
    4544       
    4645        public class ObjTab extends HashMap<Integer, AttMap> {
    47                 private static final long serialVersionUID = 1L;
    4846                public ObjTab() {
    4947                        super();
     
    5250       
    5351        public class ObjMap extends EnumMap<Obj, ObjTab> {
    54                 private static final long serialVersionUID = 1L;
    5552                public ObjMap() {
    5653                        super(Obj.class);
     
    5956       
    6057        public class NodeTab extends HashMap<Long, Coord> {
    61                 private static final long serialVersionUID = 1L;
    6258                public NodeTab() {
    6359                        super();
     
    6662       
    6763        public class WayTab extends HashMap<Long, ArrayList<Long>> {
    68                 private static final long serialVersionUID = 1L;
    6964                public WayTab() {
    7065                        super();
     
    7368       
    7469        public class FtrMap extends EnumMap<Obj, ArrayList<Feature>> {
    75                 private static final long serialVersionUID = 1L;
    7670                public FtrMap() {
    7771                        super(Obj.class);
     
    8074       
    8175        public class FtrTab extends HashMap<Long, Feature> {
    82                 private static final long serialVersionUID = 1L;
    8376                public FtrTab() {
    8477                        super();
     
    131124
    132125        public void addNode(long id, double lat, double lon) {
    133                 nodes.put(id, new Coord(lat, lon));
     126                nodes.put(id, new Coord(Math.toRadians(lat), Math.toRadians(lon)));
    134127                feature = new Feature();
    135128                feature.refs = id;
     
    138131
    139132        public void moveNode(long id, double lat, double lon) {
    140                 nodes.put(id, new Coord(lat, lon));
     133                nodes.put(id, new Coord(Math.toRadians(lat), Math.toRadians(lon)));
    141134        }
    142135
Note: See TracChangeset for help on using the changeset viewer.