forked from geodmms/xdgnjobs

?? ?
2008-03-14 fef782cea66c18da7c3686dac0416c56fa85d3d4
update for EOFM-17
2 files modified
76 ■■■■■ changed files
ximple-spatialjob/pom.xml 9 ●●●●● patch | view | raw | blame | history
ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2ShpJob.java 67 ●●●●● patch | view | raw | blame | history
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>
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;
    }