[Schmitzm-commits] r1212 - in trunk: . src/schmitzm/geotools/feature src/schmitzm/geotools/grid src/schmitzm/geotools/styling src/skrueger/geotools src/skrueger/geotools/selection src_junit/schmitzm/geotools/feature src_junit/schmitzm/geotools/styling src_junit/schmitzm/jfree/feature/style src_junit/schmitzm/junit src_junit/schmitzm/swing src_junit/skrueger/geotools testresources testresources/rasters testresources/rasters/rasterASCIIWithSLDTransparency testresources/rasters/rasterGeotiffRGBWithoutSLD testresources/rasters/rasterGeotiffWithSLD testresources/shapes testresources/shapes/benin population testresources/shapes/polygonSnowShape testresources/shapes/shp countries testresources/shapes/shp punkte testresources/shapes/shp_strassen

scm-commit@wald.intevation.org scm-commit at wald.intevation.org
Wed Nov 3 11:49:52 CET 2010


Author: alfonx
Date: 2010-11-03 11:49:38 +0100 (Wed, 03 Nov 2010)
New Revision: 1212

Added:
   trunk/src_junit/skrueger/geotools/StyledLayerUtilTest.java
   trunk/testresources/
   trunk/testresources/rasters/
   trunk/testresources/rasters/rasterASCIIWithSLDTransparency/
   trunk/testresources/rasters/rasterASCIIWithSLDTransparency/asciiWithSldTransparency.asc
   trunk/testresources/rasters/rasterASCIIWithSLDTransparency/asciiWithSldTransparency.sld
   trunk/testresources/rasters/rasterGeotiffInjar/
   trunk/testresources/rasters/rasterGeotiffRGBWithoutSLD/
   trunk/testresources/rasters/rasterGeotiffRGBWithoutSLD/README.txt
   trunk/testresources/rasters/rasterGeotiffRGBWithoutSLD/geotiff_rgb_ohnesld.tif
   trunk/testresources/rasters/rasterGeotiffWithSLD/
   trunk/testresources/rasters/rasterGeotiffWithSLD/README.txt
   trunk/testresources/rasters/rasterGeotiffWithSLD/geotiffwithsld.sld
   trunk/testresources/rasters/rasterGeotiffWithSLD/geotiffwithsld.tif
   trunk/testresources/shapes/
   trunk/testresources/shapes/benin population/
   trunk/testresources/shapes/benin population/population density.dbf
   trunk/testresources/shapes/benin population/population density.fix
   trunk/testresources/shapes/benin population/population density.prj
   trunk/testresources/shapes/benin population/population density.qix
   trunk/testresources/shapes/benin population/population density.sbn
   trunk/testresources/shapes/benin population/population density.sbx
   trunk/testresources/shapes/benin population/population density.shp
   trunk/testresources/shapes/benin population/population density.shx
   trunk/testresources/shapes/benin population/population density.sld
   trunk/testresources/shapes/polygonSnowShape/
   trunk/testresources/shapes/polygonSnowShape/polygonLayerSnow.dbf
   trunk/testresources/shapes/polygonSnowShape/polygonLayerSnow.prj
   trunk/testresources/shapes/polygonSnowShape/polygonLayerSnow.shp
   trunk/testresources/shapes/polygonSnowShape/polygonLayerSnow.shx
   trunk/testresources/shapes/polygonSnowShape/polygonLayerSnow.sld
   trunk/testresources/shapes/shp countries/
   trunk/testresources/shapes/shp countries/README.txt
   trunk/testresources/shapes/shp countries/country.dbf
   trunk/testresources/shapes/shp countries/country.sbx
   trunk/testresources/shapes/shp countries/country.shp
   trunk/testresources/shapes/shp countries/country.shx
   trunk/testresources/shapes/shp punkte/
   trunk/testresources/shapes/shp punkte/brunnen_pic.dbf
   trunk/testresources/shapes/shp punkte/brunnen_pic.fix
   trunk/testresources/shapes/shp punkte/brunnen_pic.prj
   trunk/testresources/shapes/shp punkte/brunnen_pic.qix
   trunk/testresources/shapes/shp punkte/brunnen_pic.sbn
   trunk/testresources/shapes/shp punkte/brunnen_pic.sbx
   trunk/testresources/shapes/shp punkte/brunnen_pic.shp
   trunk/testresources/shapes/shp punkte/brunnen_pic.shx
   trunk/testresources/shapes/shp punkte/brunnen_pic.sld
   trunk/testresources/shapes/shp punkte/brunnen_pic.xls
   trunk/testresources/shapes/shp_strassen/
   trunk/testresources/shapes/shp_strassen/waterways.cpg
   trunk/testresources/shapes/shp_strassen/waterways.dbf
   trunk/testresources/shapes/shp_strassen/waterways.fix
   trunk/testresources/shapes/shp_strassen/waterways.prj
   trunk/testresources/shapes/shp_strassen/waterways.shp
   trunk/testresources/shapes/shp_strassen/waterways.shx
   trunk/testresources/shapes/shp_strassen/waterways.sld
Modified:
   trunk/pom.xml
   trunk/src/schmitzm/geotools/feature/FeatureUtil.java
   trunk/src/schmitzm/geotools/grid/GridUtil.java
   trunk/src/schmitzm/geotools/styling/StylingUtil.java
   trunk/src/skrueger/geotools/StyledGridCoverageReader.java
   trunk/src/skrueger/geotools/StyledLayerUtil.java
   trunk/src/skrueger/geotools/selection/FeatureMapLayerSelectionSynchronizer.java
   trunk/src_junit/schmitzm/geotools/feature/FeatureUtilTest.java
   trunk/src_junit/schmitzm/geotools/styling/StylingUtilTest.java
   trunk/src_junit/schmitzm/jfree/feature/style/FeatureChartStyleTest.java
   trunk/src_junit/schmitzm/junit/TestingClass.java
   trunk/src_junit/schmitzm/swing/TestingUtil.java
Log:
* Moved testing resources (shp, raster) from gpcore, ascore etc to schmitzm
* added a special directory for the testresources.. 


Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml	2010-11-03 09:36:26 UTC (rev 1211)
+++ trunk/pom.xml	2010-11-03 10:49:38 UTC (rev 1212)
@@ -301,6 +301,19 @@
 					<exclude>**/Thumbs.db</exclude>
 				</excludes>
 			</testResource>
+
+			<testResource>
+				<directory>testresources</directory>
+				<filtering>false</filtering>
+				<excludes>
+					<exclude>**/*.java</exclude>
+					<exclude>**/*.svn*</exclude>
+					<exclude>**/*.cvs</exclude>
+					<exclude>**/*~</exclude>
+					<exclude>**/Thumbs.db</exclude>
+				</excludes>
+			</testResource>
+
 		</testResources>
 
 		<!-- <outputDirectory>classes</outputDirectory> -->

Modified: trunk/src/schmitzm/geotools/feature/FeatureUtil.java
===================================================================
--- trunk/src/schmitzm/geotools/feature/FeatureUtil.java	2010-11-03 09:36:26 UTC (rev 1211)
+++ trunk/src/schmitzm/geotools/feature/FeatureUtil.java	2010-11-03 10:49:38 UTC (rev 1212)
@@ -106,6 +106,7 @@
 import org.opengis.filter.FilterFactory2;
 import org.opengis.parameter.GeneralParameterValue;
 import org.opengis.referencing.crs.CoordinateReferenceSystem;
+import org.opengis.style.SemanticType;
 
 import schmitzm.geotools.FilterUtil;
 import schmitzm.geotools.GTUtil;
