From fef782cea66c18da7c3686dac0416c56fa85d3d4 Mon Sep 17 00:00:00 2001 From: ?? ? <ulysseskao@ximple.com.tw> Date: Fri, 14 Mar 2008 17:10:01 +0800 Subject: [PATCH] update for EOFM-17 --- ximple-spatialjob/pom.xml | 9 ++++ ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2ShpJob.java | 67 +++++++++++++++++++++++++++++++++ 2 files changed, 75 insertions(+), 1 deletions(-) diff --git a/ximple-spatialjob/pom.xml b/ximple-spatialjob/pom.xml index d9599af..b902407 100644 --- a/ximple-spatialjob/pom.xml +++ b/ximple-spatialjob/pom.xml @@ -175,6 +175,11 @@ </dependency> <dependency> <groupId>org.geotools</groupId> + <artifactId>gt2-shapefile</artifactId> + <version>${gt.version}</version> + </dependency> + <dependency> + <groupId>org.geotools</groupId> <artifactId>gt2-sample-data</artifactId> <version>${gt.version}</version> <scope>test</scope> @@ -283,6 +288,10 @@ <groupId>org.geotools</groupId> </dependency> <dependency> + <artifactId>gt2-shapefile</artifactId> + <groupId>org.geotools</groupId> + </dependency> + <dependency> <artifactId>gt2-sample-data</artifactId> <groupId>org.geotools</groupId> <scope>test</scope> diff --git a/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2ShpJob.java b/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2ShpJob.java index 5dc43b3..93a6f0f 100644 --- a/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2ShpJob.java +++ b/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2ShpJob.java @@ -1,6 +1,9 @@ package com.ximple.eofms.jobs; +import java.io.File; +import java.io.IOException; import java.math.BigDecimal; +import java.net.MalformedURLException; import java.nio.ByteBuffer; import java.nio.ByteOrder; import java.sql.ResultSet; @@ -14,8 +17,19 @@ import org.apache.commons.collections.map.LinkedMap; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.geotools.data.FeatureWriter; +import org.geotools.data.Transaction; +import org.geotools.data.shapefile.ShapefileDataStore; +import org.geotools.feature.AttributeTypeFactory; import org.geotools.feature.Feature; import org.geotools.feature.FeatureCollection; +import org.geotools.feature.FeatureCollections; +import org.geotools.feature.FeatureType; +import org.geotools.feature.FeatureTypeBuilder; +import org.geotools.feature.IllegalAttributeException; +import org.geotools.feature.SchemaException; +import org.geotools.feature.SimpleFeature; +import org.opengis.geometry.Geometry; import org.quartz.JobDetail; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; @@ -34,6 +48,7 @@ import com.ximple.io.dgn7.Element; import com.ximple.io.dgn7.ElementType; import com.ximple.io.dgn7.IElementHandler; +import com.ximple.io.dgn7.LineElement; import com.ximple.util.PrintfFormat; /** @@ -271,7 +286,7 @@ onBinaryElement(rawDest); } catch (Dgn7fileException e) { - logger.warn("Dgn7Exception", e); + logger.warn("Dgn7Exception:" + e.getMessage(), e); } } } @@ -339,6 +354,56 @@ private Feature convertElementToFeature(Element dgnElement) { GeometryFactory geomFactory = new GeometryFactory(); + FeatureTypeBuilder typeBuilder = FeatureTypeBuilder.newInstance("Line"); + + typeBuilder.addType(AttributeTypeFactory.newAttributeType("GEOM", Geometry.class)); + typeBuilder.addType(AttributeTypeFactory.newAttributeType("TID", Integer.class)); + typeBuilder.addType(AttributeTypeFactory.newAttributeType("OID", Long.class)); + typeBuilder.addType(AttributeTypeFactory.newAttributeType("CID", Integer.class)); + typeBuilder.addType(AttributeTypeFactory.newAttributeType("LID", Integer.class)); + typeBuilder.addType(AttributeTypeFactory.newAttributeType("LEVEL", Integer.class)); + typeBuilder.addType(AttributeTypeFactory.newAttributeType("SYMCOLOR", Integer.class)); + typeBuilder.addType(AttributeTypeFactory.newAttributeType("SYMWEIGHT", Integer.class)); + typeBuilder.addType(AttributeTypeFactory.newAttributeType("SYMSTYLE", Integer.class)); + typeBuilder.addType(AttributeTypeFactory.newAttributeType("FONT", String.class)); + typeBuilder.addType(AttributeTypeFactory.newAttributeType("JUST", Integer.class)); + typeBuilder.addType(AttributeTypeFactory.newAttributeType("HEIGHT", Double.class)); + typeBuilder.addType(AttributeTypeFactory.newAttributeType("WIDTH", Double.class)); + typeBuilder.addType(AttributeTypeFactory.newAttributeType("ANGLE", Double.class)); + + // typeBuilder.setNamespace(new URI("")); + Feature feature = null; + try + { + FeatureType featureType = typeBuilder.getFeatureType(); + feature = featureType.create(new Object[]{ + ((LineElement) dgnElement).toGeometry(geomFactory) + }); + + FeatureCollection features = FeatureCollections.newCollection(); + features.add(feature); + + File sfile = new File(""); + ShapefileDataStore shapefileDataStore = new ShapefileDataStore(sfile.toURL()); + shapefileDataStore.createSchema(featureType); + FeatureWriter writer = shapefileDataStore.getFeatureWriter(featureType.getTypeName(), Transaction.AUTO_COMMIT); + ((SimpleFeature) writer.next()).setAttributes(feature.getAttributes(null)); + + } catch (SchemaException e) + { + logger.warn(e.getMessage(), e); + } catch (IllegalAttributeException e) + { + logger.warn(e.getMessage(), e); + } catch (MalformedURLException e) + { + logger.warn(e.getMessage(), e); + } catch (IOException e) + { + logger.warn(e.getMessage(), e); + } + + return null; } -- Gitblit v0.0.0-SNAPSHOT