/[schmitzm]/trunk/src/skrueger/geotools/StyledLayerUtil.java
ViewVC logotype

Diff of /trunk/src/skrueger/geotools/StyledLayerUtil.java

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 400 by alfonx, Mon Sep 14 12:24:50 2009 UTC revision 403 by alfonx, Mon Sep 14 13:29:42 2009 UTC
# Line 36  import java.awt.Graphics2D; Line 36  import java.awt.Graphics2D;
36  import java.awt.Rectangle;  import java.awt.Rectangle;
37  import java.awt.geom.AffineTransform;  import java.awt.geom.AffineTransform;
38  import java.awt.image.BufferedImage;  import java.awt.image.BufferedImage;
39    import java.awt.image.ColorModel;
40  import java.io.File;  import java.io.File;
41  import java.io.FileNotFoundException;  import java.io.FileNotFoundException;
42  import java.io.FileWriter;  import java.io.FileWriter;
43    import java.io.IOException;
44  import java.net.URL;  import java.net.URL;
45  import java.text.DecimalFormat;  import java.text.DecimalFormat;
46  import java.util.HashMap;  import java.util.HashMap;
47  import java.util.List;  import java.util.List;
48  import java.util.Map;  import java.util.Map;
 import java.util.Set;  
49  import java.util.SortedMap;  import java.util.SortedMap;
50  import java.util.TreeMap;  import java.util.TreeMap;
51    
52    import javax.swing.BorderFactory;
53  import javax.swing.Box;  import javax.swing.Box;
54  import javax.swing.BoxLayout;  import javax.swing.BoxLayout;
55  import javax.swing.ImageIcon;  import javax.swing.ImageIcon;
56  import javax.swing.JLabel;  import javax.swing.JLabel;
57    
58  import org.apache.log4j.Logger;  import org.apache.log4j.Logger;
59    import org.geotools.coverage.grid.GeneralGridEnvelope;
60  import org.geotools.coverage.grid.GridCoverage2D;  import org.geotools.coverage.grid.GridCoverage2D;
61    import org.geotools.coverage.grid.GridGeometry2D;
62  import org.geotools.coverage.grid.io.AbstractGridCoverage2DReader;  import org.geotools.coverage.grid.io.AbstractGridCoverage2DReader;
63  import org.geotools.feature.FeatureCollection;  import org.geotools.feature.FeatureCollection;
64    import org.geotools.gce.imagepyramid.ImagePyramidReader;
65    import org.geotools.geometry.jts.ReferencedEnvelope;
66  import org.geotools.map.DefaultMapLayer;  import org.geotools.map.DefaultMapLayer;
67  import org.geotools.map.MapLayer;  import org.geotools.map.MapLayer;
68  import org.geotools.renderer.lite.gridcoverage2d.GridCoverageRenderer;  import org.geotools.renderer.lite.gridcoverage2d.GridCoverageRenderer;
# Line 71  import org.jdom.Element; Line 77  import org.jdom.Element;
77  import org.jdom.input.SAXBuilder;  import org.jdom.input.SAXBuilder;
78  import org.jdom.output.XMLOutputter;  import org.jdom.output.XMLOutputter;
79  import org.opengis.feature.simple.SimpleFeatureType;  import org.opengis.feature.simple.SimpleFeatureType;
80    import org.opengis.parameter.GeneralParameterValue;
81    
82  import schmitzm.geotools.JTSUtil;  import schmitzm.geotools.JTSUtil;
83  import schmitzm.geotools.styling.StylingUtil;  import schmitzm.geotools.styling.StylingUtil;
# Line 1004  public class StyledLayerUtil { Line 1011  public class StyledLayerUtil {
1011           */           */
1012          public static Box createLegendPanel(StyledRasterInterface<?> styledGrid,          public static Box createLegendPanel(StyledRasterInterface<?> styledGrid,
1013                          int iconWidth, int iconHeight) {                          int iconWidth, int iconHeight) {
1014    
1015                    /**
1016                     * Determine whether a Style is responsible for the coloring
1017                     */
1018                    Object geoObject = styledGrid.getGeoObject();
1019                    ColorModel colorModel = null;
1020                    if (geoObject instanceof GridCoverage2D) {
1021                            GridCoverage2D cov = (GridCoverage2D) geoObject;
1022                            colorModel = cov.getRenderedImage().getColorModel();
1023                    } else if (geoObject instanceof ImagePyramidReader) {
1024    
1025                            org.geotools.parameter.Parameter readGG = new org.geotools.parameter.Parameter(
1026                                            org.geotools.coverage.grid.io.AbstractGridFormat.READ_GRIDGEOMETRY2D);
1027    
1028                            ReferencedEnvelope mapExtend = new org.geotools.geometry.jts.ReferencedEnvelope(
1029                                            styledGrid.getEnvelope(), styledGrid.getCrs());
1030    
1031                            readGG.setValue(new GridGeometry2D(new GeneralGridEnvelope(
1032                                            new Rectangle(0, 0, 10, 10)), mapExtend));
1033    
1034                            final AbstractGridCoverage2DReader aReader = (AbstractGridCoverage2DReader) geoObject;
1035                            try {
1036                                    GridCoverage2D cov = (GridCoverage2D) aReader
1037                                                    .read(new GeneralParameterValue[] { readGG });
1038                                    colorModel = cov.getRenderedImage().getColorModel();
1039                            } catch (IllegalArgumentException e) {
1040                                    e.printStackTrace();
1041                            } catch (IOException e) {
1042                                    e.printStackTrace();
1043                            }
1044                    }
1045    
1046                  RasterLegendData rasterLegendData = styledGrid.getLegendMetaData();                  RasterLegendData rasterLegendData = styledGrid.getLegendMetaData();
1047                  Set<Double> legendRasterValues = rasterLegendData.keySet();                  List<Double> legendRasterValues = rasterLegendData.getSortedKeys();
1048                  Map<Double, GridCoverage2D> sampleRasters = rasterLegendData                  Map<Double, GridCoverage2D> sampleRasters = rasterLegendData
1049                                  .createSampleRasters();                                  .createSampleRasters();
1050    
# Line 1032  public class StyledLayerUtil { Line 1071  public class StyledLayerUtil {
1071                  for (Double rValue : legendRasterValues) {                  for (Double rValue : legendRasterValues) {
1072    
1073                          /**                          /**
                          * The coverage contains only one value of value rValue  
                          */  
                         GridCoverage2D sampleCov = sampleRasters.get(rValue);  
                         GridCoverageRenderer renderer;  
                         try {  
                                 renderer = new GridCoverageRenderer(sampleCov  
                                                 .getCoordinateReferenceSystem(), JTSUtil  
                                                 .createEnvelope(sampleCov.getEnvelope()),  
                                                 new Rectangle(iconWidth, iconHeight),  
                                                 (AffineTransform) null);  
                         } catch (Exception e1) {  
                                 throw new RuntimeException(  
                                                 "Creating the GridCoverageRenderer:", e1);  
                         }  
   
                         /**  
1074                           *                           *
1075                           */                           */
1076                          Box hbox = new Box(BoxLayout.X_AXIS) {                          Box hbox = new Box(BoxLayout.X_AXIS) {
# Line 1083  public class StyledLayerUtil { Line 1106  public class StyledLayerUtil {
1106                                          ICON_SIZE.height, BufferedImage.TYPE_INT_ARGB);                                          ICON_SIZE.height, BufferedImage.TYPE_INT_ARGB);
1107                          Graphics2D graphics = buffImage.createGraphics();                          Graphics2D graphics = buffImage.createGraphics();
1108    
1109                          /**                          if (colorModel != null)
                          * Iterate over all FeatureTypeStyles.  
                          */  
                         // for (FeatureTypeStyle ftStyle : styledGrid.getStyle()  
                         // .featureTypeStyles()) {  
                         // One child-node for every rule  
                         // List<Rule> rules = ftStyle.rules();  
   
                         // for (Rule rule : rules) {  
                         List<RasterSymbolizer> rSymbols = StylingUtil  
                                         .getRasterSymbolizers(styledGrid.getStyle());  
   
                         for (RasterSymbolizer symbolizer : rSymbols) {  
                                 // LOGGER.debug("Creating a new Legend Image for RUle name =  
                                 // "+rule.getName());  
1110                                  try {                                  try {
1111                                          renderer.paint(graphics, sampleCov, symbolizer);                                          final int rgb = colorModel.getRGB(rValue.intValue());
1112                                            final Color color = new Color(rgb);
1113                                            graphics.setBackground(color);
1114                                            graphics.setColor(color);
1115                                            graphics.fillRect(0, 0, ICON_SIZE.width, ICON_SIZE.height);
1116                                  } catch (Exception e) {                                  } catch (Exception e) {
1117                                          LOGGER.error("Unable to paint " + symbolizer                                          LOGGER.debug("Dann nehmen wir den GridCoverageRenderer", e);
1118                                                          + " into the legend image", e);  
1119                                            /**
1120                                             * The coverage contains only one value of value rValue
1121                                             */
1122                                            GridCoverage2D sampleCov = sampleRasters.get(rValue);
1123                                            GridCoverageRenderer renderer;
1124                                            try {
1125                                                    renderer = new GridCoverageRenderer(sampleCov
1126                                                                    .getCoordinateReferenceSystem(), JTSUtil
1127                                                                    .createEnvelope(sampleCov.getEnvelope()),
1128                                                                    new Rectangle(iconWidth, iconHeight),
1129                                                                    (AffineTransform) null);
1130                                            } catch (Exception e1) {
1131                                                    throw new RuntimeException(
1132                                                                    "Creating the GridCoverageRenderer:", e1);
1133                                            }
1134    
1135                                            /**
1136                                             * Iterate over all FeatureTypeStyles.
1137                                             */
1138                                            // for (FeatureTypeStyle ftStyle : styledGrid.getStyle()
1139                                            // .featureTypeStyles()) {
1140                                            // One child-node for every rule
1141                                            // List<Rule> rules = ftStyle.rules();
1142                                            // for (Rule rule : rules) {
1143                                            final Style style = styledGrid.getStyle();
1144                                            List<RasterSymbolizer> rSymbols = StylingUtil
1145                                                            .getRasterSymbolizers(style);
1146    
1147                                            for (RasterSymbolizer symbolizer : rSymbols) {
1148                                                    // LOGGER.debug("Creating a new Legend Image for RUle
1149                                                    // name =
1150                                                    // "+rule.getName());
1151                                                    try {
1152                                                            renderer.paint(graphics, sampleCov, symbolizer);
1153                                                    } catch (Exception ee) {
1154                                                            LOGGER.error("Unable to paint " + symbolizer
1155                                                                            + " into the legend image", ee);
1156                                                    }
1157                                                    // }
1158                                                    // }
1159                                            }
1160                                  }                                  }
                                 // }  
                                 // }  
                         }  
1161    
1162                          ImageIcon legendIcon = new ImageIcon(buffImage);                          ImageIcon legendIcon = new ImageIcon(buffImage);
1163    
# Line 1121  public class StyledLayerUtil { Line 1172  public class StyledLayerUtil {
1172                          classTitleLabel.setLabelFor(iconLabel);                          classTitleLabel.setLabelFor(iconLabel);
1173    
1174                          box.add(hbox);                          box.add(hbox);
1175    
1176                            if (rasterLegendData.getPaintGaps()) {
1177                                    iconLabel
1178                                                    .setBorder(BorderFactory.createLineBorder(Color.black));
1179                                    box.add(Box.createVerticalStrut(3));
1180                            }
1181    
1182                  }                  }
1183    
1184                  return box;                  return box;

Legend:
Removed from v.400  
changed lines
  Added in v.403

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26