[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 -> 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 -> 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 -> 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 -> 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 -> 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>[< -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>[> 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