[Schmitzm-commits] r229 - trunk/src/schmitzm/geotools/io
scm-commit@wald.intevation.org
scm-commit at wald.intevation.org
Sat Jul 18 13:28:34 CEST 2009
Author: alfonx
Date: 2009-07-18 13:28:34 +0200 (Sat, 18 Jul 2009)
New Revision: 229
Modified:
trunk/src/schmitzm/geotools/io/GeoExportUtil.java
trunk/src/schmitzm/geotools/io/GeoImportUtil.java
Log:
* Created get/set for the static DefaultCRS variable
* Add a function: public static void writeProjectionFilePrefereEPSG(CRS, File): Schreibt ein Projektions-File (.prj) fuer ein
{@link CoordinateReferenceSystem}. Wenn m?\195?\182glich wird die Schreibweise
"EPSG:12345" anstelle von WKT verwendet.
Modified: trunk/src/schmitzm/geotools/io/GeoExportUtil.java
===================================================================
--- trunk/src/schmitzm/geotools/io/GeoExportUtil.java 2009-07-17 10:21:14 UTC (rev 228)
+++ trunk/src/schmitzm/geotools/io/GeoExportUtil.java 2009-07-18 11:28:34 UTC (rev 229)
@@ -28,6 +28,7 @@
import org.geotools.data.shapefile.ShapefileDataStore;
import org.geotools.feature.FeatureCollection;
import org.geotools.gce.arcgrid.ArcGridRaster;
+import org.opengis.metadata.Identifier;
import org.opengis.referencing.crs.CoordinateReferenceSystem;
import schmitzm.data.WritableGridRaster;
@@ -227,6 +228,57 @@
out.flush();
out.close();
}
+
+ /**
+ * Schreibt ein Projektions-File (.prj) fuer ein
+ * {@link CoordinateReferenceSystem}. Wenn möglich wird die Schreibweise
+ * "EPSG:12345" anstelle von WKT verwendet.
+ *
+ * @param crs
+ * Koordinaten-System
+ * @param output
+ * Datei in die die Projektion geschrieben wird
+ * @exception IOException
+ * falls die Datei nicht geschrieben werden kann
+ */
+ public static void writeProjectionFilePrefereEPSG(
+ CoordinateReferenceSystem crs, File output) throws IOException {
+ PrintWriter out = new PrintWriter(output);
+
+ try {
+
+ String whatToWrite = null;
+
+ /**
+ * LetIf we can determine the EPSG code for this, let's save it as
+ * "EPSG:12345" to the file.
+ */
+ if (!crs.getIdentifiers().isEmpty()) {
+ Object next = crs.getIdentifiers().iterator().next();
+ if (next instanceof Identifier) {
+ Identifier identifier = (Identifier) next;
+ if (identifier.getAuthority().getTitle().equals(
+ "European Petroleum Survey Group")) {
+ whatToWrite = "EPSG:" + identifier.getCode();
+ }
+ }
+ }
+
+ if (whatToWrite == null) {
+ /*
+ * If we don't know the EPSG code for the CRS, save it as WKT
+ */
+ whatToWrite = crs.toWKT();
+ }
+
+ out.println(whatToWrite);
+ out.flush();
+ } finally {
+ out.close();
+ }
+ }
+
+
}
Modified: trunk/src/schmitzm/geotools/io/GeoImportUtil.java
===================================================================
--- trunk/src/schmitzm/geotools/io/GeoImportUtil.java 2009-07-17 10:21:14 UTC (rev 228)
+++ trunk/src/schmitzm/geotools/io/GeoImportUtil.java 2009-07-18 11:28:34 UTC (rev 229)
@@ -105,7 +105,7 @@
* Anwendungen koennen diese Variable gefahrlos ueberschreiben, um ein fuer
* die Anwendung adaequates Standard-CRS zu verwenden.
*/
- public static CoordinateReferenceSystem DEFAULT_CRS = DefaultGeographicCRS.WGS84;
+ private static CoordinateReferenceSystem DEFAULT_CRS = DefaultGeographicCRS.WGS84;
/**
* Diese Methode extrahiert saemtliche Features aus einem ShapeFile-Projekt
@@ -181,7 +181,7 @@
throw new FileNotFoundException("No proper prj-File exists: "+file.getName());
CRS.parseWKT(prjString);
} catch (FileNotFoundException err) {
- store.forceSchemaCRS(DEFAULT_CRS);
+ store.forceSchemaCRS(getDEFAULT_CRS());
LOGGER.warn("No projection found for file "+file.getName()+". Default is used.");
delPrjFile = true; // von DataStore erzeugte Datei wieder loeschen
}
@@ -714,9 +714,12 @@
/**
- * Liest das CRS aus einer URL. Wenn keine CRS gelesen werden kann, dann wird die Endung der URL gegen .prj gewechselt und nochmal versucht bevor das {@link #DEFAULT_CRS} benutzt wird.
- *
- * @author <a href="mailto:skpublic at wikisquare.de">Stefan Alfons Krüger</a>
+ * Liest das CRS aus einer URL. Wenn keine CRS gelesen werden kann, dann
+ * wird die Endung der URL gegen .prj gewechselt und nochmal versucht bevor
+ * das {@link #DEFAULT_CRS} benutzt wird.
+ *
+ * @author <a href="mailto:skpublic at wikisquare.de">Stefan Alfons
+ * Krüger</a>
*/
public static CoordinateReferenceSystem determineProjection(URL prjUrl) {
CoordinateReferenceSystem crs = null;
@@ -729,9 +732,10 @@
} catch (IOException e) {
}
- if (crs == null){
+ if (crs == null) {
try {
- crs = GeoImportUtil.readProjectionFile( IOUtil.changeUrlExt(prjUrl,"prj"));
+ crs = GeoImportUtil.readProjectionFile(IOUtil.changeUrlExt(
+ prjUrl, "prj"));
} catch (IllegalArgumentException e) {
} catch (IOException e) {
}
@@ -740,7 +744,7 @@
// Wenn nicht erfolgreich, Default verwenden
if (crs == null) {
LOGGER.warn("No projection found in URL. Default CRS used.");
- crs = DEFAULT_CRS;
+ crs = getDEFAULT_CRS();
}
return crs;
}
@@ -850,4 +854,14 @@
}
}
+
+public static void setDEFAULT_CRS(CoordinateReferenceSystem dEFAULT_CRS) {
+ DEFAULT_CRS = dEFAULT_CRS;
+}
+
+
+public static CoordinateReferenceSystem getDEFAULT_CRS() {
+ return DEFAULT_CRS;
+}
+
}
More information about the Schmitzm-commits
mailing list