001: //$HeadURL: https://svn.wald.intevation.org/svn/deegree/base/trunk/src/org/deegree/tools/shape/GML2Shape_new.java $
002: /*---------------- FILE HEADER ------------------------------------------
003:
004: This file is part of deegree.
005: Copyright (C) 2001-2008 by:
006: EXSE, Department of Geography, University of Bonn
007: http://www.giub.uni-bonn.de/deegree/
008: lat/lon GmbH
009: http://www.lat-lon.de
010:
011: This library is free software; you can redistribute it and/or
012: modify it under the terms of the GNU Lesser General Public
013: License as published by the Free Software Foundation; either
014: version 2.1 of the License, or (at your option) any later version.
015:
016: This library is distributed in the hope that it will be useful,
017: but WITHOUT ANY WARRANTY; without even the implied warranty of
018: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
019: Lesser General Public License for more details.
020:
021: You should have received a copy of the GNU Lesser General Public
022: License along with this library; if not, write to the Free Software
023: Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
024:
025: Contact:
026:
027: Andreas Poth
028: lat/lon GmbH
029: Aennchenstr. 19
030: 53115 Bonn
031: Germany
032: E-Mail: poth@lat-lon.de
033:
034: Prof. Dr. Klaus Greve
035: Department of Geography
036: University of Bonn
037: Meckenheimer Allee 166
038: 53115 Bonn
039: Germany
040: E-Mail: greve@giub.uni-bonn.de
041:
042:
043: ---------------------------------------------------------------------------*/
044: package org.deegree.tools.shape;
045:
046: import java.io.File;
047: import java.io.IOException;
048: import java.net.MalformedURLException;
049: import java.net.URL;
050:
051: import org.deegree.framework.log.ILogger;
052: import org.deegree.framework.log.LoggerFactory;
053: import org.deegree.framework.xml.XMLParsingException;
054: import org.deegree.io.dbaseapi.DBaseException;
055: import org.deegree.io.shpapi.shape_new.ShapeFile;
056: import org.deegree.io.shpapi.shape_new.ShapeFileWriter;
057: import org.deegree.model.feature.FeatureCollection;
058: import org.deegree.model.feature.GMLFeatureCollectionDocument;
059: import org.deegree.model.spatialschema.GeometryException;
060: import org.xml.sax.SAXException;
061:
062: /**
063: *
064: *
065: * @version $Revision: 9346 $
066: * @author <a href="mailto:poth@lat-lon.de">Andreas Poth</a>
067: * @author last edited by: $Author: apoth $
068: *
069: * @version 1.0. $Revision: 9346 $, $Date: 2007-12-27 08:39:07 -0800 (Thu, 27 Dec 2007) $
070: *
071: * @since 1.1
072: */
073: public class GML2Shape_new {
074:
075: private static final ILogger LOG = LoggerFactory
076: .getLogger(GML2Shape_new.class);
077:
078: private FeatureCollection fc = null;
079:
080: private String inName = null;
081:
082: private String outName = null;
083:
084: /**
085: * @param inName
086: * @param outName
087: */
088: public GML2Shape_new(String inName, String outName) {
089: if (outName.endsWith(".shp")) {
090: outName = outName.substring(0, outName.lastIndexOf("."));
091: }
092: this .inName = inName;
093: this .outName = outName;
094: }
095:
096: /**
097: * @throws IOException
098: * @throws SAXException
099: * @throws XMLParsingException
100: */
101: public void read() throws IOException, SAXException,
102: XMLParsingException {
103: LOG.logInfo("Reading " + inName + " ... ");
104: GMLFeatureCollectionDocument doc = new GMLFeatureCollectionDocument();
105: URL url;
106: try {
107: url = new URL(inName);
108: } catch (MalformedURLException e) {
109: url = new File(inName).toURL();
110: }
111: doc.load(url.openStream(), url.toString());
112: fc = doc.parse();
113: }
114:
115: /**
116: * @throws GeometryException
117: * @throws DBaseException
118: * @throws IOException
119: *
120: */
121: public void write() throws DBaseException, GeometryException,
122: IOException {
123: LOG.logInfo("Writing " + outName + " ... ");
124: ShapeFile sf = new ShapeFile(fc, outName);
125: ShapeFileWriter writer = new ShapeFileWriter(sf);
126: writer.write(outName);
127: LOG.logInfo("Done.");
128: }
129:
130: /**
131: * This is a command line tool.
132: *
133: * @param args
134: */
135: public static void main(String[] args) {
136: try {
137:
138: if (args == null || args.length < 2) {
139: System.out
140: .println("Usage: java -cp ... ...GML2Shape_new <inputfile/URL> <outputfile basename>");
141: System.exit(1);
142: }
143:
144: GML2Shape_new rws = new GML2Shape_new(args[0], args[1]);
145: rws.read();
146: rws.write();
147:
148: } catch (IOException e) {
149: LOG.logError("IO error occured.", e);
150: } catch (SAXException e) {
151: LOG.logError("The GML file could not be parsed.", e);
152: } catch (XMLParsingException e) {
153: LOG.logError("The GML file could not be parsed.", e);
154: } catch (DBaseException e) {
155: LOG.logError("Could not create .dbf for shapefile.", e);
156: } catch (GeometryException e) {
157: LOG.logError("A geometry was faulty.", e);
158: }
159: }
160: }
|