From cf10aa32ab3cdcb14826e1a2da59b289defff799 Mon Sep 17 00:00:00 2001 From: ?? ? <ulysseskao@ximple.com.tw> Date: Mon, 25 Aug 2008 14:44:27 +0800 Subject: [PATCH] update for EOFM-153 --- xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/orasdo/IndexDgnConvertOraSDOJobContext.java | 66 +++++++++++++ xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/shapefile/IndexDgnConvertShpJobContext.java | 85 +++++++++++++++++ xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/mysql/IndexDgnConvertMySQLJobContext.java | 66 +++++++++++++ xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/IndexDgnConvertPostGISJobContext.java | 83 ++++++++++++++++ 4 files changed, 300 insertions(+), 0 deletions(-) diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/mysql/IndexDgnConvertMySQLJobContext.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/mysql/IndexDgnConvertMySQLJobContext.java index c825407..fe641c7 100644 --- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/mysql/IndexDgnConvertMySQLJobContext.java +++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/mysql/IndexDgnConvertMySQLJobContext.java @@ -54,6 +54,7 @@ private FeatureTypeBuilder typeBuilderRect = null; private FeatureType featureType = null; private FeatureType featureType2 = null; + private FeatureType featureType3 = null; public IndexDgnConvertMySQLJobContext(String dataPath, DataStore targetDataStore) { @@ -265,6 +266,55 @@ return null; } + public Feature[] createFeature3(FeatureType featureType, Element element) throws IllegalAttributeException + { + DefaultColorTable colorTable = (DefaultColorTable) DefaultColorTable.getInstance(); + if (element instanceof TextElement) + { + TextElement textElement = (TextElement) element; + String tpclid = textElement.getText(); + Feature[] result = new Feature[4]; + + Envelope extent = TPCLIDConverter.convertTpclIdToEnvelope(tpclid); + + for (int i = 0; i < 4; i++) + { + char mapSubId = TPCLIDConverter.intToAscii(65 + i); + int dx = (i % 2) * TPCLIDConverter.SX600; + int dy = (i / 2) * TPCLIDConverter.SY600; + + Geometry geom = geometryFactory.createPolygon(geometryFactory.createLinearRing(new Coordinate[] + { + TWDDatumConverter.fromTM2ToTWD97(new Coordinate( + extent.getMinX() + dx, extent.getMaxY() - TPCLIDConverter.SY600 - dy)), + TWDDatumConverter.fromTM2ToTWD97(new Coordinate( + extent.getMinX() + TPCLIDConverter.SX600 + dx, extent.getMaxY() - TPCLIDConverter.SY600 - dy)), + TWDDatumConverter.fromTM2ToTWD97(new Coordinate( + extent.getMinX() + TPCLIDConverter.SX600 + dx, extent.getMaxY() - dy)), + TWDDatumConverter.fromTM2ToTWD97(new Coordinate( + extent.getMinX() + dx, extent.getMaxY() - dy)), + TWDDatumConverter.fromTM2ToTWD97(new Coordinate( + extent.getMinX() + dx, extent.getMaxY() - TPCLIDConverter.SY600 - dy)), + }), null); + + result[i] = featureType.create(new Object[]{ + geom, + extent.getMinX(), + extent.getMinY(), + extent.getMaxX(), + extent.getMaxY(), + tpclid + mapSubId, + colorTable.getColorCode(textElement.getColorIndex()), + textElement.getWeight(), + textElement.getLineStyle() + }); + + } + return result; + } + return null; + } + private Feature createFeature(TextElement element) throws SchemaException, IllegalAttributeException { if (featureType == null) @@ -296,6 +346,22 @@ return createFeature2(featureType2, element); } + private Feature[] createFeature3(TextElement element) throws SchemaException, IllegalAttributeException + { + if (featureType3 == null) + { + String dgnname = getFilename().toLowerCase(); + int i = dgnname.lastIndexOf("."); + if (i != -1) + { + dgnname = dgnname.substring(0, i); + } + dgnname = dgnname + "_s"; + featureType3 = createFeatureElement(dgnname.toLowerCase()); + } + return createFeature3(featureType3, element); + } + protected FrammeAttributeData getFeatureLinkage(Element element) { if (!element.hasUserAttributeData()) diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/orasdo/IndexDgnConvertOraSDOJobContext.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/orasdo/IndexDgnConvertOraSDOJobContext.java index 5db125b..e4e1976 100644 --- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/orasdo/IndexDgnConvertOraSDOJobContext.java +++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/orasdo/IndexDgnConvertOraSDOJobContext.java @@ -54,6 +54,7 @@ private FeatureTypeBuilder typeBuilderRect = null; private FeatureType featureType = null; private FeatureType featureType2 = null; + private FeatureType featureType3 = null; public IndexDgnConvertOraSDOJobContext(String dataPath, DataStore targetDataStore) { @@ -265,6 +266,55 @@ return null; } + public Feature[] createFeature3(FeatureType featureType, Element element) throws IllegalAttributeException + { + DefaultColorTable colorTable = (DefaultColorTable) DefaultColorTable.getInstance(); + if (element instanceof TextElement) + { + TextElement textElement = (TextElement) element; + String tpclid = textElement.getText(); + Feature[] result = new Feature[4]; + + Envelope extent = TPCLIDConverter.convertTpclIdToEnvelope(tpclid); + + for (int i = 0; i < 4; i++) + { + char mapSubId = TPCLIDConverter.intToAscii(65 + i); + int dx = (i % 2) * TPCLIDConverter.SX600; + int dy = (i / 2) * TPCLIDConverter.SY600; + + Geometry geom = geometryFactory.createPolygon(geometryFactory.createLinearRing(new Coordinate[] + { + TWDDatumConverter.fromTM2ToTWD97(new Coordinate( + extent.getMinX() + dx, extent.getMaxY() - TPCLIDConverter.SY600 - dy)), + TWDDatumConverter.fromTM2ToTWD97(new Coordinate( + extent.getMinX() + TPCLIDConverter.SX600 + dx, extent.getMaxY() - TPCLIDConverter.SY600 - dy)), + TWDDatumConverter.fromTM2ToTWD97(new Coordinate( + extent.getMinX() + TPCLIDConverter.SX600 + dx, extent.getMaxY() - dy)), + TWDDatumConverter.fromTM2ToTWD97(new Coordinate( + extent.getMinX() + dx, extent.getMaxY() - dy)), + TWDDatumConverter.fromTM2ToTWD97(new Coordinate( + extent.getMinX() + dx, extent.getMaxY() - TPCLIDConverter.SY600 - dy)), + }), null); + + result[i] = featureType.create(new Object[]{ + geom, + extent.getMinX(), + extent.getMinY(), + extent.getMaxX(), + extent.getMaxY(), + tpclid + mapSubId, + colorTable.getColorCode(textElement.getColorIndex()), + textElement.getWeight(), + textElement.getLineStyle() + }); + + } + return result; + } + return null; + } + private Feature createFeature(TextElement element) throws SchemaException, IllegalAttributeException { if (featureType == null) @@ -296,6 +346,22 @@ return createFeature2(featureType2, element); } + private Feature[] createFeature3(TextElement element) throws SchemaException, IllegalAttributeException + { + if (featureType3 == null) + { + String dgnname = getFilename().toLowerCase(); + int i = dgnname.lastIndexOf("."); + if (i != -1) + { + dgnname = dgnname.substring(0, i); + } + dgnname = dgnname + "_s"; + featureType3 = createFeatureElement(dgnname.toLowerCase()); + } + return createFeature3(featureType3, element); + } + protected FrammeAttributeData getFeatureLinkage(Element element) { if (!element.hasUserAttributeData()) diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/IndexDgnConvertPostGISJobContext.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/IndexDgnConvertPostGISJobContext.java index fb07f8c..08156d7 100644 --- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/IndexDgnConvertPostGISJobContext.java +++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/IndexDgnConvertPostGISJobContext.java @@ -11,6 +11,7 @@ import java.util.HashMap; import java.util.Iterator; import java.util.List; +import java.util.Arrays; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -51,8 +52,10 @@ private FeatureTypeBuilder typeBuilderPnt = null; private FeatureTypeBuilder typeBuilderRect = null; + private FeatureType featureType = null; private FeatureType featureType2 = null; + private FeatureType featureType3 = null; private boolean dropTableMode = true; private int accumulate = 0; @@ -98,6 +101,21 @@ } arrayList = txFeaturesContext.get(feature.getFeatureType()); arrayList.add(feature); + + Feature[] features = createFeature3((TextElement) element); + if (features == null) + { + logger.info("cannot craete feature3." + element.toString() + "'" + + ((TextElement) element).getText() + "'"); + return; + } + if (!txFeaturesContext.containsKey(features[0].getFeatureType())) + { + txFeaturesContext.put(features[0].getFeatureType(), new ArrayList<Feature>()); + } + arrayList = txFeaturesContext.get(features[0].getFeatureType()); + arrayList.addAll(Arrays.asList(features)); + accumulate++; if (accumulate > BATCHSIZE) @@ -400,6 +418,55 @@ return null; } + public Feature[] createFeature3(FeatureType featureType, Element element) throws IllegalAttributeException + { + DefaultColorTable colorTable = (DefaultColorTable) DefaultColorTable.getInstance(); + if (element instanceof TextElement) + { + TextElement textElement = (TextElement) element; + String tpclid = textElement.getText(); + Feature[] result = new Feature[4]; + + Envelope extent = TPCLIDConverter.convertTpclIdToEnvelope(tpclid); + + for (int i = 0; i < 4; i++) + { + char mapSubId = TPCLIDConverter.intToAscii(65 + i); + int dx = (i % 2) * TPCLIDConverter.SX600; + int dy = (i / 2) * TPCLIDConverter.SY600; + + Geometry geom = geometryFactory.createPolygon(geometryFactory.createLinearRing(new Coordinate[] + { + TWDDatumConverter.fromTM2ToTWD97(new Coordinate( + extent.getMinX() + dx, extent.getMaxY() - TPCLIDConverter.SY600 - dy)), + TWDDatumConverter.fromTM2ToTWD97(new Coordinate( + extent.getMinX() + TPCLIDConverter.SX600 + dx, extent.getMaxY() - TPCLIDConverter.SY600 - dy)), + TWDDatumConverter.fromTM2ToTWD97(new Coordinate( + extent.getMinX() + TPCLIDConverter.SX600 + dx, extent.getMaxY() - dy)), + TWDDatumConverter.fromTM2ToTWD97(new Coordinate( + extent.getMinX() + dx, extent.getMaxY() - dy)), + TWDDatumConverter.fromTM2ToTWD97(new Coordinate( + extent.getMinX() + dx, extent.getMaxY() - TPCLIDConverter.SY600 - dy)), + }), null); + + result[i] = featureType.create(new Object[]{ + geom, + extent.getMinX(), + extent.getMinY(), + extent.getMaxX(), + extent.getMaxY(), + tpclid + mapSubId, + colorTable.getColorCode(textElement.getColorIndex()), + textElement.getWeight(), + textElement.getLineStyle() + }); + + } + return result; + } + return null; + } + private Feature createFeature(TextElement element) throws SchemaException, IllegalAttributeException { if (featureType == null) @@ -431,6 +498,22 @@ return createFeature2(featureType2, element); } + private Feature[] createFeature3(TextElement element) throws SchemaException, IllegalAttributeException + { + if (featureType3 == null) + { + String dgnname = getFilename().toLowerCase(); + int i = dgnname.lastIndexOf("."); + if (i != -1) + { + dgnname = dgnname.substring(0, i); + } + dgnname = dgnname + "_s"; + featureType3 = createFeatureElement(dgnname.toLowerCase()); + } + return createFeature3(featureType3, element); + } + protected FrammeAttributeData getFeatureLinkage(Element element) { if (!element.hasUserAttributeData()) diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/shapefile/IndexDgnConvertShpJobContext.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/shapefile/IndexDgnConvertShpJobContext.java index c1806cf..e737bda 100644 --- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/shapefile/IndexDgnConvertShpJobContext.java +++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/shapefile/IndexDgnConvertShpJobContext.java @@ -10,6 +10,7 @@ import java.util.HashMap; import java.util.Iterator; import java.util.List; +import java.util.Arrays; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -60,6 +61,9 @@ private FeatureTypeBuilder typeBuilderRect = null; private FeatureType featureType = null; private FeatureType featureType2 = null; + private FeatureType featureType3 = null; + + private int accumulate = 0; public IndexDgnConvertShpJobContext(String dataPath) { @@ -103,6 +107,22 @@ } arrayList = (ArrayList) txFeaturesContext.get(feature.getFeatureType()); arrayList.add(feature); + + Feature[] features = createFeature3((TextElement) element); + if (features == null) + { + logger.info("cannot craete feature3." + element.toString() + "'" + + ((TextElement) element).getText() + "'"); + return; + } + if (!txFeaturesContext.containsKey(features[0].getFeatureType())) + { + txFeaturesContext.put(features[0].getFeatureType(), new ArrayList<Feature>()); + } + arrayList = (ArrayList) txFeaturesContext.get(features[0].getFeatureType()); + arrayList.addAll(Arrays.asList(features)); + + accumulate++; } public void startTransaction() @@ -289,6 +309,55 @@ return null; } + public Feature[] createFeature3(FeatureType featureType, Element element) throws IllegalAttributeException + { + DefaultColorTable colorTable = (DefaultColorTable) DefaultColorTable.getInstance(); + if (element instanceof TextElement) + { + TextElement textElement = (TextElement) element; + String tpclid = textElement.getText(); + Feature[] result = new Feature[4]; + + Envelope extent = TPCLIDConverter.convertTpclIdToEnvelope(tpclid); + + for (int i = 0; i < 4; i++) + { + char mapSubId = TPCLIDConverter.intToAscii(65 + i); + int dx = (i % 2) * TPCLIDConverter.SX600; + int dy = (i / 2) * TPCLIDConverter.SY600; + + Geometry geom = geometryFactory.createPolygon(geometryFactory.createLinearRing(new Coordinate[] + { + TWDDatumConverter.fromTM2ToTWD97(new Coordinate( + extent.getMinX() + dx, extent.getMaxY() - TPCLIDConverter.SY600 - dy)), + TWDDatumConverter.fromTM2ToTWD97(new Coordinate( + extent.getMinX() + TPCLIDConverter.SX600 + dx, extent.getMaxY() - TPCLIDConverter.SY600 - dy)), + TWDDatumConverter.fromTM2ToTWD97(new Coordinate( + extent.getMinX() + TPCLIDConverter.SX600 + dx, extent.getMaxY() - dy)), + TWDDatumConverter.fromTM2ToTWD97(new Coordinate( + extent.getMinX() + dx, extent.getMaxY() - dy)), + TWDDatumConverter.fromTM2ToTWD97(new Coordinate( + extent.getMinX() + dx, extent.getMaxY() - TPCLIDConverter.SY600 - dy)), + }), null); + + result[i] = featureType.create(new Object[]{ + geom, + extent.getMinX(), + extent.getMinY(), + extent.getMaxX(), + extent.getMaxY(), + tpclid + mapSubId, + colorTable.getColorCode(textElement.getColorIndex()), + textElement.getWeight(), + textElement.getLineStyle() + }); + + } + return result; + } + return null; + } + private Feature createFeature(TextElement element) throws SchemaException, IllegalAttributeException { if (featureType == null) @@ -320,6 +389,22 @@ return createFeature2(featureType2, element); } + private Feature[] createFeature3(TextElement element) throws SchemaException, IllegalAttributeException + { + if (featureType3 == null) + { + String dgnname = getFilename().toLowerCase(); + int i = dgnname.lastIndexOf("."); + if (i != -1) + { + dgnname = dgnname.substring(0, i); + } + dgnname = dgnname + "_s"; + featureType3 = createFeatureElement(dgnname.toLowerCase()); + } + return createFeature3(featureType3, element); + } + protected FrammeAttributeData getFeatureLinkage(Element element) { if (!element.hasUserAttributeData()) -- Gitblit v0.0.0-SNAPSHOT