@@ -501,16 +502,19 @@
 	 */
 	public static Style createDefaultStyle(GeometryForm geoForm) {
 		Style style = null;
-		if (geoForm == GeometryForm.POLYGON)
+		if (geoForm == GeometryForm.POLYGON) {
 			style = createPolygonStyle(Color.ORANGE, Color.BLACK, 1);
-		else if (geoForm == GeometryForm.POINT)
+			style.featureTypeStyles().get(0).semanticTypeIdentifiers()
+					.add(SemanticType.POLYGON);
+		} else if (geoForm == GeometryForm.POINT) {
 			style = createPointStyle(Color.RED);
-		else if (geoForm == GeometryForm.LINE)
+			style.featureTypeStyles().get(0).semanticTypeIdentifiers()
+					.add(SemanticType.POINT);
+		} else if (geoForm == GeometryForm.LINE) {
 			style = createLineStyle(Color.BLUE, 1);
-		else
-		// if (geoForm == GeometryForm.ANY)
-		{
-
+			style.featureTypeStyles().get(0).semanticTypeIdentifiers()
+					.add(SemanticType.LINE);
+		} else if (geoForm == GeometryForm.ANY) {
 			// Create a defautl Style including the polygon and point default
 			// style.
 			style = createPolygonStyle(Color.ORANGE, Color.BLACK, 1);
@@ -519,28 +523,17 @@
 					.rules().get(0);
 			style.featureTypeStyles().get(0).rules().add(rule);
 
+			style.featureTypeStyles().get(0).semanticTypeIdentifiers()
+					.add(SemanticType.ANY);
+
 		}
 
-		// if (geometryAttrib != null
-		// && (com.vividsolutions.jts.geom.Polygon.class
-		// .isAssignableFrom(geometryAttrib.getType().getBinding()) ||
-		// com.vividsolutions.jts.geom.MultiPolygon.class
-		// .isAssignableFrom(geometryAttrib.getType().getBinding())))
-		// style = createPolygonStyle(Color.ORANGE, Color.BLACK, 1);
-		// else if (geometryAttrib != null
-		// && (com.vividsolutions.jts.geom.Point.class
-		// .isAssignableFrom(geometryAttrib.getType().getBinding()) ||
-		// com.vividsolutions.jts.geom.MultiPoint.class
-		// .isAssignableFrom(geometryAttrib.getType().getBinding())))
-		// style = createPointStyle(Color.RED);
-		// else
-		// style = createLineStyle(Color.BLUE, 1);
-
 		style.setName(DEFAULT_VECTOR_STYLE_NAME);
 
 		// 26 style.setTitle(DEFAULT_VECTOR_STYLE_NAME);
 		style.getDescription().setTitle(
 				new SimpleInternationalString(DEFAULT_VECTOR_STYLE_NAME));
+
 		return style;
 	}
 

Modified: trunk/src/schmitzm/geotools/grid/GridUtil.java
===================================================================
--- trunk/src/schmitzm/geotools/grid/GridUtil.java	2010-11-03 09:36:26 UTC (rev 1211)
+++ trunk/src/schmitzm/geotools/grid/GridUtil.java	2010-11-03 10:49:38 UTC (rev 1212)
@@ -61,6 +61,7 @@
 import org.opengis.coverage.SampleDimension;
 import org.opengis.coverage.grid.GridEnvelope;
 import org.opengis.geometry.Envelope;
+import org.opengis.style.SemanticType;
 
 import schmitzm.data.WritableGrid;
 import schmitzm.data.WritableGridArray;
@@ -78,835 +79,954 @@
 /**
  * Diese Klasse stellt statische Funktionen fuer die Arbeit mit
  * {@linkplain GridCoverage2D Rasterdaten} zur Verfuegung.
- * @author <a href="mailto:martin.schmitz at koeln.de">Martin Schmitz</a> (University of Bonn/Germany)
+ * 
+ * @author <a href="mailto:martin.schmitz at koeln.de">Martin Schmitz</a>
+ *         (University of Bonn/Germany)
  * @version 1.01
  */
 public class GridUtil {
 
-        /** log4j initialize */
-        private static final Category cCat = Logger.getLogger(GridUtil.class.getName());
+	/** log4j initialize */
+	private static final Category cCat = Logger.getLogger(GridUtil.class
+			.getName());
 
-      public static final GridCoverageFactory GRID_FAC = new GridCoverageFactory();
+	public static final GridCoverageFactory GRID_FAC = new GridCoverageFactory();
 
 	/**
 	 * The default name for style created by createDefaultStyle();
 	 */
-	  public static final String DEFAULT_RASTER_STYLE_NAME = "default raster style";
-	  public static final String DEFAULT_RASTER_STYLE_TITLE = "default raster style";
-	  public static final String UNNAMED_RASTER_STYLE_NAME = "unnamed raster style";
-	  public static final String UNTITLED_RASTER_STYLE_TITLE = "untitled raster style";
+	public static final String DEFAULT_RASTER_STYLE_NAME = "default raster style";
+	public static final String DEFAULT_RASTER_STYLE_TITLE = "default raster style";
+	public static final String UNNAMED_RASTER_STYLE_NAME = "unnamed raster style";
+	public static final String UNTITLED_RASTER_STYLE_TITLE = "untitled raster style";
 
-	  /**
-	   * 11 Default colors used by {@link #createDiscreteStyle(GridCoverage2D, double, Color...)} if
-	   * no colors are given.
-	   * <ol>
-	   *   <li>White</li>
-	   *   <li>Red</li>
-	   *   <li>Blue</li>
-	   *   <li>Yellow</li>
-	   *   <li>Green</li>
-	   *   <li>Gray</li>
-	   *   <li>Orange</li>
-	   *   <li>Pink</li>
-	   *   <li>Magenta</li>
-       *   <li>Light gray</li>
-	   *   <li>Cyan</li>
-	   *   <li>Black</li>
-	   * </ol>
-	   */
-      public static final Color[] DEFAULT_COLORS = new Color[] {
-          Color.WHITE,
-          Color.RED,
-          Color.BLUE,
-          Color.YELLOW,
-          Color.GREEN,
-          Color.GRAY,
-          Color.ORANGE,
-          Color.PINK,
-          Color.MAGENTA,
-          Color.LIGHT_GRAY,
-          Color.CYAN,
-          Color.BLACK
-      };
+	/**
+	 * 11 Default colors used by
+	 * {@link #createDiscreteStyle(GridCoverage2D, double, Color...)} if no
+	 * colors are given.
+	 * <ol>
+	 * <li>White</li>
+	 * <li>Red</li>
+	 * <li>Blue</li>
+	 * <li>Yellow</li>
+	 * <li>Green</li>
+	 * <li>Gray</li>
+	 * <li>Orange</li>
+	 * <li>Pink</li>
+	 * <li>Magenta</li>
+	 * <li>Light gray</li>
+	 * <li>Cyan</li>
+	 * <li>Black</li>
+	 * </ol>
+	 */
+	public static final Color[] DEFAULT_COLORS = new Color[] { Color.WHITE,
+			Color.RED, Color.BLUE, Color.YELLOW, Color.GREEN, Color.GRAY,
+			Color.ORANGE, Color.PINK, Color.MAGENTA, Color.LIGHT_GRAY,
+			Color.CYAN, Color.BLACK };
 
+	/**
+	 * Liefert statistische Daten ueber ein Grid und erstellt ein Histogramm
+	 * 
+	 * @param gc
+	 *            ein Raster
+	 * @param band
+	 *            zu untersuchendes Band
+	 * @param histogramSteps
+	 *            Schritte des Histogramms, -1 wenn alle Ausprägungen, 0 für
+	 *            ohne Histogramm
+	 * @param histogrammDigits
+	 *            Anzahl an Nachkommastellen auf die die Histogramm-Klassen
+	 *            gerundet werden (negative Werte = Vorkommastellen; null = kein
+	 *            Runden). Nur relevant, wenn {@code hishistogramSteps} = -1
+	 * @author Martin Schmitz
+	 * @author Andreas Enders
+	 */
+	public static GridStatistic determineStatistic(GridCoverage2D gc, int band,
+			int histogramSteps, Integer histogrammDigits) {
+		GridStatistic gs = new GridStatistic();
+		GridEnvelope gr = gc.getGridGeometry().getGridRange();
+		Envelope2D ev = gc.getEnvelope2D();
+		gs.minX = gr.getLow(0);
+		gs.minY = gr.getLow(1);
+		gs.maxX = gr.getHigh(0);
+		gs.maxY = gr.getHigh(1);
+		gs.widthC = gs.maxX - gs.minX;
+		gs.heightC = gs.maxY - gs.minY;
+		gs.widthR = ev.getLength(0);
+		gs.heightR = ev.getLength(1);
+		gs.latSW = ev.getX();
+		gs.lonSW = ev.getY();
+		gs.cellWidth = (gs.widthC != 0) ? gs.widthR / gs.widthC : 0;
+		gs.cellHeight = (gs.heightC != 0) ? gs.heightR / gs.heightC : 0;
 
-      /**
-	   * Liefert statistische Daten ueber ein Grid und erstellt ein Histogramm
-	   * @param gc ein Raster
-	   * @param band zu untersuchendes Band
-	   * @param histogramSteps Schritte des Histogramms, -1 wenn alle Ausprägungen, 0 für ohne Histogramm
-	   * @param histogrammDigits Anzahl an Nachkommastellen auf die die Histogramm-Klassen gerundet werden
-	   *                         (negative Werte = Vorkommastellen; null = kein Runden). Nur relevant, wenn
-	   *                         {@code hishistogramSteps} = -1
-	   * @author Martin Schmitz
-	   * @author Andreas Enders
-	   */
-	  public static GridStatistic determineStatistic(GridCoverage2D gc, int band, int histogramSteps, Integer histogrammDigits) {
-	    GridStatistic gs = new GridStatistic();
-	    GridEnvelope  gr = gc.getGridGeometry().getGridRange();
-	    Envelope2D    ev = gc.getEnvelope2D();
-	    gs.minX          = gr.getLow(0);
-	    gs.minY          = gr.getLow(1);
-	    gs.maxX          = gr.getHigh(0);
-	    gs.maxY          = gr.getHigh(1);
-	    gs.widthC        = gs.maxX - gs.minX;
-	    gs.heightC       = gs.maxY - gs.minY;
-	    gs.widthR        = ev.getLength(0);
-	    gs.heightR       = ev.getLength(1);
-	    gs.latSW         = ev.getX();
-	    gs.lonSW         = ev.getY();
-	    gs.cellWidth     = (gs.widthC != 0) ? gs.widthR / gs.widthC : 0;
-	    gs.cellHeight    = (gs.heightC != 0) ? gs.heightR / gs.heightC : 0;
+		gs.nodataCnt = 0;
+		gs.cellCnt = 0;
+		gs.noDataVal = gc.getSampleDimensions()[band].getNoDataValues();
+		if (gs.noDataVal == null)
+			gs.noDataVal = new double[0];
+		gs.sumValue = 0;
 
-	    gs.nodataCnt     = 0;
-	    gs.cellCnt       = 0;
-	    gs.noDataVal     = gc.getSampleDimensions()[band].getNoDataValues();
-	    if ( gs.noDataVal == null )
-	      gs.noDataVal = new double[0];
-	    gs.sumValue      = 0;
+		// Check auf NoData-Zellen erfolgt ueber Hash-Tabelle
+		Hashtable isNoData = new Hashtable<Double, Boolean>(gs.noDataVal.length);
+		for (int i = 0; i < gs.noDataVal.length; i++)
+			isNoData.put(gs.noDataVal[i], true);
 
+		// Objekte fuer Koordinate
+		Point2D p = new Point2D.Float();
+		double[] val = new double[gc.getSampleDimensions().length];
 
-	    // Check auf NoData-Zellen erfolgt ueber Hash-Tabelle
-	    Hashtable isNoData = new Hashtable<Double,Boolean>(gs.noDataVal.length);
-	    for (int i=0; i<gs.noDataVal.length; i++)
-	      isNoData.put(gs.noDataVal[i],true);
+		double lon = gs.lonSW + gs.cellHeight / 2;
+		for (int y = gs.minY; y < gs.maxY; y++, lon += gs.cellHeight) {
+			double lat = gs.latSW + gs.cellWidth / 2;
+			for (int x = gs.minX; x < gs.maxX; x++, lat += gs.cellWidth) {
+				p.setLocation(lat, lon);
+				gc.evaluate(p, val);
+				// NoData-Zellen gehen nicht in die Statistik ein
+				if (Double.isNaN(val[band]) || isNoData.containsKey(val[band]))
+					gs.nodataCnt++;
+				else {
+					gs.minValue = Math.min(gs.minValue, val[band]);
+					gs.maxValue = Math.max(gs.maxValue, val[band]);
+					gs.sumValue += val[band];
+					gs.cellCnt++;
+				}
+			}
+		}
+		// histogramm berechnen, wenn nicht ausgeschaltet
+		if (histogramSteps != 0) {
+			lon = gs.lonSW + gs.cellHeight / 2;
+			for (int y = gs.minY; y < gs.maxY; y++, lon += gs.cellHeight) {
+				double lat = gs.latSW + gs.cellWidth / 2;
+				for (int x = gs.minX; x < gs.maxX; x++, lat += gs.cellWidth) {
+					p.setLocation(lat, lon);
+					gc.evaluate(p, val);
+					// NoData-Zellen gehen nicht in die Statistik ein
+					if (!Double.isNaN(val[band])
+							&& !isNoData.containsKey(val[band])) {
+						double tVal = val[band];
+						if (histogramSteps < 0) {
+							// String tValue = ""+(new
+							// Double(tVal).longValue());
+							String value = String
+									.valueOf(histogrammDigits != null ? LangUtil
+											.round(tVal, histogrammDigits)
+											: tVal);
+							Integer pixelCount = gs.histogramm.get(value);
+							if (pixelCount == null)
+								pixelCount = 1;
+							else
+								pixelCount++;
+							gs.histogramm.put(value, pixelCount);
+						} else {
+							double stepRange = (gs.maxValue - gs.minValue)
+									/ histogramSteps;
+							int step = new Double((tVal - gs.minValue)
+									/ stepRange).intValue();
+							String stepName = "" + gs.minValue + step
+									* stepRange;
+							Integer number = gs.histogramm.get(stepName);
+							if (number == null)
+								number = 1;
+							else
+								number++;
+							gs.histogramm.put(stepName, number);
+						}
+					}
+				}
+			}
+			cCat.debug("Histogram created with map: " + gs.histogramm);
+		}
+		// Durchschnittswert berechnen (nicht ueber NoData-Zellen)
+		gs.avgValue = (gs.cellCnt != 0) ? gs.sumValue / gs.cellCnt : 0;
 
-	    // Objekte fuer Koordinate
-	    Point2D  p        = new Point2D.Float();
-	    double[] val      = new double[ gc.getSampleDimensions().length ];
+		return gs;
+	}
 
-	    double lon = gs.lonSW + gs.cellHeight/2;
-	    for (int y=gs.minY; y<gs.maxY; y++, lon+=gs.cellHeight) {
-	      double lat = gs.latSW + gs.cellWidth/2;
-	      for (int x=gs.minX; x<gs.maxX; x++, lat+=gs.cellWidth) {
-	        p.setLocation(lat,lon);
-	        gc.evaluate(p,val);
-	        // NoData-Zellen gehen nicht in die Statistik ein
-	        if ( Double.isNaN(val[band]) || isNoData.containsKey(val[band]) )
-	          gs.nodataCnt++;
-	        else {
-	          gs.minValue = Math.min(gs.minValue, val[band]);
-	          gs.maxValue = Math.max(gs.maxValue, val[band]);
-	          gs.sumValue += val[band];
-	          gs.cellCnt++;
-	        }
-	      }
-	    }
-	    //histogramm berechnen, wenn nicht ausgeschaltet
-	    if (histogramSteps != 0)
-	    {
-	      lon = gs.lonSW + gs.cellHeight/2;
-	      for (int y=gs.minY; y<gs.maxY; y++, lon+=gs.cellHeight)
-	      {
-	        double lat = gs.latSW + gs.cellWidth/2;
-	        for (int x=gs.minX; x<gs.maxX; x++, lat+=gs.cellWidth)
-	        {
-	          p.setLocation(lat,lon);
-	          gc.evaluate(p,val);
-	          // NoData-Zellen gehen nicht in die Statistik ein
-	          if ( !Double.isNaN(val[band]) && !isNoData.containsKey(val[band]) )
-	          {
-	            double tVal = val[band];
-	            if (histogramSteps < 0)
-	            {
-	              //String tValue = ""+(new Double(tVal).longValue());
-	              String value = String.valueOf( histogrammDigits != null ? LangUtil.round(tVal,histogrammDigits) : tVal );
-	              Integer pixelCount = gs.histogramm.get(value);
-	              if (pixelCount == null)
-	                pixelCount = 1;
-	              else
-	                pixelCount++;
-	              gs.histogramm.put(value, pixelCount);
-	            }
-	            else
-	            {
-	              double stepRange = (gs.maxValue - gs.minValue)/histogramSteps;
-	              int step = new Double((tVal - gs.minValue)/stepRange).intValue();
-	              String stepName = ""+gs.minValue + step * stepRange;
-	              Integer number = gs.histogramm.get(stepName);
-	              if (number == null) number = 1;
-	              else number++;
-	              gs.histogramm.put(stepName, number);
-	            }
-	          }
-	        }
-	      }
-              cCat.debug("Histogram created with map: "+gs.histogramm);
-	    }
-	    // Durchschnittswert berechnen (nicht ueber NoData-Zellen)
-	    gs.avgValue = (gs.cellCnt != 0) ? gs.sumValue/gs.cellCnt : 0;
+	/**
+	 * Liefert statistische Daten ueber ein Grid und erstellt ein Histogramm.
+	 * Die Histogramm-Klassen werden auf ganze Zahlen gerundet.
+	 * 
+	 * @param gc
+	 *            ein Raster
+	 * @param band
+	 *            zu untersuchendes Band
+	 * @param histogramSteps
+	 *            Schritte des Histogramms, -1 wenn alle Ausprägungen, 0 für
+	 *            ohne Histogramm
+	 * @author Martin Schmitz
+	 * @author Andreas Enders
+	 */
+	public static GridStatistic determineStatistic(GridCoverage2D gc, int band,
+			int histogramSteps) {
+		return determineStatistic(gc, band, histogramSteps, 0);
+	}
 
-	    return gs;
-	  }
+	/**
+	 * Liefert statistische Daten ueber ein Grid, ohne ein Histogram zu
+	 * berechnen.
+	 * 
+	 * @param gc
+	 *            ein Raster
+	 * @param band
+	 *            zu untersuchendes Band
+	 */
+	public static GridStatistic determineStatistic(GridCoverage2D gc, int band) {
+		return determineStatistic(gc, band, 0);
+	}
 
+	/**
+	 * Liefert statistische Daten ueber ein Grid, das in Zonen unterteilt ist.
+	 * Die Zonen werden durch einen {@link Float}-Wert identifiziert, damit auch
+	 * NoData-Werte in einem Raster einer Zone (naemlich der Zone
+	 * {@code Float.NaN}) zugewiesen werden koennen.
+	 * 
+	 * @param valueGC
+	 *            Raster ueber das die Statistik erzeugt wird
+	 * @param zoneGC
+	 *            Raster, das die Zonen bestimmt
+	 */
+	public static GridZoneStatistic<Float> determineZoneStatistic(
+			GridCoverage2D valueGC, GridCoverage2D zoneGC) {
+		return determineZoneStatistic(valueGC, 0, zoneGC, 0);
+	}
 
-      /**
-       * Liefert statistische Daten ueber ein Grid und erstellt ein Histogramm.
-       * Die Histogramm-Klassen werden auf ganze Zahlen gerundet.
-       * @param gc ein Raster
-       * @param band zu untersuchendes Band
-       * @param histogramSteps Schritte des Histogramms, -1 wenn alle Ausprägungen, 0 für ohne Histogramm
-       * @author Martin Schmitz
-       * @author Andreas Enders
-       */
-      public static GridStatistic determineStatistic(GridCoverage2D gc, int band, int histogramSteps) {
-        return determineStatistic(gc, band, histogramSteps, 0);
-      }
+	/**
+	 * Liefert statistische Daten ueber ein Grid, das in Zonen unterteilt ist.
+	 * Die Zonen werden durch einen {@link Float}-Wert identifiziert, damit auch
+	 * NoData-Werte in einem Raster einer Zone (naemlich der Zone
+	 * {@code Float.NaN}) zugewiesen werden koennen.
+	 * 
+	 * @param valueGC
+	 *            Raster ueber das die Statistik erzeugt wird
+	 * @param valueBand
+	 *            Band ueber das die Statistik erzeugt wird
+	 * @param zoneGC
+	 *            Raster, das die Zonen bestimmt
+	 * @param zoneBand
+	 *            Band, das die Zonen bestimmt
+	 */
+	public static GridZoneStatistic<Float> determineZoneStatistic(
+			GridCoverage2D valueGC, int valueBand, GridCoverage2D zoneGC,
+			int zoneBand) {
+		final ReadableGridCoverage zoneGrid = ReadableGridCoverage.create(
+				zoneGC, 0);
 
-  /**
-   * Liefert statistische Daten ueber ein Grid, ohne ein Histogram zu berechnen.
-   * @param gc ein Raster
-   * @param band zu untersuchendes Band
-   */
-  public static GridStatistic determineStatistic(GridCoverage2D gc, int band) {
-	  return determineStatistic(gc, band, 0);
-  }
+		// Performanz: Raster-Ausmasse in lokalen Variablen speichern
+		final float cellHeight = (float) zoneGrid.getCellHeight();
+		final float cellWidth = (float) zoneGrid.getCellHeight();
+		final float minX = (float) zoneGrid.getX() + cellWidth / 2;
+		final float maxX = (float) (zoneGrid.getX() + zoneGrid.getRealWidth());
+		final float minY = (float) zoneGrid.getY() + cellHeight / 2;
+		final float maxY = (float) (zoneGrid.getY() + zoneGrid.getRealHeight());
 
-  /**
-   * Liefert statistische Daten ueber ein Grid, das in Zonen unterteilt ist.
-   * Die Zonen werden durch einen {@link Float}-Wert identifiziert, damit
-   * auch NoData-Werte in einem Raster einer Zone (naemlich der
-   * Zone {@code Float.NaN}) zugewiesen werden koennen.
-   * @param valueGC Raster ueber das die Statistik erzeugt wird
-   * @param zoneGC Raster, das die Zonen bestimmt
-   */
-  public static GridZoneStatistic<Float> determineZoneStatistic(GridCoverage2D valueGC, GridCoverage2D zoneGC) {
-    return determineZoneStatistic(valueGC, 0, zoneGC, 0);
-  }
+		// // Solution without WritableGrid
+		// final Envelope2D env = zoneGC.getEnvelope2D();
+		// final GridRange gr = zoneGC.getGridGeometry().getGridRange();
+		// final float height = (float)env.getHeight();
+		// final float width = (float)env.getWidth();
+		// final int heightC = Math.abs( gr.getLower(1) - gr.getUpper(1) );
+		// final int widthC = Math.abs( gr.getLower(0) - gr.getUpper(0) );
+		// final float cellHeight = heightC != 0 ? height / heightC : 0;
+		// final float cellWidth = widthC != 0 ? width / widthC : 0;
+		// final float minX = (float)env.getX() + cellWidth/2;
+		// final float maxX = (float)(env.getX() + width);
+		// final float minY = (float)env.getY() + cellHeight/2;
+		// final float maxY = (float)(env.getY() + height);
 
-  /**
-   * Liefert statistische Daten ueber ein Grid, das in Zonen unterteilt ist.
-   * Die Zonen werden durch einen {@link Float}-Wert identifiziert, damit
-   * auch NoData-Werte in einem Raster einer Zone (naemlich der
-   * Zone {@code Float.NaN}) zugewiesen werden koennen.
-   * @param valueGC Raster ueber das die Statistik erzeugt wird
-   * @param valueBand Band ueber das die Statistik erzeugt wird
-   * @param zoneGC Raster, das die Zonen bestimmt
-   * @param zoneBand Band, das die Zonen bestimmt
-   */
-  public static GridZoneStatistic<Float> determineZoneStatistic(GridCoverage2D valueGC, int valueBand, GridCoverage2D zoneGC, int zoneBand) {
-    final ReadableGridCoverage zoneGrid  = ReadableGridCoverage.create(zoneGC, 0);
+		final Point2D.Float loc = new Point2D.Float();
+		// Arrays zum Speichern der Rasterwerte pro Band
+		final float[] zoneGridVal = new float[zoneGC.getNumSampleDimensions()];
+		final float[] valueGridVal = new float[zoneGC.getNumSampleDimensions()];
+		// Variablen zum Speichern des Band-Werts
+		float zoneNo = 0;
+		float cellVal = 0;
 
-    // Performanz: Raster-Ausmasse in lokalen Variablen speichern
-    final float         cellHeight = (float)zoneGrid.getCellHeight();
-    final float         cellWidth  = (float)zoneGrid.getCellHeight();
-    final float         minX       = (float)zoneGrid.getX() + cellWidth/2;
-    final float         maxX       = (float)(zoneGrid.getX() + zoneGrid.getRealWidth());
-    final float         minY       = (float)zoneGrid.getY() + cellHeight/2;
-    final float         maxY       = (float)(zoneGrid.getY() + zoneGrid.getRealHeight());
+		// Zonen-Statistik berechnen
+		GridZoneStatistic zoneStat = new GridZoneStatistic<Float>();
+		for (loc.y = minY; loc.y < maxY; loc.y += cellHeight)
+			for (loc.x = minX; loc.x <= maxX; loc.x += cellWidth) {
+				zoneGC.evaluate(loc, zoneGridVal);
+				zoneNo = zoneGridVal[zoneBand];
+				try {
+					valueGC.evaluate(loc, valueGridVal);
+					cellVal = valueGridVal[valueBand];
+					zoneStat.addValueToZoneStatistic(zoneNo, cellVal);
+				} catch (PointOutsideCoverageException err) {
+					// Zonen-Zelle liegt ausserhalb des Wert-Rasters
+					// --> Zelle ignorieren
+				}
+			}
 
-//    // Solution without WritableGrid
-//    final Envelope2D    env        = zoneGC.getEnvelope2D();
-//    final GridRange     gr         = zoneGC.getGridGeometry().getGridRange();
-//    final float         height     = (float)env.getHeight();
-//    final float         width      = (float)env.getWidth();
-//    final int           heightC    = Math.abs( gr.getLower(1) - gr.getUpper(1) );
-//    final int           widthC     = Math.abs( gr.getLower(0) - gr.getUpper(0) );
-//    final float         cellHeight = heightC != 0 ? height / heightC : 0;
-//    final float         cellWidth  = widthC  != 0 ? width  / widthC  : 0;
-//    final float         minX       = (float)env.getX() + cellWidth/2;
-//    final float         maxX       = (float)(env.getX() + width);
-//    final float         minY       = (float)env.getY() + cellHeight/2;
-//    final float         maxY       = (float)(env.getY() + height);
+		return zoneStat;
+	}
 
-    final Point2D.Float loc        = new Point2D.Float();
-    // Arrays zum Speichern der Rasterwerte pro Band
-    final float[]  zoneGridVal  = new float[zoneGC.getNumSampleDimensions()];
-    final float[]  valueGridVal = new float[zoneGC.getNumSampleDimensions()];
-    // Variablen zum Speichern des Band-Werts
-    float zoneNo  = 0;
-    float cellVal = 0;
+	/**
+	 * Erzeugt einen Standard-Style fuer ein {@link GridCoverage2D} und setzt
+	 * den default-Namen: GridUtil.DEFAULT_RASTER_STYLE_NAME Und eine title :
+	 * GridUtil.DEFAULT_RASTER_STYLE_TITLE
+	 * 
+	 * @author <a href="mailto:martin.schmitz at koeln.de">Martin Schmitz</a>
+	 *         (University of Bonn/Germany)
+	 * @author Stefan Alfons Tzeggai (DEFAULT_RASTER_STYLE_NAME,
+	 *         DEFAULT_RASTER_STYLE_TITLE)
+	 */
+	public static Style createDefaultStyle() {
+		Style defaultStyle = createStyle(null, 1.0);
+		defaultStyle.setName(DEFAULT_RASTER_STYLE_NAME);
+		defaultStyle.setTitle(DEFAULT_RASTER_STYLE_TITLE);
 
-    // Zonen-Statistik berechnen
-    GridZoneStatistic    zoneStat  = new GridZoneStatistic<Float>();
-    for (loc.y=minY; loc.y<maxY; loc.y+=cellHeight)
-      for (loc.x=minX; loc.x<=maxX; loc.x+=cellWidth) {
-        zoneGC.evaluate(loc, zoneGridVal);
-        zoneNo = zoneGridVal[zoneBand];
-        try {
-          valueGC.evaluate(loc, valueGridVal);
-          cellVal = valueGridVal[valueBand];
-          zoneStat.addValueToZoneStatistic(zoneNo, cellVal);
-        } catch (PointOutsideCoverageException err) {
-          // Zonen-Zelle liegt ausserhalb des Wert-Rasters
-          // --> Zelle ignorieren
-        }
-      }
+		defaultStyle.featureTypeStyles().get(0).semanticTypeIdentifiers()
+				.add(SemanticType.RASTER);
 
-    return zoneStat;
-  }
+		return (defaultStyle);
+	}
 
-  /**
-   * Erzeugt einen Standard-Style fuer ein {@link GridCoverage2D}
-   * und setzt den default-Namen: GridUtil.DEFAULT_RASTER_STYLE_NAME
-   * Und eine title : GridUtil.DEFAULT_RASTER_STYLE_TITLE
-   *
-   * @author <a href="mailto:martin.schmitz at koeln.de">Martin Schmitz</a> (University of Bonn/Germany)
-   * @author Stefan Alfons Tzeggai (DEFAULT_RASTER_STYLE_NAME, DEFAULT_RASTER_STYLE_TITLE)
-   */
-  public static Style createDefaultStyle() {
-    Style defaultStyle = createStyle(null,1.0);
-    defaultStyle.setName(DEFAULT_RASTER_STYLE_NAME);
-    defaultStyle.setTitle(DEFAULT_RASTER_STYLE_TITLE);
-	return( defaultStyle );
-  }
+	/**
+	 * Erzeugt einen Standard-Style fuer ein {@link GridCoverage2D}
+	 * 
+	 * @param colorMap
+	 *            Farb-Palette
+	 * @param opacity
+	 *            Transparenz (1.0 = vollfarbig)
+	 * @return ein Standard-Style (
+	 *         {@code StyleBuilder.createRasterSymbolizer()}) falls keine
+	 *         ColorMap angegeben wird
+	 */
+	public static Style createStyle(ColorMap colorMap, double opacity) {
+		StyleBuilder builder = StylingUtil.STYLE_BUILDER;
+		RasterSymbolizer symb = colorMap != null ? builder
+				.createRasterSymbolizer(colorMap, opacity) : builder
+				.createRasterSymbolizer();
+		return (builder.createStyle(symb));
+	}
 
-  /**
-   * Erzeugt einen Standard-Style fuer ein {@link GridCoverage2D}
-   * @param colorMap Farb-Palette
-   * @param opacity  Transparenz (1.0 = vollfarbig)
-   * @return ein Standard-Style ( {@code StyleBuilder.createRasterSymbolizer()}) falls
-   *         keine ColorMap angegeben wird
-   */
-  public static Style createStyle(ColorMap colorMap, double opacity) {
-    StyleBuilder builder = StylingUtil.STYLE_BUILDER;
-    RasterSymbolizer symb = colorMap != null ? builder.createRasterSymbolizer(colorMap,opacity) : builder.createRasterSymbolizer();
-    return( builder.createStyle( symb ) );
-  }
+	/**
+	 * Creates an interpolative style for a {@link GridCoverage2D}. The given
+	 * colors are interpolated from the minimum to the maximum raster value.
+	 * 
+	 * @param grid
+	 *            the raster
+	 * @param opacity
+	 *            opacity for the style
+	 * @param colors
+	 *            colors to interpolate with (at least 2)
+	 */
+	public static Style createInterpolativeStyle(GridCoverage2D grid,
+			double opacity, Color... colors) {
+		if (colors.length < 2)
+			throw new IllegalArgumentException(
+					"At least 2 colors must be specified for an interpolative style.");
+		GridStatistic gridStat = GridUtil.determineStatistic(grid, 0);
+		double intervalLength = gridStat.maxValue - gridStat.minValue;
+		String[] labels = new String[colors.length];
+		double[] values = new double[colors.length];
+		for (int i = 0; i < colors.length; i++) {
+			labels[i] = ""; // all categories must have the same label
+			values[i] = gridStat.minValue + intervalLength * i
+					/ (colors.length - 1.0);
+		}
+		ColorMap colorMap = StylingUtil.STYLE_BUILDER.createColorMap(labels,
+				values, colors, ColorMap.TYPE_RAMP);
+		RasterSymbolizer rasterSymb = StylingUtil.STYLE_BUILDER
+				.createRasterSymbolizer(colorMap, opacity);
+		return StylingUtil.STYLE_BUILDER.createStyle(rasterSymb);
+	}
 
-  /**
-   * Creates an interpolative style for a {@link GridCoverage2D}. The given colors
-   * are interpolated from the minimum to the maximum raster value.
-   * @param grid     the raster
-   * @param opacity  opacity for the style
-   * @param colors   colors to interpolate with (at least 2)
-   */
-  public static Style createInterpolativeStyle(GridCoverage2D grid, double opacity, Color... colors) {
-    if ( colors.length < 2 )
-      throw new IllegalArgumentException("At least 2 colors must be specified for an interpolative style.");
-    GridStatistic gridStat  = GridUtil.determineStatistic(grid, 0);
-    double   intervalLength = gridStat.maxValue - gridStat.minValue;
-    String[] labels         = new String[colors.length];
-    double[] values         = new double[colors.length];
-    for (int i=0; i<colors.length; i++) {
-      labels[i] = ""; // all categories must have the same label
-      values[i] = gridStat.minValue + intervalLength * i/(colors.length-1.0);
-    }
-    ColorMap colorMap = StylingUtil.STYLE_BUILDER.createColorMap(
-        labels,
-        values,
-        colors,
-        ColorMap.TYPE_RAMP
-    );
-    RasterSymbolizer rasterSymb = StylingUtil.STYLE_BUILDER.createRasterSymbolizer(colorMap, opacity);
-    return StylingUtil.STYLE_BUILDER.createStyle( rasterSymb );
-  }
+	/**
+	 * Creates a discrete style for a {@link GridCoverage2D}. For every value in
+	 * the raster another color is choosen. If the raster contains more values
+	 * than colors are given, all surplus values are mapped to the "last" color.
+	 * 
+	 * @param grid
+	 *            the raster
+	 * @param opacity
+	 *            opacity for the style
+	 * @param digits
+	 *            number of digits the grid value classes (and legend) are
+	 *            rounded to (null means no round; >= 0 means digits after
+	 *            comma; < 0 means digits before comma)
+	 * @param colorPalette
+	 *            colors for the values (the smallest value is mapped to index
+	 *            0, the second smallest to index 1, ...); if no colors are
+	 *            specified {@link #DEFAULT_COLORS} are used
+	 */
+	public static Style createDiscreteStyle(GridCoverage2D grid,
+			double opacity, Integer digits, Color... colorPalette) {
+		if (colorPalette.length == 0)
+			colorPalette = DEFAULT_COLORS;
+		DecimalFormat decFormat = digits != null ? new DecimalFormat(
+				SwingUtil.getNumberFormatPattern(digits)) : null;
+		GridStatistic gridStat = GridUtil.determineStatistic(grid, 0, -1,
+				digits);
 
-  /**
-   * Creates a discrete style for a {@link GridCoverage2D}. For every value
-   * in the raster another color is choosen. If the raster contains more values
-   * than colors are given, all surplus values are mapped to the "last" color.
-   * @param grid          the raster
-   * @param opacity       opacity for the style
-   * @param digits        number of digits the grid value classes (and legend) are
-   *                      rounded to (null means no round; >= 0 means digits after comma;
-   *                      < 0 means digits before comma)
-   * @param colorPalette  colors for the values (the smallest value is mapped to index 0, the second
-   *                      smallest to index 1, ...); if no colors are specified {@link #DEFAULT_COLORS}
-   *                      are used
-   */
-  public static Style createDiscreteStyle(GridCoverage2D grid, double opacity, Integer digits, Color... colorPalette) {
-    if ( colorPalette.length == 0 )
-      colorPalette = DEFAULT_COLORS;
-    DecimalFormat decFormat = digits != null ? new DecimalFormat( SwingUtil.getNumberFormatPattern(digits) ) : null;
-    GridStatistic gridStat  = GridUtil.determineStatistic(grid, 0, -1, digits);
+		int valueCount = gridStat.histogramm.size();
+		String[] labels = new String[valueCount];
+		double[] values = new double[valueCount];
+		Color[] colors = new Color[valueCount];
+		Color lastColor = colorPalette[colorPalette.length - 1];
 
-    int      valueCount = gridStat.histogramm.size();
-    String[] labels     = new String[valueCount];
-    double[] values     = new double[valueCount];
-    Color[]  colors     = new Color[valueCount];
-    Color    lastColor  = colorPalette[colorPalette.length-1];
+		int i = -1;
+		for (String key : gridStat.histogramm.keySet()) {
+			i++;
+			values[i] = Double.parseDouble(key);
+			colors[i] = i < colorPalette.length ? colorPalette[i] : lastColor;
+			if (decFormat != null)
+				labels[i] = decFormat.format(values[i]);
+			else
+				labels[i] = String.valueOf(values[i]);
+			// labels[i] += " ("+gridStat.histogramm.get(key)+" pixel)";
+		}
 
-    int i = -1;
-    for (String key : gridStat.histogramm.keySet()) {
-      i++;
-      values[i] = Double.parseDouble(key);
-      colors[i] = i < colorPalette.length ? colorPalette[i] : lastColor;
-      if ( decFormat != null )
-        labels[i] = decFormat.format(values[i]);
-      else
-        labels[i] = String.valueOf(values[i]);
-      //labels[i] += " ("+gridStat.histogramm.get(key)+" pixel)";
-    }
+		ColorMap tColorMap = StylingUtil.STYLE_BUILDER.createColorMap(labels,
+				values, colors, ColorMap.TYPE_VALUES);
 
-    ColorMap tColorMap = StylingUtil.STYLE_BUILDER.createColorMap(
-        labels,
-        values,
-        colors,
-        ColorMap.TYPE_VALUES
-    );
+		RasterSymbolizer rasterSymb = StylingUtil.STYLE_BUILDER
+				.createRasterSymbolizer(tColorMap, opacity);
+		return StylingUtil.STYLE_BUILDER.createStyle(rasterSymb);
+	}
 
-    RasterSymbolizer rasterSymb = StylingUtil.STYLE_BUILDER.createRasterSymbolizer(tColorMap, opacity);
-    return StylingUtil.STYLE_BUILDER.createStyle( rasterSymb );
-  }
+	/**
+	 * Kopiert ein {@link GridCoverage2D} komplett.
+	 * 
+	 * @param source
+	 *            Quell-Raster
+	 */
+	public static GridCoverage2D copyGridCoverage(GridCoverage2D source) {
+		// return createGridCoverage(source,source.getEnvelope());
+		return GRID_FAC.create(source.getName(), source.getRenderedImage()
+				.copyData(null), source.getEnvelope());
+	}
 
-  /**
-   * Kopiert ein {@link GridCoverage2D} komplett.
-   * @param source Quell-Raster
-   */
-  public static GridCoverage2D copyGridCoverage(GridCoverage2D source) {
-    //return createGridCoverage(source,source.getEnvelope());
-    return GRID_FAC.create(
-        source.getName(),
-        source.getRenderedImage().copyData(null),
-        source.getEnvelope()
-    );
-  }
+	/**
+	 * Kopiert ein {@link GridCoverage2D} komplett, dessen Raster-Koordinaten
+	 * (obere-linke Ecke) transformiert wird.
+	 * 
+	 * @param source
+	 *            Quell-Raster
+	 * @param minX
+	 *            neue Raster-Koordinate fuer die obere linke Ecke
+	 * @param minY
+	 *            neue Raster-Koordinate fuer die obere linke Ecke
+	 */
+	public static GridCoverage2D copyGridCoverage(GridCoverage2D source,
+			int minX, int minY) {
+		return GRID_FAC.create(source.getName(), source.getRenderedImage()
+				.copyData(null).createWritableTranslatedChild(minX, minY),
+				source.getEnvelope());
+	}
 
-  /**
-   * Kopiert ein {@link GridCoverage2D} komplett, dessen Raster-Koordinaten
-   * (obere-linke Ecke) transformiert wird.
-   * @param source Quell-Raster
-   * @param minX   neue Raster-Koordinate fuer die obere linke Ecke
-   * @param minY   neue Raster-Koordinate fuer die obere linke Ecke
-   */
-  public static GridCoverage2D copyGridCoverage(GridCoverage2D source, int minX, int minY) {
-    return GRID_FAC.create(
-                      source.getName(),
-                      source.getRenderedImage().copyData(null).createWritableTranslatedChild(minX, minY),
-                      source.getEnvelope()
-           );
-  }
+	/**
+	 * Erzeugt ein neues {@link GridCoverage2D} mit neuer
+	 * {@link SampleDimension}.
+	 * 
+	 * @param gc
+	 *            Raster (mit nur einem Band)
+	 * @param sampleDim
+	 *            neue {@link SampleDimension}
+	 * @return eine neue {@link GridCoverage2D}-Instanz
+	 */
+	public static GridCoverage2D resampleGridCoverage(GridCoverage2D gc,
+			GridSampleDimension sampleDim) {
+		return resampleGridCoverage(gc, new GridSampleDimension[] { sampleDim });
+	}
 
-  /**
-   * Erzeugt ein neues {@link GridCoverage2D} mit neuer {@link SampleDimension}.
-   * @param gc        Raster (mit nur einem Band)
-   * @param sampleDim neue {@link SampleDimension}
-   * @return eine neue {@link GridCoverage2D}-Instanz
-   */
-  public static GridCoverage2D resampleGridCoverage(GridCoverage2D gc, GridSampleDimension sampleDim) {
-    return resampleGridCoverage(gc, new GridSampleDimension[] {sampleDim});
-  }
+	/**
+	 * Erzeugt ein neues {@link GridCoverage2D} mit neuer
+	 * {@link SampleDimension}.
+	 * 
+	 * @param gc
+	 *            Raster
+	 * @param sampleDim
+	 *            neue {@link SampleDimension}
+	 * @return eine neue {@link GridCoverage2D}-Instanz
+	 */
+	public static GridCoverage2D resampleGridCoverage(GridCoverage2D gc,
+			GridSampleDimension[] sampleDim) {
+		final Map properties = new HashMap();
+		// properties.put("GC_NODATA", -9999.0);
 
-  /**
-   * Erzeugt ein neues {@link GridCoverage2D} mit neuer {@link SampleDimension}.
-   * @param gc        Raster
-   * @param sampleDim neue {@link SampleDimension}
-   * @return eine neue {@link GridCoverage2D}-Instanz
-   */
-  public static GridCoverage2D resampleGridCoverage(GridCoverage2D gc, GridSampleDimension[] sampleDim) {
-    final Map properties = new HashMap();
-    //  properties.put("GC_NODATA", -9999.0);
+		return CoverageFactoryFinder.getGridCoverageFactory(null).create(
+				gc.getName(), gc.getRenderedImage(),
+				(GridGeometry2D) gc.getGridGeometry(), sampleDim, null, // new
+																		// GridCoverage[]
+																		// {
+																		// raster
+																		// },
+				properties);
+	}
 
-    return CoverageFactoryFinder.getGridCoverageFactory(null).create(
-        gc.getName(),
-        gc.getRenderedImage(),
-        (GridGeometry2D)gc.getGridGeometry(),
-        sampleDim,
-        null, //new GridCoverage[] { raster },
-        properties
-    );
-  }
+	/**
+	 * Erzeugt ein {@link GridCoverage2D} aus einem anderen. Das neue Raster hat
+	 * maximal die Ausmasse des Quell-Rasters.
+	 * 
+	 * @param source
+	 *            Quell-Raster
+	 * @param bboxEnv
+	 *            Bounding-Box (beschreibt die den Ausschnitt des Quell-Rasters
+	 *            aus dem das neue Raster erzeugt wird)
+	 * @return {@code null} falls sich das Quell-Raster und die Bounding-Box
+	 *         nicht ueberschneiden.
+	 */
+	public static GridCoverage2D createGridCoverage(GridCoverage2D source,
+			Envelope bboxEnv) {
+		Envelope2D sourceEnv = source.getEnvelope2D();
+		// Subset nur bzgl. des Bereichs in dem auch das Raster liegt
+		bboxEnv = GTUtil.intersectEnvelope(sourceEnv, bboxEnv,
+				source.getCoordinateReferenceSystem());
+		if (bboxEnv.getLength(0) == 0 && bboxEnv.getLength(1) == 0)
+			return null;
 
-  /**
-   * Erzeugt ein {@link GridCoverage2D} aus einem anderen. Das neue Raster
-   * hat maximal die Ausmasse des Quell-Rasters.
-   * @param source Quell-Raster
-   * @param bboxEnv Bounding-Box (beschreibt die den Ausschnitt des Quell-Rasters aus dem
-   *                das neue Raster erzeugt wird)
-   * @return {@code null} falls sich das Quell-Raster und die Bounding-Box nicht
-   *         ueberschneiden.
-   */
-  public static GridCoverage2D createGridCoverage(GridCoverage2D source, Envelope bboxEnv) {
-    Envelope2D sourceEnv = source.getEnvelope2D();
-    // Subset nur bzgl. des Bereichs in dem auch das Raster liegt
-    bboxEnv = GTUtil.intersectEnvelope(sourceEnv,bboxEnv,source.getCoordinateReferenceSystem());
-    if ( bboxEnv.getLength(0) == 0 && bboxEnv.getLength(1) == 0 )
-      return null;
+		// Daten des Source-Raster
+		double realMinX = sourceEnv.getX();
+		double realMinY = sourceEnv.getY();
+		double realWidth = sourceEnv.getWidth();
+		double realHeight = sourceEnv.getHeight();
+		int rasterMinX = source.getRenderedImage().getMinX();
+		int rasterMinY = source.getRenderedImage().getMinY();
+		int rasterWidth = source.getRenderedImage().getWidth();
+		int rasterHeight = source.getRenderedImage().getHeight();
+		double cellWidth = realWidth / rasterWidth;
+		double cellHeight = realHeight / rasterHeight;
 
-    // Daten des Source-Raster
-    double realMinX     = sourceEnv.getX();
-    double realMinY     = sourceEnv.getY();
-    double realWidth    = sourceEnv.getWidth();
-    double realHeight   = sourceEnv.getHeight();
-    int    rasterMinX   = source.getRenderedImage().getMinX();
-    int    rasterMinY   = source.getRenderedImage().getMinY();
-    int    rasterWidth  = source.getRenderedImage().getWidth();
-    int    rasterHeight = source.getRenderedImage().getHeight();
-    double cellWidth    = realWidth / rasterWidth;
-    double cellHeight   = realHeight / rasterHeight;
+		// Envelope in Raster-Koordinaten (bzgl. unterer linker Ecke!)
+		int subsetLX = convertRealToRaster(bboxEnv.getLowerCorner()
+				.getOrdinate(0), realMinX, realWidth, rasterMinX, rasterWidth);
+		int subsetLY = convertRealToRaster(bboxEnv.getLowerCorner()
+				.getOrdinate(1), realMinY, realHeight, rasterMinY, rasterHeight);
+		int subsetUX = convertRealToRaster(bboxEnv.getUpperCorner()
+				.getOrdinate(0), realMinX, realWidth, rasterMinX, rasterWidth);
+		int subsetUY = convertRealToRaster(bboxEnv.getUpperCorner()
+				.getOrdinate(1), realMinY, realHeight, rasterMinY, rasterHeight);
+		int subsetW = Math.abs(subsetLX - subsetUX) + 1;
+		int subsetH = Math.abs(subsetLY - subsetUY) + 1;
+		// obere linke Ecke des Subsets in Raster-Koordinaten
+		int ulX = Math.min(subsetLX, subsetUX);
+		int ulY = rasterMinY + rasterHeight - Math.max(subsetLY, subsetUY) - 1;
 
-    // Envelope in Raster-Koordinaten (bzgl. unterer linker Ecke!)
-    int subsetLX = convertRealToRaster(bboxEnv.getLowerCorner().getOrdinate(0),realMinX,realWidth,rasterMinX,rasterWidth);
-    int subsetLY = convertRealToRaster(bboxEnv.getLowerCorner().getOrdinate(1),realMinY,realHeight,rasterMinY,rasterHeight);
-    int subsetUX = convertRealToRaster(bboxEnv.getUpperCorner().getOrdinate(0),realMinX,realWidth,rasterMinX,rasterWidth);
-    int subsetUY = convertRealToRaster(bboxEnv.getUpperCorner().getOrdinate(1),realMinY,realHeight,rasterMinY,rasterHeight);
-    int subsetW  = Math.abs(subsetLX-subsetUX)+1;
-    int subsetH  = Math.abs(subsetLY-subsetUY)+1;
-    // obere linke Ecke des Subsets in Raster-Koordinaten
-    int ulX = Math.min(subsetLX,subsetUX);
-    int ulY = rasterMinY+rasterHeight - Math.max(subsetLY,subsetUY) -1;
+		// WritableRaster fuer Subset erstellen
+		Rectangle rect = new Rectangle(ulX, ulY, subsetW, subsetH);
+		Raster r = source.getRenderedImage().getData(rect);
+		WritableRaster wr = createWritableRaster(r);
 
-    // WritableRaster fuer Subset erstellen
-    Rectangle       rect = new Rectangle(ulX,ulY,subsetW,subsetH);
-    Raster          r    = source.getRenderedImage().getData( rect );
-    WritableRaster  wr   = createWritableRaster(r);
+		// Envelope fuer Subset erzeugen (bzgl. untere liner Ecke!)
+		Envelope subsetEnv = new Envelope2D(
+				source.getCoordinateReferenceSystem(), convertRasterToReal(
+						subsetLX, rasterMinX, realMinX, cellWidth)
+						- cellWidth
+						/ 2, convertRasterToReal(subsetLY, rasterMinY,
+						realMinY, cellHeight) - cellHeight / 2, subsetW
+						* cellWidth, subsetH * cellHeight);
 
-    // Envelope fuer Subset erzeugen (bzgl. untere liner Ecke!)
-    Envelope subsetEnv = new Envelope2D(
-        source.getCoordinateReferenceSystem(),
-        convertRasterToReal(subsetLX,rasterMinX,realMinX,cellWidth)-cellWidth/2,
-        convertRasterToReal(subsetLY,rasterMinY,realMinY,cellHeight)-cellHeight/2,
-        subsetW * cellWidth,
-        subsetH * cellHeight
-    );
+		return new GridCoverageFactory().create("", wr, subsetEnv);
+	}
 
-    return new GridCoverageFactory().create("",wr,subsetEnv);
-  }
+	/**
+	 * Erzeugt ein {@link WritableRaster} aus einem {@link Raster}.
+	 * 
+	 * @param r
+	 *            Raster
+	 * @param minX
+	 *            Start-Index in X-Richtung
+	 * @param minY
+	 *            Start-Index in Y-Richtung
+	 */
+	public static WritableRaster createWritableRaster(Raster r, int minX,
+			int minY) {
+		return Raster.createWritableRaster(new ComponentSampleModel(r
+				.getDataBuffer().getDataType(), r.getWidth(), r.getHeight(), 1,
+				r.getWidth(), new int[] { 0 }), r.getDataBuffer(), new Point(
+				minX, minY));
+	}
 
+	/**
+	 * Erzeugt ein {@link WritableRaster} aus einem {@link Raster}.
+	 * 
+	 * @param r
+	 *            Raster
+	 */
+	public static WritableRaster createWritableRaster(Raster r) {
+		return createWritableRaster(r, 0, 0);
+	}
 
-  /**
-   * Erzeugt ein {@link WritableRaster} aus einem {@link Raster}.
-   * @param r Raster
-   * @param minX Start-Index in X-Richtung
-   * @param minY Start-Index in Y-Richtung
-   */
-  public static WritableRaster createWritableRaster(Raster r, int minX, int minY) {
-    return Raster.createWritableRaster(
-        new ComponentSampleModel(r.getDataBuffer().getDataType(),
-                                 r.getWidth(),
-                                 r.getHeight(),
-                                 1,
-                                 r.getWidth(),
-                                 new int[] {0}),
-        r.getDataBuffer(),
-        new Point(minX,minY)
-    );
-  }
+	/**
+	 * Konvertiert ein Raster-Objekt in eine {@link GridCoverage2D}. Es werden
+	 * folgende Objekt-Typen unterstuetzt:
+	 * <ul>
+	 * <li>Instanzen von {@link GridCoverage2D}</li>
+	 * <li>Instanzen von {@link WritableRaster} <u>und</u> {@link WritableGrid}</li>
+	 * <li>Instanzen von {@link WritableGridArray}</li>
+	 * </ul>
+	 * 
+	 * @param obj
+	 *            Object
+	 * @exception IllegalArgumentException
+	 *                falls das Objekt nicht konvertiert werden kann
+	 */
+	public static GridCoverage2D convertToGridCoverage2D(Object obj) {
+		if (obj instanceof GridCoverage2D)
+			return (GridCoverage2D) obj;
 
-  /**
-   * Erzeugt ein {@link WritableRaster} aus einem {@link Raster}.
-   * @param r Raster
-   */
-  public static WritableRaster createWritableRaster(Raster r) {
-    return createWritableRaster(r,0,0);
-  }
- 
-  /**
-   * Konvertiert ein Raster-Objekt in eine {@link GridCoverage2D}.
-   * Es werden folgende Objekt-Typen unterstuetzt:
-   * <ul>
-   *   <li>Instanzen von {@link GridCoverage2D}</li>
-   *   <li>Instanzen von {@link WritableRaster} <u>und</u> {@link WritableGrid}</li>
-   *   <li>Instanzen von {@link WritableGridArray}</li>
-   * </ul>
-   * @param obj Object
-   * @exception IllegalArgumentException falls das Objekt nicht konvertiert werden kann
-   */
-  public static GridCoverage2D convertToGridCoverage2D(Object obj) {
-    if ( obj instanceof GridCoverage2D )
-      return (GridCoverage2D)obj;
+		if (obj instanceof WritableRaster && obj instanceof WritableGrid) {
+			// GT-GridCoverage aus WritableGridRaster erzeugen
+			WritableRaster wr = (WritableRaster) obj;
+			WritableGrid wg = (WritableGrid) obj;
+			Envelope2D ev = new Envelope2D(wg.getCoordinateReferenceSystem(),
+					wg.getX(), wg.getY(), wg.getRealWidth(), wg.getRealHeight());
+			return new GridCoverageFactory().create("", wr, ev);
+		}
 
-    if ( obj instanceof WritableRaster  && obj instanceof WritableGrid ) {
-      // GT-GridCoverage aus WritableGridRaster erzeugen
-      WritableRaster wr = (WritableRaster)obj;
-      WritableGrid   wg = (WritableGrid)obj;
-      Envelope2D     ev = new Envelope2D(wg.getCoordinateReferenceSystem(),wg.getX(),wg.getY(),wg.getRealWidth(),wg.getRealHeight());
-      return new GridCoverageFactory().create("",wr,ev);
-    }
+		if (obj instanceof WritableGridArray) {
+			// GT-GridCoverage aus WritableGridRaster erzeugen
+			WritableGridArray wga = (WritableGridArray) obj;
+			Envelope2D ev = GTUtil.createEnvelope2D(wga.getEnvelope(),
+					wga.getCoordinateReferenceSystem());
+			WritableRaster wr = Raster.createWritableRaster(
+					new ComponentSampleModel(wga.getSampleType(), wga
+							.getWidth(), wga.getHeight(), 1, wga.getWidth(),
+							new int[] { 0 }), wga.getDataBuffer(), new Point(0,
+							0));
+			return new GridCoverageFactory().create("", wr, ev);
+		}
 
-    if ( obj instanceof WritableGridArray ) {
-      // GT-GridCoverage aus WritableGridRaster erzeugen
-      WritableGridArray wga = (WritableGridArray)obj;
-      Envelope2D        ev = GTUtil.createEnvelope2D(wga.getEnvelope(),wga.getCoordinateReferenceSystem());
-      WritableRaster    wr = Raster.createWritableRaster(
-          new ComponentSampleModel(wga.getSampleType(),
-                                   wga.getWidth(),
-                                   wga.getHeight(),
-                                   1,
-                                   wga.getWidth(),
-                                   new int[] {0}
-          ),
-          wga.getDataBuffer(),
-          new Point(0,0)
-      );
-      return new GridCoverageFactory().create("",wr,ev);
-    }
+		throw new IllegalArgumentException(
+				"Object can not be converted to GridCoverage2D: "
+						+ (obj == null ? "null" : obj.getClass()
+								.getSimpleName()));
 
-    throw new IllegalArgumentException("Object can not be converted to GridCoverage2D: "+(obj==null ? "null" : obj.getClass().getSimpleName()));
+	}
 
-  }
+	/**
+	 * Converts a real world coordinate to the row/column number of a raster. If
+	 * the coordinate value is exactly located on the border between two cells,
+	 * the next greater raster cell is returned (except the raster border: the
+	 * lower (=last) cell is returned).<br>
+	 * This method can be applied on all dimensions (X or Y or ...), if the
+	 * accordingly input parameter for the dimension are given.<br>
+	 * <b>Note:</b> Because this method is independed from the dimension, it
+	 * assumes that the "beginning" of the raster coordinates is located in the
+	 * same corner like the lat/lon-refernce!!
+	 * 
+	 * @param coord
+	 *            geographic reference (world coordinate), which is converted
+	 * @param realMin
+	 *            minimal world coordinate of the raster
+	 * @param realLength
+	 *            length of the raster in "world coordinates"
+	 * @param rasterMin
+	 *            index of the first raster cell (normally 0)
+	 * @param rasterLength
+	 *            size of the raster (in cells)
+	 * @exception UnsupportedOperationException
+	 *                falls als {@code rasterLength} 0 uebergeben wird
+	 */
+	public static int convertRealToRaster(final double coord,
+			final double realMin, final double realLength, final int rasterMin,
+			final int rasterLength) {
+		if (rasterLength <= 0)
+			throw new UnsupportedOperationException(
+					"Length of raster must be > 0!");
+		final double cellSize = realLength / rasterLength;
 
+		// Wenn Koordinate genau den Rasterrand trifft, wird die letzte
+		// Zelle zurueckgegeben...
+		if (coord == realMin + realLength)
+			return rasterMin + rasterLength - 1;
+		// ... sonst die naechste Zelle
+		// Bemerkung: Einfaches Abschneiden (int) reicht nicht, es muss die
+		// naechstkleinere Zahl ermittelt werden, denn sonst gibt
+		// es die Zelle 0 zweimal, z.B.
+		// (coord-realMin)/cellSize = 0.8 --> Zelle 0 (korrekt)
+		// (coord-realMin)/cellSize = -0.8 --> Zelle 0 (falsch)
+		// Im zweiten Fall muss auf -1 "gerundet" werden!
+		return ((int) Math.floor((coord - realMin) / cellSize)) + rasterMin;
+	}
 
-  /**
-   * Converts a real world coordinate to the row/column number of a raster.
-   * If the coordinate value is exactly located on the border between two
-   * cells, the next greater raster cell is returned (except the raster border:
-   * the lower (=last) cell is returned).<br>
-   * This method can be applied on all dimensions (X or Y or ...), if the
-   * accordingly input parameter for the dimension are given.<br>
-   * <b>Note:</b>
-   * Because this method is independed from the dimension, it assumes that the
-   * "beginning" of the raster coordinates is located in the same corner like
-   * the lat/lon-refernce!! 
-   * @param coord        geographic reference (world coordinate), which is converted
-   * @param realMin      minimal world coordinate of the raster
-   * @param realLength   length of the raster in "world coordinates"
-   * @param rasterMin    index of the first raster cell (normally 0)
-   * @param rasterLength size of the raster (in cells)
-   * @exception UnsupportedOperationException falls als {@code rasterLength} 0
-   *            uebergeben wird
-   */
-  public static int convertRealToRaster(final double coord, final double realMin, final double realLength, final int rasterMin, final int rasterLength) {
-    if ( rasterLength <= 0 )
-      throw new UnsupportedOperationException("Length of raster must be > 0!");
-    final double cellSize = realLength / rasterLength;
+	/**
+	 * Converts a raster cell index to "real" world coordinates. The coordinate
+	 * of the cell center is returned.<br>
+	 * This method can be applied on all dimensions (X or Y or ...), if the
+	 * accordingly input parameter for the dimension are given.<br>
+	 * <b>Note:</b> Because this method is independed from the dimension, it
+	 * assumes that the "beginning" of the raster coordinates is located in the
+	 * same corner like the lat/lon-refernce!!
+	 * 
+	 * @param cell
+	 *            raster index, which is converted
+	 * @param rasterMin
+	 *            minimal index of the raster
+	 * @param realMin
+	 *            minimal world coordinate of the raster
+	 * @param cellSize
+	 *            size of one cell in "world coordinates"
+	 */
+	public static double convertRasterToReal(final int cell,
+			final int rasterMin, final double realMin, final double cellSize) {
+		return realMin + (cell - rasterMin) * cellSize + 0.5 * cellSize;
+	}
 
-    // Wenn Koordinate genau den Rasterrand trifft, wird die letzte
-    // Zelle zurueckgegeben...
-    if ( coord == realMin + realLength )
-      return rasterMin + rasterLength - 1;
-    // ... sonst die naechste Zelle
-    // Bemerkung: Einfaches Abschneiden (int) reicht nicht, es muss die
-    //            naechstkleinere Zahl ermittelt werden, denn sonst gibt
-    //            es die Zelle 0 zweimal, z.B.
-    //              (coord-realMin)/cellSize =  0.8 --> Zelle 0 (korrekt)
-    //              (coord-realMin)/cellSize = -0.8 --> Zelle 0 (falsch)
-    //            Im zweiten Fall muss auf -1 "gerundet" werden!
-    return ((int)Math.floor( (coord-realMin) / cellSize ) ) + rasterMin;
-  }
+	/**
+	 * Converts a geo reference to raster coordinates.
+	 * 
+	 * @param gc
+	 *            source raster
+	 * @param geoX
+	 *            Longitude to be converted
+	 * @param geoY
+	 *            Latitude to be converted
+	 * @return 2-dimensional array with the X-index in element 0 and the Y-index
+	 *         in element 1
+	 */
+	public static int[] convertRealToRaster(GridCoverage2D gc, double geoX,
+			double geoY) {
+		return convertRealToRaster(gc, new double[] { geoX, geoY });
+	}
 
-  /**
-   * Converts a raster cell index to "real" world coordinates. The coordinate
-   * of the cell center is returned.<br> 
-   * This method can be applied on all dimensions (X or Y or ...), if the
-   * accordingly input parameter for the dimension are given.<br>
-   * <b>Note:</b>
-   * Because this method is independed from the dimension, it assumes that the
-   * "beginning" of the raster coordinates is located in the same corner like
-   * the lat/lon-refernce!! 
-   * @param cell       raster index, which is converted
-   * @param rasterMin  minimal index of the raster
-   * @param realMin    minimal world coordinate of the raster
-   * @param cellSize   size of one cell in "world coordinates"
-   */
-  public static double convertRasterToReal(final int cell, final int rasterMin, final double realMin, final double cellSize) {
-    return realMin + (cell-rasterMin)*cellSize + 0.5*cellSize;
-  }
+	/**
+	 * Converts a geo reference to raster coordinates.
+	 * 
+	 * @param env
+	 *            geo reference of the raster
+	 * @param image
+	 *            image of the raster
+	 * @param geoX
+	 *            Longitude to be converted
+	 * @param geoY
+	 *            Latitude to be converted
+	 * @return 2-dimensional array with the X-index in element 0 and the Y-index
+	 *         in element 1
+	 */
+	public static int[] convertRealToRaster(Envelope2D env,
+			RenderedImage image, double geoX, double geoY) {
+		return convertRealToRaster(env, image, new double[] { geoX, geoY });
+	}
 
-  /**
-   * Converts a geo reference to raster coordinates.
-   * @param gc   source raster
-   * @param geoX Longitude to be converted
-   * @param geoY Latitude to be converted
-   * @return 2-dimensional array with the X-index in element 0 and the Y-index in
-   *         element 1
-   */
-  public static int[] convertRealToRaster(GridCoverage2D gc, double geoX, double geoY) {
-    return convertRealToRaster(gc, new double[] { geoX, geoY } );
-  }
+	/**
+	 * Converts a geo reference to raster coordinates.
+	 * 
+	 * @param gc
+	 *            source raster
+	 * @param geoCoord
+	 *            geo reference (Longitude,Latitude) to be converted
+	 * @return 2-dimensional array with the X-index in element 0 and the Y-index
+	 *         in element 1
+	 */
+	public static int[] convertRealToRaster(GridCoverage2D gc, double[] geoCoord) {
+		return convertRealToRaster(gc.getEnvelope2D(), gc.getRenderedImage(),
+				geoCoord);
+	}
 
-  /**
-   * Converts a geo reference to raster coordinates.
-   * @param env      geo reference of the raster
-   * @param image    image of the raster
-   * @param geoX     Longitude to be converted
-   * @param geoY     Latitude to be converted
-   * @return 2-dimensional array with the X-index in element 0 and the Y-index in
-   *         element 1
-   */
-  public static int[] convertRealToRaster(Envelope2D env, RenderedImage image, double geoX, double geoY) {
-    return convertRealToRaster(env, image, new double[] { geoX, geoY } );
-  }
+	/**
+	 * Converts a geo reference to raster coordinates.
+	 * 
+	 * @param env
+	 *            geo reference of the raster
+	 * @param image
+	 *            image of the raster
+	 * @param geoCoord
+	 *            geo reference (Longitude,Latitude) to be converted
+	 * @return 2-dimensional array with the X-index in element 0 and the Y-index
+	 *         in element 1
+	 */
+	public static int[] convertRealToRaster(Envelope2D env,
+			RenderedImage image, double[] geoCoord) {
+		final double realMinX = env.getX();
+		final double realMinY = env.getY();
+		final double realWidth = env.getWidth();
+		final double realHeight = env.getHeight();
+		final int rasterMinX = image.getMinX();
+		final int rasterMinY = image.getMinY();
+		final int rasterWidth = image.getWidth();
+		final int rasterHeight = image.getHeight();
 
-  /**
-   * Converts a geo reference to raster coordinates.
-   * @param gc   source raster
-   * @param geoCoord geo reference (Longitude,Latitude) to be converted
-   * @return 2-dimensional array with the X-index in element 0 and the Y-index in
-   *         element 1
-   */
-  public static int[] convertRealToRaster(GridCoverage2D gc, double[] geoCoord) {
-    return convertRealToRaster(gc.getEnvelope2D(), gc.getRenderedImage(), geoCoord);
-  }
+		int cellX = convertRealToRaster(geoCoord[0], realMinX, realWidth,
+				rasterMinX, rasterWidth);
+		int cellY = convertRealToRaster(geoCoord[1], realMinY, realHeight,
+				rasterMinY, rasterHeight);
+		// Ursprung der Raster-Koord. ist OBEN LINKS
+		cellY = rasterMinY + rasterHeight - cellY - 1;
 
-  /**
-   * Converts a geo reference to raster coordinates.
-   * @param env      geo reference of the raster
-   * @param image    image of the raster
-   * @param geoCoord geo reference (Longitude,Latitude) to be converted
-   * @return 2-dimensional array with the X-index in element 0 and the Y-index in
-   *         element 1
-   */
-  public static int[] convertRealToRaster(Envelope2D env, RenderedImage image, double[] geoCoord) {
-    final double realMinX = env.getX();
-    final double realMinY = env.getY();
-    final double realWidth = env.getWidth();
-    final double realHeight = env.getHeight();
-    final int    rasterMinX = image.getMinX();
-    final int    rasterMinY = image.getMinY();
-    final int    rasterWidth = image.getWidth();
-    final int    rasterHeight = image.getHeight();
+		return new int[] { cellX, cellY };
+	}
 
-    int cellX = convertRealToRaster(geoCoord[0],realMinX,realWidth,rasterMinX,rasterWidth);
-    int cellY = convertRealToRaster(geoCoord[1],realMinY,realHeight,rasterMinY,rasterHeight);
-    // Ursprung der Raster-Koord. ist OBEN LINKS
-    cellY = rasterMinY+rasterHeight - cellY - 1;
+	/**
+	 * Determines the raster cells, which are intersected by a
+	 * {@link LineString}.
+	 * 
+	 * @param gc
+	 *            the raster
+	 * @param ls
+	 *            {@link LineString} to check
+	 * @param result
+	 *            Set the intersected cells are inserted in (can be {@code null}
+	 *            )
+	 * @return an empty set if the LineString is located outside the raster
+	 */
+	public static Set<Point> getOverlappingCells(GridCoverage2D gc,
+			LineString ls, Set<Point> result) {
+		if (result == null)
+			result = new HashSet<Point>();
 
-    return new int[] {cellX, cellY};
-  }
+		Envelope2D gridEnv = gc.getEnvelope2D();
+		double realMinX = gridEnv.getX();
+		double realMinY = gridEnv.getY();
+		double realWidth = gridEnv.getWidth();
+		double realHeight = gridEnv.getHeight();
+		double realMaxX = realMinX + realWidth;
+		double realMaxY = realMinY + realHeight;
+		int rasterMinX = gc.getRenderedImage().getMinX();
+		int rasterMinY = gc.getRenderedImage().getMinY();
+		int rasterWidth = gc.getRenderedImage().getWidth();
+		int rasterHeight = gc.getRenderedImage().getHeight();
+		double cellWidth = realWidth / rasterWidth;
+		double cellHeight = realHeight / rasterHeight;
 
+		Coordinate[] cellBounds = new Coordinate[] { new Coordinate(),
+				new Coordinate(), new Coordinate(), new Coordinate() };
+		GeometryFactory geomFac = FeatureUtil.GEOMETRY_FACTORY;
 
-  /**
-   * Determines the raster cells, which are intersected by a {@link LineString}.
-   * @param gc the raster
-   * @param ls {@link LineString} to check
-   * @param result Set the intersected cells are inserted in (can be {@code null})
-   * @return an empty set if the LineString is located outside the raster
-   */
-  public static Set<Point> getOverlappingCells(GridCoverage2D gc, LineString ls, Set<Point> result) {
-    if ( result == null )
-      result = new HashSet<Point>();
+		// determine the cells of the LineStrings start/end point
+		com.vividsolutions.jts.geom.Envelope lsBB = ls.getEnvelopeInternal();
+		double bbMinX = Math.max(realMinX, lsBB.getMinX());
+		double bbMinY = Math.max(realMinY, lsBB.getMinY());
+		double bbMaxX = Math.min(realMaxX, lsBB.getMaxX());
+		double bbMaxY = Math.min(realMaxY, lsBB.getMaxY());
+		int[] lsMinCell = convertRealToRaster(gc, bbMinX, bbMaxY);
+		int[] lsMaxCell = convertRealToRaster(gc, bbMaxX, bbMinY);
 
-    Envelope2D gridEnv      = gc.getEnvelope2D();
-    double     realMinX     = gridEnv.getX();
-    double     realMinY     = gridEnv.getY();
-    double     realWidth    = gridEnv.getWidth();
-    double     realHeight   = gridEnv.getHeight();
-    double     realMaxX     = realMinX + realWidth;
-    double     realMaxY     = realMinY + realHeight;
-    int        rasterMinX   = gc.getRenderedImage().getMinX();
-    int        rasterMinY   = gc.getRenderedImage().getMinY();
-    int        rasterWidth  = gc.getRenderedImage().getWidth();
-    int        rasterHeight = gc.getRenderedImage().getHeight();
-    double     cellWidth    = realWidth / rasterWidth;
-    double     cellHeight   = realHeight / rasterHeight;
+		bbMinX = realMinX + lsMinCell[0] * cellWidth;
+		bbMaxX = realMinX + (lsMaxCell[0] + 1) * cellWidth;
+		bbMinY = realMinY + (rasterHeight - (lsMaxCell[1] + 1)) * cellHeight;
+		bbMaxY = realMinY + (rasterHeight - lsMinCell[1]) * cellHeight;
 
-    Coordinate[]    cellBounds = new Coordinate[] { new Coordinate(), new Coordinate(), new Coordinate(), new Coordinate() };
-    GeometryFactory geomFac    = FeatureUtil.GEOMETRY_FACTORY;
+		// Check all raster cells inside the BB of the LineString, whether they
+		// intersect the LineString
+		for (double y = bbMinY; y <= bbMaxY; y += cellHeight)
+			for (double x = bbMinX; x <= bbMaxX; x += cellWidth) {
+				cellBounds[0].x = x;
+				cellBounds[0].y = y;
+				cellBounds[1].x = x + cellWidth;
+				cellBounds[1].y = y;
+				cellBounds[2].x = x + cellWidth;
+				cellBounds[2].y = y + cellHeight;
+				cellBounds[3] = cellBounds[0];
+				if (ls.intersects(geomFac.createLinearRing(cellBounds))) {
+					int[] cell = convertRealToRaster(gc, x, y);
+					result.add(new Point(cell[0], cell[1]));
+				}
 
-    // determine the cells of the LineStrings start/end point
-    com.vividsolutions.jts.geom.Envelope lsBB = ls.getEnvelopeInternal();
-    double bbMinX = Math.max(realMinX, lsBB.getMinX());
-    double bbMinY = Math.max(realMinY, lsBB.getMinY());
-    double bbMaxX = Math.min(realMaxX, lsBB.getMaxX());
-    double bbMaxY = Math.min(realMaxY, lsBB.getMaxY());
-    int[] lsMinCell = convertRealToRaster(gc,bbMinX,bbMaxY);
-    int[] lsMaxCell = convertRealToRaster(gc,bbMaxX,bbMinY);
+			}
 
-    bbMinX = realMinX + lsMinCell[0] * cellWidth;
-    bbMaxX = realMinX + (lsMaxCell[0]+1) * cellWidth;
-    bbMinY = realMinY + (rasterHeight-(lsMaxCell[1]+1)) * cellHeight;
-    bbMaxY = realMinY + (rasterHeight-lsMinCell[1]) * cellHeight;
+		return result;
+	}
 
-    // Check all raster cells inside the BB of the LineString, whether they
-    // intersect the LineString
-    for (double y = bbMinY; y<=bbMaxY; y+=cellHeight)
-      for (double x = bbMinX; x<=bbMaxX; x+=cellWidth) {
-        cellBounds[0].x = x;
-        cellBounds[0].y = y;
-        cellBounds[1].x = x+cellWidth;
-        cellBounds[1].y = y;
-        cellBounds[2].x = x+cellWidth;
-        cellBounds[2].y = y+cellHeight;
-        cellBounds[3]   = cellBounds[0];
-        if ( ls.intersects(geomFac.createLinearRing(cellBounds)) ) {
-          int[] cell = convertRealToRaster(gc, x, y);
-          result.add( new Point(cell[0], cell[1]) );
-        }
+	/**
+	 * Marks all raster cells, which are intersected by a {@link Geometry}.
+	 * 
+	 * @param gc
+	 *            the raster
+	 * @param g
+	 *            Geometry, which is checked for intersection
+	 * @param markValue
+	 *            value the intersected cells are marked with
+	 * @param result
+	 *            Raster, the intersected cells are marked in (can be
+	 *            {@code null})
+	 */
+	public static WritableRaster getOverlappingCells(GridCoverage2D gc,
+			Geometry g, Number markValue, WritableRaster result) {
+		if (result == null) {
+			result = Raster.createWritableRaster(gc.getRenderedImage()
+					.getSampleModel(), new Point(gc.getRenderedImage()
+					.getMinX(), gc.getRenderedImage().getMinX()));
+		}
 
-      }
+		Envelope2D gridEnv = gc.getEnvelope2D();
+		int sampleType = gc.getRenderedImage().getSampleModel().getDataType();
+		int band = 0;
+		double realMinX = gridEnv.getX();
+		double realMinY = gridEnv.getY();
+		double realWidth = gridEnv.getWidth();
+		double realHeight = gridEnv.getHeight();
+		double realMaxX = realMinX + realWidth;
+		double realMaxY = realMinY + realHeight;
+		int rasterMinX = gc.getRenderedImage().getMinX();
+		int rasterMinY = gc.getRenderedImage().getMinY();
+		int rasterWidth = gc.getRenderedImage().getWidth();
+		int rasterHeight = gc.getRenderedImage().getHeight();
+		double cellWidth = realWidth / rasterWidth;
+		double cellHeight = realHeight / rasterHeight;
 
-    return result;
-  }
+		// Determine the raster cells inside the Geometry-BB
+		// -> only these are possibly intersected
+		com.vividsolutions.jts.geom.Envelope lsBB = g.getEnvelopeInternal();
+		double bbMinX = Math.max(realMinX, lsBB.getMinX());
+		double bbMinY = Math.max(realMinY, lsBB.getMinY());
+		double bbMaxX = Math.min(realMaxX, lsBB.getMaxX());
+		double bbMaxY = Math.min(realMaxY, lsBB.getMaxY());
+		int[] lsMinCell = convertRealToRaster(gc, bbMinX, bbMaxY);
+		int[] lsMaxCell = convertRealToRaster(gc, bbMaxX, bbMinY);
 
-  /**
-   * Marks all raster cells, which are intersected by a {@link Geometry}.
-   * @param gc the raster
-   * @param g  Geometry, which is checked for intersection
-   * @param markValue value the intersected cells are marked with
-   * @param result Raster, the intersected cells are marked in (can be {@code null})
-   */
-  public static WritableRaster getOverlappingCells(GridCoverage2D gc, Geometry g, Number markValue, WritableRaster result) {
-    if ( result == null ) {
-      result = Raster.createWritableRaster(
-                     gc.getRenderedImage().getSampleModel(),
-                     new Point(
-                         gc.getRenderedImage().getMinX(),
-                         gc.getRenderedImage().getMinX()
-                     )
-      );
-    }
+		bbMinX = realMinX + lsMinCell[0] * cellWidth;
+		bbMaxX = realMinX + (lsMaxCell[0] + 1) * cellWidth;
+		bbMinY = realMinY + (rasterHeight - (lsMaxCell[1] + 1)) * cellHeight;
+		bbMaxY = realMinY + (rasterHeight - lsMinCell[1]) * cellHeight;
 
-    Envelope2D gridEnv      = gc.getEnvelope2D();
-    int        sampleType   = gc.getRenderedImage().getSampleModel().getDataType();
-    int        band         = 0;
-    double     realMinX     = gridEnv.getX();
-    double     realMinY     = gridEnv.getY();
-    double     realWidth    = gridEnv.getWidth();
-    double     realHeight   = gridEnv.getHeight();
-    double     realMaxX     = realMinX + realWidth;
-    double     realMaxY     = realMinY + realHeight;
-    int        rasterMinX   = gc.getRenderedImage().getMinX();
-    int        rasterMinY   = gc.getRenderedImage().getMinY();
-    int        rasterWidth  = gc.getRenderedImage().getWidth();
-    int        rasterHeight = gc.getRenderedImage().getHeight();
-    double     cellWidth    = realWidth / rasterWidth;
-    double     cellHeight   = realHeight / rasterHeight;
+		// Check all raster cells inside the BB of the Geometry, whether they
+		// really intersect the Geometry
+		Coordinate[] cellBounds = new Coordinate[] { new Coordinate(),
+				new Coordinate(), new Coordinate(), new Coordinate(),
+				new Coordinate() };
+		GeometryFactory geomFac = FeatureUtil.GEOMETRY_FACTORY;
+		for (double y = bbMinY; y <= bbMaxY; y += cellHeight)
+			for (double x = bbMinX; x <= bbMaxX; x += cellWidth) {
+				cellBounds[0].x = x;
+				cellBounds[0].y = y;
+				cellBounds[1].x = x + cellWidth;
+				cellBounds[1].y = y;
+				cellBounds[2].x = x + cellWidth;
+				cellBounds[2].y = y + cellHeight;
+				cellBounds[3].x = x;
+				cellBounds[3].y = y + cellHeight;
+				cellBounds[4] = cellBounds[0];
+				if (g.intersects(geomFac.createLinearRing(cellBounds))) {
+					int[] cell = convertRealToRaster(gc, x, y);
+					switch (sampleType) {
+					case DataBuffer.TYPE_BYTE:
+					case DataBuffer.TYPE_SHORT:
+					case DataBuffer.TYPE_USHORT:
+					case DataBuffer.TYPE_INT:
+						result.setSample(cell[0], cell[1], band,
+								markValue.intValue());
+						break;
+					case DataBuffer.TYPE_FLOAT:
+						result.setSample(cell[0], cell[1], band,
+								markValue.floatValue());
+						break;
+					case DataBuffer.TYPE_DOUBLE:
+						result.setSample(cell[0], cell[1], band,
+								markValue.doubleValue());
+						break;
+					}
+				}
+			}
 
+		return result;
+	}
 
-    // Determine the raster cells inside the Geometry-BB
-    // -> only these are possibly intersected
-    com.vividsolutions.jts.geom.Envelope lsBB = g.getEnvelopeInternal();
-    double bbMinX = Math.max(realMinX, lsBB.getMinX());
-    double bbMinY = Math.max(realMinY, lsBB.getMinY());
-    double bbMaxX = Math.min(realMaxX, lsBB.getMaxX());
-    double bbMaxY = Math.min(realMaxY, lsBB.getMaxY());
-    int[] lsMinCell = convertRealToRaster(gc,bbMinX,bbMaxY);
-    int[] lsMaxCell = convertRealToRaster(gc,bbMaxX,bbMinY);
-
-    bbMinX = realMinX + lsMinCell[0] * cellWidth;
-    bbMaxX = realMinX + (lsMaxCell[0]+1) * cellWidth;
-    bbMinY = realMinY + (rasterHeight-(lsMaxCell[1]+1)) * cellHeight;
-    bbMaxY = realMinY + (rasterHeight-lsMinCell[1]) * cellHeight;
-
-    // Check all raster cells inside the BB of the Geometry, whether they
-    // really intersect the Geometry
-    Coordinate[]    cellBounds = new Coordinate[] { new Coordinate(), new Coordinate(), new Coordinate(), new Coordinate(), new Coordinate() };
-    GeometryFactory geomFac    = FeatureUtil.GEOMETRY_FACTORY;
-    for (double y = bbMinY; y<=bbMaxY; y+=cellHeight)
-      for (double x = bbMinX; x<=bbMaxX; x+=cellWidth) {
-        cellBounds[0].x = x;
-        cellBounds[0].y = y;
-        cellBounds[1].x = x+cellWidth;
-        cellBounds[1].y = y;
-        cellBounds[2].x = x+cellWidth;
-        cellBounds[2].y = y+cellHeight;
-        cellBounds[3].x = x;
-        cellBounds[3].y = y+cellHeight;
-        cellBounds[4]   = cellBounds[0];
-        if ( g.intersects(geomFac.createLinearRing(cellBounds)) ) {
-          int[] cell = convertRealToRaster(gc, x, y);
-          switch ( sampleType ) {
-            case DataBuffer.TYPE_BYTE:
-            case DataBuffer.TYPE_SHORT:
-            case DataBuffer.TYPE_USHORT:
-            case DataBuffer.TYPE_INT:
-                        result.setSample(cell[0],cell[1],band,markValue.intValue());
-                        break;
-            case DataBuffer.TYPE_FLOAT:
-                        result.setSample(cell[0],cell[1],band,markValue.floatValue());
-                        break;
-            case DataBuffer.TYPE_DOUBLE:
-                        result.setSample(cell[0],cell[1],band,markValue.doubleValue());
-                        break;
-          }
-        }
-      }
-
-    return result;
-  }
-
-
-  /**
-   * Marks all raster cells, which are intersected by a {@link Geometry}.
-   * @param gc the raster
-   * @param g  Geometry, checked for intersection
-   * @param markValue value the intersected cells are marked with
-   * @return <b>a NEW instance of {@link GridCoverage2D}!!</b>
-   */
-  public static GridCoverage2D getOverlappingCells(GridCoverage2D gc, Geometry g, Number markValue) {
-    WritableRaster result = getOverlappingCells(gc,g,markValue,null);
-    return new GridCoverageFactory().create("",result,gc.getEnvelope());
-  }
+	/**
+	 * Marks all raster cells, which are intersected by a {@link Geometry}.
+	 * 
+	 * @param gc
+	 *            the raster
+	 * @param g
+	 *            Geometry, checked for intersection
+	 * @param markValue
+	 *            value the intersected cells are marked with
+	 * @return <b>a NEW instance of {@link GridCoverage2D}!!</b>
+	 */
+	public static GridCoverage2D getOverlappingCells(GridCoverage2D gc,
+			Geometry g, Number markValue) {
+		WritableRaster result = getOverlappingCells(gc, g, markValue, null);
+		return new GridCoverageFactory().create("", result, gc.getEnvelope());
+	}
 }

Modified: trunk/src/schmitzm/geotools/styling/StylingUtil.java
===================================================================
--- trunk/src/schmitzm/geotools/styling/StylingUtil.java	2010-11-03 09:36:26 UTC (rev 1211)
+++ trunk/src/schmitzm/geotools/styling/StylingUtil.java	2010-11-03 10:49:38 UTC (rev 1212)
@@ -2930,34 +2930,38 @@
 	 * @throws IOException
 	 * @throws TransformerException
 	 */
-	public static final boolean saveStyleToSLD(Style origStyle, File exportFile)
-			throws TransformerException, IOException {
+	public static final boolean saveStyleToSld(Style origStyle, File exportFile)
+			throws IOException {
+		try {
 
-		// Wenn Datei nicht mit .sld endet, die Dateierweiterung
-		// anhängen
-		exportFile = IOUtil.appendFileExt(exportFile, ".sld");
+			// Wenn Datei nicht mit .sld endet, die Dateierweiterung
+			// anhängen
+			exportFile = IOUtil.appendFileExt(exportFile, ".sld");
 
-		SLDTRANSFORMER.setIndentation(2);
+			SLDTRANSFORMER.setIndentation(2);
 
-		Style exportStyle = removeSelectionFeatureTypeStyle(origStyle);
+			Style exportStyle = removeSelectionFeatureTypeStyle(origStyle);
 
-		// Nur in Datei speichern, wenn
-		if (!isStyleDifferent(exportStyle, exportFile)) {
-			return false;
-		}
+			// Nur in Datei speichern, wenn
+			if (!isStyleDifferent(exportStyle, exportFile)) {
+				return false;
+			}
 
-		SLDTRANSFORMER.transform(exportStyle, new FileWriter(exportFile));
+			SLDTRANSFORMER.transform(exportStyle, new FileWriter(exportFile));
 
-		List<Exception> validateSld = validateSld(new FileInputStream(
-				exportFile));
-		if (validateSld.size() > 0) {
-			LOGGER.error(exportFile + " is not SLD valid: "
-					+ validateSld.size() + " exceptions");
+			List<Exception> validateSld = validateSld(new FileInputStream(
+					exportFile));
+			if (validateSld.size() > 0) {
+				LOGGER.error(exportFile + " is not SLD valid: "
+						+ validateSld.size() + " exceptions");
+			}
+			for (Exception e : validateSld) {
+				LOGGER.warn(exportFile + e.getLocalizedMessage(), e);
+			}
+		} catch (TransformerException te) {
+			LOGGER.warn(te);
+			return false;
 		}
-		for (Exception e : validateSld) {
-			LOGGER.warn(exportFile + e.getLocalizedMessage(), e);
-		}
-
 		return true;
 	}
 
@@ -2969,7 +2973,8 @@
 		try {
 			parser.validate(is);
 		} catch (Exception e) {
-			return Arrays.asList(e);
+			// return Arrays.asList(e);
+			throw new RuntimeException("Exception while parsing " + is);
 		}
 
 		return parser.getValidationErrors();
@@ -3121,9 +3126,13 @@
 		// Bytestream not file!
 		Style s = STYLE_BUILDER.createStyle();
 		s.featureTypeStyles().add(fts);
+		return validates(s);
+	}
+
+	public static boolean validates(Style style) throws IOException {
+		// Bytestream not file!
 		File tempFile = File.createTempFile("testing", ".sld");
-		tempFile.createNewFile();
-		saveStyleToSLD(s, tempFile);
+		saveStyleToSld(style, tempFile);
 		return validates(new FileInputStream(tempFile));
 	}
 }

Modified: trunk/src/skrueger/geotools/StyledGridCoverageReader.java
===================================================================
--- trunk/src/skrueger/geotools/StyledGridCoverageReader.java	2010-11-03 09:36:26 UTC (rev 1211)
+++ trunk/src/skrueger/geotools/StyledGridCoverageReader.java	2010-11-03 10:49:38 UTC (rev 1212)
@@ -45,206 +45,281 @@
 
 /**
  * This class provides a simple implementation of {@link StyledLayerInterface}
- * for {@link AbstractGridCoverage2DReader}. The uncache functionality is not supported,
- * because if the coverage is read once this class bases on an existing {@link GridCoverage2D}
- * object in memory.
- * @author <a href="mailto:martin.schmitz at koeln.de">Martin Schmitz</a> (University of Bonn/Germany)
+ * for {@link AbstractGridCoverage2DReader}. The uncache functionality is not
+ * supported, because if the coverage is read once this class bases on an
+ * existing {@link GridCoverage2D} object in memory.
+ * 
+ * @author <a href="mailto:martin.schmitz at koeln.de">Martin Schmitz</a>
+ *         (University of Bonn/Germany)
  * @version 1.0
  */
-public class StyledGridCoverageReader extends AbstractStyledLayer<AbstractGridCoverage2DReader> implements StyledGridCoverageReaderInterface {
+public class StyledGridCoverageReader extends
+		AbstractStyledLayer<AbstractGridCoverage2DReader> implements
+		StyledGridCoverageReaderInterface {
 	@Override
 	public ReferencedEnvelope getReferencedEnvelope() {
 		return new ReferencedEnvelope(getEnvelope(), getCrs());
 	}
 
-  /** Holds the meta data for displaying a legend. */
-  protected RasterLegendData legendData = null;
+	/** Holds the meta data for displaying a legend. */
+	protected RasterLegendData legendData = null;
 
-  /**
-   * Creates a styled grid with language-specific informations.
-   * @param gcr the grid reader
-   * @param id a unique ID for the object
-   * @param title a (language-specific) short description
-   * @param desc a (language-specific) long description
-   * @param keywords (language-specific) keywords for the geo objects
-   * @param style a display style (if {@code null}, a default style is created)
-   * @param legendData meta data for displaying a legend
-   * @param icon an icon for the object (can be {@code null})
-   * @exception IllegalArgumentException if {@code null} is given as ID or geo object
-   */
-  public StyledGridCoverageReader(AbstractGridCoverage2DReader gcr, String id, Translation title, Translation desc, Translation keywords, Style style, RasterLegendData legendData, ImageIcon icon) {
-    super(gcr, JTSUtil.createEnvelope(gcr.getOriginalEnvelope()), gcr.getCrs(), id, title, desc, keywords, style, icon);
-    setLegendMetaData(legendData);
-  }
+	/**
+	 * Creates a styled grid with language-specific informations.
+	 * 
+	 * @param gcr
+	 *            the grid reader
+	 * @param id
+	 *            a unique ID for the object
+	 * @param title
+	 *            a (language-specific) short description
+	 * @param desc
+	 *            a (language-specific) long description
+	 * @param keywords
+	 *            (language-specific) keywords for the geo objects
+	 * @param style
+	 *            a display style (if {@code null}, a default style is created)
+	 * @param legendData
+	 *            meta data for displaying a legend
+	 * @param icon
+	 *            an icon for the object (can be {@code null})
+	 * @exception IllegalArgumentException
+	 *                if {@code null} is given as ID or geo object
+	 */
+	public StyledGridCoverageReader(AbstractGridCoverage2DReader gcr,
+			String id, Translation title, Translation desc,
+			Translation keywords, Style style, RasterLegendData legendData,
+			ImageIcon icon) {
+		super(gcr, JTSUtil.createEnvelope(gcr.getOriginalEnvelope()), gcr
+				.getCrs(), id, title, desc, keywords, style, icon);
+		setLegendMetaData(legendData);
+	}
 
-  /**
-   * Creates a styled grid with language-specific informations.
-   * @param gcr the grid reader
-   * @param id a unique ID for the object
-   * @param title a (language-specific) short description
-   * @param desc a (language-specific) long description
-   * @param keywords (language-specific) keywords for the geo objects
-   * @param style a display style with legend information
-   * @param icon an icon for the object (can be {@code null})
-   * @exception IllegalArgumentException if {@code null} is given as ID or geo object
-   */
-  public StyledGridCoverageReader(AbstractGridCoverage2DReader gcr, String id, Translation title, Translation desc, Translation keywords, StyledLayerStyle<RasterLegendData> style, ImageIcon icon) {
-    super(gcr, JTSUtil.createEnvelope(gcr.getOriginalEnvelope()), gcr.getCrs(), id, title, desc, keywords, style != null ? style.getGeoObjectStyle() : null, icon);
-    setLegendMetaData( style != null ? style.getMetaData() : null );
-  }
+	/**
+	 * Creates a styled grid with language-specific informations.
+	 * 
+	 * @param gcr
+	 *            the grid reader
+	 * @param id
+	 *            a unique ID for the object
+	 * @param title
+	 *            a (language-specific) short description
+	 * @param desc
+	 *            a (language-specific) long description
+	 * @param keywords
+	 *            (language-specific) keywords for the geo objects
+	 * @param style
+	 *            a display style with legend information
+	 * @param icon
+	 *            an icon for the object (can be {@code null})
+	 * @exception IllegalArgumentException
+	 *                if {@code null} is given as ID or geo object
+	 */
+	public StyledGridCoverageReader(AbstractGridCoverage2DReader gcr,
+			String id, Translation title, Translation desc,
+			Translation keywords, StyledLayerStyle<RasterLegendData> style,
+			ImageIcon icon) {
+		super(gcr, JTSUtil.createEnvelope(gcr.getOriginalEnvelope()), gcr
+				.getCrs(), id, title, desc, keywords, style != null ? style
+				.getGeoObjectStyle() : null, icon);
+		setLegendMetaData(style != null ? style.getMetaData() : null);
+	}
 
-  /**
-   * Creates a styled grid with a language-specific title, no long description, no
-   * keywords and no icon.
-   * @param gcr the grid reader
-   * @param id a unique ID for the object
-   * @param title a short description
-   * @param style a display style (if {@code null}, a default style is created)
-   * @param legendData meta data for displaying a legend
-   * @exception IllegalArgumentException if {@code null} is given as ID or geo object
-   */
-  public StyledGridCoverageReader(AbstractGridCoverage2DReader gcr, String id, Translation title, Style style, RasterLegendData legendData) {
-    this(gcr, id, title, null, null, style, legendData, null);
-  }
+	/**
+	 * Creates a styled grid with a language-specific title, no long
+	 * description, no keywords and no icon.
+	 * 
+	 * @param gcr
+	 *            the grid reader
+	 * @param id
+	 *            a unique ID for the object
+	 * @param title
+	 *            a short description
+	 * @param style
+	 *            a display style (if {@code null}, a default style is created)
+	 * @param legendData
+	 *            meta data for displaying a legend
+	 * @exception IllegalArgumentException
+	 *                if {@code null} is given as ID or geo object
+	 */
+	public StyledGridCoverageReader(AbstractGridCoverage2DReader gcr,
+			String id, Translation title, Style style,
+			RasterLegendData legendData) {
+		this(gcr, id, title, null, null, style, legendData, null);
+	}
 
-  /**
-   * Creates a styled grid with non-translated informations.
-   * @param gcr the grid reader
-   * @param id a unique ID for the object
-   * @param title a short description
-   * @param desc a long description
-   * @param keywords keywords for the geo objects
-   * @param style a display style (if {@code null}, a default style is created)
-   * @param legendData meta data for displaying a legend
-   * @param icon an icon for the object (can be {@code null})
-   * @exception IllegalArgumentException if {@code null} is given as ID or geo object
-   */
-  public StyledGridCoverageReader(AbstractGridCoverage2DReader gcr, String id, String title, String desc, String keywords, Style style, RasterLegendData legendData, ImageIcon icon) {
-    this(gcr, id, (Translation)null, null, null, style, legendData, icon);
-    setTitle(title);
-    setDesc(desc);
-    setKeywords(keywords);
-  }
+	/**
+	 * Creates a styled grid with non-translated informations.
+	 * 
+	 * @param gcr
+	 *            the grid reader
+	 * @param id
+	 *            a unique ID for the object
+	 * @param title
+	 *            a short description
+	 * @param desc
+	 *            a long description
+	 * @param keywords
+	 *            keywords for the geo objects
+	 * @param style
+	 *            a display style (if {@code null}, a default style is created)
+	 * @param legendData
+	 *            meta data for displaying a legend
+	 * @param icon
+	 *            an icon for the object (can be {@code null})
+	 * @exception IllegalArgumentException
+	 *                if {@code null} is given as ID or geo object
+	 */
+	public StyledGridCoverageReader(AbstractGridCoverage2DReader gcr,
+			String id, String title, String desc, String keywords, Style style,
+			RasterLegendData legendData, ImageIcon icon) {
+		this(gcr, id, (Translation) null, null, null, style, legendData, icon);
+		setTitle(title);
+		setDesc(desc);
+		setKeywords(keywords);
+	}
 
-  /**
-   * Creates a styled grid with non-translated informations.
-   * @param gcr the grid reader
-   * @param id a unique ID for the object
-   * @param title a short description
-   * @param desc a long description
-   * @param keywords keywords for the geo objects
-   * @param style a display style with legend information
-   * @param icon an icon for the object (can be {@code null})
-   * @exception IllegalArgumentException if {@code null} is given as ID or geo object
-   */
-  public StyledGridCoverageReader(AbstractGridCoverage2DReader gcr, String id, String title, String desc, String keywords, StyledLayerStyle<RasterLegendData> style, ImageIcon icon) {
-    this(gcr,
-         id,
-         title,
-         desc,
-         keywords,
-         style != null ? style.getGeoObjectStyle() : null,
-         style != null ? style.getMetaData() : null,
-         icon
-    );
-  }
+	/**
+	 * Creates a styled grid with non-translated informations.
+	 * 
+	 * @param gcr
+	 *            the grid reader
+	 * @param id
+	 *            a unique ID for the object
+	 * @param title
+	 *            a short description
+	 * @param desc
+	 *            a long description
+	 * @param keywords
+	 *            keywords for the geo objects
+	 * @param style
+	 *            a display style with legend information
+	 * @param icon
+	 *            an icon for the object (can be {@code null})
+	 * @exception IllegalArgumentException
+	 *                if {@code null} is given as ID or geo object
+	 */
+	public StyledGridCoverageReader(AbstractGridCoverage2DReader gcr,
+			String id, String title, String desc, String keywords,
+			StyledLayerStyle<RasterLegendData> style, ImageIcon icon) {
+		this(gcr, id, title, desc, keywords, style != null ? style
+				.getGeoObjectStyle() : null, style != null ? style
+				.getMetaData() : null, icon);
+	}
 
-  /**
-   * Creates a styled grid with a non-translated title, no long description, no
-   * keywords and no icon.
-   * @param gcr the grid reader
-   * @param id a unique ID for the object
-   * @param title a short description
-   * @param style a display style (if {@code null}, a default style is created)
-   * @exception IllegalArgumentException if {@code null} is given as ID or geo object
-   */
-  public StyledGridCoverageReader(AbstractGridCoverage2DReader gcr, String id, String title, Style style, RasterLegendData legendData) {
-    this(gcr, id, title, null, null, style, legendData, null);
-  }
+	/**
+	 * Creates a styled grid with a non-translated title, no long description,
+	 * no keywords and no icon.
+	 * 
+	 * @param gcr
+	 *            the grid reader
+	 * @param id
+	 *            a unique ID for the object
+	 * @param title
+	 *            a short description
+	 * @param style
+	 *            a display style (if {@code null}, a default style is created)
+	 * @exception IllegalArgumentException
+	 *                if {@code null} is given as ID or geo object
+	 */
+	public StyledGridCoverageReader(AbstractGridCoverage2DReader gcr,
+			String id, String title, Style style, RasterLegendData legendData) {
+		this(gcr, id, title, null, null, style, legendData, null);
+	}
 
-  /**
-   * Creates a styled grid with a non-translated title, no long description, no
-   * keywords and no icon.
-   * @param gcr the grid reader
-   * @param id a unique ID for the object
-   * @param title a short description
-   * @param style a display style with legend information
-   * @exception IllegalArgumentException if {@code null} is given as ID or geo object
-   */
-  public StyledGridCoverageReader(AbstractGridCoverage2DReader gcr, String id, String title, StyledLayerStyle<RasterLegendData> style) {
-    this(gcr,
-         id,
-         title,
-         null,
-         null,
-         style != null ? style.getGeoObjectStyle() : null,
-         style != null ? style.getMetaData() : null,
-         null
-    );
-  }
+	/**
+	 * Creates a styled grid with a non-translated title, no long description,
+	 * no keywords and no icon.
+	 * 
+	 * @param gcr
+	 *            the grid reader
+	 * @param id
+	 *            a unique ID for the object
+	 * @param title
+	 *            a short description
+	 * @param style
+	 *            a display style with legend information
+	 * @exception IllegalArgumentException
+	 *                if {@code null} is given as ID or geo object
+	 */
+	public StyledGridCoverageReader(AbstractGridCoverage2DReader gcr,
+			String id, String title, StyledLayerStyle<RasterLegendData> style) {
+		this(gcr, id, title, null, null, style != null ? style
+				.getGeoObjectStyle() : null, style != null ? style
+				.getMetaData() : null, null);
+	}
 
-  /**
-   * Creates a default style for a {@link GridCoverage2D}.
-   * @see GridUtil#createDefaultStyle()
-   */
-  protected Style createDefaultStyle() {
-    return GridUtil.createDefaultStyle();
-  }
+	public StyledGridCoverageReader(AbstractGridCoverage2DReader reader) {
+		this(reader, "", "", null, null);
+	}
 
-  /**
-   * Returns the meta data needed for displaying a legend.
-   */
-  public RasterLegendData getLegendMetaData() {
-    return legendData;
-  }
+	/**
+	 * Creates a default style for a {@link GridCoverage2D}.
+	 * 
+	 * @see GridUtil#createDefaultStyle()
+	 */
+	protected Style createDefaultStyle() {
+		return GridUtil.createDefaultStyle();
+	}
 
-  /**
-   * Sets the meta data needed for displaying a legend.
-   * If {@code legendData} is {@code null} an empty {@link RasterLegendData}
-   * (without gaps) is set, so {@link #getLegendMetaData()} never returns {@code null}.
-   * @param legendData legend meta data
-   */
-  public void setLegendMetaData(RasterLegendData legendData) {
-    this.legendData = (legendData != null) ? legendData : new RasterLegendData(false);
-  }
+	/**
+	 * Returns the meta data needed for displaying a legend.
+	 */
+	public RasterLegendData getLegendMetaData() {
+		return legendData;
+	}
 
-  /**
-   * Simply sets the {@link #geoObject}, {@link #crs}, {@link #envelope} and
-   * {@link #legendData} to {@code null}.
-   */
-  public void dispose() {
-    this.geoObject  = null;
-    this.envelope   = null;
-    this.crs        = null;
-    this.legendData = null;
-  }
+	/**
+	 * Sets the meta data needed for displaying a legend. If {@code legendData}
+	 * is {@code null} an empty {@link RasterLegendData} (without gaps) is set,
+	 * so {@link #getLegendMetaData()} never returns {@code null}.
+	 * 
+	 * @param legendData
+	 *            legend meta data
+	 */
+	public void setLegendMetaData(RasterLegendData legendData) {
+		this.legendData = (legendData != null) ? legendData
+				: new RasterLegendData(false);
+	}
 
-  /**
-   * Tests whether the geo object is disposed.
-   * @return boolean
-   */
-  public boolean isDisposed() {
-    return geoObject == null;
-  }
+	/**
+	 * Simply sets the {@link #geoObject}, {@link #crs}, {@link #envelope} and
+	 * {@link #legendData} to {@code null}.
+	 */
+	public void dispose() {
+		this.geoObject = null;
+		this.envelope = null;
+		this.crs = null;
+		this.legendData = null;
+	}
 
-  /**
-   * Does nothing, because the {@link AbstractStyledLayer} bases on existing
-   * objects (in memory) which can not be uncached and reloaded.
-   */
-  public void uncache() {
-    LOGGER.warn("Uncache functionality is not supported. Object remains in memory.");
-  }
+	/**
+	 * Tests whether the geo object is disposed.
+	 * 
+	 * @return boolean
+	 */
+	public boolean isDisposed() {
+		return geoObject == null;
+	}
 
-  /*
-   * (non-Javadoc)
-   * @see skrueger.geotools.StyledLayerInterface#getInfoURL()
-   */
-  public URL getInfoURL() {
-    return null;
-  }
+	/**
+	 * Does nothing, because the {@link AbstractStyledLayer} bases on existing
+	 * objects (in memory) which can not be uncached and reloaded.
+	 */
+	public void uncache() {
+		LOGGER.warn("Uncache functionality is not supported. Object remains in memory.");
+	}
 
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see skrueger.geotools.StyledLayerInterface#getInfoURL()
+	 */
+	public URL getInfoURL() {
+		return null;
+	}
 
-  /**
+	/**
 	 * If true, this layer will not be shown in the legend. Default = false
 	 */
 	/**
@@ -256,9 +331,7 @@
 	 * nicht in der Legende auftauchen sollen. Meines Wissens hat keiner bisher
 	 * die Funktion genutzt.
 	 * 
-  public boolean isHideInLegend() {
-    return false;
-  }
+	 * public boolean isHideInLegend() { return false; }
 	 */
-  
+
 }

Modified: trunk/src/skrueger/geotools/StyledLayerUtil.java
===================================================================
--- trunk/src/skrueger/geotools/StyledLayerUtil.java	2010-11-03 09:36:26 UTC (rev 1211)
+++ trunk/src/skrueger/geotools/StyledLayerUtil.java	2010-11-03 10:49:38 UTC (rev 1212)
@@ -878,7 +878,7 @@
 		// Store the SLD
 		final Style sldStyle = style.getGeoObjectStyle();
 		if (sldStyle != null) {
-			StylingUtil.saveStyleToSLD(sldStyle, IOUtil.changeFileExt(new File(
+			StylingUtil.saveStyleToSld(sldStyle, IOUtil.changeFileExt(new File(
 					geoObjectURL.toURI()), sldExt));
 		}
 
@@ -1156,7 +1156,7 @@
 				final Parameter readGG = new Parameter(
 						AbstractGridFormat.READ_GRIDGEOMETRY2D);
 
-				final ReferencedEnvelope mapExtend = new org.geotools.geometry.jts.ReferencedEnvelope(
+				final ReferencedEnvelope mapExtend = new ReferencedEnvelope(
 						styledGrid.getEnvelope(), styledGrid.getCrs());
 
 				readGG.setValue(new GridGeometry2D(new GeneralGridEnvelope(

Modified: trunk/src/skrueger/geotools/selection/FeatureMapLayerSelectionSynchronizer.java
===================================================================
--- trunk/src/skrueger/geotools/selection/FeatureMapLayerSelectionSynchronizer.java	2010-11-03 09:36:26 UTC (rev 1211)
+++ trunk/src/skrueger/geotools/selection/FeatureMapLayerSelectionSynchronizer.java	2010-11-03 10:49:38 UTC (rev 1212)
@@ -298,7 +298,7 @@
 				// SK-Debug
 				try {
 					//
-					StylingUtil.saveStyleToSLD(newStyle, new File(
+					StylingUtil.saveStyleToSld(newStyle, new File(
 							"/home/stefan/Desktop/selection.sld"));
 				} catch (final Throwable e) {
 				}

Modified: trunk/src_junit/schmitzm/geotools/feature/FeatureUtilTest.java
===================================================================
--- trunk/src_junit/schmitzm/geotools/feature/FeatureUtilTest.java	2010-11-03 09:36:26 UTC (rev 1211)
+++ trunk/src_junit/schmitzm/geotools/feature/FeatureUtilTest.java	2010-11-03 10:49:38 UTC (rev 1212)
@@ -27,7 +27,7 @@
 import schmitzm.geotools.feature.FeatureUtil.GeometryForm;
 import schmitzm.geotools.io.GeoImportUtil;
 import schmitzm.swing.TestingUtil;
-import schmitzm.swing.TestingUtil.TestDatasets;
+import schmitzm.swing.TestingUtil.TestDatasetsVector;
 
 import com.vividsolutions.jts.geom.Geometry;
 import com.vividsolutions.jts.geom.Point;
@@ -93,7 +93,7 @@
 	public void testModifyFeatureSource() throws Exception {
 
 		FeatureSource<SimpleFeatureType, SimpleFeature> sourceFs = TestingUtil
-				.getTestFeatureSource(TestDatasets.arabicInHeader);
+				.getTestFeatureSource(TestDatasetsVector.arabicInHeader);
 		assertEquals(4, sourceFs.getSchema().getAttributeCount());
 		assertEquals("the_geom", sourceFs.getSchema().getDescriptor(0)
 				.getLocalName());

Modified: trunk/src_junit/schmitzm/geotools/styling/StylingUtilTest.java
===================================================================
--- trunk/src_junit/schmitzm/geotools/styling/StylingUtilTest.java	2010-11-03 09:36:26 UTC (rev 1211)
+++ trunk/src_junit/schmitzm/geotools/styling/StylingUtilTest.java	2010-11-03 10:49:38 UTC (rev 1212)
@@ -54,7 +54,7 @@
 	@Test
 	public void testSelectionStyles() throws Throwable {
 
-		FeatureCollection<SimpleFeatureType, SimpleFeature> testFeatures = TestingUtil.TestDatasets.kreise
+		FeatureCollection<SimpleFeatureType, SimpleFeature> testFeatures = TestingUtil.TestDatasetsVector.kreise
 				.getFeatureCollection();
 
 		JPanel jPanel = new JPanel();

Modified: trunk/src_junit/schmitzm/jfree/feature/style/FeatureChartStyleTest.java
===================================================================
--- trunk/src_junit/schmitzm/jfree/feature/style/FeatureChartStyleTest.java	2010-11-03 09:36:26 UTC (rev 1211)
+++ trunk/src_junit/schmitzm/jfree/feature/style/FeatureChartStyleTest.java	2010-11-03 10:49:38 UTC (rev 1212)
@@ -17,7 +17,6 @@
 import java.util.Iterator;
 import java.util.List;
 
-import org.apache.log4j.Logger;
 import org.geotools.feature.FeatureCollection;
 import org.jfree.chart.JFreeChart;
 import org.jfree.chart.axis.AxisState;
@@ -62,7 +61,7 @@
 	@Test
 	public void testChartStyleCopyToWithScatterChartStyle() throws Throwable {
 
-		FeatureCollection<SimpleFeatureType, SimpleFeature> testFeatures = TestingUtil.TestDatasets.kreise
+		FeatureCollection<SimpleFeatureType, SimpleFeature> testFeatures = TestingUtil.TestDatasetsVector.kreise
 				.getFeatureCollection();
 		FeatureChartStyle style1 = new FeatureScatterChartStyle("1");
 		style1.setAttributeName(0, "jahr");
@@ -83,7 +82,7 @@
 	@Test
 	public void testChartStyleCopyToWithBasicChartStyle() throws Throwable {
 
-		FeatureCollection<SimpleFeatureType, SimpleFeature> testFeatures = TestingUtil.TestDatasets.kreise
+		FeatureCollection<SimpleFeatureType, SimpleFeature> testFeatures = TestingUtil.TestDatasetsVector.kreise
 				.getFeatureCollection();
 		FeatureChartStyle style1 = new FeatureBasicChartStyle("1",
 				ChartType.BAR);
@@ -153,7 +152,7 @@
 	@Test
 	public void testLineChartDualAxis() throws Throwable {
 
-		FeatureCollection<SimpleFeatureType, SimpleFeature> testFeatures = TestingUtil.TestDatasets.kreise
+		FeatureCollection<SimpleFeatureType, SimpleFeature> testFeatures = TestingUtil.TestDatasetsVector.kreise
 				.getFeatureCollection();
 
 		// Daten auf korrektheit überprüfen
@@ -374,7 +373,7 @@
 		String yAxisAttName2 = "w_bev";
 		String groupAttName = "jahr";
 
-		FeatureCollection<SimpleFeatureType, SimpleFeature> features = TestingUtil.TestDatasets.kreise
+		FeatureCollection<SimpleFeatureType, SimpleFeature> features = TestingUtil.TestDatasetsVector.kreise
 				.getFeatureCollection();
 
 		log.info("BarChart für " + features.size() + " Features wird erstellt");
@@ -458,7 +457,7 @@
 	// @Ignore
 	public void testScatterChart() throws Throwable {
 
-	  FeatureCollection<SimpleFeatureType, SimpleFeature> testFeatures = TestingUtil.TestDatasets.kreise.getFeatureCollection();
+	  FeatureCollection<SimpleFeatureType, SimpleFeature> testFeatures = TestingUtil.TestDatasetsVector.kreise.getFeatureCollection();
 	  SimpleFeatureType testDatenSchema = testFeatures.getSchema();
 
 	  // Daten auf korrektheit überprüfen
@@ -520,7 +519,7 @@
 	// @Ignore
 	public void testBarChartDualAxis() throws Throwable {
 
-		FeatureCollection<SimpleFeatureType, SimpleFeature> testFeatures = TestingUtil.TestDatasets.kreise
+		FeatureCollection<SimpleFeatureType, SimpleFeature> testFeatures = TestingUtil.TestDatasetsVector.kreise
 				.getFeatureCollection();
 
 		// Daten auf korrektheit überprüfen
@@ -620,7 +619,7 @@
 	@Test
 	public void testBarChartSortedSeries() throws Throwable {
 
-		FeatureCollection<SimpleFeatureType, SimpleFeature> testFeatures = TestingUtil.TestDatasets.kreise
+		FeatureCollection<SimpleFeatureType, SimpleFeature> testFeatures = TestingUtil.TestDatasetsVector.kreise
 				.getFeatureCollection();
 
 		// Daten auf korrektheit überprüfen
@@ -725,7 +724,7 @@
 	public void testBarChartForcedCategories() throws Throwable {
 
 		// Testdatenshape einlesen
-		FeatureCollection<SimpleFeatureType, SimpleFeature> testFeatures = TestingUtil.TestDatasets.kreise
+		FeatureCollection<SimpleFeatureType, SimpleFeature> testFeatures = TestingUtil.TestDatasetsVector.kreise
 				.getFeatureCollection();
 
 		// Daten auf korrektheit überprüfen
@@ -790,7 +789,7 @@
 	@Test
 	public void testLineChartAsCategories() throws Throwable {
 
-		FeatureCollection<SimpleFeatureType, SimpleFeature> testFeatures = TestingUtil.TestDatasets.kreise
+		FeatureCollection<SimpleFeatureType, SimpleFeature> testFeatures = TestingUtil.TestDatasetsVector.kreise
 				.getFeatureCollection();
 
 		// Daten auf korrektheit überprüfen
@@ -897,7 +896,7 @@
 	@Test
 	public void testLineChartNOTCategories() throws Throwable {
 
-		FeatureCollection<SimpleFeatureType, SimpleFeature> testFeatures = TestingUtil.TestDatasets.kreise
+		FeatureCollection<SimpleFeatureType, SimpleFeature> testFeatures = TestingUtil.TestDatasetsVector.kreise
 				.getFeatureCollection();
 
 		// Daten auf korrektheit überprüfen

Modified: trunk/src_junit/schmitzm/junit/TestingClass.java
===================================================================
--- trunk/src_junit/schmitzm/junit/TestingClass.java	2010-11-03 09:36:26 UTC (rev 1211)
+++ trunk/src_junit/schmitzm/junit/TestingClass.java	2010-11-03 10:49:38 UTC (rev 1212)
@@ -2,7 +2,6 @@
 
 import org.apache.log4j.Logger;
 
-import schmitzm.jfree.feature.style.FeatureChartStyleTest;
 import schmitzm.lang.LangUtil;
 import schmitzm.swing.TestingUtil;
 

Modified: trunk/src_junit/schmitzm/swing/TestingUtil.java
===================================================================
--- trunk/src_junit/schmitzm/swing/TestingUtil.java	2010-11-03 09:36:26 UTC (rev 1211)
+++ trunk/src_junit/schmitzm/swing/TestingUtil.java	2010-11-03 10:49:38 UTC (rev 1212)
@@ -29,20 +29,22 @@
 import javax.swing.JPanel;
 
 import org.apache.log4j.ConsoleAppender;
-import org.apache.log4j.Layout;
 import org.apache.log4j.Level;
 import org.apache.log4j.Logger;
 import org.apache.log4j.PatternLayout;
-import org.apache.log4j.SimpleLayout;
+import org.geotools.coverage.grid.io.AbstractGridCoverage2DReader;
 import org.geotools.data.DataStore;
 import org.geotools.data.DataUtilities;
 import org.geotools.data.FeatureSource;
 import org.geotools.data.shapefile.ShapefileDataStore;
 import org.geotools.feature.FeatureCollection;
+import org.geotools.gce.arcgrid.ArcGridReader;
+import org.geotools.gce.geotiff.GeoTiffReader;
 import org.geotools.geometry.jts.ReferencedEnvelope;
 import org.geotools.map.DefaultMapContext;
 import org.geotools.map.DefaultMapLayer;
 import org.geotools.renderer.lite.StreamingRenderer;
+import org.geotools.styling.Style;
 import org.jfree.chart.ChartFrame;
 import org.jfree.chart.JFreeChart;
 import org.junit.Ignore;
@@ -50,16 +52,17 @@
 import org.opengis.feature.simple.SimpleFeatureType;
 
 import schmitzm.geotools.io.GeoImportUtil;
+import schmitzm.geotools.styling.StylingUtil;
 import schmitzm.io.IOUtil;
 import schmitzm.lang.LangUtil;
 import skrueger.geotools.StyledFS;
+import skrueger.geotools.StyledGridCoverageReader;
 
 /**
  * Helpers to test Swing applications in general. <br/>
  * If not set to @Ignore, HUDSON will complain
  * "java.lang.Exception: No runnable methods"
  */
-
 @Ignore
 public class TestingUtil {
 
@@ -72,17 +75,34 @@
 	}
 
 	/**
-	 * List of available test datasets
+	 * List of available vector test datasets
 	 */
-	public static enum TestDatasets {
+	public static enum TestDatasetsVector {
+
+		/**
+		 * This Shapefile has been created with arabic characters in the dbf
+		 * header aka. attribute names
+		 */
 		arabicInHeader(
-				"/schmitzm/geotools/feature/arabicShapefiles/arabicwitharabicinheader.shp"), kreise(
-				"/schmitzm/jfree/feature/style/testLineChartShape/testKreiseLineChart.shp"), countryShp(
-				"/shapes/shp countries/country.shp");
+				"/schmitzm/geotools/feature/arabicShapefiles/arabicwitharabicinheader.shp"),
+		/**
+		 * Enhält Daten, welche den KECK Daten ähnlich sind
+		 */
+		kreise(
+				"/schmitzm/jfree/feature/style/testLineChartShape/testKreiseLineChart.shp"),
+		/**
+		 * A Shapefile of the wolrds border, TODO has to be made smaller!
+		 */
+		countryShp("/shapes/shp countries/country.shp"),
+		/**
+		 * A tiny Shapefile with an .sld that contains a QuantilesClassification
+		 * with manually adapted colors
+		 */
+		polygonSnow("/shapes/polygonSnowShape/polygonLayerSnow.shp");
 
 		private final String resLoc;
 
-		private TestDatasets(String resLoc) {
+		private TestDatasetsVector(String resLoc) {
 			this.resLoc = resLoc;
 		}
 
@@ -116,6 +136,46 @@
 	}
 
 	/**
+	 * List of available vector test datasets
+	 */
+	public static enum TestDatasetsRaster {
+		geotiffWithSld("/rasters/rasterGeotiffWithSLD/geotiffwithsld.sld"), geotiffRGBWithoutSLD(
+				"/rasters/rasterGeotiffRGBWithoutSLD/geotiff_rgb_ohnesld.tif"), arcAscii(
+				"/rasters/rasterASCIIWithSLDTransparency/asciiWithSldTransparency.asc");
+
+		private final String resLoc;
+
+		private TestDatasetsRaster(String resLoc) {
+			this.resLoc = resLoc;
+		}
+
+		public String getResLoc() {
+			return resLoc;
+		}
+
+		public URL getUrl() {
+			return TestingUtil.class.getResource(getResLoc());
+		}
+
+		public AbstractGridCoverage2DReader getReader() throws IOException {
+			if (resLoc.endsWith("tif"))
+				return new GeoTiffReader(getUrl());
+			else if (resLoc.endsWith("asc"))
+				return new ArcGridReader(getUrl());
+			return null;
+		}
+
+		public StyledGridCoverageReader getStyled() throws IOException {
+			return new StyledGridCoverageReader(getReader());
+		}
+
+		public Style getSldStyle() {
+			return StylingUtil.loadSLD(DataUtilities.changeUrlExt(getUrl(),
+					".sld"))[0];
+		}
+	}
+
+	/**
 	 * All these GUI-initiating testGui(...) methods are only executed if the
 	 * system is not running in headless mode.
 	 */
@@ -253,7 +313,7 @@
 	 * Stellt Test-FeatureCollections zur Verfügung
 	 */
 	public static FeatureSource<SimpleFeatureType, SimpleFeature> getTestFeatureSource(
-			TestDatasets dataset) throws IOException {
+			TestDatasetsVector dataset) throws IOException {
 		// Testdatenshape einlesen
 		// URL resourceUrl = dataset.getUrl();
 		//
@@ -262,7 +322,7 @@
 
 		ShapefileDataStore store = (ShapefileDataStore) dataset.getDataStore();
 
-		if (dataset == TestDatasets.arabicInHeader) {
+		if (dataset == TestDatasetsVector.arabicInHeader) {
 			// TODO overthink
 			store.setStringCharset(Charset.forName("windows-1256"));
 		}

Added: trunk/src_junit/skrueger/geotools/StyledLayerUtilTest.java
===================================================================
--- trunk/src_junit/skrueger/geotools/StyledLayerUtilTest.java	2010-11-03 09:36:26 UTC (rev 1211)
+++ trunk/src_junit/skrueger/geotools/StyledLayerUtilTest.java	2010-11-03 10:49:38 UTC (rev 1212)
@@ -0,0 +1,31 @@
+package skrueger.geotools;
+
+import static org.junit.Assert.fail;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+public class StyledLayerUtilTest {
+
+	@Before
+	public void setUp() throws Exception {
+	}
+
+	@After
+	public void tearDown() throws Exception {
+	}
+
+	@Test
+	public void testGetColorModel() {
+//		TestingUtil.TestDatasetsRaster.
+		//TODO
+	}
+
+	@Test
+	public void testIsStyleable() {
+		fail("Not yet implemented");
+		
+	}
+
+}


Property changes on: trunk/src_junit/skrueger/geotools/StyledLayerUtilTest.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain
Name: svn:keywords
   + Id URL
Name: svn:eol-style
   + native

Added: trunk/testresources/rasters/rasterASCIIWithSLDTransparency/asciiWithSldTransparency.asc
===================================================================
--- trunk/testresources/rasters/rasterASCIIWithSLDTransparency/asciiWithSldTransparency.asc	2010-11-03 09:36:26 UTC (rev 1211)
+++ trunk/testresources/rasters/rasterASCIIWithSLDTransparency/asciiWithSldTransparency.asc	2010-11-03 10:49:38 UTC (rev 1212)
@@ -0,0 +1,60 @@
+ncols        38
+nrows        54
+xllcorner    167285.076322698442
+yllcorner    651967.646187222330
+cellsize     14605.263157894737
+NODATA_value  -9999
+  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999
+  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999
+  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999
+  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999
+  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999
+  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999 804.83612060546875  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999
+  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999 852.61669921875 837.03375244140625 820.89141845703125 805.009521484375 793.88543701171875  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999
+  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999 855.80511474609375 841.39007568359375 826.661376953125 808.7208251953125 794.786376953125 787.93231201171875  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999
+  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999 864.44580078125 850.87933349609375 839.74102783203125 824.62255859375 810.26275634765625 798.49224853515625 788.5345458984375  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999
+  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999 878.08380126953125 865.49591064453125 858.14520263671875 849.44207763671875 839.34063720703125 824.99139404296875 808.0738525390625 797.62359619140625 806.78765869140625  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999
+  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999 895.90667724609375 884.32196044921875 879.39898681640625 874.38909912109375 867.75762939453125 856.299560546875 841.58001708984375 834.9423828125 838.31182861328125  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999
+  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999 956.39617919921875 932.62640380859375 914.3519287109375 905.51287841796875 903.89154052734375 902.15386962890625 897.51141357421875 888.61737060546875 877.29217529296875 873.05377197265625  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999
+  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999 975.38018798828125  -9999 976.49224853515625 987.04913330078125 988.8206787109375 974.812744140625 949.96893310546875 932.8309326171875 928.72515869140625 931.33868408203125 933.87750244140625 931.07861328125 922.61602783203125 909.56243896484375 898.4007568359375  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999
+  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999 963.96856689453125 954.06353759765625 958.09326171875 983.8409423828125 1002.7352294921875 1004.2994384765625 992.64227294921875 970.59912109375 955.81512451171875 955.7166748046875 962.43304443359375 969.66876220703125 969.450439453125 959.00433349609375 938.8345947265625 916.2652587890625 897.7711181640625  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999
+  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999 947.47174072265625 943.92266845703125 944.6943359375 956.42425537109375 990.513916015625 1016.24285888671875 1019.9801025390625 1011.22235107421875 994.228271484375 983.0479736328125 982.1781005859375 988.82177734375 999.532958984375 1001.87432861328125 988.89923095703125 963.6302490234375 932.431640625 909.0943603515625 886.872314453125  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999
+  -9999  -9999  -9999  -9999  -9999  -9999  -9999 978.3531494140625 966.10418701171875 957.6878662109375 955.82891845703125 961.67041015625 972.35198974609375 1000.71441650390625 1028.5166015625 1039.208984375 1035.26220703125 1021.028076171875 1010.393310546875 1006.35498046875 1009.6302490234375 1022.42010498046875 1029.373779296875 1018.37408447265625 989.9913330078125 953.38397216796875 929.84637451171875 912.49615478515625  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999
+  -9999  -9999  -9999  -9999  -9999  -9999  -9999 997.85614013671875 983.73504638671875 975.44049072265625 975.22381591796875 982.81695556640625 991.84149169921875 1016.67236328125 1045.3397216796875 1061.0179443359375 1059.5816650390625 1045.1392822265625 1033.546875 1026.784912109375 1027.2225341796875 1041.421142578125 1053.44091796875 1045.83984375 1016.30291748046875 977.94281005859375 957.159423828125 945.3907470703125  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999
+  -9999  -9999  -9999  -9999  -9999  -9999  -9999 1019.2672119140625 998.27593994140625 989.79620361328125 996.9849853515625 1011.6597900390625 1024.8153076171875 1046.81689453125 1069.755615234375 1082.7003173828125 1080.66845703125 1065.8089599609375 1052.4827880859375 1043.13427734375 1041.530029296875 1055.345703125 1070.65625 1069.552978515625 1050.229736328125 1018.8890380859375 998.4102783203125 984.67767333984375  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999
+  -9999  -9999  -9999  -9999  -9999  -9999 1054.7154541015625 1046.4466552734375 1024.7977294921875 1020.06781005859375 1043.8399658203125 1066.7362060546875 1078.8629150390625 1089.6478271484375 1098.92724609375 1103.04931640625 1098.6387939453125 1083.586669921875 1067.54638671875 1055.7806396484375 1052.4788818359375 1062.8109130859375 1078.8653564453125 1088.093017578125 1089.83984375 1072.5574951171875 1048.531005859375 1023.663330078125 1010.51776123046875  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999
+  -9999  -9999  -9999  -9999  -9999  -9999 1081.7122802734375 1078.5445556640625 1074.092041015625 1089.2462158203125 1124.2120361328125 1136.02001953125 1128.7308349609375 1122.3641357421875 1120.4617919921875 1118.951171875 1113.987548828125 1098.7032470703125 1080.5020751953125 1066.7586669921875 1061.8037109375 1069.510009765625 1085.972900390625 1102.03369140625 1116.8106689453125 1106.8494873046875 1078.122314453125 1044.1912841796875 1021.74835205078125  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999
+  -9999  -9999  -9999  -9999  -9999  -9999 1109.8216552734375 1121.4342041015625 1145.3094482421875 1176.7198486328125 1212.4674072265625 1200.8873291015625 1168.5250244140625 1150.06884765625 1147.983154296875 1149.34228515625 1140.501953125 1116.7008056640625 1095.459228515625 1079.2757568359375 1074.1431884765625 1080.9150390625 1094.415771484375 1109.35888671875 1130.431884765625 1129.9990234375 1097.357666015625  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999
+  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999 1188.450927734375 1218.2288818359375 1240.1905517578125 1224.789794921875 1192.906982421875 1179.747802734375 1187.23486328125 1195.12939453125 1176.7264404296875 1139.037841796875 1114.9228515625 1094.989013671875 1088.25244140625 1094.3072509765625 1098.5205078125 1102.296142578125 1116.84619140625 1120.6392822265625 1091.34619140625  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999
+  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999 1234.0494384765625 1239.1627197265625 1220.189697265625 1204.6650390625 1209.453125 1227.617919921875 1238.3673095703125 1210.60107421875 1163.29345703125 1139.1007080078125 1120.8082275390625 1117.345947265625 1114.25 1103.8447265625 1092.596923828125 1092.94677734375 1092.551025390625 1072.52099609375 1041.4859619140625  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999
+  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999 1238.635009765625 1217.8251953125 1221.4296875 1238.381591796875 1251.82470703125 1255.291015625 1226.4998779296875 1183.9166259765625 1161.6951904296875 1148.1737060546875 1149.704345703125 1134.12353515625 1109.013427734375 1083.618896484375 1070.541748046875 1068.6278076171875 1060.1680908203125  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999
+  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999 1250.74462890625 1247.54345703125 1260.8966064453125 1272.15087890625 1261.5567626953125 1247.762451171875 1222.9735107421875 1194.02685546875 1172.741455078125 1159.1710205078125 1155.277587890625 1140.2325439453125 1115.120849609375 1088.443115234375 1072.927734375 1069.837890625  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999
+  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999 1247.7518310546875 1269.3819580078125 1300.7030029296875 1303.26904296875 1264.271728515625 1233.1207275390625 1210.70751953125 1193.1890869140625 1173.8720703125 1158.572998046875 1149.0902099609375 1136.161865234375 1116.754150390625 1095.6480712890625 1083.237060546875  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999
+  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999 1232.1785888671875 1270.8115234375 1308.4595947265625 1305.2940673828125 1260.1658935546875 1225.6041259765625 1200.8162841796875 1184.0491943359375 1168.394287109375 1153.5616455078125 1138.2391357421875 1124.8125 1109.6019287109375 1093.600830078125 1085.3668212890625  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999
+  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999 1251.232421875 1269.999267578125 1263.8475341796875 1230.11083984375 1199.403564453125 1174.6131591796875 1161.1458740234375 1156.4705810546875 1151.545166015625 1133.6917724609375 1115.3277587890625 1098.626220703125 1083.5159912109375  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999
+  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999 1232.7476806640625 1216.802978515625 1208.0538330078125 1189.3187255859375 1164.7579345703125 1143.93310546875 1134.9390869140625 1140.8017578125 1146.8984375 1133.9295654296875 1111.7254638671875 1091.8665771484375 1074.3970947265625  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999
+  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999 1186.9708251953125 1165.5767822265625 1149.724609375 1131.9600830078125 1116.3856201171875 1109.8963623046875 1120.0689697265625 1127.446533203125 1122.338623046875 1106.5181884765625 1089.29833984375 1075.289794921875  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999
+  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999 1169.8455810546875 1135.8544921875 1122.9454345703125 1109.4556884765625 1094.9613037109375 1088.2183837890625 1094.189208984375 1099.4534912109375 1098.37548828125 1092.4638671875  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999
+  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999 1179.2677001953125 1135.757568359375 1116.262939453125 1097.2205810546875 1074.7027587890625 1062.0072021484375 1066.38720703125 1074.3524169921875 1074.9671630859375  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999
+  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999 1194.2928466796875 1146.8526611328125 1115.064208984375 1083.3818359375 1049.837646484375 1029.597412109375 1035.52001953125 1052.441162109375 1057.173828125  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999
+  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999 1157.669189453125 1115.3297119140625 1071.4591064453125 1026.4788818359375 995.43115234375 1003.3531494140625 1037.4180908203125 1054.515869140625  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999
+  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999 1212.3648681640625 1165.68115234375 1119.6505126953125 1072.6669921875 1020.6629638671875 975.7467041015625 982.467041015625 1029.833984375 1061.397705078125  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999
+  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999 1219.6676025390625 1172.5916748046875 1129.7459716796875 1085.6441650390625 1037.1744384765625 995.6265869140625 999.29296875 1037.927490234375 1067.9031982421875  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999
+  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999 1219.87109375 1178.2403564453125 1141.3154296875 1101.40234375 1065.342529296875 1041.4913330078125 1040.050048828125 1056.791748046875 1073.1109619140625  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999
+  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999 1217.36328125 1182.8206787109375 1150.3087158203125 1118.6356201171875 1096.7845458984375 1086.630126953125 1081.325439453125 1076.6767578125 1067.5623779296875  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999
+  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999 1215.9576416015625 1188.2763671875 1160.3673095703125 1136.386962890625 1122.7989501953125 1116.9586181640625 1108.0611572265625 1088.000732421875 1056.25927734375  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999
+  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999 1222.067626953125 1196.4111328125 1174.321044921875 1160.0919189453125 1154.1556396484375 1144.5601806640625 1123.1488037109375 1097.400634765625  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999
+  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999 1229.1561279296875 1200.36328125 1184.1947021484375 1177.9478759765625 1176.5592041015625 1159.385986328125 1128.9228515625 1105.5064697265625 1096.99169921875  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999
+  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999 1222.167724609375 1192.658203125 1179.0177001953125 1170.1978759765625 1158.58837890625 1141.1796875 1117.488525390625 1105.1964111328125 1105.908203125  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999
+  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999 1176.1943359375 1158.958740234375 1140.9156494140625 1111.4560546875 1086.933837890625 1081.7467041015625 1092.4371337890625 1103.6134033203125  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999
+  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999 1180.267578125 1150.356201171875 1131.2125244140625 1116.6827392578125 1081.525390625 1040.62109375 1050.8858642578125 1088.607177734375 1110.048095703125  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999
+  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999 1145.28955078125 1120.245849609375 1105.8739013671875 1110.797607421875 1084.398193359375 1031.189697265625 1050.8890380859375 1100.29638671875 1127.2132568359375  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999
+  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999 1105.703125 1093.8807373046875 1084.340576171875 1096.0941162109375 1087.4248046875 1064.4635009765625 1077.7265625 1118.588134765625 1146.2376708984375  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999
+  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999 1097.1201171875 1070.08154296875 1041.587890625 1049.28466796875 1087.184814453125 1105.19921875 1111.7037353515625 1144.296875 1174.39404296875  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999
+  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999 1071.92724609375 1026.46435546875 982.2357177734375 1007.40936279296875 1136.919677734375 1154.0208740234375 1151.0902099609375 1179.0826416015625 1203.563720703125  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999
+  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999 1040.0008544921875 985.3294677734375 948.5787353515625 1036.57421875 1150.1871337890625 1146.85107421875 1181.189453125 1219.209228515625 1238.910888671875  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999
+  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999 974.35894775390625 929.08770751953125 939.45452880859375 991.0074462890625 1128.4671630859375 1224.9388427734375 1280.5545654296875 1300.9560546875  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999
+  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999 997.99639892578125 1026.1015625 1089.7996826171875 1111.522216796875 1205.5919189453125 1292.1744384765625 1378.400390625 1406.186767578125  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999
+  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999 1050.7464599609375 1161.271240234375  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999
+  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999
+  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999  -9999

Added: trunk/testresources/rasters/rasterASCIIWithSLDTransparency/asciiWithSldTransparency.sld
===================================================================
--- trunk/testresources/rasters/rasterASCIIWithSLDTransparency/asciiWithSldTransparency.sld	2010-11-03 09:36:26 UTC (rev 1211)
+++ trunk/testresources/rasters/rasterASCIIWithSLDTransparency/asciiWithSldTransparency.sld	2010-11-03 10:49:38 UTC (rev 1212)
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<sld:UserStyle xmlns="http://www.opengis.net/sld" xmlns:sld="http://www.opengis.net/sld" xmlns:ogc="http://www.opengis.net/ogc" xmlns:gml="http://www.opengis.net/gml">
+  <sld:Name>unnamed raster style</sld:Name>
+  <sld:Title>untitled raster style</sld:Title>
+  <sld:FeatureTypeStyle>
+    <sld:Name>name</sld:Name>
+    <sld:Title>title</sld:Title>
+    <sld:Abstract>abstract</sld:Abstract>
+    <sld:FeatureTypeName>Feature</sld:FeatureTypeName>
+    <sld:SemanticTypeIdentifier>generic:geometry</sld:SemanticTypeIdentifier>
+    <sld:Rule>
+      <sld:RasterSymbolizer>
+        <sld:Geometry>
+          <ogc:PropertyName>geom</ogc:PropertyName>
+        </sld:Geometry>
+        <sld:Opacity>
+          <ogc:Literal>1.0</ogc:Literal>
+        </sld:Opacity>
+        <sld:OverlapBehavior>
+          <sld:null/>
+        </sld:OverlapBehavior>
+        <sld:ColorMap>
+          <sld:ColorMapEntry color="#000000" opacity="0.0" quantity="-9999.0"/>
+          <sld:ColorMapEntry color="#CCFFFF" opacity="1.0" quantity="700.0"/>
+          <sld:ColorMapEntry color="#003399" opacity="1.0" quantity="1500.0"/>
+        </sld:ColorMap>
+        <sld:ContrastEnhancement/>
+        <sld:ShadedRelief>
+          <sld:BrightnessOnly>false</sld:BrightnessOnly>
+          <sld:ReliefFactor>55</sld:ReliefFactor>
+        </sld:ShadedRelief>
+      </sld:RasterSymbolizer>
+    </sld:Rule>
+  </sld:FeatureTypeStyle>
+</sld:UserStyle>


Property changes on: trunk/testresources/rasters/rasterASCIIWithSLDTransparency/asciiWithSldTransparency.sld
___________________________________________________________________
Name: svn:mime-type
   + text/xml
Name: svn:keywords
   + Id URL
Name: svn:eol-style
   + native

Added: trunk/testresources/rasters/rasterGeotiffRGBWithoutSLD/README.txt
===================================================================
--- trunk/testresources/rasters/rasterGeotiffRGBWithoutSLD/README.txt	2010-11-03 09:36:26 UTC (rev 1211)
+++ trunk/testresources/rasters/rasterGeotiffRGBWithoutSLD/README.txt	2010-11-03 10:49:38 UTC (rev 1212)
@@ -0,0 +1 @@
+This RGB GeoTIFF doesn't contain any transparency information.


Property changes on: trunk/testresources/rasters/rasterGeotiffRGBWithoutSLD/README.txt
___________________________________________________________________
Name: svn:mime-type
   + text/plain
Name: svn:keywords
   + Id URL
Name: svn:eol-style
   + native

Added: trunk/testresources/rasters/rasterGeotiffRGBWithoutSLD/geotiff_rgb_ohnesld.tif
===================================================================
(Binary files differ)


Property changes on: trunk/testresources/rasters/rasterGeotiffRGBWithoutSLD/geotiff_rgb_ohnesld.tif
___________________________________________________________________
Name: svn:mime-type
   + image/tiff

Added: trunk/testresources/rasters/rasterGeotiffWithSLD/README.txt
===================================================================
--- trunk/testresources/rasters/rasterGeotiffWithSLD/README.txt	2010-11-03 09:36:26 UTC (rev 1211)
+++ trunk/testresources/rasters/rasterGeotiffWithSLD/README.txt	2010-11-03 10:49:38 UTC (rev 1212)
@@ -0,0 +1 @@
+This one-band GeoTIFF contains no color information. An SLD provides the color information including the transparency.


Property changes on: trunk/testresources/rasters/rasterGeotiffWithSLD/README.txt
___________________________________________________________________
Name: svn:mime-type
   + text/plain
Name: svn:keywords
   + Id URL
Name: svn:eol-style
   + native

Added: trunk/testresources/rasters/rasterGeotiffWithSLD/geotiffwithsld.sld
===================================================================
--- trunk/testresources/rasters/rasterGeotiffWithSLD/geotiffwithsld.sld	2010-11-03 09:36:26 UTC (rev 1211)
+++ trunk/testresources/rasters/rasterGeotiffWithSLD/geotiffwithsld.sld	2010-11-03 10:49:38 UTC (rev 1212)
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<sld:UserStyle xmlns="http://www.opengis.net/sld" xmlns:sld="http://www.opengis.net/sld" xmlns:ogc="http://www.opengis.net/ogc" xmlns:gml="http://www.opengis.net/gml">
+  <sld:Name>unnamed raster style</sld:Name>
+  <sld:Title>untitled raster style</sld:Title>
+  <sld:FeatureTypeStyle>
+    <sld:Name>name</sld:Name>
+    <sld:Title>title</sld:Title>
+    <sld:Abstract>abstract</sld:Abstract>
+    <sld:FeatureTypeName>Feature</sld:FeatureTypeName>
+    <sld:SemanticTypeIdentifier>generic:geometry</sld:SemanticTypeIdentifier>
+    <sld:Rule>
+      <sld:RasterSymbolizer>
+        <sld:Geometry>
+          <ogc:PropertyName>geom</ogc:PropertyName>
+        </sld:Geometry>
+        <sld:OverlapBehavior>
+          <sld:null/>
+        </sld:OverlapBehavior>
+        <sld:ColorMap>
+          <sld:ColorMapEntry color="#FFFFFF" opacity="0.0" quantity="0.0" label=""/>
+          <sld:ColorMapEntry color="#7E4206" opacity="1.0" quantity="1.0"/>
+          <sld:ColorMapEntry color="#D7D7B1" opacity="1.0" quantity="6.0"/>
+          <sld:ColorMapEntry color="#028686" opacity="1.0" quantity="12.0"/>
+          <sld:ColorMapEntry color="#FFFF66" opacity="1.0" quantity="13.0"/>
+        </sld:ColorMap>
+        <sld:ShadedRelief>
+          <sld:BrightnessOnly>false</sld:BrightnessOnly>
+        </sld:ShadedRelief>
+      </sld:RasterSymbolizer>
+    </sld:Rule>
+  </sld:FeatureTypeStyle>
+</sld:UserStyle>


Property changes on: trunk/testresources/rasters/rasterGeotiffWithSLD/geotiffwithsld.sld
___________________________________________________________________
Name: svn:mime-type
   + text/xml
Name: svn:keywords
   + Id URL
Name: svn:eol-style
   + native

Added: trunk/testresources/rasters/rasterGeotiffWithSLD/geotiffwithsld.tif
===================================================================
(Binary files differ)


Property changes on: trunk/testresources/rasters/rasterGeotiffWithSLD/geotiffwithsld.tif
___________________________________________________________________
Name: svn:mime-type
   + image/tiff

Added: trunk/testresources/shapes/benin population/population density.dbf
===================================================================
(Binary files differ)


Property changes on: trunk/testresources/shapes/benin population/population density.dbf
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/testresources/shapes/benin population/population density.fix
===================================================================
(Binary files differ)


Property changes on: trunk/testresources/shapes/benin population/population density.fix
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/testresources/shapes/benin population/population density.prj
===================================================================
(Binary files differ)


Property changes on: trunk/testresources/shapes/benin population/population density.prj
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/testresources/shapes/benin population/population density.qix
===================================================================
(Binary files differ)


Property changes on: trunk/testresources/shapes/benin population/population density.qix
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/testresources/shapes/benin population/population density.sbn
===================================================================
(Binary files differ)


Property changes on: trunk/testresources/shapes/benin population/population density.sbn
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/testresources/shapes/benin population/population density.sbx
===================================================================
(Binary files differ)


Property changes on: trunk/testresources/shapes/benin population/population density.sbx
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/testresources/shapes/benin population/population density.shp
===================================================================
(Binary files differ)


Property changes on: trunk/testresources/shapes/benin population/population density.shp
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/testresources/shapes/benin population/population density.shx
===================================================================
(Binary files differ)


Property changes on: trunk/testresources/shapes/benin population/population density.shx
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/testresources/shapes/benin population/population density.sld
===================================================================
--- trunk/testresources/shapes/benin population/population density.sld	2010-11-03 09:36:26 UTC (rev 1211)
+++ trunk/testresources/shapes/benin population/population density.sld	2010-11-03 10:49:38 UTC (rev 1212)
@@ -0,0 +1,448 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<sld:UserStyle xmlns="http://www.opengis.net/sld" xmlns:sld="http://www.opengis.net/sld" xmlns:ogc="http://www.opengis.net/ogc" xmlns:gml="http://www.opengis.net/gml">
+  <sld:Name>AtlasStyler  version=5.5.08</sld:Name>
+  <sld:Title>Default Styler</sld:Title>
+  <sld:Abstract/>
+  <sld:FeatureTypeStyle>
+    <sld:Name>SINGLE_SYMBOL_POLYGON</sld:Name>
+    <sld:Title>title</sld:Title>
+    <sld:Abstract>abstract</sld:Abstract>
+    <sld:FeatureTypeName>Feature</sld:FeatureTypeName>
+    <sld:SemanticTypeIdentifier>generic:geometry</sld:SemanticTypeIdentifier>
+    <sld:Rule>
+      <sld:Name>AS:SinglePolygonSymbolRuleList</sld:Name>
+      <sld:Title>some label textsdsd</sld:Title>
+    </sld:Rule>
+  </sld:FeatureTypeStyle>
+  <sld:FeatureTypeStyle>
+    <sld:Name>TEXT_LABEL</sld:Name>
+    <sld:Title>title</sld:Title>
+    <sld:Abstract>abstract</sld:Abstract>
+    <sld:FeatureTypeName>Feature</sld:FeatureTypeName>
+    <sld:SemanticTypeIdentifier>generic:geometry</sld:SemanticTypeIdentifier>
+    <sld:Rule>
+      <sld:Name>Default/all others</sld:Name>
+      <ogc:Filter>
+        <ogc:Not>
+          <ogc:Or>
+            <ogc:PropertyIsBetween>
+              <ogc:PropertyName>ID_D</ogc:PropertyName>
+              <ogc:LowerBoundary>
+                <ogc:Literal>1.0</ogc:Literal>
+              </ogc:LowerBoundary>
+              <ogc:UpperBoundary>
+                <ogc:Literal>3.0</ogc:Literal>
+              </ogc:UpperBoundary>
+            </ogc:PropertyIsBetween>
+            <ogc:PropertyIsBetween>
+              <ogc:PropertyName>ID_D</ogc:PropertyName>
+              <ogc:LowerBoundary>
+                <ogc:Literal>3.0</ogc:Literal>
+              </ogc:LowerBoundary>
+              <ogc:UpperBoundary>
+                <ogc:Literal>4.400000000000002</ogc:Literal>
+              </ogc:UpperBoundary>
+            </ogc:PropertyIsBetween>
+            <ogc:PropertyIsBetween>
+              <ogc:PropertyName>ID_D</ogc:PropertyName>
+              <ogc:LowerBoundary>
+                <ogc:Literal>4.400000000000002</ogc:Literal>
+              </ogc:LowerBoundary>
+              <ogc:UpperBoundary>
+                <ogc:Literal>7.0</ogc:Literal>
+              </ogc:UpperBoundary>
+            </ogc:PropertyIsBetween>
+            <ogc:PropertyIsBetween>
+              <ogc:PropertyName>ID_D</ogc:PropertyName>
+              <ogc:LowerBoundary>
+                <ogc:Literal>7.0</ogc:Literal>
+              </ogc:LowerBoundary>
+              <ogc:UpperBoundary>
+                <ogc:Literal>10.0</ogc:Literal>
+              </ogc:UpperBoundary>
+            </ogc:PropertyIsBetween>
+            <ogc:PropertyIsBetween>
+              <ogc:PropertyName>ID_D</ogc:PropertyName>
+              <ogc:LowerBoundary>
+                <ogc:Literal>10.0</ogc:Literal>
+              </ogc:LowerBoundary>
+              <ogc:UpperBoundary>
+                <ogc:Literal>12.0</ogc:Literal>
+              </ogc:UpperBoundary>
+            </ogc:PropertyIsBetween>
+          </ogc:Or>
+        </ogc:Not>
+      </ogc:Filter>
+      <sld:TextSymbolizer>
+        <sld:Label>
+          <ogc:PropertyName>COM</ogc:PropertyName>
+        </sld:Label>
+        <sld:Font>
+          <sld:CssParameter name="font-family">
+            <ogc:Literal>TlwgMono</ogc:Literal>
+          </sld:CssParameter>
+          <sld:CssParameter name="font-size">
+            <ogc:Literal>16.0</ogc:Literal>
+          </sld:CssParameter>
+          <sld:CssParameter name="font-style">
+            <ogc:Literal>italic</ogc:Literal>
+          </sld:CssParameter>
+          <sld:CssParameter name="font-weight">
+            <ogc:Literal>normal</ogc:Literal>
+          </sld:CssParameter>
+        </sld:Font>
+        <sld:LabelPlacement>
+          <sld:PointPlacement>
+            <sld:AnchorPoint>
+              <sld:AnchorPointX>
+                <ogc:Literal>0.0</ogc:Literal>
+              </sld:AnchorPointX>
+              <sld:AnchorPointY>
+                <ogc:Literal>0.5</ogc:Literal>
+              </sld:AnchorPointY>
+            </sld:AnchorPoint>
+            <sld:Displacement>
+              <sld:DisplacementX>
+                <ogc:Literal>0</ogc:Literal>
+              </sld:DisplacementX>
+              <sld:DisplacementY>
+                <ogc:Literal>0</ogc:Literal>
+              </sld:DisplacementY>
+            </sld:Displacement>
+            <sld:Rotation>
+              <ogc:Literal>0</ogc:Literal>
+            </sld:Rotation>
+          </sld:PointPlacement>
+        </sld:LabelPlacement>
+        <sld:Fill>
+          <sld:CssParameter name="fill">
+            <ogc:Literal>#000000</ogc:Literal>
+          </sld:CssParameter>
+          <sld:CssParameter name="fill-opacity">
+            <ogc:Literal>1.0</ogc:Literal>
+          </sld:CssParameter>
+        </sld:Fill>
+      </sld:TextSymbolizer>
+    </sld:Rule>
+    <sld:Rule>
+      <sld:Name>1,000 -&gt; 3,000</sld:Name>
+      <ogc:Filter>
+        <ogc:PropertyIsBetween>
+          <ogc:PropertyName>ID_D</ogc:PropertyName>
+          <ogc:LowerBoundary>
+            <ogc:Literal>1.0</ogc:Literal>
+          </ogc:LowerBoundary>
+          <ogc:UpperBoundary>
+            <ogc:Literal>3.0</ogc:Literal>
+          </ogc:UpperBoundary>
+        </ogc:PropertyIsBetween>
+      </ogc:Filter>
+      <sld:TextSymbolizer>
+        <sld:Label>
+          <ogc:PropertyName>NAME</ogc:PropertyName>
+        </sld:Label>
+        <sld:Font>
+          <sld:CssParameter name="font-family">
+            <ogc:Literal>Times New Roman</ogc:Literal>
+          </sld:CssParameter>
+          <sld:CssParameter name="font-size">
+            <ogc:Literal>11.0</ogc:Literal>
+          </sld:CssParameter>
+          <sld:CssParameter name="font-style">
+            <ogc:Literal>normal</ogc:Literal>
+          </sld:CssParameter>
+          <sld:CssParameter name="font-weight">
+            <ogc:Literal>normal</ogc:Literal>
+          </sld:CssParameter>
+        </sld:Font>
+        <sld:LabelPlacement>
+          <sld:PointPlacement>
+            <sld:AnchorPoint>
+              <sld:AnchorPointX>
+                <ogc:Literal>0.0</ogc:Literal>
+              </sld:AnchorPointX>
+              <sld:AnchorPointY>
+                <ogc:Literal>0.5</ogc:Literal>
+              </sld:AnchorPointY>
+            </sld:AnchorPoint>
+            <sld:Displacement>
+              <sld:DisplacementX>
+                <ogc:Literal>0</ogc:Literal>
+              </sld:DisplacementX>
+              <sld:DisplacementY>
+                <ogc:Literal>0</ogc:Literal>
+              </sld:DisplacementY>
+            </sld:Displacement>
+            <sld:Rotation>
+              <ogc:Literal>0</ogc:Literal>
+            </sld:Rotation>
+          </sld:PointPlacement>
+        </sld:LabelPlacement>
+        <sld:Fill>
+          <sld:CssParameter name="fill">
+            <ogc:Literal>#000000</ogc:Literal>
+          </sld:CssParameter>
+          <sld:CssParameter name="fill-opacity">
+            <ogc:Literal>1.0</ogc:Literal>
+          </sld:CssParameter>
+        </sld:Fill>
+      </sld:TextSymbolizer>
+    </sld:Rule>
+    <sld:Rule>
+      <sld:Name>3,000 -&gt; 4,400</sld:Name>
+      <ogc:Filter>
+        <ogc:PropertyIsBetween>
+          <ogc:PropertyName>ID_D</ogc:PropertyName>
+          <ogc:LowerBoundary>
+            <ogc:Literal>3.0</ogc:Literal>
+          </ogc:LowerBoundary>
+          <ogc:UpperBoundary>
+            <ogc:Literal>4.400000000000002</ogc:Literal>
+          </ogc:UpperBoundary>
+        </ogc:PropertyIsBetween>
+      </ogc:Filter>
+      <sld:TextSymbolizer>
+        <sld:Label>
+          <ogc:PropertyName>NAME</ogc:PropertyName>
+        </sld:Label>
+        <sld:Font>
+          <sld:CssParameter name="font-family">
+            <ogc:Literal>Times New Roman</ogc:Literal>
+          </sld:CssParameter>
+          <sld:CssParameter name="font-size">
+            <ogc:Literal>11.0</ogc:Literal>
+          </sld:CssParameter>
+          <sld:CssParameter name="font-style">
+            <ogc:Literal>normal</ogc:Literal>
+          </sld:CssParameter>
+          <sld:CssParameter name="font-weight">
+            <ogc:Literal>bold</ogc:Literal>
+          </sld:CssParameter>
+        </sld:Font>
+        <sld:LabelPlacement>
+          <sld:PointPlacement>
+            <sld:AnchorPoint>
+              <sld:AnchorPointX>
+                <ogc:Literal>0.0</ogc:Literal>
+              </sld:AnchorPointX>
+              <sld:AnchorPointY>
+                <ogc:Literal>0.5</ogc:Literal>
+              </sld:AnchorPointY>
+            </sld:AnchorPoint>
+            <sld:Displacement>
+              <sld:DisplacementX>
+                <ogc:Literal>0</ogc:Literal>
+              </sld:DisplacementX>
+              <sld:DisplacementY>
+                <ogc:Literal>0</ogc:Literal>
+              </sld:DisplacementY>
+            </sld:Displacement>
+            <sld:Rotation>
+              <ogc:Literal>0</ogc:Literal>
+            </sld:Rotation>
+          </sld:PointPlacement>
+        </sld:LabelPlacement>
+        <sld:Fill>
+          <sld:CssParameter name="fill">
+            <ogc:Literal>#000000</ogc:Literal>
+          </sld:CssParameter>
+          <sld:CssParameter name="fill-opacity">
+            <ogc:Literal>1.0</ogc:Literal>
+          </sld:CssParameter>
+        </sld:Fill>
+      </sld:TextSymbolizer>
+    </sld:Rule>
+    <sld:Rule>
+      <sld:Name>4,400 -&gt; 7,000</sld:Name>
+      <ogc:Filter>
+        <ogc:PropertyIsBetween>
+          <ogc:PropertyName>ID_D</ogc:PropertyName>
+          <ogc:LowerBoundary>
+            <ogc:Literal>4.400000000000002</ogc:Literal>
+          </ogc:LowerBoundary>
+          <ogc:UpperBoundary>
+            <ogc:Literal>7.0</ogc:Literal>
+          </ogc:UpperBoundary>
+        </ogc:PropertyIsBetween>
+      </ogc:Filter>
+      <sld:TextSymbolizer>
+        <sld:Label>
+          <ogc:PropertyName>COM</ogc:PropertyName>
+        </sld:Label>
+        <sld:Font>
+          <sld:CssParameter name="font-family">
+            <ogc:Literal>Times New Roman</ogc:Literal>
+          </sld:CssParameter>
+          <sld:CssParameter name="font-size">
+            <ogc:Literal>11.0</ogc:Literal>
+          </sld:CssParameter>
+          <sld:CssParameter name="font-style">
+            <ogc:Literal>normal</ogc:Literal>
+          </sld:CssParameter>
+          <sld:CssParameter name="font-weight">
+            <ogc:Literal>normal</ogc:Literal>
+          </sld:CssParameter>
+        </sld:Font>
+        <sld:LabelPlacement>
+          <sld:PointPlacement>
+            <sld:AnchorPoint>
+              <sld:AnchorPointX>
+                <ogc:Literal>0.0</ogc:Literal>
+              </sld:AnchorPointX>
+              <sld:AnchorPointY>
+                <ogc:Literal>0.5</ogc:Literal>
+              </sld:AnchorPointY>
+            </sld:AnchorPoint>
+            <sld:Displacement>
+              <sld:DisplacementX>
+                <ogc:Literal>0</ogc:Literal>
+              </sld:DisplacementX>
+              <sld:DisplacementY>
+                <ogc:Literal>0</ogc:Literal>
+              </sld:DisplacementY>
+            </sld:Displacement>
+            <sld:Rotation>
+              <ogc:Literal>0</ogc:Literal>
+            </sld:Rotation>
+          </sld:PointPlacement>
+        </sld:LabelPlacement>
+        <sld:Fill>
+          <sld:CssParameter name="fill">
+            <ogc:Literal>#000000</ogc:Literal>
+          </sld:CssParameter>
+          <sld:CssParameter name="fill-opacity">
+            <ogc:Literal>1.0</ogc:Literal>
+          </sld:CssParameter>
+        </sld:Fill>
+      </sld:TextSymbolizer>
+    </sld:Rule>
+    <sld:Rule>
+      <sld:Name>7,000 -&gt; 10,000</sld:Name>
+      <ogc:Filter>
+        <ogc:PropertyIsBetween>
+          <ogc:PropertyName>ID_D</ogc:PropertyName>
+          <ogc:LowerBoundary>
+            <ogc:Literal>7.0</ogc:Literal>
+          </ogc:LowerBoundary>
+          <ogc:UpperBoundary>
+            <ogc:Literal>10.0</ogc:Literal>
+          </ogc:UpperBoundary>
+        </ogc:PropertyIsBetween>
+      </ogc:Filter>
+      <sld:TextSymbolizer>
+        <sld:Label>
+          <ogc:PropertyName>COM</ogc:PropertyName>
+        </sld:Label>
+        <sld:Font>
+          <sld:CssParameter name="font-family">
+            <ogc:Literal>Times New Roman</ogc:Literal>
+          </sld:CssParameter>
+          <sld:CssParameter name="font-size">
+            <ogc:Literal>11.0</ogc:Literal>
+          </sld:CssParameter>
+          <sld:CssParameter name="font-style">
+            <ogc:Literal>normal</ogc:Literal>
+          </sld:CssParameter>
+          <sld:CssParameter name="font-weight">
+            <ogc:Literal>normal</ogc:Literal>
+          </sld:CssParameter>
+        </sld:Font>
+        <sld:LabelPlacement>
+          <sld:PointPlacement>
+            <sld:AnchorPoint>
+              <sld:AnchorPointX>
+                <ogc:Literal>0.0</ogc:Literal>
+              </sld:AnchorPointX>
+              <sld:AnchorPointY>
+                <ogc:Literal>0.5</ogc:Literal>
+              </sld:AnchorPointY>
+            </sld:AnchorPoint>
+            <sld:Displacement>
+              <sld:DisplacementX>
+                <ogc:Literal>0</ogc:Literal>
+              </sld:DisplacementX>
+              <sld:DisplacementY>
+                <ogc:Literal>0</ogc:Literal>
+              </sld:DisplacementY>
+            </sld:Displacement>
+            <sld:Rotation>
+              <ogc:Literal>0</ogc:Literal>
+            </sld:Rotation>
+          </sld:PointPlacement>
+        </sld:LabelPlacement>
+        <sld:Fill>
+          <sld:CssParameter name="fill">
+            <ogc:Literal>#000000</ogc:Literal>
+          </sld:CssParameter>
+          <sld:CssParameter name="fill-opacity">
+            <ogc:Literal>1.0</ogc:Literal>
+          </sld:CssParameter>
+        </sld:Fill>
+      </sld:TextSymbolizer>
+    </sld:Rule>
+    <sld:Rule>
+      <sld:Name>10,000 -&gt; 12,000</sld:Name>
+      <ogc:Filter>
+        <ogc:PropertyIsBetween>
+          <ogc:PropertyName>ID_D</ogc:PropertyName>
+          <ogc:LowerBoundary>
+            <ogc:Literal>10.0</ogc:Literal>
+          </ogc:LowerBoundary>
+          <ogc:UpperBoundary>
+            <ogc:Literal>12.0</ogc:Literal>
+          </ogc:UpperBoundary>
+        </ogc:PropertyIsBetween>
+      </ogc:Filter>
+      <sld:TextSymbolizer>
+        <sld:Label>
+          <ogc:PropertyName>COM</ogc:PropertyName>
+        </sld:Label>
+        <sld:Font>
+          <sld:CssParameter name="font-family">
+            <ogc:Literal>Times New Roman</ogc:Literal>
+          </sld:CssParameter>
+          <sld:CssParameter name="font-size">
+            <ogc:Literal>11.0</ogc:Literal>
+          </sld:CssParameter>
+          <sld:CssParameter name="font-style">
+            <ogc:Literal>normal</ogc:Literal>
+          </sld:CssParameter>
+          <sld:CssParameter name="font-weight">
+            <ogc:Literal>normal</ogc:Literal>
+          </sld:CssParameter>
+        </sld:Font>
+        <sld:LabelPlacement>
+          <sld:PointPlacement>
+            <sld:AnchorPoint>
+              <sld:AnchorPointX>
+                <ogc:Literal>0.0</ogc:Literal>
+              </sld:AnchorPointX>
+              <sld:AnchorPointY>
+                <ogc:Literal>0.5</ogc:Literal>
+              </sld:AnchorPointY>
+            </sld:AnchorPoint>
+            <sld:Displacement>
+              <sld:DisplacementX>
+                <ogc:Literal>0</ogc:Literal>
+              </sld:DisplacementX>
+              <sld:DisplacementY>
+                <ogc:Literal>0</ogc:Literal>
+              </sld:DisplacementY>
+            </sld:Displacement>
+            <sld:Rotation>
+              <ogc:Literal>0</ogc:Literal>
+            </sld:Rotation>
+          </sld:PointPlacement>
+        </sld:LabelPlacement>
+        <sld:Fill>
+          <sld:CssParameter name="fill">
+            <ogc:Literal>#000000</ogc:Literal>
+          </sld:CssParameter>
+          <sld:CssParameter name="fill-opacity">
+            <ogc:Literal>1.0</ogc:Literal>
+          </sld:CssParameter>
+        </sld:Fill>
+      </sld:TextSymbolizer>
+    </sld:Rule>
+  </sld:FeatureTypeStyle>
+</sld:UserStyle>


Property changes on: trunk/testresources/shapes/benin population/population density.sld
___________________________________________________________________
Name: svn:mime-type
   + text/xml
Name: svn:keywords
   + Id URL
Name: svn:eol-style
   + native

Added: trunk/testresources/shapes/polygonSnowShape/polygonLayerSnow.dbf
===================================================================
(Binary files differ)


Property changes on: trunk/testresources/shapes/polygonSnowShape/polygonLayerSnow.dbf
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/testresources/shapes/polygonSnowShape/polygonLayerSnow.prj
===================================================================
--- trunk/testresources/shapes/polygonSnowShape/polygonLayerSnow.prj	2010-11-03 09:36:26 UTC (rev 1211)
+++ trunk/testresources/shapes/polygonSnowShape/polygonLayerSnow.prj	2010-11-03 10:49:38 UTC (rev 1212)
@@ -0,0 +1 @@
+PROJCS["Lambert_Conformal_Conic",GEOGCS["GCS_unnamed ellipse",DATUM["D_unknown",SPHEROID["Unknown",6378249.2,293.46602]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["standard_parallel_1",34.86645765583334],PARAMETER["standard_parallel_2",31.72392564722222],PARAMETER["latitude_of_origin",33.3],PARAMETER["central_meridian",-5.4],PARAMETER["false_easting",500000],PARAMETER["false_northing",300000],UNIT["Meter",1],PARAMETER["scale_factor",1.0]]
\ No newline at end of file

Added: trunk/testresources/shapes/polygonSnowShape/polygonLayerSnow.shp
===================================================================
(Binary files differ)


Property changes on: trunk/testresources/shapes/polygonSnowShape/polygonLayerSnow.shp
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/testresources/shapes/polygonSnowShape/polygonLayerSnow.shx
===================================================================
(Binary files differ)


Property changes on: trunk/testresources/shapes/polygonSnowShape/polygonLayerSnow.shx
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/testresources/shapes/polygonSnowShape/polygonLayerSnow.sld
===================================================================
--- trunk/testresources/shapes/polygonSnowShape/polygonLayerSnow.sld	2010-11-03 09:36:26 UTC (rev 1211)
+++ trunk/testresources/shapes/polygonSnowShape/polygonLayerSnow.sld	2010-11-03 10:49:38 UTC (rev 1212)
@@ -0,0 +1,308 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<sld:UserStyle xmlns="http://www.opengis.net/sld" xmlns:sld="http://www.opengis.net/sld" xmlns:ogc="http://www.opengis.net/ogc" xmlns:gml="http://www.opengis.net/gml">
+  <sld:Name>AtlasStyler v1.6-SNAPSHOT-r201009281724</sld:Name>
+  <sld:Title/>
+  <sld:FeatureTypeStyle>
+    <sld:Name>QUANTITIES_COLORIZED_POLYGON:VALUE#AV_TEMPER:NORM#null:METHOD#MANUAL:PALETTE#YlOrRd</sld:Name>
+    <sld:FeatureTypeName>Point_Char_Dissolve</sld:FeatureTypeName>
+    <sld:SemanticTypeIdentifier>SemanticType[ANY]</sld:SemanticTypeIdentifier>
+    <sld:Rule>
+      <sld:Name>AS: 1/7 GraduatedColorPolygonRuleList</sld:Name>
+      <sld:Title>[&lt; -10°C[</sld:Title>
+      <ogc:Filter>
+        <ogc:And>
+          <ogc:Not>
+            <ogc:Or>
+              <ogc:PropertyIsNull>
+                <ogc:PropertyName>AV_TEMPER</ogc:PropertyName>
+              </ogc:PropertyIsNull>
+            </ogc:Or>
+          </ogc:Not>
+          <ogc:PropertyIsBetween>
+            <ogc:PropertyName>AV_TEMPER</ogc:PropertyName>
+            <ogc:LowerBoundary>
+              <ogc:Literal>-1000.0</ogc:Literal>
+            </ogc:LowerBoundary>
+            <ogc:UpperBoundary>
+              <ogc:Literal>-10.0</ogc:Literal>
+            </ogc:UpperBoundary>
+          </ogc:PropertyIsBetween>
+        </ogc:And>
+      </ogc:Filter>
+      <sld:MinScaleDenominator>4.9E-324</sld:MinScaleDenominator>
+      <sld:MaxScaleDenominator>1.7976931348623157E308</sld:MaxScaleDenominator>
+      <sld:PolygonSymbolizer>
+        <sld:Fill>
+          <sld:CssParameter name="fill">
+            <ogc:Literal>#000001</ogc:Literal>
+          </sld:CssParameter>
+          <sld:CssParameter name="fill-opacity">
+            <ogc:Literal>1.0</ogc:Literal>
+          </sld:CssParameter>
+        </sld:Fill>
+      </sld:PolygonSymbolizer>
+    </sld:Rule>
+    <sld:Rule>
+      <sld:Name>AS: 2/7 GraduatedColorPolygonRuleList</sld:Name>
+      <sld:Title>[-10°C - 0°C[</sld:Title>
+      <ogc:Filter>
+        <ogc:And>
+          <ogc:Not>
+            <ogc:Or>
+              <ogc:PropertyIsNull>
+                <ogc:PropertyName>AV_TEMPER</ogc:PropertyName>
+              </ogc:PropertyIsNull>
+            </ogc:Or>
+          </ogc:Not>
+          <ogc:PropertyIsBetween>
+            <ogc:PropertyName>AV_TEMPER</ogc:PropertyName>
+            <ogc:LowerBoundary>
+              <ogc:Literal>-10.0</ogc:Literal>
+            </ogc:LowerBoundary>
+            <ogc:UpperBoundary>
+              <ogc:Literal>0.0</ogc:Literal>
+            </ogc:UpperBoundary>
+          </ogc:PropertyIsBetween>
+        </ogc:And>
+      </ogc:Filter>
+      <sld:MinScaleDenominator>4.9E-324</sld:MinScaleDenominator>
+      <sld:MaxScaleDenominator>1.7976931348623157E308</sld:MaxScaleDenominator>
+      <sld:PolygonSymbolizer>
+        <sld:Fill>
+          <sld:CssParameter name="fill">
+            <ogc:Literal>#B6FF8F</ogc:Literal>
+          </sld:CssParameter>
+          <sld:CssParameter name="fill-opacity">
+            <ogc:Literal>1.0</ogc:Literal>
+          </sld:CssParameter>
+        </sld:Fill>
+      </sld:PolygonSymbolizer>
+    </sld:Rule>
+    <sld:Rule>
+      <sld:Name>AS: 3/7 GraduatedColorPolygonRuleList</sld:Name>
+      <sld:Title>[0°C - 10°C[</sld:Title>
+      <ogc:Filter>
+        <ogc:And>
+          <ogc:Not>
+            <ogc:Or>
+              <ogc:PropertyIsNull>
+                <ogc:PropertyName>AV_TEMPER</ogc:PropertyName>
+              </ogc:PropertyIsNull>
+            </ogc:Or>
+          </ogc:Not>
+          <ogc:PropertyIsBetween>
+            <ogc:PropertyName>AV_TEMPER</ogc:PropertyName>
+            <ogc:LowerBoundary>
+              <ogc:Literal>0.0</ogc:Literal>
+            </ogc:LowerBoundary>
+            <ogc:UpperBoundary>
+              <ogc:Literal>10.0</ogc:Literal>
+            </ogc:UpperBoundary>
+          </ogc:PropertyIsBetween>
+        </ogc:And>
+      </ogc:Filter>
+      <sld:MinScaleDenominator>4.9E-324</sld:MinScaleDenominator>
+      <sld:MaxScaleDenominator>1.7976931348623157E308</sld:MaxScaleDenominator>
+      <sld:PolygonSymbolizer>
+        <sld:Fill>
+          <sld:CssParameter name="fill">
+            <ogc:Literal>#EEFF4C</ogc:Literal>
+          </sld:CssParameter>
+          <sld:CssParameter name="fill-opacity">
+            <ogc:Literal>1.0</ogc:Literal>
+          </sld:CssParameter>
+        </sld:Fill>
+      </sld:PolygonSymbolizer>
+    </sld:Rule>
+    <sld:Rule>
+      <sld:Name>AS: 4/7 GraduatedColorPolygonRuleList</sld:Name>
+      <sld:Title>[10°C - 20°C[</sld:Title>
+      <ogc:Filter>
+        <ogc:And>
+          <ogc:Not>
+            <ogc:Or>
+              <ogc:PropertyIsNull>
+                <ogc:PropertyName>AV_TEMPER</ogc:PropertyName>
+              </ogc:PropertyIsNull>
+            </ogc:Or>
+          </ogc:Not>
+          <ogc:PropertyIsBetween>
+            <ogc:PropertyName>AV_TEMPER</ogc:PropertyName>
+            <ogc:LowerBoundary>
+              <ogc:Literal>10.0</ogc:Literal>
+            </ogc:LowerBoundary>
+            <ogc:UpperBoundary>
+              <ogc:Literal>20.0</ogc:Literal>
+            </ogc:UpperBoundary>
+          </ogc:PropertyIsBetween>
+        </ogc:And>
+      </ogc:Filter>
+      <sld:MinScaleDenominator>4.9E-324</sld:MinScaleDenominator>
+      <sld:MaxScaleDenominator>1.7976931348623157E308</sld:MaxScaleDenominator>
+      <sld:PolygonSymbolizer>
+        <sld:Fill>
+          <sld:CssParameter name="fill">
+            <ogc:Literal>#FFC800</ogc:Literal>
+          </sld:CssParameter>
+          <sld:CssParameter name="fill-opacity">
+            <ogc:Literal>1.0</ogc:Literal>
+          </sld:CssParameter>
+        </sld:Fill>
+      </sld:PolygonSymbolizer>
+    </sld:Rule>
+    <sld:Rule>
+      <sld:Name>AS: 5/7 GraduatedColorPolygonRuleList</sld:Name>
+      <sld:Title>[20°C - 30°C[</sld:Title>
+      <ogc:Filter>
+        <ogc:And>
+          <ogc:Not>
+            <ogc:Or>
+              <ogc:PropertyIsNull>
+                <ogc:PropertyName>AV_TEMPER</ogc:PropertyName>
+              </ogc:PropertyIsNull>
+            </ogc:Or>
+          </ogc:Not>
+          <ogc:PropertyIsBetween>
+            <ogc:PropertyName>AV_TEMPER</ogc:PropertyName>
+            <ogc:LowerBoundary>
+              <ogc:Literal>20.0</ogc:Literal>
+            </ogc:LowerBoundary>
+            <ogc:UpperBoundary>
+              <ogc:Literal>30.0</ogc:Literal>
+            </ogc:UpperBoundary>
+          </ogc:PropertyIsBetween>
+        </ogc:And>
+      </ogc:Filter>
+      <sld:MinScaleDenominator>4.9E-324</sld:MinScaleDenominator>
+      <sld:MaxScaleDenominator>1.7976931348623157E308</sld:MaxScaleDenominator>
+      <sld:PolygonSymbolizer>
+        <sld:Fill>
+          <sld:CssParameter name="fill">
+            <ogc:Literal>#FF7700</ogc:Literal>
+          </sld:CssParameter>
+          <sld:CssParameter name="fill-opacity">
+            <ogc:Literal>1.0</ogc:Literal>
+          </sld:CssParameter>
+        </sld:Fill>
+      </sld:PolygonSymbolizer>
+    </sld:Rule>
+    <sld:Rule>
+      <sld:Name>AS: 6/7 GraduatedColorPolygonRuleList</sld:Name>
+      <sld:Title>[30°C - 40°C[</sld:Title>
+      <ogc:Filter>
+        <ogc:And>
+          <ogc:Not>
+            <ogc:Or>
+              <ogc:PropertyIsNull>
+                <ogc:PropertyName>AV_TEMPER</ogc:PropertyName>
+              </ogc:PropertyIsNull>
+            </ogc:Or>
+          </ogc:Not>
+          <ogc:PropertyIsBetween>
+            <ogc:PropertyName>AV_TEMPER</ogc:PropertyName>
+            <ogc:LowerBoundary>
+              <ogc:Literal>30.0</ogc:Literal>
+            </ogc:LowerBoundary>
+            <ogc:UpperBoundary>
+              <ogc:Literal>40.0</ogc:Literal>
+            </ogc:UpperBoundary>
+          </ogc:PropertyIsBetween>
+        </ogc:And>
+      </ogc:Filter>
+      <sld:MinScaleDenominator>4.9E-324</sld:MinScaleDenominator>
+      <sld:MaxScaleDenominator>1.7976931348623157E308</sld:MaxScaleDenominator>
+      <sld:PolygonSymbolizer>
+        <sld:Fill>
+          <sld:CssParameter name="fill">
+            <ogc:Literal>#FF0000</ogc:Literal>
+          </sld:CssParameter>
+          <sld:CssParameter name="fill-opacity">
+            <ogc:Literal>1.0</ogc:Literal>
+          </sld:CssParameter>
+        </sld:Fill>
+      </sld:PolygonSymbolizer>
+    </sld:Rule>
+    <sld:Rule>
+      <sld:Name>AS: 7/7 GraduatedColorPolygonRuleList</sld:Name>
+      <sld:Title>[&gt; 40°C[</sld:Title>
+      <ogc:Filter>
+        <ogc:And>
+          <ogc:Not>
+            <ogc:Or>
+              <ogc:PropertyIsNull>
+                <ogc:PropertyName>AV_TEMPER</ogc:PropertyName>
+              </ogc:PropertyIsNull>
+            </ogc:Or>
+          </ogc:Not>
+          <ogc:PropertyIsBetween>
+            <ogc:PropertyName>AV_TEMPER</ogc:PropertyName>
+            <ogc:LowerBoundary>
+              <ogc:Literal>40.0</ogc:Literal>
+            </ogc:LowerBoundary>
+            <ogc:UpperBoundary>
+              <ogc:Literal>1000.0</ogc:Literal>
+            </ogc:UpperBoundary>
+          </ogc:PropertyIsBetween>
+        </ogc:And>
+      </ogc:Filter>
+      <sld:MinScaleDenominator>4.9E-324</sld:MinScaleDenominator>
+      <sld:MaxScaleDenominator>1.7976931348623157E308</sld:MaxScaleDenominator>
+      <sld:PolygonSymbolizer>
+        <sld:Fill>
+          <sld:CssParameter name="fill">
+            <ogc:Literal>#A80000</ogc:Literal>
+          </sld:CssParameter>
+          <sld:CssParameter name="fill-opacity">
+            <ogc:Literal>1.0</ogc:Literal>
+          </sld:CssParameter>
+        </sld:Fill>
+      </sld:PolygonSymbolizer>
+    </sld:Rule>
+    <sld:Rule>
+      <sld:Name>NODATA_RULE</sld:Name>
+      <sld:Title>fehlende Daten</sld:Title>
+      <ogc:Filter>
+        <ogc:Or>
+          <ogc:PropertyIsNull>
+            <ogc:PropertyName>AV_TEMPER</ogc:PropertyName>
+          </ogc:PropertyIsNull>
+        </ogc:Or>
+      </ogc:Filter>
+      <sld:MinScaleDenominator>4.9E-324</sld:MinScaleDenominator>
+      <sld:MaxScaleDenominator>1.7976931348623157E308</sld:MaxScaleDenominator>
+      <sld:PolygonSymbolizer>
+        <sld:Geometry>
+          <ogc:PropertyName>the_geom</ogc:PropertyName>
+        </sld:Geometry>
+        <sld:Fill>
+          <sld:CssParameter name="fill">
+            <ogc:Literal>#FFFFFF</ogc:Literal>
+          </sld:CssParameter>
+          <sld:CssParameter name="fill-opacity">
+            <ogc:Literal>1.0</ogc:Literal>
+          </sld:CssParameter>
+        </sld:Fill>
+        <sld:Stroke>
+          <sld:CssParameter name="stroke">
+            <ogc:Literal>#C0C0C0</ogc:Literal>
+          </sld:CssParameter>
+          <sld:CssParameter name="stroke-linecap">
+            <ogc:Literal>butt</ogc:Literal>
+          </sld:CssParameter>
+          <sld:CssParameter name="stroke-linejoin">
+            <ogc:Literal>miter</ogc:Literal>
+          </sld:CssParameter>
+          <sld:CssParameter name="stroke-opacity">
+            <ogc:Literal>1</ogc:Literal>
+          </sld:CssParameter>
+          <sld:CssParameter name="stroke-width">
+            <ogc:Literal>1</ogc:Literal>
+          </sld:CssParameter>
+          <sld:CssParameter name="stroke-dashoffset">
+            <ogc:Literal>0</ogc:Literal>
+          </sld:CssParameter>
+        </sld:Stroke>
+      </sld:PolygonSymbolizer>
+    </sld:Rule>
+  </sld:FeatureTypeStyle>
+</sld:UserStyle>


Property changes on: trunk/testresources/shapes/polygonSnowShape/polygonLayerSnow.sld
___________________________________________________________________
Name: svn:mime-type
   + text/xml
Name: svn:keywords
   + Id URL
Name: svn:eol-style
   + native

Added: trunk/testresources/shapes/shp countries/README.txt
===================================================================
--- trunk/testresources/shapes/shp countries/README.txt	2010-11-03 09:36:26 UTC (rev 1211)
+++ trunk/testresources/shapes/shp countries/README.txt	2010-11-03 10:49:38 UTC (rev 1212)
@@ -0,0 +1,11 @@
+#-------------------------------------------------------------------------------
+# Copyright (c) 2009 Stefan A. Krüger.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the GNU Public License v2.0
+# which accompanies this distribution, and is available at
+# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+# 
+# Contributors:
+#     Stefan A. Krüger - initial API and implementation
+#-------------------------------------------------------------------------------
+This ESRI Shapefile is a world map in lat/lon. The .prj is missing!


Property changes on: trunk/testresources/shapes/shp countries/README.txt
___________________________________________________________________
Name: svn:mime-type
   + text/plain
Name: svn:keywords
   + Id URL
Name: svn:eol-style
   + native

Added: trunk/testresources/shapes/shp countries/country.dbf
===================================================================
(Binary files differ)


Property changes on: trunk/testresources/shapes/shp countries/country.dbf
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/testresources/shapes/shp countries/country.sbx
===================================================================
(Binary files differ)


Property changes on: trunk/testresources/shapes/shp countries/country.sbx
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/testresources/shapes/shp countries/country.shp
===================================================================
(Binary files differ)


Property changes on: trunk/testresources/shapes/shp countries/country.shp
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/testresources/shapes/shp countries/country.shx
===================================================================
(Binary files differ)


Property changes on: trunk/testresources/shapes/shp countries/country.shx
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/testresources/shapes/shp punkte/brunnen_pic.dbf
===================================================================
(Binary files differ)


Property changes on: trunk/testresources/shapes/shp punkte/brunnen_pic.dbf
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/testresources/shapes/shp punkte/brunnen_pic.fix
===================================================================
(Binary files differ)


Property changes on: trunk/testresources/shapes/shp punkte/brunnen_pic.fix
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/testresources/shapes/shp punkte/brunnen_pic.prj
===================================================================
--- trunk/testresources/shapes/shp punkte/brunnen_pic.prj	2010-11-03 09:36:26 UTC (rev 1211)
+++ trunk/testresources/shapes/shp punkte/brunnen_pic.prj	2010-11-03 10:49:38 UTC (rev 1212)
@@ -0,0 +1 @@
+PROJCS["WGS_1984_UTM_Zone_31N",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",3.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]
\ No newline at end of file

Added: trunk/testresources/shapes/shp punkte/brunnen_pic.qix
===================================================================
(Binary files differ)


Property changes on: trunk/testresources/shapes/shp punkte/brunnen_pic.qix
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/testresources/shapes/shp punkte/brunnen_pic.sbn
===================================================================
(Binary files differ)


Property changes on: trunk/testresources/shapes/shp punkte/brunnen_pic.sbn
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/testresources/shapes/shp punkte/brunnen_pic.sbx
===================================================================
(Binary files differ)


Property changes on: trunk/testresources/shapes/shp punkte/brunnen_pic.sbx
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/testresources/shapes/shp punkte/brunnen_pic.shp
===================================================================
(Binary files differ)


Property changes on: trunk/testresources/shapes/shp punkte/brunnen_pic.shp
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/testresources/shapes/shp punkte/brunnen_pic.shx
===================================================================
(Binary files differ)


Property changes on: trunk/testresources/shapes/shp punkte/brunnen_pic.shx
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/testresources/shapes/shp punkte/brunnen_pic.sld
===================================================================
--- trunk/testresources/shapes/shp punkte/brunnen_pic.sld	2010-11-03 09:36:26 UTC (rev 1211)
+++ trunk/testresources/shapes/shp punkte/brunnen_pic.sld	2010-11-03 10:49:38 UTC (rev 1212)
@@ -0,0 +1,111 @@
+<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
+<sld:StyledLayerDescriptor version="1.0.0" xmlns:sld="http://www.opengis.net/sld" xmlns:ogc="http://www.opengis.net/ogc" xmlns:xlink="http://www.w3.org/1999/xlink">
+  <sld:NamedLayer>
+    <sld:Name>brunnen_pic</sld:Name>
+    <sld:UserStyle>
+      <sld:Name>Style1</sld:Name>
+      <sld:FeatureTypeStyle>
+        <sld:FeatureTypeName>brunnen_pic</sld:FeatureTypeName>
+	<sld:Rule>
+	  <MinScaleDenominator>1</MinScaleDenominator>
+	  <MaxScaleDenominator>5e6</MaxScaleDenominator>
+
+  	  <sld:TextSymbolizer>
+		<sld:Label><ogc:PropertyName>ABREVIATIO</ogc:PropertyName></sld:Label>
+		<sld:Font>
+			<sld:CssParameter name="font-family"><ogc:Literal>Times New Roman</ogc:Literal></sld:CssParameter>
+			<sld:CssParameter name="font-size"><ogc:Literal>13.0</ogc:Literal></sld:CssParameter>
+			<sld:CssParameter name="font-style"><ogc:Literal>normal</ogc:Literal></sld:CssParameter>
+			<sld:CssParameter name="font-weight"><ogc:Literal>normal</ogc:Literal></sld:CssParameter>
+		</sld:Font>
+		<sld:LabelPlacement>
+		   <sld:PointPlacement>
+                                <sld:AnchorPoint>
+                                    <sld:AnchorPointX>
+                                        <ogc:Literal>0.0</ogc:Literal>
+                                    </sld:AnchorPointX>
+                                    <sld:AnchorPointY>
+                                        <ogc:Literal>0.5</ogc:Literal>
+                                    </sld:AnchorPointY>
+                                </sld:AnchorPoint>
+                                <sld:Displacement>
+                                    <sld:DisplacementX>
+                                        <ogc:Literal>6</ogc:Literal>
+                                    </sld:DisplacementX>
+                                    <sld:DisplacementY>
+                                        <ogc:Literal>0</ogc:Literal>
+                                    </sld:DisplacementY>
+                                </sld:Displacement>
+                                <sld:Rotation>
+                                    <ogc:Literal>0.0</ogc:Literal>
+                                </sld:Rotation>
+                   </sld:PointPlacement>
+		</sld:LabelPlacement>
+		<sld:Fill>
+			<sld:CssParameter name="fill">
+			<ogc:Literal>#0062AD</ogc:Literal></sld:CssParameter>
+			<sld:CssParameter name="fill-opacity">
+			<ogc:Literal>1</ogc:Literal></sld:CssParameter>
+		</sld:Fill>
+		<Halo>
+		<sld:Fill>
+			<sld:CssParameter name="fill">
+			<ogc:Literal>#FFFFFF</ogc:Literal></sld:CssParameter>
+			<sld:CssParameter name="fill-opacity">
+			<ogc:Literal>0.8</ogc:Literal></sld:CssParameter>
+		</sld:Fill>
+		</Halo>
+	    </sld:TextSymbolizer>
+	</sld:Rule>
+
+        <sld:Rule>
+
+	  <MinScaleDenominator>1</MinScaleDenominator>
+	  <MaxScaleDenominator>5e6</MaxScaleDenominator>
+
+          <sld:Name>brunnen_pic</sld:Name>
+          <sld:Title>de{Brunnen}en{wells}fr{Puits}</sld:Title>
+          <sld:PointSymbolizer>
+            <sld:Graphic>
+              <sld:Mark>
+                <sld:WellKnownName>circle</sld:WellKnownName>
+                <sld:Fill>
+                  <sld:CssParameter name="fill">#FFFFFF</sld:CssParameter>
+                  <sld:CssParameter name="fill-opacity">1</sld:CssParameter>
+                </sld:Fill>
+
+                <sld:Stroke>
+                  <sld:CssParameter name="stroke">#0062AD</sld:CssParameter>
+                  <sld:CssParameter name="stroke-width">1.3</sld:CssParameter>
+                  <sld:CssParameter name="stroke-opacity">0.8</sld:CssParameter>
+                </sld:Stroke>
+
+              </sld:Mark>
+              <sld:Size>8.5</sld:Size>
+              <sld:Rotation>0</sld:Rotation>
+            </sld:Graphic>
+          </sld:PointSymbolizer>
+
+          <sld:PointSymbolizer>
+            <sld:Graphic>
+              <sld:Mark>
+                <sld:WellKnownName>circle</sld:WellKnownName>
+                <sld:Fill>
+                  <sld:CssParameter name="fill">#0062AD</sld:CssParameter>
+                  <sld:CssParameter name="fill-opacity">1.0</sld:CssParameter>
+                </sld:Fill>
+                <sld:Stroke>
+                  <sld:CssParameter name="stroke">#000000</sld:CssParameter>
+                  <sld:CssParameter name="stroke-width">1</sld:CssParameter>
+                  <sld:CssParameter name="stroke-opacity">1.0</sld:CssParameter>
+                </sld:Stroke>
+              </sld:Mark>
+              <sld:Size>4</sld:Size>
+              <sld:Rotation>0</sld:Rotation>
+            </sld:Graphic>
+          </sld:PointSymbolizer>
+        </sld:Rule>
+      </sld:FeatureTypeStyle>
+    </sld:UserStyle>
+  </sld:NamedLayer>
+</sld:StyledLayerDescriptor>
\ No newline at end of file


Property changes on: trunk/testresources/shapes/shp punkte/brunnen_pic.sld
___________________________________________________________________
Name: svn:mime-type
   + text/xml
Name: svn:keywords
   + Id URL
Name: svn:eol-style
   + native

Added: trunk/testresources/shapes/shp punkte/brunnen_pic.xls
===================================================================
(Binary files differ)


Property changes on: trunk/testresources/shapes/shp punkte/brunnen_pic.xls
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/testresources/shapes/shp_strassen/waterways.cpg
===================================================================
--- trunk/testresources/shapes/shp_strassen/waterways.cpg	2010-11-03 09:36:26 UTC (rev 1211)
+++ trunk/testresources/shapes/shp_strassen/waterways.cpg	2010-11-03 10:49:38 UTC (rev 1212)
@@ -0,0 +1 @@
+windows-1252
\ No newline at end of file

Added: trunk/testresources/shapes/shp_strassen/waterways.dbf
===================================================================
(Binary files differ)


Property changes on: trunk/testresources/shapes/shp_strassen/waterways.dbf
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/testresources/shapes/shp_strassen/waterways.fix
===================================================================
(Binary files differ)


Property changes on: trunk/testresources/shapes/shp_strassen/waterways.fix
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/testresources/shapes/shp_strassen/waterways.prj
===================================================================
--- trunk/testresources/shapes/shp_strassen/waterways.prj	2010-11-03 09:36:26 UTC (rev 1211)
+++ trunk/testresources/shapes/shp_strassen/waterways.prj	2010-11-03 10:49:38 UTC (rev 1212)
@@ -0,0 +1 @@
+GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]

Added: trunk/testresources/shapes/shp_strassen/waterways.shp
===================================================================
(Binary files differ)


Property changes on: trunk/testresources/shapes/shp_strassen/waterways.shp
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/testresources/shapes/shp_strassen/waterways.shx
===================================================================
(Binary files differ)


Property changes on: trunk/testresources/shapes/shp_strassen/waterways.shx
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/testresources/shapes/shp_strassen/waterways.sld
===================================================================
--- trunk/testresources/shapes/shp_strassen/waterways.sld	2010-11-03 09:36:26 UTC (rev 1211)
+++ trunk/testresources/shapes/shp_strassen/waterways.sld	2010-11-03 10:49:38 UTC (rev 1212)
@@ -0,0 +1,155 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<sld:UserStyle xmlns="http://www.opengis.net/sld" xmlns:sld="http://www.opengis.net/sld" xmlns:ogc="http://www.opengis.net/ogc" xmlns:gml="http://www.opengis.net/gml">
+  <sld:Name>AtlasStyler v1.1, b155 (2009/08/20 15:50)</sld:Name>
+  <sld:Title>Default Styler</sld:Title>
+  <sld:Abstract/>
+  <sld:FeatureTypeStyle>
+    <sld:Name>UNIQUE_VALUE_LINE</sld:Name>
+    <sld:Title>title</sld:Title>
+    <sld:Abstract>abstract</sld:Abstract>
+    <sld:FeatureTypeName>waterways</sld:FeatureTypeName>
+    <sld:SemanticTypeIdentifier>generic:geometry</sld:SemanticTypeIdentifier>
+    <sld:Rule>
+      <sld:Title>river</sld:Title>
+      <ogc:Filter>
+        <ogc:PropertyIsEqualTo>
+          <ogc:PropertyName>type</ogc:PropertyName>
+          <ogc:Literal>river</ogc:Literal>
+        </ogc:PropertyIsEqualTo>
+      </ogc:Filter>
+      <sld:MaxScaleDenominator>1.7976931348623157E308</sld:MaxScaleDenominator>
+      <sld:LineSymbolizer>
+        <sld:Geometry>
+          <sld:PropertyName>the_geom</sld:PropertyName>
+        </sld:Geometry>
+        <sld:Stroke>
+          <sld:CssParameter name="stroke">
+            <ogc:Literal>#0000cc</ogc:Literal>
+          </sld:CssParameter>
+          <sld:CssParameter name="stroke-linecap">
+            <ogc:Literal>round</ogc:Literal>
+          </sld:CssParameter>
+          <sld:CssParameter name="stroke-linejoin">
+            <ogc:Literal>miter</ogc:Literal>
+          </sld:CssParameter>
+          <sld:CssParameter name="stroke-opacity">
+            <ogc:Literal>1.0</ogc:Literal>
+          </sld:CssParameter>
+          <sld:CssParameter name="stroke-width">
+            <ogc:Literal>1.5</ogc:Literal>
+          </sld:CssParameter>
+          <sld:CssParameter name="stroke-dashoffset">
+            <ogc:Literal>0.0</ogc:Literal>
+          </sld:CssParameter>
+        </sld:Stroke>
+      </sld:LineSymbolizer>
+    </sld:Rule>
+    <sld:Rule>
+      <sld:Title>canal</sld:Title>
+      <ogc:Filter>
+        <ogc:PropertyIsEqualTo>
+          <ogc:PropertyName>type</ogc:PropertyName>
+          <ogc:Literal>canal</ogc:Literal>
+        </ogc:PropertyIsEqualTo>
+      </ogc:Filter>
+      <sld:MaxScaleDenominator>1.7976931348623157E308</sld:MaxScaleDenominator>
+      <sld:LineSymbolizer>
+        <sld:Geometry>
+          <sld:PropertyName>the_geom</sld:PropertyName>
+        </sld:Geometry>
+        <sld:Stroke>
+          <sld:CssParameter name="stroke">
+            <ogc:Literal>#0000cc</ogc:Literal>
+          </sld:CssParameter>
+          <sld:CssParameter name="stroke-linecap">
+            <ogc:Literal>round</ogc:Literal>
+          </sld:CssParameter>
+          <sld:CssParameter name="stroke-linejoin">
+            <ogc:Literal>miter</ogc:Literal>
+          </sld:CssParameter>
+          <sld:CssParameter name="stroke-opacity">
+            <ogc:Literal>1.0</ogc:Literal>
+          </sld:CssParameter>
+          <sld:CssParameter name="stroke-width">
+            <ogc:Literal>1.5</ogc:Literal>
+          </sld:CssParameter>
+          <sld:CssParameter name="stroke-dashoffset">
+            <ogc:Literal>0.0</ogc:Literal>
+          </sld:CssParameter>
+        </sld:Stroke>
+      </sld:LineSymbolizer>
+    </sld:Rule>
+  </sld:FeatureTypeStyle>
+  <sld:FeatureTypeStyle>
+    <sld:Name>TEXT_LABEL</sld:Name>
+    <sld:Title>title</sld:Title>
+    <sld:Abstract>abstract</sld:Abstract>
+    <sld:FeatureTypeName>Feature</sld:FeatureTypeName>
+    <sld:SemanticTypeIdentifier>generic:geometry</sld:SemanticTypeIdentifier>
+    <sld:Rule>
+      <sld:Name>Default/all others</sld:Name>
+      <ogc:Filter>
+        <ogc:And>
+          <ogc:PropertyIsEqualTo>
+            <ogc:Literal>1</ogc:Literal>
+            <ogc:Literal>2</ogc:Literal>
+          </ogc:PropertyIsEqualTo>
+          <ogc:PropertyIsEqualTo>
+            <ogc:Literal>1</ogc:Literal>
+            <ogc:Literal>1</ogc:Literal>
+          </ogc:PropertyIsEqualTo>
+        </ogc:And>
+      </ogc:Filter>
+      <sld:TextSymbolizer>
+        <sld:Label>
+          <ogc:PropertyName>type</ogc:PropertyName>
+        </sld:Label>
+        <sld:Font>
+          <sld:CssParameter name="font-family">
+            <ogc:Literal>Times New Roman</ogc:Literal>
+          </sld:CssParameter>
+          <sld:CssParameter name="font-size">
+            <ogc:Literal>11.0</ogc:Literal>
+          </sld:CssParameter>
+          <sld:CssParameter name="font-style">
+            <ogc:Literal>normal</ogc:Literal>
+          </sld:CssParameter>
+          <sld:CssParameter name="font-weight">
+            <ogc:Literal>normal</ogc:Literal>
+          </sld:CssParameter>
+        </sld:Font>
+        <sld:LabelPlacement>
+          <sld:PointPlacement>
+            <sld:AnchorPoint>
+              <sld:AnchorPointX>
+                <ogc:Literal>0.0</ogc:Literal>
+              </sld:AnchorPointX>
+              <sld:AnchorPointY>
+                <ogc:Literal>0.5</ogc:Literal>
+              </sld:AnchorPointY>
+            </sld:AnchorPoint>
+            <sld:Displacement>
+              <sld:DisplacementX>
+                <ogc:Literal>0</ogc:Literal>
+              </sld:DisplacementX>
+              <sld:DisplacementY>
+                <ogc:Literal>0</ogc:Literal>
+              </sld:DisplacementY>
+            </sld:Displacement>
+            <sld:Rotation>
+              <ogc:Literal>0</ogc:Literal>
+            </sld:Rotation>
+          </sld:PointPlacement>
+        </sld:LabelPlacement>
+        <sld:Fill>
+          <sld:CssParameter name="fill">
+            <ogc:Literal>#000000</ogc:Literal>
+          </sld:CssParameter>
+          <sld:CssParameter name="fill-opacity">
+            <ogc:Literal>1.0</ogc:Literal>
+          </sld:CssParameter>
+        </sld:Fill>
+      </sld:TextSymbolizer>
+    </sld:Rule>
+  </sld:FeatureTypeStyle>
+</sld:UserStyle>


Property changes on: trunk/testresources/shapes/shp_strassen/waterways.sld
___________________________________________________________________
Name: svn:mime-type
   + text/xml
Name: svn:keywords
   + Id URL
Name: svn:eol-style
   + native



More information about the Schmitzm-commits mailing list