[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&uuml;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&uuml;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