From bbaf4ed875548c854622b55a177c8d35ab9238dc Mon Sep 17 00:00:00 2001 From: Dennis Kao <ulysseskao@ximple.com.tw> Date: Thu, 08 Aug 2013 18:00:49 +0800 Subject: [PATCH] geoserver layer setting --- xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/AbstractOracleDatabaseJob.java | 47 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/util/postjts/JtsWrapper.java | 5 xdgnjobs/ximple-spatialjob/src/test/java/com/ximple/eofms/filter/ElementDispatcherTest.java | 8 xdgnjobs/ximple-jobcarrier/.gitignore | 1 .gitattributes | 4 xdgnjobs/ximple-build/maven/jar-collector/pom.xml | 2 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/util/XGeosConfigDigesterUtils.java | 27 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/mysql/OracleConvertMySQLJobContext.java | 10 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/GeoserverIntegrateConfigJob.java | 1016 +++ xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/OracleConvertPostGISJobContext.java | 39 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/util/Bits.java | 2 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/util/TWDDatumConverter.java | 13 xdgnjobs/ximple-spatialjob/pom.xml | 45 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/shapefile/FeatureDgnConvertShpJobContext.java | 25 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/AbstractOracleToPostGISJobContext.java | 60 xdgnjobs/ximple-jobcarrier/src/main/java/com/ximple/eofms/XQuartzJobCarrier.java | 28 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/geoserver/config/XGeosDataConfigMapping.java | 20 xdgnjobs/ximple-jobcarrier/src/main/resources/quartz_jobs_edb.xml | 3 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/util/BinConverter.java | 1 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/util/LangUtil.java | 1 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/orasdo/OracleConvertOraSDOJobContext.java | 35 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/orasdo/AbstractOracleToOraSDOJobContext.java | 12 xdgnjobs/ximple-dgnio/src/test/java/com/ximple/io/dgn7/OracleTarget.java | 4 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2MySQLJob.java | 20 xdgnjobs/ximple-spatialjob/src/main/resources/com/ximple/eofms/geoserver/config/xgeosdataconfig.xml | 11530 ++++++++++++++++++++++++++++++++++++++++++++ xdgnjobs/ximple-build/maven/jar-collector/src/main/java/com/ximple/eofms/maven/JarCollector.java | 49 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2OraSDOJob.java | 38 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2ShpJob.java | 4 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/FeatureDgnConvertPostGISJobContext.java | 23 xdgnjobs/ximple-dgnio/src/main/java/com/ximple/io/dgn7/TextElement.java | 25 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/orasdo/DummyFeatureConvertOraSDOJobContext.java | 32 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/orasdo/FeatureDgnConvertOraSDOJobContext.java | 23 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2PostGISJob.java | 97 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2EdbGeoJob.java | 67 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/edbgeo/IndexDgnConvertEdbGeoJobContext.java | 69 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/AbstractDgnFileJobContext.java | 5 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/edbgeo/GeneralDgnConvertEdbGeoJobContext.java | 3 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/util/FeatureTypeBuilderUtil.java | 34 xdgnjobs/ximple-spatialjob/src/main/resources/com/ximple/eofms/filter/FeatureClassificationRules.xml | 2 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/edbgeo/OracleConvertEdbGeoJobContext.java | 32 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/mysql/AbstractOracleToMySQLJobContext.java | 12 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/shapefile/OracleConvertShapefilesJobContext.java | 8 xdgnjobs/ximple-spatialjob/src/main/resources/com/ximple/eofms/geoserver/config/DefaultXGeosDataConfigRules.xml | 19 xdgnjobs/ximple-spatialjob/src/test/java/com/ximple/eofms/rest/GeoManagerEncoderTest.java | 47 xdgnjobs/ximple-dgnio/.gitignore | 1 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/mysql/FeatureDgnConvertMySQLJobContext.java | 23 xdgnjobs/ximple-jobcarrier/quartz_jobs.xml | 164 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/AbstractDgnToPostGISJobContext.java | 113 xdgnjobs/ximple-dgnio/src/main/java/com/ximple/io/dgn7/Lock.java | 2 xdgnjobs/ximple-jobcarrier/pom.xml | 78 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/mysql/AbstractDgnToMySQLJobContext.java | 10 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/AbstractOracleJobContext.java | 10 xdgnjobs/ximple-build/maven/jar-collector/.gitignore | 1 xdgnjobs/ximple-dgnio/pom.xml | 6 xdgnjobs/ximple-dgnio/src/main/java/com/ximple/io/dgn7/UserAttributeData.java | 2 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/IndexDgnConvertPostGISJobContext.java | 154 xdgnjobs/ximple-spatialjob/src/main/resources/com/ximple/eofms/filter/digester-rules-3.0.dtd | 244 xdgnjobs/ximple-dgnio/src/main/java/com/ximple/io/dgn7/FrammeAttributeData.java | 2 xdgnjobs/ximple-spatialjob/src/main/resources/com/ximple/eofms/filter/ElementDispatcherRules.xml | 2 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/edbgeo/AbstractDgnToEdbGeoJobContext.java | 25 xdgnjobs/pom.xml | 210 xdgnjobs/ximple-build/maven/pom.xml | 2 xdgnjobs/ximple-dgnio/src/main/java/com/ximple/io/dgn7/GeometryConverter.java | 2 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/util/TPCLIDConverter.java | 8 xdgnjobs/ximple-jobcarrier/quartz.properties | 33 xdgnjobs/ximple-dgnio/src/main/java/com/ximple/io/dgn7/StreamLogging.java | 2 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/util/ElementDigesterUtils.java | 25 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/mysql/DummyFeatureConvertMySQlJobContext.java | 31 xdgnjobs/ximple-dgnio/src/main/java/com/ximple/io/dgn7/Dgn7OracleReader.java | 2 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/geoserver/config/XGeosDataConfig.java | 72 xdgnjobs/ximple-dgnio/src/main/java/com/ximple/io/dgn7/Dgn7fileHeader.java | 2 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/GeneralDgnConvertPostGISJobContext.java | 53 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/util/GeomUtil.java | 1 xdgnjobs/ximple-dgnio/src/main/java/com/ximple/io/dgn7/ComplexElement.java | 2 xdgnjobs/ximple-jobcarrier/log4j.properties | 29 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/DummyFeatureConvertJobContext.java | 33 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/shapefile/DummyFeatureConvertShpJobContext.java | 31 xdgnjobs/ximple-build/pom.xml | 4 xdgnjobs/ximple-dgnio/src/test/resources/com/ximple/io/dgn7/test-data/demo.dgn | 0 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleUpgradeBlob2UDTJob.java | 2 xdgnjobs/ximple-jobcarrier/src/main/resources/quartz.properties | 7 xdgnjobs/ximple-spatialjob/src/main/resources/com/ximple/eofms/geoserver/config/digester-rules-3.0.dtd | 244 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/edbgeo/DummyFeatureConvertEdbGeoJobContext.java | 8 xdgnjobs/ximple-jobcarrier/src/main/resources/com/ximple/eofms/XQuartzJobWizard_zh_TW.properties | 12 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateSymbolStrategy.java | 104 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/OracleConvertGeoServerContext.java | 10 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/edbgeo/AbstractOracleToEdbGeoJobContext.java | 24 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/DummyFeatureConvertPostGISJobContext.java | 31 xdgnjobs/ximple-jobcarrier/src/main/resources/quartz_jobs.xml | 45 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/orasdo/AbstractDgnToOraSDOJobContext.java | 10 xdgnjobs/ximple-dgnio/src/main/java/com/ximple/util/DgnUtility.java | 2 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/util/postjts/JtsGisWrapper.java | 6 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/edbgeo/FeatureDgnConvertEdbGeoJobContext.java | 21 xdgnjobs/ximple-elmparser/pom.xml | 14 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/util/ByteArrayCompressor.java | 1 95 files changed, 14,589 insertions(+), 878 deletions(-) diff --git a/.gitattributes b/.gitattributes index f605414..bf21934 100644 --- a/.gitattributes +++ b/.gitattributes @@ -53,7 +53,10 @@ xdgnjobs/ximple-elmparser/src/main/resources/com/ximple/eofms/XElementParser.properties svneol=native#text/plain xdgnjobs/ximple-elmparser/src/main/resources/com/ximple/eofms/XElementParser_zh_TW.properties svneol=native#text/plain xdgnjobs/ximple-elmparser/src/main/resources/log4j.properties svneol=native#text/plain +xdgnjobs/ximple-jobcarrier/log4j.properties -text xdgnjobs/ximple-jobcarrier/pom.xml svneol=native#text/xml +xdgnjobs/ximple-jobcarrier/quartz.properties -text +xdgnjobs/ximple-jobcarrier/quartz_jobs.xml -text xdgnjobs/ximple-jobcarrier/src/main/java/com/ximple/eofms/XQuartzJobCarrier.java svneol=native#text/plain xdgnjobs/ximple-jobcarrier/src/main/java/com/ximple/eofms/XQuartzJobWizard.java svneol=native#text/plain xdgnjobs/ximple-jobcarrier/src/main/resources/com/ximple/eofms/XQuartzJobWizard.properties svneol=native#text/plain @@ -141,6 +144,7 @@ xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/util/ByteArrayCompressor.java svneol=native#text/plain xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/util/ColorTableMapping.java svneol=native#text/plain xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/util/DefaultColorTable.java svneol=native#text/plain +xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/util/DigesterUtils.java -text xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/util/EPSG3825GeometryConverterDecorator.java -text svneol=unset#text/plain xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/util/EPSG3826GeometryConverterDecorator.java svneol=native#text/plain xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/util/FeatureTypeBuilderUtil.java svneol=native#text/plain diff --git a/xdgnjobs/pom.xml b/xdgnjobs/pom.xml index 5e6dee2..c3c95b1 100644 --- a/xdgnjobs/pom.xml +++ b/xdgnjobs/pom.xml @@ -17,9 +17,9 @@ <oracle.jdbc>true</oracle.jdbc> <test.maxHeapSize>512M</test.maxHeapSize> <src.output>${basedir}/target</src.output> - <java5>1.5</java5> - <xdgnio.version>1.2.0</xdgnio.version> - <gt2.version>2.6.3</gt2.version> + <java5>1.6</java5> + <xdgnio.version>1.3.1</xdgnio.version> + <gt.version>9.4.x</gt.version> <failIfNoTests>false</failIfNoTests> <stress.skip.pattern></stress.skip.pattern> <online.skip.pattern></online.skip.pattern> @@ -65,7 +65,7 @@ <groupId>com.ximple.eofms</groupId> <artifactId>ximple-dgnjobs</artifactId> <packaging>pom</packaging> - <version>1.2.0</version> + <version>1.3.1</version> <name>ximple-dgnjobs</name> <url>http://www.ximple.com.tw</url> @@ -76,7 +76,7 @@ <url>http://www.ximple.com.tw</url> </organization> - <inceptionYear>2010</inceptionYear> + <inceptionYear>2012</inceptionYear> <!-- =========================================================== --> <!-- Issue managements and mailing lists. --> @@ -114,32 +114,10 @@ <!-- =========================================================== --> <dependencyManagement> <dependencies> - <!-- GeoAPI and its dependencies --> - <dependency> - <groupId>org.opengis</groupId> - <artifactId>geoapi</artifactId> - <version>2.3-M1</version> - </dependency> - <dependency> - <groupId>org.opengis</groupId> - <artifactId>geoapi-dummy-pending</artifactId> - <version>2.3-M1</version> - </dependency> - <dependency> - <groupId>org.opengis</groupId> - <artifactId>geoapi-pending</artifactId> - <version>2.3-M1</version> - </dependency> - <dependency> - <groupId>net.java.dev.jsr-275</groupId> - <artifactId>jsr-275</artifactId> - <version>1.0-beta-2</version> - </dependency> - <dependency> <groupId>com.vividsolutions</groupId> <artifactId>jts</artifactId> - <version>1.11</version> + <version>1.13</version> </dependency> <!-- Apache --> @@ -156,14 +134,15 @@ <version>3.2.1</version> </dependency> <dependency> - <groupId>commons-digester</groupId> - <artifactId>commons-digester</artifactId> - <version>2.0</version> + <groupId>org.apache.commons</groupId> + <artifactId>commons-digester3</artifactId> + <version>3.2</version> + <!--classifier>with-deps</classifier--> </dependency> <dependency> <groupId>commons-pool</groupId> <artifactId>commons-pool</artifactId> - <version>1.5.4</version> + <version>1.5.6</version> </dependency> <dependency> <groupId>commons-logging</groupId> @@ -183,85 +162,90 @@ <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> - <version>1.2.15</version> + <version>1.2.17</version> <!-- Same as the dependency in commons-logging --> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> - <version>3.6</version> + <version>3.9</version> </dependency> <!-- geotools --> <dependency> <groupId>org.geotools</groupId> <artifactId>gt-api</artifactId> - <version>${gt2.version}</version> + <version>${gt.version}</version> </dependency> <dependency> <groupId>org.geotools</groupId> <artifactId>gt-main</artifactId> - <version>${gt2.version}</version> + <version>${gt.version}</version> </dependency> <dependency> <groupId>org.geotools</groupId> <artifactId>gt-shapefile</artifactId> - <version>${gt2.version}</version> + <version>${gt.version}</version> </dependency> <dependency> <groupId>org.geotools</groupId> <artifactId>gt-sample-data</artifactId> - <version>${gt2.version}</version> + <version>${gt.version}</version> <scope>test</scope> </dependency> <dependency> <groupId>org.geotools</groupId> <artifactId>gt-data</artifactId> - <version>${gt2.version}</version> + <version>${gt.version}</version> </dependency> <dependency> <groupId>org.geotools</groupId> <artifactId>gt-jdbc</artifactId> - <version>${gt2.version}</version> + <version>${gt.version}</version> </dependency> <dependency> - <groupId>org.geotools</groupId> - <artifactId>gt-oracle-spatial</artifactId> - <version>${gt2.version}</version> + <groupId>org.geotools.jdbc</groupId> + <artifactId>gt-jdbc-oracle</artifactId> + <version>${gt.version}</version> </dependency> <dependency> - <groupId>org.geotools</groupId> - <artifactId>gt-postgis</artifactId> - <version>${gt2.version}</version> - <exclusions> + <groupId>org.geotools.jdbc</groupId> + <artifactId>gt-jdbc-postgis</artifactId> + <version>${gt.version}</version> + <!--exclusions> <exclusion> <groupId>org.postgis</groupId> <artifactId>postgis-driver</artifactId> </exclusion> - </exclusions> + </exclusions--> </dependency> <dependency> - <groupId>org.geotools</groupId> - <artifactId>gt-mysql</artifactId> - <version>${gt2.version}</version> + <groupId>org.geotools.jdbc</groupId> + <artifactId>gt-jdbc-mysql</artifactId> + <version>${gt.version}</version> </dependency> <!-- because main and sample-data depend on referencing we need a tie breaker --> <dependency> <groupId>org.geotools</groupId> <artifactId>gt-referencing</artifactId> - <version>${gt2.version}</version> + <version>${gt.version}</version> </dependency> <dependency> <groupId>org.geotools</groupId> - <artifactId>gt-epsg-h2</artifactId> - <version>${gt2.version}</version> - <exclusions> + <artifactId>gt-epsg-hsql</artifactId> + <version>${gt.version}</version> + <!--exclusions> <exclusion> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> </exclusion> - </exclusions> + </exclusions--> + </dependency> + <dependency> + <groupId>org.geotools</groupId> + <artifactId>gt-epsg-wkt</artifactId> + <version>${gt.version}</version> </dependency> <dependency> @@ -273,15 +257,7 @@ <dependency> <groupId>org.apache.velocity</groupId> <artifactId>velocity</artifactId> - <version>1.6.3</version> - </dependency> - - <!-- We need this to make the referencing module useful --> - <dependency> - <groupId>org.geotools</groupId> - <artifactId>gt-epsg-hsql</artifactId> - <version>${gt2.version}</version> - <scope>test</scope> + <version>1.7</version> </dependency> <!-- ORACLE --> @@ -307,28 +283,28 @@ <version>11.1.0</version> </dependency> - <dependency> + <!--dependency> <groupId>postgresql</groupId> <artifactId>postgresql</artifactId> - <version>8.4-701.jdbc3</version> - </dependency> + <version>8.4-702.jdbc3</version> + </dependency--> <dependency> <groupId>org.postgis</groupId> <artifactId>postgis-driver</artifactId> - <version>1.5.1</version> + <version>2.0.2</version> </dependency> - <dependency> + <!--dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> - <version>5.1.12</version> - </dependency> + <version>5.1.18</version> + </dependency--> - <dependency> + <!--dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> - <version>1.2.134</version> - </dependency> + <version>1.3.163</version> + </dependency--> <!-- EnterpriseDB --> <dependency> @@ -341,12 +317,44 @@ <dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz</artifactId> - <version>1.8.0</version> + <version>2.2.0</version> + <exclusions> + <exclusion> + <groupId>org.slf4j</groupId> + <artifactId>slf4j-api</artifactId> + </exclusion> + </exclusions> + </dependency> + <dependency> + <groupId>org.quartz-scheduler</groupId> + <artifactId>quartz-jobs</artifactId> + <version>2.2.0</version> + </dependency> + <dependency> + <groupId>org.slf4j</groupId> + <artifactId>slf4j-api</artifactId> + <version>1.7.5</version> + </dependency> + <dependency> + <groupId>org.slf4j</groupId> + <artifactId>slf4j-log4j12</artifactId> + <version>1.7.5</version> + </dependency> + <dependency> + <groupId>org.slf4j</groupId> + <artifactId>jcl-over-slf4j</artifactId> + <version>1.7.5</version> </dependency> <dependency> <groupId>org.awl</groupId> <artifactId>awl</artifactId> <version>1.1.0-rc</version> + </dependency> + + <dependency> + <groupId>it.geosolutions</groupId> + <artifactId>geoserver-manager</artifactId> + <version>1.5.2</version> </dependency> <dependency> @@ -358,8 +366,7 @@ <dependency> <groupId>org.testng</groupId> <artifactId>testng</artifactId> - <version>5.11</version> - <classifier>jdk15</classifier> + <version>6.8.5</version> <scope>test</scope> </dependency> </dependencies> @@ -369,23 +376,6 @@ <!-- Dependencies to be inherited by all modules. --> <!-- =========================================================== --> <dependencies> - <dependency> - <groupId>org.opengis</groupId> - <artifactId>geoapi</artifactId> - </dependency> - <dependency> - <groupId>org.opengis</groupId> - <artifactId>geoapi-dummy-pending</artifactId> - </dependency> - <dependency> - <groupId>org.opengis</groupId> - <artifactId>geoapi-pending</artifactId> - </dependency> - <dependency> - <groupId>net.java.dev.jsr-275</groupId> - <artifactId>jsr-275</artifactId> - </dependency> - <dependency> <groupId>com.vividsolutions</groupId> <artifactId>jts</artifactId> @@ -397,8 +387,9 @@ <groupId>commons-collections</groupId> </dependency> <dependency> - <groupId>commons-digester</groupId> - <artifactId>commons-digester</artifactId> + <groupId>org.apache.commons</groupId> + <artifactId>commons-digester3</artifactId> + <!--classifier>with-deps</classifier--> </dependency> <dependency> <groupId>commons-pool</groupId> @@ -427,13 +418,13 @@ </dependency> <dependency> <groupId>org.geotools</groupId> - <artifactId>gt-epsg-h2</artifactId> + <artifactId>gt-epsg-hsql</artifactId> </dependency> - <dependency> + <!--dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> - </dependency> + </dependency--> <dependency> <groupId>xerces</groupId> @@ -441,9 +432,13 @@ </dependency> <dependency> - <artifactId>testng</artifactId> + <groupId>it.geosolutions</groupId> + <artifactId>geoserver-manager</artifactId> + </dependency> + + <dependency> <groupId>org.testng</groupId> - <classifier>jdk15</classifier> + <artifactId>testng</artifactId> <scope>test</scope> </dependency> </dependencies> @@ -505,7 +500,7 @@ <dependency> <groupId>org.geotools.maven</groupId> <artifactId>gt2-build-configs</artifactId> - <version>${gt2.version}</version> + <version>${gt.version}</version> </dependency> </dependencies> --> @@ -519,13 +514,13 @@ <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> - <source>1.5</source> + <source>1.6</source> <!-- The -source argument for the Java compiler. --> - <target>1.5</target> + <target>1.6</target> <!-- The -target argument for the Java compiler. --> <debug>true</debug> <!-- Whether to include debugging information. --> - <encoding>ISO-8859-1</encoding> + <encoding>UTF-8</encoding> <!-- The -encoding argument for the Java compiler. --> </configuration> </plugin> @@ -537,6 +532,7 @@ <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> + <version>2.14.1</version> <configuration> <includes> <include>**/*Test.java</include> @@ -591,7 +587,7 @@ <dependency> <groupId>org.geotools.maven</groupId> <artifactId>gt2-build-configs</artifactId> - <version>${gt2.version}</version> + <version>${gt.version}</version> </dependency> </dependencies> </plugin> diff --git a/xdgnjobs/ximple-build/maven/jar-collector/.gitignore b/xdgnjobs/ximple-build/maven/jar-collector/.gitignore new file mode 100644 index 0000000..b83d222 --- /dev/null +++ b/xdgnjobs/ximple-build/maven/jar-collector/.gitignore @@ -0,0 +1 @@ +/target/ diff --git a/xdgnjobs/ximple-build/maven/jar-collector/pom.xml b/xdgnjobs/ximple-build/maven/jar-collector/pom.xml index 8c4ad5b..4d063fd 100644 --- a/xdgnjobs/ximple-build/maven/jar-collector/pom.xml +++ b/xdgnjobs/ximple-build/maven/jar-collector/pom.xml @@ -7,7 +7,7 @@ <parent> <groupId>com.ximple.eofms.maven</groupId> <artifactId>ximple-maven</artifactId> - <version>1.2.0</version> + <version>1.3.1</version> </parent> diff --git a/xdgnjobs/ximple-build/maven/jar-collector/src/main/java/com/ximple/eofms/maven/JarCollector.java b/xdgnjobs/ximple-build/maven/jar-collector/src/main/java/com/ximple/eofms/maven/JarCollector.java index ecd6b30..2aeb460 100644 --- a/xdgnjobs/ximple-build/maven/jar-collector/src/main/java/com/ximple/eofms/maven/JarCollector.java +++ b/xdgnjobs/ximple-build/maven/jar-collector/src/main/java/com/ximple/eofms/maven/JarCollector.java @@ -55,14 +55,6 @@ private String jarName; /** - * Project dependencies. - * - * @parameter expression="${project.artifacts}" - * @required - */ - private Set /*<Artifact>*/ dependencies; - - /** * The Maven project running this plugin. * * @parameter expression="${project}" @@ -118,7 +110,7 @@ if (!collect.exists()) { if (!collect.mkdir()) { - throw new MojoExecutionException("Failed to create target directory."); + throw new MojoExecutionException("Failed to create target directory: " + collect.getAbsolutePath()); } } @@ -145,29 +137,30 @@ int count = 1; FileUtils.copyFileToDirectory(jarFile, collect); - + Set<Artifact> dependencies = project.getDependencyArtifacts(); if (dependencies != null) { - for (final Iterator it = dependencies.iterator(); it.hasNext();) { - final Artifact artifact = (Artifact) it.next(); + for (final Artifact artifact : dependencies) { + System.out.println("+++++++++++++++++++++++ DEP: " + artifact.getDependencyTrail()); final String scope = artifact.getScope(); - - if ((scope != null) // Maven 2.0.6 bug? - && (scope.equalsIgnoreCase(Artifact.SCOPE_COMPILE) - || scope.equalsIgnoreCase(Artifact.SCOPE_RUNTIME))) { + if (scope != null && // Maven 2.0.6 bug? + (scope.equalsIgnoreCase(Artifact.SCOPE_COMPILE) || + scope.equalsIgnoreCase(Artifact.SCOPE_RUNTIME))) + { final File file = artifact.getFile(); - final File copy = new File(collect, file.getName()); - - if (!copy.exists()) { - /* - * Copies the dependency only if it was not already copied. Note that - * the module's JAR was copied inconditionnaly above (because it may - * be the result of a new compilation). If a Geotools JAR from the - * dependencies list changed, it will be copied inconditionnaly when - * the module for this JAR will be processed by Maven. - */ - FileUtils.copyFileToDirectory(file, collect); - count++; + if (!artifact.getGroupId().startsWith("com.ximple.eofms")) { + final File copy = new File(collect, file.getName()); + if (copy.exists()) { + /* + * Copies the dependency only if it was not already copied. Note that + * the module's JAR was copied inconditionnaly above (because it may + * be the result of a new compilation). If a Geotools JAR from the + * dependencies list changed, it will be copied inconditionnaly when + * the module for this JAR will be processed by Maven. + */ + continue; + } } + FileUtils.copyFileToDirectory(file, collect); } } } diff --git a/xdgnjobs/ximple-build/maven/pom.xml b/xdgnjobs/ximple-build/maven/pom.xml index 0d3dd22..11829ac 100644 --- a/xdgnjobs/ximple-build/maven/pom.xml +++ b/xdgnjobs/ximple-build/maven/pom.xml @@ -7,7 +7,7 @@ <parent> <groupId>com.ximple.eofms.maven</groupId> <artifactId>ximple-build</artifactId> - <version>1.2.0</version> + <version>1.3.1</version> </parent> diff --git a/xdgnjobs/ximple-build/pom.xml b/xdgnjobs/ximple-build/pom.xml index e668448..b6b0e4b 100644 --- a/xdgnjobs/ximple-build/pom.xml +++ b/xdgnjobs/ximple-build/pom.xml @@ -7,7 +7,7 @@ <parent> <groupId>com.ximple.eofms</groupId> <artifactId>ximple-dgnjobs</artifactId> - <version>1.2.0</version> + <version>1.3.1</version> </parent> @@ -16,7 +16,7 @@ <!-- =========================================================== --> <groupId>com.ximple.eofms.maven</groupId> <artifactId>ximple-build</artifactId> - <version>1.2.0</version> + <version>1.3.1</version> <packaging>pom</packaging> <name>Build tools for Ximple DgnJobs</name> diff --git a/xdgnjobs/ximple-dgnio/.gitignore b/xdgnjobs/ximple-dgnio/.gitignore new file mode 100644 index 0000000..b83d222 --- /dev/null +++ b/xdgnjobs/ximple-dgnio/.gitignore @@ -0,0 +1 @@ +/target/ diff --git a/xdgnjobs/ximple-dgnio/pom.xml b/xdgnjobs/ximple-dgnio/pom.xml index d42808f..938fdb2 100644 --- a/xdgnjobs/ximple-dgnio/pom.xml +++ b/xdgnjobs/ximple-dgnio/pom.xml @@ -7,7 +7,7 @@ <parent> <groupId>com.ximple.eofms</groupId> <artifactId>ximple-dgnjobs</artifactId> - <version>1.2.0</version> + <version>1.3.1</version> </parent> <!-- =========================================================== --> @@ -15,7 +15,7 @@ <!-- =========================================================== --> <groupId>com.ximple.eofms</groupId> <artifactId>ximple-dgnio</artifactId> - <version>1.2.0</version> + <version>1.3.1</version> <packaging>jar</packaging> <name>ximple-dgnio</name> <url>http://www.ximple.com.tw</url> @@ -74,7 +74,7 @@ <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> - <version>1.4</version> + <version>2.4</version> <scope>test</scope> </dependency> </dependencies> diff --git a/xdgnjobs/ximple-dgnio/src/main/java/com/ximple/io/dgn7/ComplexElement.java b/xdgnjobs/ximple-dgnio/src/main/java/com/ximple/io/dgn7/ComplexElement.java index b1cc520..42dc018 100644 --- a/xdgnjobs/ximple-dgnio/src/main/java/com/ximple/io/dgn7/ComplexElement.java +++ b/xdgnjobs/ximple-dgnio/src/main/java/com/ximple/io/dgn7/ComplexElement.java @@ -9,7 +9,7 @@ * * @author Ulysses * @version 0.1 - * @since 2006/5/18 �U�� 04:17:37 + * @since 2006/5/18 */ public interface ComplexElement extends List<Element> { } diff --git a/xdgnjobs/ximple-dgnio/src/main/java/com/ximple/io/dgn7/Dgn7OracleReader.java b/xdgnjobs/ximple-dgnio/src/main/java/com/ximple/io/dgn7/Dgn7OracleReader.java index 40be619..189c289 100644 --- a/xdgnjobs/ximple-dgnio/src/main/java/com/ximple/io/dgn7/Dgn7OracleReader.java +++ b/xdgnjobs/ximple-dgnio/src/main/java/com/ximple/io/dgn7/Dgn7OracleReader.java @@ -19,7 +19,7 @@ * Dgn7OracleReader * User: Ulysses * Date: 2007/10/24 - * Time: �U�� 01:01:08 + * Time: */ public class Dgn7OracleReader implements Iterator<Element> { private final static Logger logger = Logger.getLogger(Dgn7OracleReader.class); diff --git a/xdgnjobs/ximple-dgnio/src/main/java/com/ximple/io/dgn7/Dgn7fileHeader.java b/xdgnjobs/ximple-dgnio/src/main/java/com/ximple/io/dgn7/Dgn7fileHeader.java index 5233a28..ca59edf 100644 --- a/xdgnjobs/ximple-dgnio/src/main/java/com/ximple/io/dgn7/Dgn7fileHeader.java +++ b/xdgnjobs/ximple-dgnio/src/main/java/com/ximple/io/dgn7/Dgn7fileHeader.java @@ -13,7 +13,7 @@ * * @author Ulysses * @version 0.1 - * @since 2006/5/17 �U�� 01:21:00 + * @since 2006/5/17 */ public class Dgn7fileHeader { private short elmtype; diff --git a/xdgnjobs/ximple-dgnio/src/main/java/com/ximple/io/dgn7/FrammeAttributeData.java b/xdgnjobs/ximple-dgnio/src/main/java/com/ximple/io/dgn7/FrammeAttributeData.java index 4458937..b7ea2bb 100644 --- a/xdgnjobs/ximple-dgnio/src/main/java/com/ximple/io/dgn7/FrammeAttributeData.java +++ b/xdgnjobs/ximple-dgnio/src/main/java/com/ximple/io/dgn7/FrammeAttributeData.java @@ -5,7 +5,7 @@ * * @author Ulysses * @version 0.1 - * @since 2006/5/18 �U�� 06:36:55 + * @since 2006/5/18 */ public class FrammeAttributeData extends UserAttributeData { public FrammeAttributeData(short id) { diff --git a/xdgnjobs/ximple-dgnio/src/main/java/com/ximple/io/dgn7/GeometryConverter.java b/xdgnjobs/ximple-dgnio/src/main/java/com/ximple/io/dgn7/GeometryConverter.java index 72f11fe..5f82888 100644 --- a/xdgnjobs/ximple-dgnio/src/main/java/com/ximple/io/dgn7/GeometryConverter.java +++ b/xdgnjobs/ximple-dgnio/src/main/java/com/ximple/io/dgn7/GeometryConverter.java @@ -10,7 +10,7 @@ * * @author Ulysses * @version 0.1 - * @since 2006/5/18 �W�� 11:38:57 + * @since 2006/5/18 */ public interface GeometryConverter { public Geometry toGeometry(GeometryFactory factory); diff --git a/xdgnjobs/ximple-dgnio/src/main/java/com/ximple/io/dgn7/Lock.java b/xdgnjobs/ximple-dgnio/src/main/java/com/ximple/io/dgn7/Lock.java index a92c304..2bd43f6 100644 --- a/xdgnjobs/ximple-dgnio/src/main/java/com/ximple/io/dgn7/Lock.java +++ b/xdgnjobs/ximple-dgnio/src/main/java/com/ximple/io/dgn7/Lock.java @@ -14,7 +14,7 @@ * * @author Ulysses * @version 0.1 - * @since 2006/5/18 �W�� 10:27:24 + * @since 2006/5/18 */ public class Lock { Logger logger = LogManager.getLogger("com.ximple.io.dgn7"); diff --git a/xdgnjobs/ximple-dgnio/src/main/java/com/ximple/io/dgn7/StreamLogging.java b/xdgnjobs/ximple-dgnio/src/main/java/com/ximple/io/dgn7/StreamLogging.java index 33f797a..04d0673 100644 --- a/xdgnjobs/ximple-dgnio/src/main/java/com/ximple/io/dgn7/StreamLogging.java +++ b/xdgnjobs/ximple-dgnio/src/main/java/com/ximple/io/dgn7/StreamLogging.java @@ -10,7 +10,7 @@ * * @author Ulysses * @version 0.1 - * @since 2006/5/18 �W�� 10:31:08 + * @since 2006/5/18 */ public class StreamLogging { private static final Logger LOGGER = LogManager.getLogger("com.ximple.io.dgn7"); diff --git a/xdgnjobs/ximple-dgnio/src/main/java/com/ximple/io/dgn7/TextElement.java b/xdgnjobs/ximple-dgnio/src/main/java/com/ximple/io/dgn7/TextElement.java index a86b701..08afe39 100644 --- a/xdgnjobs/ximple-dgnio/src/main/java/com/ximple/io/dgn7/TextElement.java +++ b/xdgnjobs/ximple-dgnio/src/main/java/com/ximple/io/dgn7/TextElement.java @@ -1,20 +1,18 @@ package com.ximple.io.dgn7; +import com.vividsolutions.jts.geom.Coordinate; +import com.vividsolutions.jts.geom.CoordinateList; +import com.vividsolutions.jts.geom.Geometry; +import com.vividsolutions.jts.geom.GeometryFactory; +import com.ximple.util.DgnUtility; +import org.apache.log4j.Logger; + import java.awt.geom.AffineTransform; import java.nio.ByteBuffer; import java.nio.CharBuffer; import java.nio.charset.CharacterCodingException; import java.nio.charset.Charset; import java.nio.charset.CharsetDecoder; - -import org.apache.log4j.Logger; - -import com.vividsolutions.jts.geom.Coordinate; -import com.vividsolutions.jts.geom.CoordinateList; -import com.vividsolutions.jts.geom.Geometry; -import com.vividsolutions.jts.geom.GeometryFactory; - -import com.ximple.util.DgnUtility; /** * TextElement @@ -131,6 +129,7 @@ } public boolean isChinese() { + if (raw.length < 31) return false; int isChinese = raw[30] & 0x0000ffff; return (isChinese == 0xfdff); @@ -155,9 +154,8 @@ return ""; } - if(30+num/2 > raw.length) - { - logger.warn("getTextLength() too long." ); + if (30 + num / 2 > raw.length) { + logger.warn("getTextLength() too long."); return ""; } @@ -175,8 +173,7 @@ } } else { byte[] strRaw = new byte[num * 2]; - for (int i = 0; i < num; i++) - { + for (int i = 0; i < num; i++) { short charValue = raw[i + 31]; byte hi = (byte) (charValue >>> 8); byte lo = (byte) charValue; diff --git a/xdgnjobs/ximple-dgnio/src/main/java/com/ximple/io/dgn7/UserAttributeData.java b/xdgnjobs/ximple-dgnio/src/main/java/com/ximple/io/dgn7/UserAttributeData.java index 748ec07..c14aa67 100644 --- a/xdgnjobs/ximple-dgnio/src/main/java/com/ximple/io/dgn7/UserAttributeData.java +++ b/xdgnjobs/ximple-dgnio/src/main/java/com/ximple/io/dgn7/UserAttributeData.java @@ -5,7 +5,7 @@ * * @author Ulysses * @version 0.1 - * @since 2006/5/18 �U�� 02:29:29 + * @since 2006/5/18 */ public class UserAttributeData { protected short[] _src; diff --git a/xdgnjobs/ximple-dgnio/src/main/java/com/ximple/util/DgnUtility.java b/xdgnjobs/ximple-dgnio/src/main/java/com/ximple/util/DgnUtility.java index 7e03eb2..2ed1f27 100644 --- a/xdgnjobs/ximple-dgnio/src/main/java/com/ximple/util/DgnUtility.java +++ b/xdgnjobs/ximple-dgnio/src/main/java/com/ximple/util/DgnUtility.java @@ -12,7 +12,7 @@ * * @author Ulysses * @version 0.1 - * @since 2006/5/18 �U�� 01:33:00 + * @since 2006/5/18 */ public final class DgnUtility { private static final Logger logger = Logger.getLogger(DgnUtility.class); diff --git a/xdgnjobs/ximple-dgnio/src/test/java/com/ximple/io/dgn7/OracleTarget.java b/xdgnjobs/ximple-dgnio/src/test/java/com/ximple/io/dgn7/OracleTarget.java index b8d1ab2..46ae455 100644 --- a/xdgnjobs/ximple-dgnio/src/test/java/com/ximple/io/dgn7/OracleTarget.java +++ b/xdgnjobs/ximple-dgnio/src/test/java/com/ximple/io/dgn7/OracleTarget.java @@ -25,8 +25,8 @@ private static final String ORACLE_URL = "jdbc:oracle:thin:@"; private static final String _propUsrKey = "user"; private static final String _propPassKey = "password"; - private static String _oracleHost = "192.168.11.200"; - private static String _oracleInstance = "NNTPC"; + private static String _oracleHost = "10.10.1.7"; + private static String _oracleInstance = "ORCL"; private static String _oraclePort = "1521"; static { diff --git a/xdgnjobs/ximple-dgnio/src/test/resources/com/ximple/io/dgn7/test-data/Demo.dgn b/xdgnjobs/ximple-dgnio/src/test/resources/com/ximple/io/dgn7/test-data/demo.dgn similarity index 100% rename from xdgnjobs/ximple-dgnio/src/test/resources/com/ximple/io/dgn7/test-data/Demo.dgn rename to xdgnjobs/ximple-dgnio/src/test/resources/com/ximple/io/dgn7/test-data/demo.dgn Binary files differ diff --git a/xdgnjobs/ximple-elmparser/pom.xml b/xdgnjobs/ximple-elmparser/pom.xml index 14d8b8d..fdc0712 100644 --- a/xdgnjobs/ximple-elmparser/pom.xml +++ b/xdgnjobs/ximple-elmparser/pom.xml @@ -5,18 +5,18 @@ <parent> <groupId>com.ximple.eofms</groupId> <artifactId>ximple-dgnjobs</artifactId> - <version>1.2.0</version> + <version>1.3.1</version> </parent> <groupId>com.ximple.eofms</groupId> <artifactId>ximple-elmparser</artifactId> - <version>1.2.0</version> + <version>1.3.1</version> <packaging>jar</packaging> <name>ximple-elmparser</name> <url>http://maven.apache.org</url> <properties> - <xdgnio.version>1.2.0</xdgnio.version> + <xdgnio.version>1.2.2</xdgnio.version> </properties> <scm> @@ -171,12 +171,12 @@ <dependency> <groupId>com.ximple.eofms</groupId> <artifactId>ximple-dgnio</artifactId> - <version>1.2.0</version> + <version>${project.version}</version> </dependency> <dependency> <groupId>com.ximple.eofms</groupId> <artifactId>ximple-spatialjob</artifactId> - <version>1.2.0</version> + <version>${project.version}</version> </dependency> </dependencies> @@ -207,7 +207,7 @@ --> <groupId>org.codehaus.mojo</groupId> <artifactId>exec-maven-plugin</artifactId> - <version>1.1.1</version> + <version>1.2.1</version> <!-- <executions> <execution> @@ -238,7 +238,7 @@ <plugin> <groupId>com.ximple.eofms.maven</groupId> <artifactId>ximple-jar-collector</artifactId> - <version>1.2.0</version> + <version>${project.version}</version> <executions> <execution> <goals> diff --git a/xdgnjobs/ximple-jobcarrier/.gitignore b/xdgnjobs/ximple-jobcarrier/.gitignore new file mode 100644 index 0000000..b83d222 --- /dev/null +++ b/xdgnjobs/ximple-jobcarrier/.gitignore @@ -0,0 +1 @@ +/target/ diff --git a/xdgnjobs/ximple-jobcarrier/log4j.properties b/xdgnjobs/ximple-jobcarrier/log4j.properties new file mode 100644 index 0000000..a3a40c6 --- /dev/null +++ b/xdgnjobs/ximple-jobcarrier/log4j.properties @@ -0,0 +1,29 @@ +# Create stdout appender +log4j.rootLogger=info, logfile, stdout + +# Configure the stdout appender to go to the Console +log4j.appender.stdout=org.apache.log4j.ConsoleAppender + +# Configure stdout appender to use the PatternLayout +log4j.appender.stdout.layout=org.apache.log4j.PatternLayout + +# Pattern output the caller's filename and line # +log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n +#log4j.appender.stdout.encoding=UTF-8 + +log4j.appender.logfile=org.apache.log4j.FileAppender +log4j.appender.logfile.file=xjobcarrier.log +log4j.appender.logfile.layout=org.apache.log4j.PatternLayout +log4j.appender.logfile.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n +#log4j.appender.logfile.encoding=UTF-8 + +log4j.appender.remoteout=com.holub.log4j.RemoteAppender +log4j.appender.remoteout.Port=8011 +log4j.appender.remoteout.layout=org.apache.log4j.PatternLayout +log4j.appender.remoteout.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n +#log4j.appender.remoteout.encoding=UTF-8 + +# Print messages of level INFO or above for examples +log4j.logger.org.cavaness.quartzbook=INFO +log4j.logger.org.quartz=DEBUG +log4j.logger.com.ximple.eofms=DEBUG \ No newline at end of file diff --git a/xdgnjobs/ximple-jobcarrier/pom.xml b/xdgnjobs/ximple-jobcarrier/pom.xml index fffc6a9..40864bc 100644 --- a/xdgnjobs/ximple-jobcarrier/pom.xml +++ b/xdgnjobs/ximple-jobcarrier/pom.xml @@ -6,19 +6,19 @@ <parent> <groupId>com.ximple.eofms</groupId> <artifactId>ximple-dgnjobs</artifactId> - <version>1.2.0</version> + <version>1.3.1</version> </parent> <groupId>com.ximple.eofms</groupId> <artifactId>ximple-jobcarrier</artifactId> - <version>1.2.0</version> + <version>1.3.1</version> <packaging>jar</packaging> <name>ximple-jobcarrier</name> <url>http://maven.apache.org</url> <properties> - <xdgnio.version>1.2.0</xdgnio.version> + <xdgnio.version>1.3.1</xdgnio.version> </properties> <scm> @@ -37,7 +37,7 @@ <url>http://www.ximple.com.tw</url> </organization> - <inceptionYear>2010</inceptionYear> + <inceptionYear>2012</inceptionYear> <developers> <developer> @@ -54,6 +54,30 @@ <contributors> </contributors> + <profiles> + <profile> + <id>qa</id> + <build> + <plugins> + <plugin> + <artifactId>maven-dependency-plugin</artifactId> + <executions> + <execution> + <phase>install</phase> + <goals> + <goal>copy-dependencies</goal> + </goals> + <configuration> + <outputDirectory>${project.build.directory}/lib</outputDirectory> + </configuration> + </execution> + </executions> + </plugin> + </plugins> + </build> + </profile> + </profiles> + <!-- =========================================================== --> <!-- Dependencies to be inherited by all modules. --> <!-- =========================================================== --> @@ -61,6 +85,18 @@ <dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz</artifactId> + </dependency> + <dependency> + <groupId>org.slf4j</groupId> + <artifactId>slf4j-api</artifactId> + </dependency> + <dependency> + <groupId>org.slf4j</groupId> + <artifactId>slf4j-log4j12</artifactId> + </dependency> + <dependency> + <groupId>org.slf4j</groupId> + <artifactId>jcl-over-slf4j</artifactId> </dependency> <dependency> @@ -87,16 +123,16 @@ <artifactId>gt-jdbc</artifactId> </dependency> <dependency> - <groupId>org.geotools</groupId> - <artifactId>gt-postgis</artifactId> + <groupId>org.geotools.jdbc</groupId> + <artifactId>gt-jdbc-postgis</artifactId> </dependency> <dependency> - <groupId>org.geotools</groupId> - <artifactId>gt-oracle-spatial</artifactId> + <groupId>org.geotools.jdbc</groupId> + <artifactId>gt-jdbc-oracle</artifactId> </dependency> <dependency> - <groupId>org.geotools</groupId> - <artifactId>gt-mysql</artifactId> + <groupId>org.geotools.jdbc</groupId> + <artifactId>gt-jdbc-mysql</artifactId> </dependency> <!-- because main and sample-data depend on referencing we need a tie breaker --> @@ -108,8 +144,7 @@ <!-- We need this to make the referencing module useful --> <dependency> <groupId>org.geotools</groupId> - <artifactId>gt-epsg-hsql</artifactId> - <scope>test</scope> + <artifactId>gt-epsg-wkt</artifactId> </dependency> <dependency> @@ -149,19 +184,19 @@ <artifactId>sdoutl</artifactId> </dependency> - <dependency> + <!--dependency> <groupId>postgresql</groupId> <artifactId>postgresql</artifactId> </dependency> <dependency> <groupId>org.postgis</groupId> <artifactId>postgis-driver</artifactId> - </dependency> + </dependency--> - <dependency> + <!--dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> - </dependency> + </dependency--> <!-- AWL --> <dependency> @@ -209,7 +244,7 @@ --> <groupId>org.codehaus.mojo</groupId> <artifactId>exec-maven-plugin</artifactId> - <version>1.1.1</version> + <version>1.2.1</version> <executions> <execution> <!--<phase>package</phase> --> @@ -256,7 +291,7 @@ <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>native2ascii-maven-plugin</artifactId> - <version>1.0-alpha-1</version> + <version>1.0-beta-1</version> <configuration> <dest>target/classes/com/ximple/eofms</dest> <src>src/main/resources/com/ximple/eofms</src> @@ -269,7 +304,9 @@ </goals> <configuration> <encoding>UTF8</encoding> - <includes>XQuartzJobWizard_zh*.properties</includes> + <includes> + <include>XQuartzJobWizard_zh*.properties</include> + </includes> </configuration> </execution> </executions> @@ -290,8 +327,9 @@ <includes> <include>log4j.properties</include> <include>quartz.properties</include> - <!--<include>quartz_jobs.xml</include>--> + <include>quartz_jobs.xml</include> <include>quartz_jobs_edb.xml</include> + <include>quartz_jobs_sharpefiles.xml</include> </includes> <!-- <excludes> diff --git a/xdgnjobs/ximple-jobcarrier/quartz.properties b/xdgnjobs/ximple-jobcarrier/quartz.properties new file mode 100644 index 0000000..e491e0d --- /dev/null +++ b/xdgnjobs/ximple-jobcarrier/quartz.properties @@ -0,0 +1,33 @@ +#=============================================================== +#Configure Main Scheduler Properties +#=============================================================== +org.quartz.scheduler.instanceName = QuartzScheduler +org.quartz.scheduler.instanceId = AUTO + +#=============================================================== +#Configure ThreadPool +#=============================================================== +org.quartz.threadPool.threadCount = 5 +org.quartz.threadPool.threadPriority = 5 +org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool + +#=============================================================== +#Configure JobStore +#=============================================================== +org.quartz.jobStore.class = org.quartz.simpl.RAMJobStore +org.quartz.jobStore.misfireThreshold = 60000 + +#=============================================================== +#Configure Plugins +#=============================================================== +org.quartz.plugin.triggHistory.class = org.quartz.plugins.history.LoggingJobHistoryPlugin + +org.quartz.plugin.jobInitializer.class: org.quartz.plugins.xml.XMLSchedulingDataProcessorPlugin +org.quartz.plugin.jobInitializer.fileNames = quartz_jobs.xml +#org.quartz.plugin.jobInitializer.fileNames = quartz_jobs_edb.xml +org.quartz.plugin.jobInitializer.failOnFileNotFound = true +org.quartz.plugin.jobInitializer.scanInterval = 10 +org.quartz.plugin.jobInitializer.wrapInUserTransaction = false + +org.quartz.plugin.shutdownhook.class = org.quartz.plugins.management.ShutdownHookPlugin +org.quartz.plugin.shutdownhook.cleanShutdown = true \ No newline at end of file diff --git a/xdgnjobs/ximple-jobcarrier/quartz_jobs.xml b/xdgnjobs/ximple-jobcarrier/quartz_jobs.xml new file mode 100644 index 0000000..41fa6ff --- /dev/null +++ b/xdgnjobs/ximple-jobcarrier/quartz_jobs.xml @@ -0,0 +1,164 @@ +<?xml version='1.0' encoding='utf-8'?> + +<job-scheduling-data xmlns="http://www.quartz-scheduler.org/xml/JobSchedulingData" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://www.quartz-scheduler.org/xml/JobSchedulingData http://www.quartz-scheduler.org/xml/job_scheduling_data_1_8.xsd" + version="1.8"> + + <pre-processing-commands> + <delete-jobs-in-group>*</delete-jobs-in-group> <!-- clear all jobs in scheduler --> + <delete-triggers-in-group>*</delete-triggers-in-group> <!-- clear all triggers in scheduler --> + </pre-processing-commands> + + <processing-directives> + <!-- if there are any jobs/trigger in scheduler of same name (as in this file), overwrite them --> + <overwrite-existing-data>true</overwrite-existing-data> + <!-- if there are any jobs/trigger in scheduler of same name (as in this file), and over-write is false, ignore them rather then generating an error --> + <ignore-duplicates>false</ignore-duplicates> + </processing-directives> + + <schedule> + <job> + <name>ConvertDMMS2PostGisWithGeoserver</name> + <group>DEFAULT</group> + <description>A job that convert dgn to postgis</description> + <!--job-class>com.ximple.eofms.jobs.OracleConvertDgn2PostGISJob</job-class--> + <job-class>com.ximple.eofms.jobs.GeoserverIntegrateConfigJob</job-class> + <!--volatility>false</volatility--> + <durability>false</durability> + <recover>false</recover> + <!--job-data-map allows-transient-data="true"--> + <job-data-map> + <entry> + <key>JOBDATA_DIR</key> + <value>/Users/Shared/Public/Projects/XGeoDMMS/xjobrun/nstpcjobs/jobdata</value> + </entry> + <entry> + <key>PGHOST</key> + <value>10.10.1.6</value> + </entry> + <entry> + <key>PGDATBASE</key> + <value>pgNSTPC</value> + </entry> + <entry> + <key>PGPORT</key> + <value>5432</value> + </entry> + <entry> + <key>PGSCHEMA</key> + <value>public</value> + </entry> + <entry> + <key>PGUSER</key> + <value>tpcdb</value> + </entry> + <entry> + <key>PGPASS</key> + <value>simple000</value> + </entry> + <entry> + <key>ORAHOST</key> + <value>10.10.1.7</value> + </entry> + <entry> + <key>ORAINST</key> + <value>orcl</value> + </entry> + <entry> + <key>ORAPORT</key> + <value>1521</value> + </entry> + <entry> + <key>ORAUSER</key> + <value>system</value> + </entry> + <entry> + <key>ORAPASS</key> + <value>simple000</value> + </entry> + <entry> + <key>ORGSCHEMA</key> + <!--value>SPATIALDB</value--> + <value>SPATIALDB, CMMS_SPATIALDB</value> + </entry> + <entry> + <key>CONVERTDB</key> + <value>true</value> + </entry> + <entry> + <key>CONVERTFILE</key> + <value>true</value> + </entry> + <entry> + <key>CONVERTELEMIN</key> + <value>false</value> + </entry> + <entry> + <key>CREATEDUMMY</key> + <value>false</value> + </entry> + <entry> + <key>ELEMLOG</key> + <value>true</value> + </entry> + <entry> + <key>USEWKB</key> + <value>true</value> + </entry> + <entry> + <key>TESTMODE</key> + <value>false</value> + </entry> + <entry> + <key>TESTCOUNT</key> + <value>2</value> + </entry> + <entry> + <key>COPYCONNECTIVITYMODE</key> + <value>true</value> + </entry> + <entry> + <key>PROFILEMODE</key> + <value>true</value> + </entry> + <entry> + <key>USEZONE121</key> + <value>true</value> + </entry> + <entry> + <key>GEOSERVER_URL</key> + <value>http://10.10.1.6:8080/geoserver</value> + </entry> + <entry> + <key>GEOSERVER_USER</key> + <value>admin</value> + </entry> + <entry> + <key>GEOSERVER_PASS</key> + <value>geoserver</value> + </entry> + <entry> + <key>IGNORE_DBETL</key> + <value>true</value> + </entry> + </job-data-map> + </job> + + <trigger> + <simple> + <name>convertTrigger</name> + <group>DEFAULT</group> + <job-name>ConvertDMMS2PostGisWithGeoserver</job-name> + <job-group>DEFAULT</job-group> + <start-time>2011-03-01T18:00:00</start-time> + <!-- repeat indefinitely every 10 seconds --> + <repeat-count>0</repeat-count> + <repeat-interval>500</repeat-interval> + <!-- <repeat-interval>72000000</repeat-interval> --> + </simple> + </trigger> + + </schedule> + +</job-scheduling-data> diff --git a/xdgnjobs/ximple-jobcarrier/src/main/java/com/ximple/eofms/XQuartzJobCarrier.java b/xdgnjobs/ximple-jobcarrier/src/main/java/com/ximple/eofms/XQuartzJobCarrier.java index 30ef076..a625b7c 100644 --- a/xdgnjobs/ximple-jobcarrier/src/main/java/com/ximple/eofms/XQuartzJobCarrier.java +++ b/xdgnjobs/ximple-jobcarrier/src/main/java/com/ximple/eofms/XQuartzJobCarrier.java @@ -15,11 +15,15 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.awl.Wizard; +import org.quartz.DateBuilder; +import org.quartz.JobBuilder; import org.quartz.JobDetail; import org.quartz.Scheduler; import org.quartz.SchedulerException; import org.quartz.Trigger; +import org.quartz.TriggerBuilder; import org.quartz.TriggerUtils; +import org.quartz.impl.JobDetailImpl; import org.quartz.impl.StdSchedulerFactory; import com.ximple.eofms.jobs.OracleConvertDgn2ShpJob; @@ -31,7 +35,7 @@ static Log logger = LogFactory.getLog(XQuartzJobCarrier.class); static Options options = new Options(); - private static final String VERSION = "1.2.0"; + private static final String VERSION = "1.3.1"; public static void main(String[] args) { XQuartzJobCarrier instance = new XQuartzJobCarrier(); @@ -134,7 +138,7 @@ } catch (SchedulerException ex) { // deal with any exceptions - logger.error(ex); + logger.error(ex, ex); shutdown = true; } catch (Throwable throwable) { logger.error(throwable.getMessage(), throwable); @@ -160,17 +164,25 @@ private void scheduleJob(Scheduler scheduler) throws SchedulerException { // Create a JobDetail for the Job - JobDetail jobDetail = new JobDetail("ScanDirectory", Scheduler.DEFAULT_GROUP, + /* + JobDetailImpl jobDetail = new JobDetailImpl("ScanDirectory", Scheduler.DEFAULT_GROUP, OracleConvertDgn2ShpJob.class); - + */ + JobDetail jobDetail = JobBuilder.newJob(OracleConvertDgn2ShpJob.class) + .withIdentity("ScanDirectory", Scheduler.DEFAULT_GROUP) + .usingJobData("SCAN_DIR", "c:\\quartz-book\\input") + .build(); // Configure the directory to scan - jobDetail.getJobDataMap().put("SCAN_DIR", "c:\\quartz-book\\input"); + // jobDetail.getJobDataMap().put("SCAN_DIR", "c:\\quartz-book\\input"); // Create a trigger that fires every 10 seconds, forever - Trigger trigger = TriggerUtils.makeSecondlyTrigger(10); - trigger.setName("scanTrigger"); + // Trigger trigger = TriggerUtils.makeSecondlyTrigger(10); + // trigger.setName("scanTrigger"); + Trigger trigger = TriggerBuilder.newTrigger().withIdentity("scanTrigger") + .startAt(DateBuilder.futureDate(10, DateBuilder.IntervalUnit.SECOND)) + .build(); // Start the trigger firing from now - trigger.setStartTime(new Date()); + // trigger.setStartTime(new Date()); // Associate the trigger with the job in the scheduler scheduler.scheduleJob(jobDetail, trigger); diff --git a/xdgnjobs/ximple-jobcarrier/src/main/resources/com/ximple/eofms/XQuartzJobWizard_zh_TW.properties b/xdgnjobs/ximple-jobcarrier/src/main/resources/com/ximple/eofms/XQuartzJobWizard_zh_TW.properties index 0323202..80e1bf3 100644 --- a/xdgnjobs/ximple-jobcarrier/src/main/resources/com/ximple/eofms/XQuartzJobWizard_zh_TW.properties +++ b/xdgnjobs/ximple-jobcarrier/src/main/resources/com/ximple/eofms/XQuartzJobWizard_zh_TW.properties @@ -1,23 +1,23 @@ title=Ximple Quartz Job Wizard -first.title=�Ŷ�����ഫ -first.description=�Ŷ�����ഫ�N�|Ū�� OMS/CMMS �Ŷ���Ʈw���e�ഫ�� PostGIS �Ŷ���Ʈw +first.title=空間資料轉換 +first.description=空間資料轉換將會讀取 OMS/CMMS 空間資料庫內容轉換至 PostGIS 空間資料庫 first.label.text=<html>This wizard will not install anything on your computer.<br/>It only demonstrates <b>Awl</b> functionnalities.</html> -second.title=���v�n�� +second.title=版權聲明 second.description=Accept the license of this software second.licenseAccepted=I accept the terms of this license agreement second.licenseRefused=I do not accept the terms of this license agreement second.messageContent=Accept the terms of the license -third.title=�պA�]�w��m +third.title=組態設定位置 third.description=Select the location where to install this software third.label.text=Install location third.fileChooser.selectLabel=Select third.fileChooser.description=Select third.messageContent=You must choose a valid location -fourth.title=�}�l����... +fourth.title=開始轉檔... fourth.description=Installation progress fourth.inProgress.text=Installation in progress... -fourth.finished.text=Installation finished +fourth.finished.text=Installation finished \ No newline at end of file diff --git a/xdgnjobs/ximple-jobcarrier/src/main/resources/quartz.properties b/xdgnjobs/ximple-jobcarrier/src/main/resources/quartz.properties index 9a605e9..15de783 100644 --- a/xdgnjobs/ximple-jobcarrier/src/main/resources/quartz.properties +++ b/xdgnjobs/ximple-jobcarrier/src/main/resources/quartz.properties @@ -22,15 +22,12 @@ #=============================================================== org.quartz.plugin.triggHistory.class = org.quartz.plugins.history.LoggingJobHistoryPlugin -#org.quartz.plugin.jobInitializer.class = org.quartz.plugins.xml.JobInitializationPlugin org.quartz.plugin.jobInitializer.class = org.quartz.plugins.xml.XMLSchedulingDataProcessorPlugin - org.quartz.plugin.jobInitializer.fileNames = quartz_jobs.xml +#org.quartz.plugin.jobInitializer.fileNames = quartz_jobs_edb.xml -#org.quartz.plugin.jobInitializer.overWriteExistingJobs = true org.quartz.plugin.jobInitializer.failOnFileNotFound = true -#org.quartz.plugin.jobInitializer.validating=false -org.quartz.plugin.jobInitializer.scanInterval = 120 +org.quartz.plugin.jobInitializer.scanInterval = 10 org.quartz.plugin.jobInitializer.wrapInUserTransaction = false org.quartz.plugin.shutdownhook.class = org.quartz.plugins.management.ShutdownHookPlugin diff --git a/xdgnjobs/ximple-jobcarrier/src/main/resources/quartz_jobs.xml b/xdgnjobs/ximple-jobcarrier/src/main/resources/quartz_jobs.xml index dc6fa7c..fdeaa03 100644 --- a/xdgnjobs/ximple-jobcarrier/src/main/resources/quartz_jobs.xml +++ b/xdgnjobs/ximple-jobcarrier/src/main/resources/quartz_jobs.xml @@ -21,18 +21,19 @@ <schedule> <job> - <name>ConvertDgn2PostGisIntoPostgre</name> + <name>ConvertDMMS2PostGisWithGeoserver</name> <group>DEFAULT</group> <description>A job that convert dgn to postgis</description> - <job-class>com.ximple.eofms.jobs.OracleConvertDgn2PostGISJob</job-class> - <volatility>false</volatility> + <!--job-class>com.ximple.eofms.jobs.OracleConvertDgn2PostGISJob</job-class--> + <job-class>com.ximple.eofms.jobs.GeoserverIntegrateConfigJob</job-class> + <!--volatility>false</volatility--> <durability>false</durability> <recover>false</recover> <!--job-data-map allows-transient-data="true"--> <job-data-map> <entry> <key>JOBDATA_DIR</key> - <value>C:\Usr\Projects\XDCAD\nstpcjobs</value> + <value>/mnt/hdisk/home.data/private/projects/xdcad/xjobrun/nstpcjobs/jobdata</value> </entry> <entry> <key>PGHOST</key> @@ -40,7 +41,7 @@ </entry> <entry> <key>PGDATBASE</key> - <value>pgNSTPC</value> + <value>pgNNTPC</value> </entry> <entry> <key>PGPORT</key> @@ -60,11 +61,11 @@ </entry> <entry> <key>ORAHOST</key> - <value>192.168.11.200</value> + <value>10.10.1.7</value> </entry> <entry> <key>ORAINST</key> - <value>nntpc</value> + <value>orcl</value> </entry> <entry> <key>ORAPORT</key> @@ -72,14 +73,15 @@ </entry> <entry> <key>ORAUSER</key> - <value>spatialdb</value> + <value>system</value> </entry> <entry> <key>ORAPASS</key> - <value>spatialdb000</value> + <value>simple000</value> </entry> <entry> <key>ORGSCHEMA</key> + <!--value>SPATIALDB</value--> <value>SPATIALDB, CMMS_SPATIALDB</value> </entry> <entry> @@ -88,7 +90,7 @@ </entry> <entry> <key>CONVERTFILE</key> - <value>false</value> + <value>true</value> </entry> <entry> <key>CONVERTELEMIN</key> @@ -116,7 +118,7 @@ </entry> <entry> <key>COPYCONNECTIVITYMODE</key> - <value>false</value> + <value>true</value> </entry> <entry> <key>PROFILEMODE</key> @@ -126,6 +128,22 @@ <key>USEZONE121</key> <value>true</value> </entry> + <entry> + <key>GEOSERVER_URL</key> + <value>http://www.ximple.com.tw/geoserver</value> + </entry> + <entry> + <key>GEOSERVER_USER</key> + <value>admin</value> + </entry> + <entry> + <key>GEOSERVER_PASS</key> + <value>geoserver</value> + </entry> + <entry> + <key>IGNORE_DBETL</key> + <value>true</value> + </entry> </job-data-map> </job> @@ -133,9 +151,9 @@ <simple> <name>convertTrigger</name> <group>DEFAULT</group> - <job-name>ConvertDgn2PostGisIntoPostgre</job-name> + <job-name>ConvertDMMS2PostGisWithGeoserver</job-name> <job-group>DEFAULT</job-group> - <start-time>2008-03-01T18:10:00</start-time> + <start-time>2013-03-01T18:00:00</start-time> <!-- repeat indefinitely every 10 seconds --> <repeat-count>0</repeat-count> <repeat-interval>500</repeat-interval> @@ -144,4 +162,5 @@ </trigger> </schedule> + </job-scheduling-data> diff --git a/xdgnjobs/ximple-jobcarrier/src/main/resources/quartz_jobs_edb.xml b/xdgnjobs/ximple-jobcarrier/src/main/resources/quartz_jobs_edb.xml index e37fb37..d625519 100644 --- a/xdgnjobs/ximple-jobcarrier/src/main/resources/quartz_jobs_edb.xml +++ b/xdgnjobs/ximple-jobcarrier/src/main/resources/quartz_jobs_edb.xml @@ -24,6 +24,7 @@ <name>ConvertDgn2GeoSpatialIntoEdb</name> <group>DEFAULT</group> <description>A job that convert dgn to gdb spatial</description> + <!--job-class>com.ximple.eofms.jobs.OracleConvertDgn2EdbGeoJob</job-class--> <job-class>com.ximple.eofms.jobs.OracleConvertDgn2EdbGeoJob</job-class> <volatility>false</volatility> <durability>false</durability> @@ -32,7 +33,7 @@ <job-data-map> <entry> <key>JOBDATA_DIR</key> - <value>C:\Usr\Projects\XDCAD\nstpcjobs</value> + <value>C:\Usr\Projects\XDCAD\nstpcjobs\jobdata</value> </entry> <entry> <key>EDBHOST</key> diff --git a/xdgnjobs/ximple-spatialjob/pom.xml b/xdgnjobs/ximple-spatialjob/pom.xml index bc76e79..43f4526 100644 --- a/xdgnjobs/ximple-spatialjob/pom.xml +++ b/xdgnjobs/ximple-spatialjob/pom.xml @@ -7,18 +7,18 @@ <parent> <groupId>com.ximple.eofms</groupId> <artifactId>ximple-dgnjobs</artifactId> - <version>1.2.0</version> + <version>1.3.1</version> </parent> <groupId>com.ximple.eofms</groupId> <artifactId>ximple-spatialjob</artifactId> - <version>1.2.0</version> + <version>1.3.1</version> <packaging>jar</packaging> <name>ximple-spatialjob</name> <url>http://www.ximple.com.tw</url> <properties> - <xdgnio.version>1.2.0</xdgnio.version> + <xdgnio.version>1.3.1</xdgnio.version> </properties> <description> @@ -55,6 +55,22 @@ <groupId>org.quartz-scheduler</groupId> <artifactId>quartz</artifactId> </dependency> + <dependency> + <groupId>org.quartz-scheduler</groupId> + <artifactId>quartz-jobs</artifactId> + </dependency> + <dependency> + <groupId>org.slf4j</groupId> + <artifactId>slf4j-api</artifactId> + </dependency> + <dependency> + <groupId>org.slf4j</groupId> + <artifactId>slf4j-log4j12</artifactId> + </dependency> + <dependency> + <groupId>org.slf4j</groupId> + <artifactId>jcl-over-slf4j</artifactId> + </dependency> <dependency> <groupId>org.geotools</groupId> @@ -74,16 +90,16 @@ <artifactId>gt-jdbc</artifactId> </dependency> <dependency> - <groupId>org.geotools</groupId> - <artifactId>gt-postgis</artifactId> + <groupId>org.geotools.jdbc</groupId> + <artifactId>gt-jdbc-postgis</artifactId> </dependency> <dependency> - <groupId>org.geotools</groupId> - <artifactId>gt-oracle-spatial</artifactId> + <groupId>org.geotools.jdbc</groupId> + <artifactId>gt-jdbc-oracle</artifactId> </dependency> <dependency> - <groupId>org.geotools</groupId> - <artifactId>gt-mysql</artifactId> + <groupId>org.geotools.jdbc</groupId> + <artifactId>gt-jdbc-mysql</artifactId> </dependency> <!-- because main and sample-data depend on referencing we need a tie breaker --> @@ -95,8 +111,7 @@ <!-- We need this to make the referencing module useful --> <dependency> <groupId>org.geotools</groupId> - <artifactId>gt-epsg-hsql</artifactId> - <scope>test</scope> + <artifactId>gt-epsg-wkt</artifactId> </dependency> <dependency> @@ -127,10 +142,10 @@ <artifactId>sdoutl</artifactId> </dependency> - <dependency> + <!--dependency> <groupId>postgresql</groupId> <artifactId>postgresql</artifactId> - </dependency> + </dependency--> <dependency> <groupId>org.postgis</groupId> <artifactId>postgis-driver</artifactId> @@ -141,10 +156,10 @@ <artifactId>xedb-gt-geospatial</artifactId> </dependency> - <dependency> + <!--dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> - </dependency> + </dependency--> <!-- Ximple Library --> <dependency> diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateSymbolStrategy.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateSymbolStrategy.java index 37143fa..82d530f 100644 --- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateSymbolStrategy.java +++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateSymbolStrategy.java @@ -1,7 +1,11 @@ package com.ximple.eofms.filter; +import com.vividsolutions.jts.geom.Coordinate; +import com.vividsolutions.jts.geom.CoordinateArrays; +import com.vividsolutions.jts.geom.Envelope; import com.vividsolutions.jts.geom.Geometry; import com.vividsolutions.jts.geom.GeometryFactory; +import com.vividsolutions.jts.geom.Point; import com.ximple.eofms.util.*; import com.ximple.io.dgn7.Element; import com.ximple.io.dgn7.FrammeAttributeData; @@ -9,15 +13,16 @@ import com.ximple.io.dgn7.UserAttributeData; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.geotools.feature.IllegalAttributeException; import org.geotools.feature.SchemaException; import org.geotools.feature.simple.SimpleFeatureBuilder; import org.geotools.feature.simple.SimpleFeatureTypeBuilder; import org.geotools.geometry.jts.JTSFactoryFinder; +import org.opengis.feature.IllegalAttributeException; import org.opengis.feature.simple.SimpleFeature; import org.opengis.feature.simple.SimpleFeatureType; import javax.swing.event.EventListenerList; +import java.awt.geom.AffineTransform; import java.math.BigDecimal; import java.math.RoundingMode; import java.util.List; @@ -79,7 +84,7 @@ sb.append("-"); sb.append(txtElement.getFontIndex()); - Geometry gobj; + Geometry gobj, geomOrigin = null; if (useTransform) { GeometryConverterDecorator convertDecorator = FeatureTypeBuilderUtil.lookupDefaultGeometryConverter(); convertDecorator.setConverter(txtElement); @@ -87,6 +92,17 @@ } else { gobj = txtElement.toGeometry(geometryFactory); } + + if (gobj instanceof Point) { + geomOrigin = gobj; + Coordinate originPt = gobj.getCoordinate(); + gobj = buildBoundaryPolygon(originPt, // txtElement.getOrigin() + txtElement.getTextWidth(), txtElement.getTextHeight(), + angle, txtElement.getJustification(), gobj.getSRID()); + } else { + gobj = null; + } + if (gobj != null) feature = SimpleFeatureBuilder.build(featureType, new Object[]{ gobj, @@ -102,7 +118,8 @@ (float) txtElement.getTextHeight(), (float) txtElement.getTextWidth(), (float) angle, - sb.toString() + sb.toString(), + geomOrigin }, null); } else { logger.info("CreateSymbolStrategy cannot conver " + element.toString() + "to Feature"); @@ -127,5 +144,86 @@ } } } + + private Geometry buildBoundaryPolygon(Coordinate p, double symbolWidth, double symbolHeight, double rotationAngle, + int justification, int srid) { + double angle = Math.toRadians(rotationAngle); + + AffineTransform at = new AffineTransform(); + // at.translate(width, height); + at.setToRotation(angle, p.x, p.y); + at.scale(1, 1); + + double width = symbolWidth; + switch (justification) { + case TextElement.TXTJUST_LT: + case TextElement.TXTJUST_LC: + case TextElement.TXTJUST_LB: + width = width / 2; + break; + + case TextElement.TXTJUST_CT: + case TextElement.TXTJUST_CC: + case TextElement.TXTJUST_CB: + width = 0; + break; + + case TextElement.TXTJUST_RT: + case TextElement.TXTJUST_RC: + case TextElement.TXTJUST_RB: + width = -(width / 2); + break; + } + + double height = symbolHeight; + switch (justification) { + case TextElement.TXTJUST_LB: + case TextElement.TXTJUST_CB: + case TextElement.TXTJUST_RB: // bottom + height = height / 2; + break; + + case TextElement.TXTJUST_LC: + case TextElement.TXTJUST_CC: + case TextElement.TXTJUST_RC: // center + height = 0; + break; + + case TextElement.TXTJUST_LT: + case TextElement.TXTJUST_CT: + case TextElement.TXTJUST_RT: // height + height = -(height / 2); + break; + } + + + Envelope envelope = new Envelope(new Coordinate(p.x + width, p.y + height)); + envelope.expandBy(symbolWidth / 2, symbolHeight / 2); + + double[] srcPt = new double[8]; + double[] dstPt = new double[8]; + srcPt[0] = envelope.getMinX(); + srcPt[1] = envelope.getMinY(); + srcPt[2] = envelope.getMinX(); + srcPt[3] = envelope.getMaxY(); + srcPt[4] = envelope.getMaxX(); + srcPt[5] = envelope.getMaxY(); + srcPt[6] = envelope.getMaxX(); + srcPt[7] = envelope.getMinY(); + + at.transform(srcPt, 0, dstPt, 0, 4); + + Coordinate[] coords = new Coordinate[5]; + for (int i = 0; i < 4; i++) { + coords[i] = new Coordinate(dstPt[i*2], dstPt[i*2+1]); + } + coords[4] = new Coordinate(dstPt[0], dstPt[1]); + + Geometry geom = geometryFactory.createPolygon(geometryFactory.createLinearRing(coords), null); + if (geom.getSRID() != srid) { + geom.setSRID(srid); + } + return geom; + } } diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/geoserver/config/XGeosDataConfig.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/geoserver/config/XGeosDataConfig.java new file mode 100644 index 0000000..229f948 --- /dev/null +++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/geoserver/config/XGeosDataConfig.java @@ -0,0 +1,72 @@ +package com.ximple.eofms.geoserver.config; + +public class XGeosDataConfig { + private String PG; + private short FSC; + private short COMP; + private short LEV; + private short WEIGHT; + private String FTYPE; + + public XGeosDataConfig() { + } + + public String getPG() { + return PG; + } + + public void setPG(String PG) { + this.PG = PG; + } + + public short getFSC() { + return FSC; + } + + public void setFSC(short FSC) { + this.FSC = FSC; + } + + public short getCOMP() { + return COMP; + } + + public void setCOMP(short COMP) { + this.COMP = COMP; + } + + public short getLEV() { + return LEV; + } + + public void setLEV(short LEV) { + this.LEV = LEV; + } + + public short getWEIGHT() { + return WEIGHT; + } + + public void setWEIGHT(short WEIGHT) { + this.WEIGHT = WEIGHT; + } + + public String getFTYPE() { + return FTYPE; + } + + public void setFTYPE(String FTYPE) { + this.FTYPE = FTYPE; + } + + public String toString() { + return "XGeosDataConfig{" + + "PG='" + (PG != null ? PG : "null") + '\'' + + ", FSC=" + FSC + + ", COMP=" + COMP + + ", LEV=" + LEV + + ", WEIGHT=" + WEIGHT + + ", FTYPE='" + (FTYPE != null ? FTYPE : "null") + '\'' + + '}'; + } +} \ No newline at end of file diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/geoserver/config/XGeosDataConfigMapping.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/geoserver/config/XGeosDataConfigMapping.java new file mode 100644 index 0000000..7e144a3 --- /dev/null +++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/geoserver/config/XGeosDataConfigMapping.java @@ -0,0 +1,20 @@ +package com.ximple.eofms.geoserver.config; + +import org.apache.commons.collections.MultiMap; +import org.apache.commons.collections.map.MultiValueMap; + +public class XGeosDataConfigMapping { + private MultiValueMap mappings; + + public XGeosDataConfigMapping() { + mappings = new MultiValueMap(); + } + + public void addConfig(XGeosDataConfig config) { + mappings.put(config.getPG(), config); + } + + public MultiMap getMapping() { + return mappings; + } +} \ No newline at end of file diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/AbstractOracleDatabaseJob.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/AbstractOracleDatabaseJob.java index d941a3f..d063e1c 100644 --- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/AbstractOracleDatabaseJob.java +++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/AbstractOracleDatabaseJob.java @@ -14,8 +14,9 @@ import com.ximple.eofms.util.FeatureTypeBuilderUtil; import org.apache.commons.logging.Log; import org.geotools.data.DataStore; -import org.geotools.data.oracle.OracleDataStore; -import org.geotools.data.oracle.OracleDataStoreFactory; +import org.geotools.data.DataStoreFinder; +import org.geotools.data.oracle.OracleNGDataStoreFactory; +import org.geotools.jdbc.JDBCDataStore; import org.quartz.Job; import org.quartz.JobDataMap; import org.quartz.JobDetail; @@ -56,8 +57,9 @@ private static final String COPYCONNECTIVITYMODE = "COPYCONNECTIVITYMODE"; private static final String PROFILEMODE = "PROFILEMODE"; private static final String USEZONE121 = "USEZONE121"; + private static final String IGNORE_DBETL = "IGNORE_DBETL"; - protected static OracleDataStoreFactory dataStoreFactory = new OracleDataStoreFactory(); + protected static OracleNGDataStoreFactory dataStoreFactory = new OracleNGDataStoreFactory(); protected String _dataPath; protected String _filterPath; @@ -77,9 +79,10 @@ protected boolean _profileMode = false; protected boolean _useZone121 = true; protected boolean _useTransform = true; + protected boolean _ignoreDBETL = false; protected int _testCount = -1; - protected OracleDataStore sourceDataStore; + protected JDBCDataStore sourceDataStore; private boolean driverFound = true; private long _processTime; @@ -142,6 +145,8 @@ _copyConnectivityMode = dataMap.getBooleanFromString(COPYCONNECTIVITYMODE); _profileMode = dataMap.getBooleanFromString(PROFILEMODE); _useZone121 = dataMap.getBooleanFromString(USEZONE121); + _ignoreDBETL = dataMap.getBooleanFromString(IGNORE_DBETL); + if (_useZone121) { FeatureTypeBuilderUtil.setDefaultFeatureSRID(3826); } else { @@ -349,6 +354,14 @@ return _useZone121; } + public boolean isIgnoreDBETL() { + return _ignoreDBETL; + } + + public void set_ignoreDBETL(boolean _ignoreDBETL) { + this._ignoreDBETL = _ignoreDBETL; + } + public DataStore getSourceDataStore() { return sourceDataStore; } @@ -363,19 +376,19 @@ throw new JobExecutionException("Oracle JDBC Driver not found.-" + JDBC_DRIVER); } Map<String, String> map = new TreeMap<String, String>(); - map.put("host", _oracleHost); - map.put("port", _oraclePort); - map.put("instance", _oracleInstance); - map.put("user", _username); - map.put("passwd", _password); - map.put("dbtype", "oracle"); - map.put("alias", _oracleInstance); - map.put("namespace", null); - if (!map.containsKey(OracleDataStoreFactory.MAXCONN.key)) { - map.put(OracleDataStoreFactory.MAXCONN.key, "5"); + map.put(OracleNGDataStoreFactory.HOST.key, _oracleHost); + map.put(OracleNGDataStoreFactory.PORT.key, _oraclePort); + map.put(OracleNGDataStoreFactory.DATABASE.key, _oracleInstance); + map.put(OracleNGDataStoreFactory.USER.key, _username); + map.put(OracleNGDataStoreFactory.PASSWD.key, _password); + map.put(OracleNGDataStoreFactory.DBTYPE.key, "oracle"); + map.put(OracleNGDataStoreFactory.NAMESPACE.key, null); + + if (!map.containsKey(OracleNGDataStoreFactory.MAXCONN.key)) { + map.put(OracleNGDataStoreFactory.MAXCONN.key, "5"); } - if (!map.containsKey(OracleDataStoreFactory.MINCONN.key)) { - map.put(OracleDataStoreFactory.MINCONN.key, "1"); + if (!map.containsKey(OracleNGDataStoreFactory.MINCONN.key)) { + map.put(OracleNGDataStoreFactory.MINCONN.key, "1"); } if (!dataStoreFactory.canProcess(map)) { @@ -383,7 +396,7 @@ throw new JobExecutionException("cannot process properties-"); } try { - sourceDataStore = (OracleDataStore) dataStoreFactory.createDataStore(map); + sourceDataStore = dataStoreFactory.createDataStore(map); } catch (IOException e) { getLogger().warn(e.getMessage(), e); throw new JobExecutionException(e.getMessage(), e); diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/DummyFeatureConvertJobContext.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/DummyFeatureConvertJobContext.java index 7b80d8c..765f981 100644 --- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/DummyFeatureConvertJobContext.java +++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/DummyFeatureConvertJobContext.java @@ -11,8 +11,19 @@ import java.util.Iterator; import java.util.List; -import org.apache.commons.digester.Digester; -import org.apache.commons.digester.xmlrules.DigesterLoader; +import com.ximple.eofms.filter.AbstractFLinkageDispatchableFilter; +import com.ximple.eofms.filter.ElementDispatchableFilter; +import com.ximple.eofms.filter.ElementDispatcher; +import com.ximple.eofms.filter.TypeCompIdDispatchableFilter; +import com.ximple.eofms.filter.TypeCompLevelIdDispatchableFilter; +import com.ximple.eofms.filter.TypeIdDispatchableFilter; +import com.ximple.eofms.jobs.context.AbstractDgnFileJobContext; +import com.ximple.eofms.util.ElementDigesterUtils; +import com.ximple.io.dgn7.ComplexElement; +import com.ximple.io.dgn7.Element; +import com.ximple.io.dgn7.FrammeAttributeData; +import com.ximple.io.dgn7.UserAttributeData; +import org.apache.commons.digester3.Digester; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.commons.transaction.memory.PessimisticMapWrapper; @@ -28,20 +39,6 @@ import org.opengis.feature.simple.SimpleFeature; import org.opengis.feature.simple.SimpleFeatureType; import org.xml.sax.SAXException; - -import com.vividsolutions.jts.geom.GeometryFactory; - -import com.ximple.eofms.filter.AbstractFLinkageDispatchableFilter; -import com.ximple.eofms.filter.ElementDispatchableFilter; -import com.ximple.eofms.filter.ElementDispatcher; -import com.ximple.eofms.filter.TypeCompIdDispatchableFilter; -import com.ximple.eofms.filter.TypeCompLevelIdDispatchableFilter; -import com.ximple.eofms.filter.TypeIdDispatchableFilter; -import com.ximple.eofms.jobs.context.AbstractDgnFileJobContext; -import com.ximple.io.dgn7.ComplexElement; -import com.ximple.io.dgn7.Element; -import com.ximple.io.dgn7.FrammeAttributeData; -import com.ximple.io.dgn7.UserAttributeData; public class DummyFeatureConvertJobContext extends AbstractDgnFileJobContext { static final Log logger = LogFactory.getLog(DummyFeatureConvertJobContext.class); @@ -68,9 +65,6 @@ private ElementDispatcher createElementDispatcher() { try { - URL rulesURL = ElementDispatcher.class.getResource("ElementDispatcherRules.xml"); - assert rulesURL != null; - Digester digester = DigesterLoader.createDigester(rulesURL); URL filterURL = null; if (_filterConfig != null) { File config = new File(_filterConfig); @@ -84,6 +78,7 @@ // filterURL = this.getClass().getResource("/conf/ConvertShpFilterForLevel.xml"); } assert filterURL != null; + Digester digester = ElementDigesterUtils.getElementDigester(); return (ElementDispatcher) digester.parse(filterURL); } catch (UnsupportedEncodingException e) { logger.info(e.getMessage(), e); diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/GeoserverIntegrateConfigJob.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/GeoserverIntegrateConfigJob.java new file mode 100644 index 0000000..27143a7 --- /dev/null +++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/GeoserverIntegrateConfigJob.java @@ -0,0 +1,1016 @@ +package com.ximple.eofms.jobs; + +import com.vividsolutions.jts.geom.*; +import com.ximple.eofms.geoserver.config.XGeosDataConfig; +import com.ximple.eofms.geoserver.config.XGeosDataConfigMapping; +import com.ximple.eofms.jobs.context.AbstractOracleJobContext; +import com.ximple.eofms.util.PrintfFormat; +import com.ximple.eofms.util.XGeosConfigDigesterUtils; +import it.geosolutions.geoserver.rest.GeoServerRESTManager; +import it.geosolutions.geoserver.rest.GeoServerRESTPublisher; +import it.geosolutions.geoserver.rest.GeoServerRESTReader; +import it.geosolutions.geoserver.rest.decoder.*; +import it.geosolutions.geoserver.rest.decoder.utils.NameLinkElem; +import it.geosolutions.geoserver.rest.encoder.GSLayerEncoder; +import it.geosolutions.geoserver.rest.encoder.GSLayerGroupEncoder; +import it.geosolutions.geoserver.rest.encoder.GSLayerGroupEncoder23; +import it.geosolutions.geoserver.rest.encoder.GSResourceEncoder; +import it.geosolutions.geoserver.rest.encoder.datastore.GSPostGISDatastoreEncoder; +import it.geosolutions.geoserver.rest.encoder.feature.GSFeatureTypeEncoder; +import it.geosolutions.geoserver.rest.manager.GeoServerRESTStoreManager; +import org.apache.commons.collections.MultiMap; +import org.apache.commons.digester3.Digester; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.geotools.data.Transaction; +import org.geotools.data.jdbc.JDBCUtils; +import org.geotools.geometry.GeneralEnvelope; +import org.jdom.Element; +import org.opengis.feature.type.FeatureType; +import org.opengis.feature.type.GeometryDescriptor; +import org.quartz.JobDataMap; +import org.quartz.JobDetail; +import org.quartz.JobExecutionContext; +import org.quartz.JobExecutionException; +import org.xml.sax.SAXException; + +import java.io.IOException; +import java.net.URI; +import java.net.URISyntaxException; +import java.net.URL; +import java.sql.*; +import java.util.*; +import java.util.Date; + +public class GeoserverIntegrateConfigJob extends OracleConvertDgn2PostGISJob { + final static Log logger = LogFactory.getLog(GeoserverIntegrateConfigJob.class); + + private static final String SKIPCONFIGJOB = "SKIPCONFIGJOB"; + private static final String MASTERMODE = "MASTERMODE"; + private static final String EPSG = "EPSG:"; + private static final String DEFAULT_NAMESPACE = "xtpc"; + private static final String XGEOSDATACONFIG_PATH = "xgeosdataconfig.xml"; + private static final String GEOSERVER_BASEURL = "GEOSERVER_URL"; + private static final String GEOSERVER_USER = "GEOSERVER_USER"; + private static final String GEOSERVER_PASS = "GEOSERVER_PASS"; + + // private static final int MAGIC_BLOCKSIZE = (64 * 1024 * 1024) - (32 * 1024); + + private static final String QUERY_VIEWDEFSQL = "SELECT table_name, view_definition FROM information_schema.views " + + "WHERE table_schema = ? AND table_name LIKE "; + + private static final String CREATE_VIEWSQL = "CREATE OR REPLACE VIEW \"%s\" AS SELECT * FROM \"%s\".\"%s\""; + private static final String EXTRAWHERE_VIEWSQL = " WHERE \"%s\".level = %s AND \"%s\".symweight = %s"; + + private static final String ALTER_VIEWSQL = "ALTER TABLE \"%s\" OWNER TO "; + // private static final String GRANT_VIEWSQL = "GRANT SELECT ON TABLE \"%s\" TO public"; + private static final int SRSID_TWD97_ZONE119 = 3825; + private static final int SRSID_TWD97_ZONE121 = 3826; + public static final String DEFAULT_STORENAME = "pgDMMS"; + + private static XGeosDataConfigMapping xgeosDataConfigMapping = null; + + protected String _geoServerURL; + protected String _geoServerUser; + protected String _geoServerPass; + + private long queryTime = 0; + private long queryTimeStart = 0; + + public Log getLogger() { + return logger; + } + + protected AbstractOracleJobContext prepareJobContext(String targetSchemaName, String filterPath, + boolean profileMode, + boolean useTransform) { + return super.prepareJobContext(targetSchemaName, filterPath, profileMode, useTransform); + } + + protected void extractJobConfiguration(JobDetail jobDetail) throws JobExecutionException { + super.extractJobConfiguration(jobDetail); + + JobDataMap dataMap = jobDetail.getJobDataMap(); + _geoServerURL = dataMap.getString(GEOSERVER_BASEURL); + _geoServerUser = dataMap.getString(GEOSERVER_USER); + _geoServerPass = dataMap.getString(GEOSERVER_PASS); + + if (_geoServerURL == null) { + logger.warn("GEOSERVER_URL is null"); + throw new JobExecutionException("Unknown GEOSERVER_URL."); + } + if (_geoServerUser == null) { + logger.warn("GEOSERVER_USER is null"); + throw new JobExecutionException("Unknown GEOSERVER_USER."); + } + if (_geoServerPass == null) { + logger.warn("GEOSERVER_PASS is null"); + throw new JobExecutionException("Unknown GEOSERVER_PASS."); + } + } + + protected XGeosDataConfigMapping getConfigMapping() { + if (xgeosDataConfigMapping == null) { + Digester digester = XGeosConfigDigesterUtils.getXGeosConfigDigester(); + final URL configDataURL = XGeosDataConfigMapping.class.getResource(XGEOSDATACONFIG_PATH); + try { + xgeosDataConfigMapping = (XGeosDataConfigMapping) digester.parse(configDataURL); + } catch (IOException e) { + logger.warn(e.getMessage(), e); + } catch (SAXException e) { + logger.warn(e.getMessage(), e); + } + + } + return xgeosDataConfigMapping; + } + + private void logTimeDiff(String message, long tBefore, long tCurrent) { + logger.warn(message + ":use time = " + ((int) ((tCurrent - tBefore) / 60000.0)) + " min - " + + (((int) ((tCurrent - tBefore) % 60000.0)) / 1000) + " sec"); + } + + @Override + public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException { + + super.execute(jobExecutionContext); + + createTargetDataStore(); + + if (getTargetDataStore() == null) { + logger.warn("Cannot connect source postgreSQL database."); + throw new JobExecutionException("Cannot connect source postgreSQL database."); + } + + if (isProfileMode()) { + queryTime = 0; + } + + long t1 = System.currentTimeMillis(); + String targetSchemaName; + + try { + logger.info("-- step:resetPostgisViewMapping --"); + long tStep = System.currentTimeMillis(); + resetPostgisViewMapping(jobExecutionContext); + if (isProfileMode()) { + long tStepEnd = System.currentTimeMillis(); + logTimeDiff("Profile-resetPostgisViewMapping", tStep, tStepEnd); + } + logger.info("-- step:resetGeoServerConfig --"); + tStep = System.currentTimeMillis(); + resetGeoServerConfig(jobExecutionContext); + if (isProfileMode()) { + long tStepEnd = System.currentTimeMillis(); + logTimeDiff("Profile-resetGeoServerConfig", tStep, tStepEnd); + } + } finally { + disconnect(); + } + } + + /** + * 重新建立所有重新建立所有PostGIS中的資料庫視景 + * + * @param executionContext 批次執行的關係 + */ + private void resetPostgisViewMapping(JobExecutionContext executionContext) { + assert executionContext != null; + Connection connection = null; + try { + connection = targetDataStore.getConnection(Transaction.AUTO_COMMIT); + String ownerName = _pgUsername; + String currentTargetSchema = retrieveCurrentSchemaName(connection, + DataReposVersionManager.VSSTATUS_READY); + if (currentTargetSchema == null) { + logger.info("Cannot found schema that status is VSSTATUS_READY[" + + DataReposVersionManager.VSSTATUS_READY + "]"); + return; + } + + ArrayList<String> realTableNames = new ArrayList<String>(); + retrieveAllRealTableName(connection, currentTargetSchema, realTableNames); + + HashMap<String, String> viewDefs = retrieveViewDef(connection, "public", "fsc%"); + HashMap<String, String> tempViewDefs = retrieveViewDef(connection, "public", "indexshape%"); + viewDefs.putAll(tempViewDefs); + tempViewDefs = viewDefs = retrieveViewDef(connection, "public", "lndtpc%"); + viewDefs.putAll(tempViewDefs); + + for (String tableName : realTableNames) { + resetPostgisDataView(connection, viewDefs, ownerName, currentTargetSchema, tableName); + } + + resetExtraPostgisDataView(connection, ownerName, currentTargetSchema, realTableNames); + + updateCurrentRepositoryStatus(connection, currentTargetSchema, + DataReposVersionManager.VSSTATUS_LINKVIEW); + + // String[] featureNames = dataStore.getTypeNames(); + // logger.info("featureNames[] size = " + featureNames.length); + } catch (IOException e) { + logger.warn(e.getMessage(), e); + } catch (SQLException e) { + logger.warn(e.getMessage(), e); + } finally { + if (connection != null) + JDBCUtils.close(connection, Transaction.AUTO_COMMIT, null); + // if (dataStore != null) dataStore.dispose(); + } + } + + private void retrieveAllRealTableName(Connection connection, String targetSchema, + ArrayList<String> realTableNames) throws SQLException { + ResultSet rsMeta = null; + try { + rsMeta = connection.getMetaData().getTables("", targetSchema, "fsc%", new String[]{"TABLE"}); + while (rsMeta.next()) { + String tableName = rsMeta.getString(3); + realTableNames.add(tableName); + } + rsMeta.close(); + rsMeta = null; + + rsMeta = connection.getMetaData().getTables("", targetSchema, "index%", new String[]{"TABLE"}); + while (rsMeta.next()) { + String tableName = rsMeta.getString(3); + realTableNames.add(tableName); + } + rsMeta.close(); + rsMeta = null; + + rsMeta = connection.getMetaData().getTables("", targetSchema, "lndtpc%", new String[]{"TABLE"}); + while (rsMeta.next()) { + String tableName = rsMeta.getString(3); + realTableNames.add(tableName); + } + } finally { + if (rsMeta != null) rsMeta.close(); + } + } + + private void resetPostgisDataView(Connection connection, HashMap<String, String> viewDefs, + String ownerName, String schemaName, String tableName) throws SQLException { + String[] splits = tableName.split("-"); + if (splits.length > 3) { + // feature table + + StringBuilder viewBuilder = new StringBuilder(); + viewBuilder.append(splits[0]); + viewBuilder.append('-'); + viewBuilder.append(splits[1]); + viewBuilder.append('-'); + viewBuilder.append(splits[2]); + viewBuilder.append(splits[3]); + String viewName = viewBuilder.toString(); + if (viewDefs.containsKey(viewName)) { + String viewDef = viewDefs.get(viewName); + int pos = viewDef.indexOf("FROM"); + String subView = viewDef.substring(pos + 4); + // String[] viewSources = subView.split("\\."); + String[] viewSources = subView.split("(\\.\"|\")"); + if (!viewSources[0].equalsIgnoreCase(schemaName)) { + createOrReplaceView(connection, schemaName, tableName, viewName, ownerName); + } + } else { + createOrReplaceView(connection, schemaName, tableName, viewName, ownerName); + } + + } else { + + splits = tableName.split("_"); + if (splits.length > 0) { + StringBuilder viewBuilder = new StringBuilder(); + viewBuilder.append(splits[0]); + if (splits.length > 1) viewBuilder.append(splits[1]); + if (splits.length > 2) viewBuilder.append(splits[2]); + String viewName = viewBuilder.toString(); + if (viewDefs.containsKey(viewName)) { + String viewDef = viewDefs.get(viewName); + int pos = viewDef.indexOf("FROM"); + String subView = viewDef.substring(pos + 4); + String[] viewSources = subView.split("(\\.\"|\")"); + if (!viewSources[0].equalsIgnoreCase(schemaName)) { + createOrReplaceView(connection, schemaName, tableName, viewName, ownerName); + } + } else { + createOrReplaceView(connection, schemaName, tableName, viewName, ownerName); + } + } + } + } + + private void resetExtraPostgisDataView(Connection connection, String ownerName, String currentSchema, + ArrayList<String> realTableNames) { + try { + // ArrayList<String> extraViewNames = new ArrayList<String>(); + XGeosDataConfigMapping configMapping = getConfigMapping(); + MultiMap configMultiMap = configMapping.getMapping(); + for (Object key : configMultiMap.keySet()) { + List values = (List) configMultiMap.get(key); + for (Object value : values) { + XGeosDataConfig xgeosConfig = (XGeosDataConfig) value; + short tid = xgeosConfig.getFSC(); + short cid = xgeosConfig.getCOMP(); + StringBuilder sbTable = new StringBuilder("fsc-"); + sbTable.append(tid).append("-c-"); + sbTable.append(cid); + int index = realTableNames.indexOf(sbTable.toString()); + if (index == -1) { + logger.debug("Cannot found-" + xgeosConfig.toString()); + continue; + } + StringBuilder sbView = new StringBuilder("fsc-"); + sbView.append(tid).append("-c"); + sbView.append(cid).append("-l"); + sbView.append(xgeosConfig.getLEV()).append("-w"); + sbView.append(xgeosConfig.getWEIGHT()); + // extraViewNames.add(sbView.toString()); + + createOrReplaceExtraView(connection, currentSchema, sbTable.toString(), sbView.toString(), + ownerName, xgeosConfig); + } + } + } catch (SQLException e) { + logger.warn(e.getMessage(), e); + } + } + + private HashMap<String, String> retrieveViewDef(Connection connection, String schemaName, String tablePattern) throws SQLException { + PreparedStatement stmt = connection.prepareStatement(QUERY_VIEWDEFSQL + "'" + tablePattern + "'"); + stmt.setString(1, schemaName); + // stmt.setString(2, tablePattern); + HashMap<String, String> result = new HashMap<String, String>(); + ResultSet rs = stmt.executeQuery(); + while (rs.next()) { + String tableName = rs.getString(1); + String viewDef = rs.getString(2); + result.put(tableName, viewDef); + } + rs.close(); + stmt.close(); + return result; + } + + private void createOrReplaceView(Connection connection, String schemaName, String tableName, String viewName, + String ownerName) throws SQLException { + PrintfFormat pf = new PrintfFormat(CREATE_VIEWSQL); + String sql = pf.sprintf(new Object[]{viewName, schemaName, tableName}); + Statement stmt = connection.createStatement(); + stmt.execute(sql); + + pf = new PrintfFormat(ALTER_VIEWSQL + ownerName); + sql = pf.sprintf(viewName); + stmt.execute(sql); + stmt.close(); + // connection.commit(); + } + + private void createOrReplaceExtraView(Connection connection, String schemaName, String tableName, String viewName, + String ownerName, XGeosDataConfig xgeosConfig) throws SQLException { + PrintfFormat pf = new PrintfFormat(CREATE_VIEWSQL); + String sql = pf.sprintf(new Object[]{viewName, schemaName, tableName}); + + PrintfFormat pfWhere = new PrintfFormat(EXTRAWHERE_VIEWSQL); + sql += pfWhere.sprintf(new String[]{tableName, Short.toString(xgeosConfig.getLEV()), + tableName, Short.toString(xgeosConfig.getWEIGHT())}); + + Statement stmt = connection.createStatement(); + stmt.execute(sql); + + pf = new PrintfFormat(ALTER_VIEWSQL + ownerName); + sql = pf.sprintf(viewName); + stmt.execute(sql); + stmt.close(); + // connection.commit(); + } + + private Timestamp retrieveCurrentSchemaTimestamp(Connection connection, short status) throws SQLException { + StringBuilder sbSQL = new StringBuilder("SELECT vstimestamp, vsschema, vsstatus FROM "); + sbSQL.append(DataReposVersionManager.XGVERSIONTABLE_NAME); + sbSQL.append(" WHERE vsstatus = "); + sbSQL.append(status); + sbSQL.append(" ORDER BY vsid"); + + Timestamp result = null; + Statement stmt = null; + ResultSet rs = null; + + try { + stmt = connection.createStatement(); + rs = stmt.executeQuery(sbSQL.toString()); + // get first result + if (rs.next()) { + result = rs.getTimestamp(1); + } + return result; + } finally { + if (rs != null) rs.close(); + if (stmt != null) stmt.close(); + } + } + + private void updateCurrentRepositoryStatus(Connection connection, String schemaName, short newStatus) + throws SQLException { + StringBuilder sbSQL = new StringBuilder("UPDATE "); + sbSQL.append(DataReposVersionManager.XGVERSIONTABLE_NAME).append(' '); + sbSQL.append(" SET vsstatus = "); + sbSQL.append(newStatus); + sbSQL.append(", vstimestamp = CURRENT_TIMESTAMP WHERE vsschema = '"); + sbSQL.append(schemaName).append("'"); + + Statement stmt = null; + try { + stmt = connection.createStatement(); + stmt.executeUpdate(sbSQL.toString()); + } finally { + if (stmt != null) stmt.close(); + } + } + + private boolean checkCurrentRepositoryStatus(Connection connection, short status) { + try { + return (retrieveCurrentSchemaName(connection, status) != null); + } catch (SQLException e) { + logger.warn(e.getMessage(), e); + return false; + } + } + + private String retrieveCurrentSchemaName(Connection connection, short status) throws SQLException { + StringBuilder sbSQL = new StringBuilder("SELECT vsschema, vstimestamp, vsstatus FROM "); + sbSQL.append(DataReposVersionManager.XGVERSIONTABLE_NAME); + sbSQL.append(" WHERE vsstatus = "); + sbSQL.append(status); + sbSQL.append(" ORDER BY vsid"); + + String result = null; + Statement stmt = null; + ResultSet rs = null; + + try { + stmt = connection.createStatement(); + rs = stmt.executeQuery(sbSQL.toString()); + // get first result + if (rs.next()) { + result = rs.getString(1); + } + return result; + } finally { + if (rs != null) rs.close(); + if (stmt != null) stmt.close(); + } + } + + protected void transferXGeosVersionStatus(Connection connection, + short vsstatusBefore, short vsstatusAfter, boolean exclusive) throws JobExecutionException { + + try { + String currentTargetSchema = retrieveCurrentSchemaName(connection, vsstatusBefore); + if (currentTargetSchema == null) { + logger.info("Cannot found target schema in dataStore."); + return; + } + String existTargetSchema = null; + if (exclusive) + existTargetSchema = retrieveCurrentSchemaName(connection, vsstatusAfter); + + + updateCurrentRepositoryStatus(connection, currentTargetSchema, vsstatusAfter); + if ((exclusive) && (existTargetSchema != null)) { + updateCurrentRepositoryStatus(connection, existTargetSchema, + DataReposVersionManager.VSSTATUS_AVAILABLE); + } + } catch (SQLException e) { + logger.warn(e.getMessage(), e); + throw new JobExecutionException("Update " + DataReposVersionManager.XGVERSIONTABLE_NAME + + " has error-", e); + } + } + + private HashMap<String, String> buildDefaultStylesMapping(XGeosDataConfigMapping configMapping) { + HashMap<String, String> result = new HashMap<String, String>(); + + for (Object key : configMapping.getMapping().keySet()) { + List xgeosConfigs = (List) configMapping.getMapping().get(key); + for (Object value : xgeosConfigs) { + XGeosDataConfig xgeosConfig = (XGeosDataConfig) value; + + StringBuilder sbView = new StringBuilder("fsc-"); + sbView.append(xgeosConfig.getFSC()).append("-c"); + sbView.append(xgeosConfig.getCOMP()).append("-l"); + sbView.append(xgeosConfig.getLEV()).append("-w"); + sbView.append(xgeosConfig.getWEIGHT()); + + String viewName = sbView.toString(); + if (!result.containsKey(viewName)) { + result.put(viewName, xgeosConfig.getFTYPE()); + } else { + if (xgeosConfig.getFTYPE() != null) { + if (!result.get(viewName).equals(xgeosConfig.getFTYPE())) + logger.info("Style Define Diff:" + result.get(viewName) + " - " + xgeosConfig.getFTYPE()); + } else { + logger.warn("xgeosConfig getFTYPE() is null - " + xgeosConfig.toString()); + } + } + } + } + return result; + } + + private String buildDefaultWMSLayerNames(String namespace, List xgeosConfigs, GSLayerGroupEncoder lgEncoder) { + StringBuilder sbLayers = new StringBuilder(); + boolean first = true; + + for (Object value : xgeosConfigs) { + if (!first) { + sbLayers.append(','); + } else { + first = false; + } + XGeosDataConfig xgeosConfig = (XGeosDataConfig) value; + + StringBuilder sbLayerName = new StringBuilder(namespace); + sbLayerName.append(':'); + sbLayerName.append("fsc-"); + sbLayerName.append(xgeosConfig.getFSC()).append("-c"); + sbLayerName.append(xgeosConfig.getCOMP()).append("-l"); + sbLayerName.append(xgeosConfig.getLEV()).append("-w"); + sbLayerName.append(xgeosConfig.getWEIGHT()); + + String layerName = sbLayerName.toString(); + sbLayers.append(layerName); + if (lgEncoder != null) { + lgEncoder.addLayer(layerName); + } + } + + return sbLayers.toString(); + } + + protected String[] getTargetStoreTypeNames(Connection connection) { + try { + final int TABLE_NAME_COL = 3; + List list = new ArrayList(); + + DatabaseMetaData meta = connection.getMetaData(); + // String[] tableType = { "TABLE", "VIEW" }; + String[] tableType = { "VIEW" }; + ResultSet tables = meta.getTables(null, _pgSchema, "%", tableType); + + while (tables.next()) { + String tableName = tables.getString(TABLE_NAME_COL); + list.add(tableName); + /* + if (allowTable(tableName)) { + list.add(tableName); + } + */ + } + tables.close(); + return (String[]) list.toArray(new String[list.size()]); + } catch (SQLException e) { + logger.warn(e.getMessage(), e); + } + return null; + } + + private void resetFeatureTypesMapping(JobExecutionContext executionContext, GeoServerRESTManager manager) { + try { + GeoServerRESTReader reader = manager.getReader(); + GeoServerRESTPublisher publisher = manager.getPublisher(); + + Connection connection = targetDataStore.getConnection(Transaction.AUTO_COMMIT); + if (!checkCurrentRepositoryStatus(connection, DataReposVersionManager.VSSTATUS_CONFIG)) { + return; + } + + List<String> styleList = reader.getStyles().getNames(); + Set<String> styles = new TreeSet<String>(styleList); + + XGeosDataConfigMapping mapping = getConfigMapping(); + HashMap<String, String> defaultStyles = buildDefaultStylesMapping(mapping); + + try { + String[] dsFTypeNames = getTargetStoreTypeNames(connection); + + for (String featureTypeName : dsFTypeNames) { + FeatureType featureType = null; + try { + featureType = targetDataStore.getFeatureSource(featureTypeName, Transaction.AUTO_COMMIT).getSchema(); + } catch (IOException e) { + logger.warn(e.getMessage(), e); + } + if (featureType == null) continue; + + RESTLayer layer = reader.getLayer(DEFAULT_NAMESPACE, featureTypeName); + if (layer != null) { + // publisher.removeLayer(DEFAULT_NAMESPACE, featureTypeName); + if (!publisher.unpublishFeatureType(DEFAULT_NAMESPACE, DEFAULT_STORENAME, featureTypeName)) { + logger.info("Cannot remove featureType:" + featureTypeName); + } + } + + final GSFeatureTypeEncoder fte = new GSFeatureTypeEncoder(); + + // fte.setProjectionPolicy(GSResourceEncoder.ProjectionPolicy.REPROJECT_TO_DECLARED); + fte.setProjectionPolicy(GSResourceEncoder.ProjectionPolicy.FORCE_DECLARED); + fte.addKeyword("KEYWORD"); + fte.setTitle(featureTypeName); + fte.setName(featureTypeName); + String srs = "EPSG:" + SRSID_TWD97_ZONE121; + if (!this._useZone121) { + srs = "EPSG:" + SRSID_TWD97_ZONE119; + } + fte.setNativeCRS(srs); + fte.setSRS(srs); // srs=null?"EPSG:4326":srs); + + String defaultStyle = getDefaultFeatureTypeStyleId(styles, defaultStyles, featureType); + final GSLayerEncoder le = new GSLayerEncoder(); + le.setDefaultStyle(defaultStyle); + + if (!publisher.publishDBLayer(DEFAULT_NAMESPACE, DEFAULT_STORENAME, fte, le)) { + logger.info("Create Feature Failed. [" + featureTypeName + "]"); + } + } + } finally { + // if (dataStore != null) dataStore.dispose(); + if (connection != null) + JDBCUtils.close(connection, Transaction.AUTO_COMMIT, null); + + } + } catch (IOException e) { + logger.warn(e.getMessage(), e); + } + } + + private void resetGeoServerConfig(JobExecutionContext jobExecutionContext) throws JobExecutionException { + Connection connection = null; + try { + connection = targetDataStore.getConnection(Transaction.AUTO_COMMIT); + transferXGeosVersionStatus(connection, DataReposVersionManager.VSSTATUS_LINKVIEW, + DataReposVersionManager.VSSTATUS_CONFIG, false); + URL geoServerURL = new URL(_geoServerURL); + GeoServerRESTManager manager = new GeoServerRESTManager(geoServerURL, _geoServerUser, _geoServerPass); + GeoServerRESTReader reader = manager.getReader(); + List<String> workSpaces = reader.getWorkspaceNames(); + boolean found = false; + for (String name : workSpaces) { + if (name.equalsIgnoreCase(DEFAULT_NAMESPACE)) { + found = true; + break; + } + } + + GeoServerRESTPublisher publisher = manager.getPublisher(); + if (!found) { + publisher.createWorkspace(DEFAULT_NAMESPACE, new URI("http://tpc.ximple.com.tw/geodmms")); + } + + RESTDataStore dataStore = reader.getDatastore(DEFAULT_NAMESPACE, DEFAULT_STORENAME); + if (dataStore == null) { + GeoServerRESTStoreManager storeManager = manager.getStoreManager(); + GSPostGISDatastoreEncoder store = new GSPostGISDatastoreEncoder(DEFAULT_STORENAME); + store.setHost(_pgHost); + store.setPort(Integer.parseInt(_pgPort)); + store.setDatabase(_pgDatabase); + store.setSchema(_pgSchema); + store.setUser(_pgUsername); + store.setPassword(_pgPassword); + storeManager.create(DEFAULT_NAMESPACE, store); + } + + + resetFeatureTypesMapping(jobExecutionContext, manager); + + resetGeoserverWMSConfig(jobExecutionContext, connection, manager, true); + resetWMSVirtualLayerMapping(jobExecutionContext, connection, manager, true); + + transferXGeosVersionStatus(connection, DataReposVersionManager.VSSTATUS_CONFIG, + DataReposVersionManager.VSSTATUS_USING, true); + Date lastUpdate = Calendar.getInstance().getTime(); + } catch (IOException e) { + logger.warn(e.getMessage(), e); + throw new JobExecutionException("resetGeoServerConfig has error-" + e.getMessage(), e); + } catch (URISyntaxException e) { + logger.warn(e.getMessage(), e); + throw new JobExecutionException("resetGeoServerConfig has error-" + e.getMessage(), e); + } finally { + if (connection != null) + JDBCUtils.close(connection, Transaction.AUTO_COMMIT, null); + + } + } + + protected String getDefaultFeatureTypeStyleId(Set<String> styles, HashMap<String, String> defaultStyles, FeatureType featureType) { + String ftName = featureType.getName().getLocalPart(); + boolean isNormalFeature = false; + boolean isLandBased = false; + boolean isIndex = false; + boolean isSmallIndex = false; + boolean isSymbol = false; + GeometryDescriptor geomAttrType = featureType.getGeometryDescriptor(); + Class geomType = geomAttrType.getType().getBinding(); + if (defaultStyles.containsKey(ftName)) { + String defaultStyleName = defaultStyles.get(ftName); + String styleName = retrieveDefaultStyle(styles, defaultStyleName, "unknown"); + if (!styleName.equals("unknown")) { + return styleName; + } + } + + if (ftName.indexOf("fsc") != -1) { + isNormalFeature = true; + } + if (ftName.indexOf("indexshape") != -1) { + isIndex = true; + } + if (ftName.indexOf("indexshapes") != -1) { + isSmallIndex = true; + } + if (ftName.indexOf("lnd") != -1) { + isLandBased = true; + } + if (featureType.getDescriptor("symbol") != null) { + isSymbol = true; + } + + if (Point.class.equals(geomType)) { + if (isSymbol) { + return retrieveDefaultStyle(styles, "xtpc-symbol", "point"); + } else if (isIndex) { + return retrieveDefaultStyle(styles, "xtpc-text2", "point"); + } else { + return retrieveDefaultStyle(styles, "xtpc-text", "point"); + } + } else if (LineString.class.equals(geomType)) { + if ((!isIndex) && (!isLandBased)) { + return retrieveDefaultStyle(styles, "xtpc-conductor", "line"); + } else if (isIndex) { + if (isSmallIndex) + return retrieveDefaultStyle(styles, "xtpc-indexshapes", "line"); + + return retrieveDefaultStyle(styles, "xtpc-indexshape", "line"); + } else if (isLandBased) { + return retrieveDefaultStyle(styles, "xtpc-lndcityLine", "line"); + } + } else if (MultiPoint.class.equals(geomType)) { + if (isSymbol) { + return retrieveDefaultStyle(styles, "xtpc-symbol", "point"); + } else { + return retrieveDefaultStyle(styles, "xtpc-text", "point"); + } + } else if (Polygon.class.equals(geomType)) { + if (isSymbol) { + return retrieveDefaultStyle(styles, "xtpc-symbol", "polygon"); + } else if ((!isIndex) && (!isLandBased)) { + return retrieveDefaultStyle(styles, "polygon", "polygon"); + } else if (isIndex) { + return retrieveDefaultStyle(styles, "xtpc-indexshape", "polygon"); + } else if (isLandBased) { + return retrieveDefaultStyle(styles, "xtpc-lndcityPolygon", "polygon"); + } + } else if (LinearRing.class.equals(geomType)) { + if (!isIndex) { + return retrieveDefaultStyle(styles, "polygon", "polygon"); + } else { + return retrieveDefaultStyle(styles, "xtpc-indexshape", "polygon"); + } + } else if (MultiLineString.class.equals(geomType)) { + if ((!isIndex) && (!isLandBased)) { + return retrieveDefaultStyle(styles, "xtpc-conductor", "line"); + } else if (isLandBased) { + return retrieveDefaultStyle(styles, "xtpc-lndcityLine", "line"); + } else { + return retrieveDefaultStyle(styles, "xtpc-indexshape", "line"); + } + } else if (MultiPolygon.class.equals(geomType)) { + return "polygon"; + } + + return "xtpc-symbol"; + } + + private static String retrieveDefaultStyle(Set styles, String styleName, String defaultStyleName) { + if (styles.contains(styleName)) { + return styleName; + } else + return defaultStyleName; + } + + protected void resetGeoserverWMSConfig(JobExecutionContext executionContext, Connection connection, + GeoServerRESTManager manager, boolean masterMode) + throws JobExecutionException, IOException { + + if ((masterMode) && (!checkCurrentRepositoryStatus(connection, DataReposVersionManager.VSSTATUS_CONFIG))) { + return; + } + + GeoServerRESTReader reader = manager.getReader(); + GeoServerRESTPublisher publisher = manager.getPublisher(); + + List<String> baseMapNames = reader.getLayers().getNames(); + XGeosDataConfigMapping configMapping = getConfigMapping(); + if (configMapping.getMapping().isEmpty()) { + logger.warn("XGeosDataConfigMapping is empty! Pleace check XGeosDataConfig file."); + return; + } + + LinkedList defaultMapNames = new LinkedList(configMapping.getMapping().keySet()); + if (defaultMapNames.isEmpty()) { + logger.warn("DefaultMapNames is emptyin XGeosDataConfigMapping! Pleace check XGeosDataConfig file."); + } + + for (Object key : baseMapNames) { + String baseMapTitle = (String) key; + if (configMapping.getMapping().containsKey(baseMapTitle)) { + int index = defaultMapNames.indexOf(baseMapTitle); + if (index != -1) + defaultMapNames.remove(index); + + List configs = (List) configMapping.getMapping().get(baseMapTitle); + String defaultLayerNames = buildDefaultWMSLayerNames(DEFAULT_NAMESPACE, configs, null); + // wmsConfig.getBaseMapLayers().put(baseMapTitle, defaultLayerNames); + logger.info(baseMapTitle + ":" + defaultLayerNames); + } else { + logger.warn(key.toString() + "-lv='" + baseMapTitle + "' cannot found config information in XGeosDataConfigMapping."); + } + } + + for (Object key : defaultMapNames) { + List configs = (List) configMapping.getMapping().get(key); + GSLayerGroupEncoder lge = new GSLayerGroupEncoder23() { + @Override + protected void addToRoot(Element... elements) { + for (Element e : elements) { + if (e != null) { + getRoot().addContent(e.cloneContent()); + } + } + } + }; + lge.setBounds("EPSG:3826",293838.061931726,2758423.49415501,311845.457747425,2768966.72993585); + String defaultLayerNames = buildDefaultWMSLayerNames(DEFAULT_NAMESPACE, configs, lge); + logger.info(key + ":" + defaultLayerNames); + logger.info(lge.toString()); + // wmsConfig.getBaseMapLayers().put(key, defaultLayerNames); + String layerGroupName = key.toString(); + RESTLayerGroup layerGroup = reader.getLayerGroup(DEFAULT_NAMESPACE, layerGroupName); + if (layerGroup == null) { + if (!publisher.createLayerGroup(DEFAULT_NAMESPACE, layerGroupName, lge)) { + logger.warn("Cannot create layergroups:" + layerGroupName + "-" + lge.toString()); + } + } else { + publisher.configureLayerGroup(DEFAULT_NAMESPACE, layerGroupName, lge); + + } + } + } + + private void resetWMSVirtualLayerMapping(JobExecutionContext jobExecutionContext, Connection connection, + GeoServerRESTManager manager, boolean masterMode) + throws JobExecutionException, IOException { + if ((masterMode) && (!checkCurrentRepositoryStatus(connection, DataReposVersionManager.VSSTATUS_CONFIG))) { + return; + } + + GeoServerRESTReader reader = manager.getReader(); + List<String> layernames = reader.getLayers().getNames(); + ArrayList<String> baseMapNames = new ArrayList<String>(layernames); + // Map baseMapLayers = wmsConfig.getBaseMapLayers(); + // Map baseMapEnvelopes = wmsConfig.getBaseMapEnvelopes(); + + for (Object key : baseMapNames) { + String baseMapTitle = (String) key; + if (baseMapTitle.startsWith("pg")) { + // GeneralEnvelope envelope = (GeneralEnvelope) baseMapEnvelopes.get(baseMapTitle); + + GeneralEnvelope selectedEnvelope = null; + // String baseLayersValue = (String) wmsConfig.getBaseMapLayers().get(baseMapTitle); + RESTLayerGroup layerGroup = reader.getLayerGroup(DEFAULT_NAMESPACE, baseMapTitle); + String baseLayersValue = layerGroup.getName(); + String[] layerNames = null; + if (baseLayersValue != null) { + layerNames = baseLayersValue.split(","); + } else { + logger.info("vl='" + baseMapTitle + "' is empty value."); + continue; + } + + // RESTLayer layer = reader.getLayer(DEFAULT_NAMESPACE, baseMapTitle); + // layer.Type. + + ArrayList<String> newLayerNames = new ArrayList<String>(); + for (int i = 0; i < layerNames.length; i++) { + String layerName = layerNames[i].trim(); + newLayerNames.add(layerName); + + /* + Integer layerType = catalog.getLayerType(layerName); + if (layerType != null) { + newLayerNames.add(layerName); + + if (layerType.intValue() == MapLayerInfo.TYPE_VECTOR) { + FeatureTypeInfo ftype = catalog.getFeatureTypeInfo(layerName); + ftype = ((ftype != null) ? ftype + : catalog.getFeatureTypeInfo(layerName + .substring(layerName.indexOf(":") + 1, layerName.length()))); + + if (selectedEnvelope == null) { + ReferencedEnvelope ftEnvelope = null; + + try { + if (ftype.getBoundingBox() instanceof ReferencedEnvelope + && !ftype.getBoundingBox().isNull()) { + ftEnvelope = ftype.getBoundingBox(); + } else { + // TODO Add Action Errors + return; + } + } catch (IOException e) { + logger.warn(e.getMessage(), e); + return; + } + + selectedEnvelope = new GeneralEnvelope(new double[]{ + ftEnvelope.getMinX(), ftEnvelope.getMinY() + }, + new double[]{ftEnvelope.getMaxX(), ftEnvelope.getMaxY()}); + selectedEnvelope.setCoordinateReferenceSystem(ftEnvelope + .getCoordinateReferenceSystem()); + } else { + final CoordinateReferenceSystem dstCRS = selectedEnvelope + .getCoordinateReferenceSystem(); + + ReferencedEnvelope ftEnvelope = null; + + try { + if (ftype.getBoundingBox() instanceof ReferencedEnvelope) { + ftEnvelope = (ReferencedEnvelope) ftype.getBoundingBox(); + ftEnvelope.transform(dstCRS, true); + } else { + // TODO Add Action Errors + return; + } + } catch (TransformException e) { + logger.warn(e.getMessage(), e); + return; + } catch (FactoryException e) { + logger.warn(e.getMessage(), e); + return; + } catch (IOException e) { + logger.warn(e.getMessage(), e); + return; + } + + ReferencedEnvelope newEnvelope = new ReferencedEnvelope(dstCRS); + newEnvelope.init(selectedEnvelope.getLowerCorner().getOrdinate(0), + selectedEnvelope.getUpperCorner().getOrdinate(0), + selectedEnvelope.getLowerCorner().getOrdinate(1), + selectedEnvelope.getUpperCorner().getOrdinate(1)); + + newEnvelope.expandToInclude(ftEnvelope); + + selectedEnvelope = new GeneralEnvelope(new double[]{ + newEnvelope.getMinX(), newEnvelope.getMinY() + }, + new double[]{newEnvelope.getMaxX(), newEnvelope.getMaxY()}); + selectedEnvelope.setCoordinateReferenceSystem(dstCRS); + } + } + } else { + logger.warn("Cannot found layer " + layerName + " in " + baseMapTitle); + } + */ + } + + if (layerNames.length != newLayerNames.size()) { + StringBuilder layerBuilder = new StringBuilder(); + boolean bFirst = true; + for (String newlayerName : newLayerNames) { + if (!bFirst) { + layerBuilder.append(','); + } else bFirst = false; + layerBuilder.append(newlayerName); + } + // baseMapLayers.put(baseMapTitle, layerBuilder.toString()); + logger.info(baseMapTitle +":"+ layerBuilder.toString()); + } + + /* + if (selectedEnvelope != null) { + if (envelope != null) { + envelope.setCoordinateReferenceSystem(selectedEnvelope + .getCoordinateReferenceSystem()); + envelope.setEnvelope(selectedEnvelope); + baseMapEnvelopes.put(baseMapTitle, envelope); + } else { + baseMapEnvelopes.put(baseMapTitle, selectedEnvelope); + } + } + */ + } + } + } + +} diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2EdbGeoJob.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2EdbGeoJob.java index 69633a4..dee8809 100644 --- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2EdbGeoJob.java +++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2EdbGeoJob.java @@ -1,5 +1,27 @@ package com.ximple.eofms.jobs; +import java.io.File; +import java.io.FileFilter; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.FilenameFilter; +import java.io.IOException; +import java.math.BigDecimal; +import java.nio.BufferOverflowException; +import java.nio.ByteBuffer; +import java.nio.ByteOrder; +import java.nio.channels.FileChannel; +import java.sql.Connection; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.sql.Statement; +import java.sql.Types; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Map; +import java.util.TreeMap; + import com.ximple.eofms.jobs.context.AbstractOracleJobContext; import com.ximple.eofms.jobs.context.edbgeo.FeatureDgnConvertEdbGeoJobContext; import com.ximple.eofms.jobs.context.edbgeo.GeneralDgnConvertEdbGeoJobContext; @@ -28,37 +50,15 @@ import org.apache.commons.logging.LogFactory; import org.geotools.data.DataStore; import org.geotools.data.Transaction; -import org.geotools.data.jdbc.JDBCUtils; -import org.geotools.data.edbgeo.PostgisDataStore; import org.geotools.data.edbgeo.PostgisDataStoreFactory; -import org.geotools.feature.IllegalAttributeException; +import org.geotools.data.jdbc.JDBCUtils; import org.geotools.feature.SchemaException; +import org.geotools.jdbc.JDBCDataStore; +import org.opengis.feature.IllegalAttributeException; import org.quartz.JobDataMap; import org.quartz.JobDetail; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; - -import java.io.File; -import java.io.FileFilter; -import java.io.FileInputStream; -import java.io.FileNotFoundException; -import java.io.FilenameFilter; -import java.io.IOException; -import java.math.BigDecimal; -import java.nio.BufferOverflowException; -import java.nio.ByteBuffer; -import java.nio.ByteOrder; -import java.nio.channels.FileChannel; -import java.sql.Connection; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.sql.Statement; -import java.sql.Types; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; -import java.util.Map; -import java.util.TreeMap; public class OracleConvertDgn2EdbGeoJob extends AbstractOracleDatabaseJob { final static Log logger = LogFactory.getLog(OracleConvertDgn2EdbGeoJob.class); @@ -99,7 +99,7 @@ protected String _edbUseWKB; protected Map<String, String> edbProperties; - protected PostgisDataStore targetDataStore; + protected JDBCDataStore targetDataStore; // protected OracleConvertEdbGeoJobContext oracleJobContext; private long queryTime = 0; @@ -180,7 +180,7 @@ JobDetail jobDetail = context.getJobDetail(); // The name is defined in the job definition - String jobName = jobDetail.getName(); + String jobName = jobDetail.getKey().getName(); // Log the time the job started logger.info(jobName + " fired at " + new Date()); @@ -1204,7 +1204,7 @@ throw new JobExecutionException("cannot process properties-"); } try { - targetDataStore = (PostgisDataStore) dataStoreFactory.createDataStore(edbProperties); + targetDataStore = (JDBCDataStore) dataStoreFactory.createDataStore(edbProperties); } catch (IOException e) { getLogger().warn(e.getMessage(), e); throw new JobExecutionException(e.getMessage(), e); @@ -1230,11 +1230,18 @@ connection = targetDataStore.getConnection(Transaction.AUTO_COMMIT); rs = connection.getMetaData().getTables(null, _edbSchema, DataReposVersionManager.XGVERSIONTABLE_NAME, new String[]{"TABLE"}); if (!rs.next()) needCreate = true; - if (needCreate) - createXGeosVersionTable(connection, _edbSchema); rs.close(); rs = null; + stmt = connection.createStatement(); + stmt.execute("SET edb_redwood_date TO OFF"); + stmt.execute("SET edb_redwood_strings TO OFF"); + // stmt.execute("SET edb_stmt_level_tx TO OFF"); + stmt.close(); + + if (needCreate) + createXGeosVersionTable(connection, _edbSchema); + StringBuilder sbSQL = new StringBuilder("SELECT "); sbSQL.append("vsschema, vsstatus FROM "); sbSQL.append(encodeSchemaTableName(_edbSchema, DataReposVersionManager.XGVERSIONTABLE_NAME)).append(' '); diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2MySQLJob.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2MySQLJob.java index 99ef4d8..960cbf0 100644 --- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2MySQLJob.java +++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2MySQLJob.java @@ -25,10 +25,10 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.geotools.data.DataStore; -import org.geotools.data.mysql.MySQLDataStore; import org.geotools.data.mysql.MySQLDataStoreFactory; -import org.geotools.feature.IllegalAttributeException; import org.geotools.feature.SchemaException; +import org.geotools.jdbc.JDBCDataStore; +import org.opengis.feature.IllegalAttributeException; import org.quartz.JobDataMap; import org.quartz.JobDetail; import org.quartz.JobExecutionContext; @@ -92,7 +92,7 @@ protected String _myUseWKB; protected Map<String, String> myProperties; - protected MySQLDataStore targetDataStore; + protected JDBCDataStore targetDataStore; public Log getLogger() { return logger; @@ -168,7 +168,7 @@ JobDetail jobDetail = context.getJobDetail(); // The name is defined in the job definition - String jobName = jobDetail.getName(); + String jobName = jobDetail.getKey().getName(); String targetSchemaName = null; // Log the time the job started @@ -946,24 +946,26 @@ } */ - if (!myProperties.containsKey("max connections" /*MySQLDataStoreFactory.MAXCONN.key */)) { - myProperties.put("max connections", "2"); + if (!myProperties.containsKey(MySQLDataStoreFactory.MAXCONN.key)) { + myProperties.put(MySQLDataStoreFactory.MAXCONN.key, "2"); } - if (!myProperties.containsKey("min connections" /* MySQLDataStoreFactory.MINCONN.key */)) { - myProperties.put("min connections", "1"); + if (!myProperties.containsKey(MySQLDataStoreFactory.MINCONN.key)) { + myProperties.put(MySQLDataStoreFactory.MINCONN.key, "1"); } + /* if (!myProperties.containsKey(MySQLDataStoreFactory.WKBENABLED.key)) { myProperties.put(MySQLDataStoreFactory.WKBENABLED.key, "true"); } + */ if (!dataStoreFactory.canProcess(myProperties)) { getLogger().warn("cannot process properties-"); throw new JobExecutionException("cannot process properties-"); } try { - targetDataStore = (MySQLDataStore) dataStoreFactory.createDataStore(myProperties); + targetDataStore = dataStoreFactory.createDataStore(myProperties); } catch (IOException e) { getLogger().warn(e.getMessage(), e); throw new JobExecutionException(e.getMessage(), e); diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2OraSDOJob.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2OraSDOJob.java index 7b48d35..1a3a4ee 100644 --- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2OraSDOJob.java +++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2OraSDOJob.java @@ -26,10 +26,10 @@ import org.apache.commons.logging.LogFactory; import org.geotools.data.DataStore; import org.geotools.data.jdbc.JDBCUtils; -import org.geotools.data.oracle.OracleDataStore; -import org.geotools.data.oracle.OracleDataStoreFactory; -import org.geotools.feature.IllegalAttributeException; +import org.geotools.data.oracle.OracleNGDataStoreFactory; import org.geotools.feature.SchemaException; +import org.geotools.jdbc.JDBCDataStore; +import org.opengis.feature.IllegalAttributeException; import org.quartz.JobDataMap; import org.quartz.JobDetail; import org.quartz.JobExecutionContext; @@ -84,7 +84,7 @@ } } - protected static OracleDataStoreFactory dataStoreFactory = new OracleDataStoreFactory(); + protected static OracleNGDataStoreFactory dataStoreFactory = new OracleNGDataStoreFactory(); protected String _sdoHost; protected String _sdoDatabase; @@ -95,7 +95,7 @@ protected String _sdoUseWKB; protected Map<String, String> sdoProperties; - protected OracleDataStore targetDataStore; + protected JDBCDataStore targetDataStore; public Log getLogger() { return logger; @@ -155,14 +155,14 @@ } Map<String, String> remote = new TreeMap<String, String>(); - remote.put("dbtype", "OraSDO"); - remote.put("charset", "UTF-8"); - remote.put("host", _sdoHost); - remote.put("port", _sdoPort); - remote.put("database", _sdoDatabase); - remote.put("user", _sdoUsername); - remote.put("passwd", _sdoPassword); - remote.put("namespace", null); + remote.put(OracleNGDataStoreFactory.DBTYPE.key, "oracle"); + // remote.put("charset", "UTF-8"); + remote.put(OracleNGDataStoreFactory.HOST.key, _sdoHost); + remote.put(OracleNGDataStoreFactory.PORT.key, _sdoPort); + remote.put(OracleNGDataStoreFactory.DATABASE.key, _sdoDatabase); + remote.put(OracleNGDataStoreFactory.USER.key, _sdoUsername); + remote.put(OracleNGDataStoreFactory.PASSWD.key, _sdoPassword); + // remote.put("namespace", null); sdoProperties = remote; } @@ -171,7 +171,7 @@ JobDetail jobDetail = context.getJobDetail(); // The name is defined in the job definition - String jobName = jobDetail.getName(); + String jobName = jobDetail.getKey().getName(); String targetSchemaName = null; // Log the time the job started @@ -950,12 +950,12 @@ } */ - if (!sdoProperties.containsKey(OracleDataStoreFactory.MAXCONN.key)) { - sdoProperties.put(OracleDataStoreFactory.MAXCONN.key, "2"); + if (!sdoProperties.containsKey(OracleNGDataStoreFactory.MAXCONN.key)) { + sdoProperties.put(OracleNGDataStoreFactory.MAXCONN.key, "2"); } - if (!sdoProperties.containsKey(OracleDataStoreFactory.MINCONN.key)) { - sdoProperties.put(OracleDataStoreFactory.MINCONN.key, "1"); + if (!sdoProperties.containsKey(OracleNGDataStoreFactory.MINCONN.key)) { + sdoProperties.put(OracleNGDataStoreFactory.MINCONN.key, "1"); } /* @@ -970,7 +970,7 @@ throw new JobExecutionException("cannot process properties-"); } try { - targetDataStore = (OracleDataStore) dataStoreFactory.createDataStore(sdoProperties); + targetDataStore = dataStoreFactory.createDataStore(sdoProperties); } catch (IOException e) { getLogger().warn(e.getMessage(), e); throw new JobExecutionException(e.getMessage(), e); diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2PostGISJob.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2PostGISJob.java index 99df9bc..df6d3b8 100644 --- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2PostGISJob.java +++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2PostGISJob.java @@ -30,10 +30,10 @@ import org.geotools.data.DataStore; import org.geotools.data.Transaction; import org.geotools.data.jdbc.JDBCUtils; -import org.geotools.data.postgis.PostgisDataStore; -import org.geotools.data.postgis.PostgisDataStoreFactory; -import org.geotools.feature.IllegalAttributeException; +import org.geotools.data.postgis.PostgisNGDataStoreFactory; import org.geotools.feature.SchemaException; +import org.geotools.jdbc.JDBCDataStore; +import org.opengis.feature.IllegalAttributeException; import org.quartz.JobDataMap; import org.quartz.JobDetail; import org.quartz.JobExecutionContext; @@ -90,7 +90,7 @@ } } - protected static PostgisDataStoreFactory dataStoreFactory = new PostgisDataStoreFactory(); + protected static PostgisNGDataStoreFactory dataStoreFactory = new PostgisNGDataStoreFactory(); protected String _pgHost; protected String _pgDatabase; @@ -101,7 +101,7 @@ protected String _pgUseWKB; protected Map<String, String> pgProperties; - protected PostgisDataStore targetDataStore; + protected JDBCDataStore targetDataStore; // protected OracleConvertEdbGeoJobContext oracleJobContext; private long queryTime = 0; @@ -115,7 +115,7 @@ boolean profileMode, boolean useTransform) { return new OracleConvertPostGISJobContext(getDataPath(), - getTargetDataStore(), targetSchemaName, filterPath, profileMode, useTransform); + getTargetDataStore(), targetSchemaName, filterPath, profileMode, useTransform); } protected void extractJobConfiguration(JobDetail jobDetail) throws JobExecutionException { @@ -166,14 +166,14 @@ } Map<String, String> remote = new TreeMap<String, String>(); - remote.put("dbtype", "postgis"); - remote.put("charset", "UTF-8"); - remote.put("host", _pgHost); - remote.put("port", _pgPort); - remote.put("database", _pgDatabase); - remote.put("user", _pgUsername); - remote.put("passwd", _pgPassword); - remote.put("namespace", null); + remote.put(PostgisNGDataStoreFactory.DBTYPE.key, "postgis"); + // remote.put("charset", "UTF-8"); + remote.put(PostgisNGDataStoreFactory.HOST.key, _pgHost); + remote.put(PostgisNGDataStoreFactory.PORT.key, _pgPort); + remote.put(PostgisNGDataStoreFactory.DATABASE.key, _pgDatabase); + remote.put(PostgisNGDataStoreFactory.USER.key, _pgUsername); + remote.put(PostgisNGDataStoreFactory.PASSWD.key, _pgPassword); + // remote.put( "namespace", null); pgProperties = remote; } @@ -182,11 +182,16 @@ JobDetail jobDetail = context.getJobDetail(); // The name is defined in the job definition - String jobName = jobDetail.getName(); + String jobName = jobDetail.getKey().getName(); // Log the time the job started logger.info(jobName + " fired at " + new Date()); extractJobConfiguration(jobDetail); + + if (isIgnoreDBETL()) { + return; + } + createSourceDataStore(); createTargetDataStore(); if (getSourceDataStore() == null) { @@ -234,18 +239,17 @@ OracleConvertPostGISJobContext jobContext = (OracleConvertPostGISJobContext) prepareJobContext(targetSchemaName, _filterPath, - isProfileMode(), isTransformed()); + isProfileMode(), isTransformed()); jobContext.setSourceDataStore(getSourceDataStore()); // jobContext.setConvertElementIn(_convertElementIn); jobContext.setElementLogging(checkElementLogging()); jobContext.setExecutionContext(context); - + createHibernateSequence(jobContext); long tStep = System.currentTimeMillis(); - if (isCopyConnectivityMode()) - { + if (isCopyConnectivityMode()) { copyConnectivity(jobContext); } @@ -344,8 +348,8 @@ private void copyConnectivity(OracleConvertPostGISJobContext jobContext) throws SQLException { Connection connection = jobContext.getOracleConnection(); ResultSet rsMeta = connection.getMetaData().getTables(null, "BASEDB", - AbstractOracleJobContext.CONNECTIVITY_WEBCHECK_NAME + "%", - new String[]{"TABLE"}); + AbstractOracleJobContext.CONNECTIVITY_WEBCHECK_NAME + "%", + new String[]{"TABLE"}); boolean found = false; try { @@ -384,16 +388,15 @@ } - private void createHibernateSequence(OracleConvertPostGISJobContext jobContext) throws SQLException { + private void createHibernateSequence(OracleConvertPostGISJobContext jobContext) throws SQLException { Connection connection = jobContext.getOracleConnection(); try { Statement stmt = connection.createStatement(); stmt.execute(AbstractOracleJobContext.CREATE_HIBERNATE_SEQUENCE); stmt.close(); - } catch (SQLException e) - { - logger.warn("HIBERNATE_SEQUENCE is already exist."); + } catch (SQLException e) { + logger.warn("HIBERNATE_SEQUENCE is already exist."); } } @@ -401,7 +404,7 @@ String querySchema, String targetSchemaName) throws SQLException { int order = 0; OrderedMap map = getBlobStorageList(jobContext.getOracleConnection(), - querySchema, "SD$SPACENODES", null); + querySchema, "SD$SPACENODES", null); logger.info("begin convert job:[" + map.size() + "]:testmode=" + _testMode); @@ -409,16 +412,16 @@ int step = total / 100; int current = 0; - if (total == 0) { + if (total == 0) { logger.warn("SELECT COUNT FROM " + querySchema + ".SD$SPACENODES is zero."); return; } - logger.warn("SELECT COUNT FROM " + querySchema + ".SD$SPACENODES is " + map.size() ); + logger.warn("SELECT COUNT FROM " + querySchema + ".SD$SPACENODES is " + map.size()); //jobContext.startTransaction(); jobContext.setCurrentSchema(querySchema); jobContext.getExecutionContext().put("ConvertDgn2PostGISJobProgress", 0); - for (OrderedMapIterator it = map.orderedMapIterator(); it.hasNext();) { + for (OrderedMapIterator it = map.orderedMapIterator(); it.hasNext(); ) { it.next(); Pair pair = (Pair) it.getValue(); @@ -444,16 +447,14 @@ System.runFinalization(); } - if( step != 0) - { + if (step != 0) { int now = order % step; if (now != current) { current = now; jobContext.getExecutionContext().put("ConvertDgn2PostGISJobProgress", current); } - }else - { + } else { jobContext.getExecutionContext().put("ConvertDgn2PostGISJobProgress", current); current++; } @@ -727,7 +728,7 @@ if (dgnFile.isDirectory()) continue; IndexDgnConvertPostGISJobContext convertContext = new IndexDgnConvertPostGISJobContext(getDataPath(), getTargetDataStore(), targetSchemaName, - isProfileMode(), isTransformed()); + isProfileMode(), isTransformed()); logger.info("--- start index dgnfile-" + dgnFile.toString() + " ---"); FileInputStream fs = null; FileChannel fc = null; @@ -774,8 +775,7 @@ } finally { convertContext.closeFeatureWriter(); - if (reader != null) - { + if (reader != null) { try { reader.close(); } catch (IOException e) { @@ -851,7 +851,7 @@ // } //} else { // if (element instanceof ShapeElement) { - convertContext.putFeatureCollection(element); + convertContext.putFeatureCollection(element); // } //} } @@ -886,7 +886,7 @@ GeneralDgnConvertPostGISJobContext convertContext = new GeneralDgnConvertPostGISJobContext(getDataPath(), getTargetDataStore(), targetSchemaName, - isProfileMode(), isTransformed()); + isProfileMode(), isTransformed()); logger.info("--- start other dgnfile-" + dgnFile.toString() + " ---"); FileInputStream fs = null; FileChannel fc; @@ -932,8 +932,7 @@ } finally { convertContext.closeFeatureWriter(); - if (reader != null) - { + if (reader != null) { try { reader.close(); } catch (IOException e) { @@ -1069,7 +1068,7 @@ for (File dgnFile : dgnFiles) { FeatureDgnConvertPostGISJobContext convertContext = new FeatureDgnConvertPostGISJobContext(getDataPath(), getTargetDataStore(), targetSchemaName, _filterPath, - isProfileMode(), isTransformed()); + isProfileMode(), isTransformed()); logger.info("--- start dgnfile-" + dgnFile.toString() + " ---"); try { convertContext.setExecutionContext(context); @@ -1189,24 +1188,26 @@ } */ - if (!pgProperties.containsKey(PostgisDataStoreFactory.MAXCONN.key)) { - pgProperties.put(PostgisDataStoreFactory.MAXCONN.key, "5"); + if (!pgProperties.containsKey(PostgisNGDataStoreFactory.MAXCONN.key)) { + pgProperties.put(PostgisNGDataStoreFactory.MAXCONN.key, "5"); } - if (!pgProperties.containsKey(PostgisDataStoreFactory.MINCONN.key)) { - pgProperties.put(PostgisDataStoreFactory.MINCONN.key, "1"); + if (!pgProperties.containsKey(PostgisNGDataStoreFactory.MINCONN.key)) { + pgProperties.put(PostgisNGDataStoreFactory.MINCONN.key, "1"); } - if (!pgProperties.containsKey(PostgisDataStoreFactory.WKBENABLED.key)) { - pgProperties.put(PostgisDataStoreFactory.WKBENABLED.key, "true"); + /* + if (!pgProperties.containsKey(PostgisNGDataStoreFactory.WKBENABLED.key)) { + pgProperties.put(PostgisNGDataStoreFactory.WKBENABLED.key, "true"); } + */ if (!dataStoreFactory.canProcess(pgProperties)) { getLogger().warn("cannot process properties-"); throw new JobExecutionException("cannot process properties-"); } try { - targetDataStore = (PostgisDataStore) dataStoreFactory.createDataStore(pgProperties); + targetDataStore = dataStoreFactory.createDataStore(pgProperties); } catch (IOException e) { getLogger().warn(e.getMessage(), e); throw new JobExecutionException(e.getMessage(), e); diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2ShpJob.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2ShpJob.java index 35251ae..62660e8 100644 --- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2ShpJob.java +++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2ShpJob.java @@ -22,8 +22,8 @@ import org.apache.commons.collections.map.LinkedMap; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.geotools.feature.IllegalAttributeException; import org.geotools.feature.SchemaException; +import org.opengis.feature.IllegalAttributeException; import org.quartz.JobDetail; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; @@ -90,7 +90,7 @@ JobDetail jobDetail = context.getJobDetail(); // The name is defined in the job definition - String jobName = jobDetail.getName(); + String jobName = jobDetail.getKey().getName(); String targetSchemaName = null; diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleUpgradeBlob2UDTJob.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleUpgradeBlob2UDTJob.java index 34956a6..2e95dd7 100644 --- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleUpgradeBlob2UDTJob.java +++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleUpgradeBlob2UDTJob.java @@ -24,7 +24,7 @@ JobDetail jobDetail = context.getJobDetail(); // The name is defined in the job definition - String jobName = jobDetail.getName(); + String jobName = jobDetail.getKey().getName(); String targetSchemaName = null; // Log the time the job started diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/AbstractDgnFileJobContext.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/AbstractDgnFileJobContext.java index e1abbd2..28a05e0 100644 --- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/AbstractDgnFileJobContext.java +++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/AbstractDgnFileJobContext.java @@ -2,12 +2,17 @@ import java.util.Map; +import com.ximple.eofms.filter.ElementDispatcher; +import org.apache.commons.digester3.Digester; +import org.apache.commons.digester3.binder.DigesterLoader; +import org.apache.commons.digester3.xmlrules.FromXmlRulesModule; import org.apache.commons.logging.Log; import org.quartz.JobExecutionContext; import com.ximple.io.dgn7.Dgn7fileReader; public abstract class AbstractDgnFileJobContext { + // ------------------------------ FIELDS ------------------------------ /** diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/AbstractOracleJobContext.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/AbstractOracleJobContext.java index 408aeab..9d0e097 100644 --- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/AbstractOracleJobContext.java +++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/AbstractOracleJobContext.java @@ -8,7 +8,7 @@ import org.geotools.data.DataStore; import org.geotools.data.Transaction; import org.geotools.data.jdbc.JDBCUtils; -import org.geotools.data.oracle.OracleDataStore; +import org.geotools.jdbc.JDBCDataStore; public abstract class AbstractOracleJobContext { /** @@ -248,7 +248,7 @@ * Encoding of URL path. */ protected static final String ENCODING = "UTF-8"; - protected OracleDataStore sourceDataStore; + protected JDBCDataStore sourceDataStore; protected String _dataPath; protected Properties properties; @@ -267,13 +267,13 @@ this.useTransform = useTransform; } - public OracleDataStore getSourceDataStore() { + public JDBCDataStore getSourceDataStore() { return sourceDataStore; } public void setSourceDataStore(DataStore sourceDataStore) { - if ((sourceDataStore != null) && (sourceDataStore instanceof OracleDataStore)) { - this.sourceDataStore = (OracleDataStore) sourceDataStore; + if ((sourceDataStore != null) && (sourceDataStore instanceof JDBCDataStore)) { + this.sourceDataStore = (JDBCDataStore) sourceDataStore; } else { assert sourceDataStore != null; getLogger().warn("setSourceDataStore(datastore) need OracleDataStore but got " + diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/edbgeo/AbstractDgnToEdbGeoJobContext.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/edbgeo/AbstractDgnToEdbGeoJobContext.java index f72012a..8bddca6 100644 --- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/edbgeo/AbstractDgnToEdbGeoJobContext.java +++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/edbgeo/AbstractDgnToEdbGeoJobContext.java @@ -10,14 +10,15 @@ import java.sql.Statement; import java.util.*; +import com.vividsolutions.jts.geom.LinearRing; import com.ximple.eofms.util.FeatureTypeBuilderUtil; import org.geotools.data.DataSourceException; import org.geotools.data.DataStore; import org.geotools.data.SchemaNotFoundException; import org.geotools.data.Transaction; import org.geotools.data.jdbc.JDBCUtils; -import org.geotools.data.edbgeo.PostgisDataStore; import org.geotools.filter.LengthFunction; +import org.geotools.jdbc.JDBCDataStore; import org.geotools.referencing.NamedIdentifier; import org.geotools.referencing.crs.DefaultGeographicCRS; import org.opengis.feature.simple.SimpleFeature; @@ -25,7 +26,6 @@ import org.opengis.feature.type.AttributeDescriptor; import org.opengis.feature.type.AttributeType; import org.opengis.feature.type.GeometryDescriptor; -import org.opengis.feature.type.GeometryType; import org.opengis.feature.type.PropertyType; import org.opengis.filter.BinaryComparisonOperator; import org.opengis.filter.Filter; @@ -121,7 +121,7 @@ protected static WKTWriter geometryWriter = new WKTWriter(); protected static JtsBinaryWriter binaryWriter = new JtsBinaryWriter(); - private PostgisDataStore targetDataStore; + private JDBCDataStore targetDataStore; // protected Connection connection; protected String targetSchema = "public"; @@ -130,8 +130,8 @@ public AbstractDgnToEdbGeoJobContext(String dataPath, DataStore targetDataStore, String targetSchema, boolean profileMode, boolean useTransform) { super(dataPath, profileMode, useTransform); - if ((targetDataStore != null) && (targetDataStore instanceof PostgisDataStore)) { - this.targetDataStore = (PostgisDataStore) targetDataStore; + if ((targetDataStore != null) && (targetDataStore instanceof JDBCDataStore)) { + this.targetDataStore = (JDBCDataStore) targetDataStore; } else { getLogger().info("targetDataStore has wrong."); } @@ -139,11 +139,11 @@ setTargetSchema(targetSchema); } - public PostgisDataStore getTargetDataStore() { + public JDBCDataStore getTargetDataStore() { return targetDataStore; } - public void setTargetDataStore(PostgisDataStore targetDataStore) { + public void setTargetDataStore(JDBCDataStore targetDataStore) { this.targetDataStore = targetDataStore; } @@ -320,7 +320,8 @@ sql.append(encodeSchemaTableName(tableName)); sql.append(" USING GIST ("); sql.append(encodeSchemaColumnName(descriptor.getLocalName())); - sql.append(" gist_geometry_ops);"); + sql.append(" );"); + // sql.append(" gist_geometry_ops);"); sqlStr = sql.toString(); getLogger().debug(sqlStr); @@ -483,6 +484,7 @@ return "null"; } + /* if (targetDataStore.isWKBEnabled()) { //String wkb = WKBEncoder.encodeGeometryHex(geom); String wkb = WKBWriter.bytesToHex(new WKBWriter().write(geom)); @@ -495,8 +497,13 @@ } String geoText = geometryWriter.write(geom); - return "GeometryFromText('" + geoText + "', " + srid + ")"; + */ + if (geom instanceof LinearRing) { + //postgis does not handle linear rings, convert to just a line string + geom = geom.getFactory().createLineString(((LinearRing) geom).getCoordinateSequence()); + } + return "ST_GeomFromText('" + geom.toText() + "', " + srid + ")"; } protected String makeInsertSql(SimpleFeature feature, int srid) // throws IOException diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/edbgeo/AbstractOracleToEdbGeoJobContext.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/edbgeo/AbstractOracleToEdbGeoJobContext.java index b8c3ac2..3723cf1 100644 --- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/edbgeo/AbstractOracleToEdbGeoJobContext.java +++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/edbgeo/AbstractOracleToEdbGeoJobContext.java @@ -10,12 +10,13 @@ import java.sql.Statement; import java.util.*; +import com.vividsolutions.jts.geom.LinearRing; import com.ximple.eofms.util.FeatureTypeBuilderUtil; import org.geotools.data.DataSourceException; import org.geotools.data.DataStore; import org.geotools.data.SchemaNotFoundException; -import org.geotools.data.edbgeo.PostgisDataStore; import org.geotools.filter.LengthFunction; +import org.geotools.jdbc.JDBCDataStore; import org.geotools.referencing.NamedIdentifier; import org.geotools.referencing.crs.DefaultGeographicCRS; import org.opengis.feature.simple.SimpleFeature; @@ -120,14 +121,14 @@ protected boolean schemaEnabled = true; - private PostgisDataStore targetDataStore; + private JDBCDataStore targetDataStore; private String targetSchema = "public"; public AbstractOracleToEdbGeoJobContext(String dataPath, DataStore targetDataStore, String targetSchema, boolean profileMode, boolean useTransform) { super(profileMode, useTransform); - if ((targetDataStore != null) && (targetDataStore instanceof PostgisDataStore)) { - this.targetDataStore = (PostgisDataStore) targetDataStore; + if ((targetDataStore != null) && (targetDataStore instanceof JDBCDataStore)) { + this.targetDataStore = (JDBCDataStore) targetDataStore; } else { getLogger().info("targetDataStore has wrong."); } @@ -135,11 +136,11 @@ setTargetSchema(targetSchema); } - public PostgisDataStore getTargetDataStore() { + public JDBCDataStore getTargetDataStore() { return targetDataStore; } - public void setTargetDataStore(PostgisDataStore targetDataStore) { + public void setTargetDataStore(JDBCDataStore targetDataStore) { this.targetDataStore = targetDataStore; } @@ -316,7 +317,8 @@ sql.append(encodeSchemaTableName(tableName)); sql.append(" USING GIST ("); sql.append(encodeSchemaColumnName(descriptor.getLocalName())); - sql.append(" gist_geometry_ops);"); + sql.append(" );"); + // sql.append(" gist_geometry_ops);"); sqlStr = sql.toString(); getLogger().debug(sqlStr); @@ -505,6 +507,7 @@ return "null"; } + /* if (targetDataStore.isWKBEnabled()) { //String wkb = WKBEncoder.encodeGeometryHex(geom); String wkb = WKBWriter.bytesToHex(new WKBWriter().write(geom)); @@ -517,8 +520,13 @@ } String geoText = geometryWriter.write(geom); - return "GeometryFromText('" + geoText + "', " + srid + ")"; + */ + if (geom instanceof LinearRing) { + //postgis does not handle linear rings, convert to just a line string + geom = geom.getFactory().createLineString(((LinearRing) geom).getCoordinateSequence()); + } + return "ST_GeomFromText('" + geom.toText() + "', " + srid + ")"; } protected String makeInsertSql(SimpleFeature feature, int srid) // throws IOException diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/edbgeo/DummyFeatureConvertEdbGeoJobContext.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/edbgeo/DummyFeatureConvertEdbGeoJobContext.java index 1cd0adb..a486435 100644 --- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/edbgeo/DummyFeatureConvertEdbGeoJobContext.java +++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/edbgeo/DummyFeatureConvertEdbGeoJobContext.java @@ -10,8 +10,8 @@ import java.util.Iterator; import java.util.List; -import org.apache.commons.digester.Digester; -import org.apache.commons.digester.xmlrules.DigesterLoader; +import com.ximple.eofms.util.ElementDigesterUtils; +import org.apache.commons.digester3.Digester; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.commons.transaction.memory.PessimisticMapWrapper; @@ -63,9 +63,6 @@ private ElementDispatcher createElementDispatcher() { try { - URL rulesURL = ElementDispatcher.class.getResource("ElementDispatcherRules.xml"); - assert rulesURL != null; - Digester digester = DigesterLoader.createDigester(rulesURL); URL filterURL = null; if (_filterConfig != null) { File config = new File(_filterConfig); @@ -79,6 +76,7 @@ // filterURL = this.getClass().getResource("/conf/ConvertShpFilterForLevel.xml"); } assert filterURL != null; + Digester digester = ElementDigesterUtils.getElementDigester(); return (ElementDispatcher) digester.parse(filterURL); } catch (UnsupportedEncodingException e) { logger.info(e.getMessage(), e); diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/edbgeo/FeatureDgnConvertEdbGeoJobContext.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/edbgeo/FeatureDgnConvertEdbGeoJobContext.java index 826253b..dd4f1f0 100644 --- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/edbgeo/FeatureDgnConvertEdbGeoJobContext.java +++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/edbgeo/FeatureDgnConvertEdbGeoJobContext.java @@ -10,8 +10,14 @@ import java.util.Iterator; import java.util.List; -import org.apache.commons.digester.Digester; -import org.apache.commons.digester.xmlrules.DigesterLoader; +import com.ximple.eofms.filter.AbstractFLinkageDispatchableFilter; +import com.ximple.eofms.filter.ElementDispatcher; +import com.ximple.eofms.util.ElementDigesterUtils; +import com.ximple.io.dgn7.ComplexElement; +import com.ximple.io.dgn7.Element; +import com.ximple.io.dgn7.FrammeAttributeData; +import com.ximple.io.dgn7.UserAttributeData; +import org.apache.commons.digester3.Digester; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.commons.transaction.memory.PessimisticMapWrapper; @@ -25,13 +31,6 @@ import org.opengis.feature.simple.SimpleFeature; import org.opengis.feature.simple.SimpleFeatureType; import org.xml.sax.SAXException; - -import com.ximple.eofms.filter.AbstractFLinkageDispatchableFilter; -import com.ximple.eofms.filter.ElementDispatcher; -import com.ximple.io.dgn7.ComplexElement; -import com.ximple.io.dgn7.Element; -import com.ximple.io.dgn7.FrammeAttributeData; -import com.ximple.io.dgn7.UserAttributeData; public class FeatureDgnConvertEdbGeoJobContext extends AbstractDgnToEdbGeoJobContext { static final Log logger = LogFactory.getLog(FeatureDgnConvertEdbGeoJobContext.class); @@ -57,9 +56,6 @@ private ElementDispatcher createElementDispatcher() { try { - URL rulesURL = ElementDispatcher.class.getResource("ElementDispatcherRules.xml"); - assert rulesURL != null; - Digester digester = DigesterLoader.createDigester(rulesURL); URL filterURL = null; if (_filterConfig != null) { File config = new File(_filterConfig); @@ -73,6 +69,7 @@ // filterURL = this.getClass().getResource("/conf/ConvertShpFilterForLevel.xml"); } assert filterURL != null; + Digester digester = ElementDigesterUtils.getElementDigester(); return (ElementDispatcher) digester.parse(filterURL); } catch (UnsupportedEncodingException e) { logger.info(e.getMessage(), e); diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/edbgeo/GeneralDgnConvertEdbGeoJobContext.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/edbgeo/GeneralDgnConvertEdbGeoJobContext.java index 3fa04e7..71c63e0 100644 --- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/edbgeo/GeneralDgnConvertEdbGeoJobContext.java +++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/edbgeo/GeneralDgnConvertEdbGeoJobContext.java @@ -57,7 +57,6 @@ private TreeMap<String, SimpleFeatureType> featureTypes = new TreeMap<String, SimpleFeatureType>(); - private GeometryConverterDecorator convertDecorator = null; private String featureBaseName = null; private boolean dropTableMode = true; @@ -272,6 +271,8 @@ public SimpleFeature createFeature(SimpleFeatureType featureType, Element element) throws IllegalAttributeException { DefaultColorTable colorTable = (DefaultColorTable) DefaultColorTable.getInstance(); + GeometryConverterDecorator convertDecorator = FeatureTypeBuilderUtil.lookupDefaultGeometryConverter(); + if (element instanceof TextElement) { TextElement textElement = (TextElement) element; convertDecorator.setConverter(textElement); diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/edbgeo/IndexDgnConvertEdbGeoJobContext.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/edbgeo/IndexDgnConvertEdbGeoJobContext.java index 441b340..8b5b1da 100644 --- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/edbgeo/IndexDgnConvertEdbGeoJobContext.java +++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/edbgeo/IndexDgnConvertEdbGeoJobContext.java @@ -55,11 +55,7 @@ private HashMap<SimpleFeatureType, ArrayList<SimpleFeature>> txFeaturesContext = new HashMap<SimpleFeatureType, ArrayList<SimpleFeature>>(); - private SimpleFeatureTypeBuilder typeBuilderPnt = null; - private SimpleFeatureTypeBuilder typeBuilderRect = null; - private SimpleFeatureTypeBuilder typeBuilderSmallRect = null; - - private SimpleFeatureType featureType = null; + private SimpleFeatureType featureType1 = null; private SimpleFeatureType featureType2 = null; private SimpleFeatureType featureType3 = null; @@ -303,17 +299,18 @@ */ } - public SimpleFeatureType createFeatureElement(String featureName) throws SchemaException { - if (typeBuilderRect == null) { + public void createFeatureElement(String featureName) throws SchemaException { + if (featureType1 == null) { Connection conn = null; - typeBuilderRect = FeatureTypeBuilderUtil.createNormalIndexFeatureTypeBuilder(featureName); - if (isExistFeature(typeBuilderRect.buildFeatureType())) { + SimpleFeatureTypeBuilder typeBuilder1 = FeatureTypeBuilderUtil.createNormalIndexFeatureTypeBuilder(featureName); + featureType1 = typeBuilder1.buildFeatureType(); + if (isExistFeature(featureType1)) { try { conn = getConnection(); if (dropTableMode) { try { dropGeometryColumn(conn, featureName, - ((FeatureTypeImpl)typeBuilderRect.buildFeatureType()).getGeometryDescriptor().getLocalName()); + (featureType1).getGeometryDescriptor().getLocalName()); } catch (PSQLException e) { logger.debug(e.getMessage(), e); } @@ -322,8 +319,7 @@ } catch (PSQLException e) { logger.debug(e.getMessage(), e); } - ArrayList<String> schemaTexts = createNewSchemaTexts(conn, - typeBuilderRect.buildFeatureType()); + ArrayList<String> schemaTexts = createNewSchemaTexts(conn, featureType1); for (String stmtText : schemaTexts) { Statement stmt = conn.createStatement(); stmt.execute(stmtText); @@ -343,8 +339,7 @@ } else { try { conn = getConnection(); - ArrayList<String> schemaTexts = createNewSchemaTexts(conn, - typeBuilderRect.buildFeatureType()); + ArrayList<String> schemaTexts = createNewSchemaTexts(conn, featureType1); for (String stmtText : schemaTexts) { Statement stmt = conn.createStatement(); stmt.execute(stmtText); @@ -360,23 +355,22 @@ } } } - return typeBuilderRect.buildFeatureType(); } - public SimpleFeatureType createFeatureElement2(String featureName) throws SchemaException { - if (typeBuilderPnt == null) { + public void createFeatureElement2(String featureName) throws SchemaException { + if (featureType2 == null) { Connection conn = null; - typeBuilderPnt = FeatureTypeBuilderUtil.createNormalIndexTextFeatureTypeBuilder(featureName); - if (isExistFeature(typeBuilderPnt.buildFeatureType())) { + SimpleFeatureTypeBuilder typeBuilder = FeatureTypeBuilderUtil.createNormalIndexTextFeatureTypeBuilder(featureName); + featureType2 = typeBuilder.buildFeatureType(); + if (isExistFeature(featureType2)) { try { conn = getConnection(); if (dropTableMode) { dropGeometryColumn(conn, featureName, - ((FeatureTypeImpl)typeBuilderPnt.buildFeatureType()).getGeometryDescriptor().getLocalName()); + (featureType2).getGeometryDescriptor().getLocalName()); dropTable(conn, featureName); - ArrayList<String> schemaTexts = createNewSchemaTexts(conn, - typeBuilderPnt.buildFeatureType()); + ArrayList<String> schemaTexts = createNewSchemaTexts(conn, featureType2); for (String stmtText : schemaTexts) { Statement stmt = conn.createStatement(); stmt.execute(stmtText); @@ -396,8 +390,7 @@ } else { try { conn = getConnection(); - ArrayList<String> schemaTexts = createNewSchemaTexts(conn, - typeBuilderPnt.buildFeatureType()); + ArrayList<String> schemaTexts = createNewSchemaTexts(conn, featureType2); for (String stmtText : schemaTexts) { Statement stmt = conn.createStatement(); stmt.execute(stmtText); @@ -413,20 +406,20 @@ } } } - return typeBuilderPnt.buildFeatureType(); } - public SimpleFeatureType createFeatureElement3(String featureName) throws SchemaException { - if (typeBuilderSmallRect == null) { + public void createFeatureElement3(String featureName) throws SchemaException { + if (featureType3 == null) { Connection conn = null; - typeBuilderSmallRect = FeatureTypeBuilderUtil.createNormalIndexFeatureTypeBuilder(featureName); - if (isExistFeature(typeBuilderSmallRect.buildFeatureType())) { + SimpleFeatureTypeBuilder typeBuilder = FeatureTypeBuilderUtil.createNormalIndexFeatureTypeBuilder(featureName); + featureType3 = typeBuilder.buildFeatureType(); + if (isExistFeature(featureType3)) { try { conn = getConnection(); if (dropTableMode) { try { dropGeometryColumn(conn, featureName, - ((FeatureTypeImpl)typeBuilderSmallRect.buildFeatureType()).getGeometryDescriptor().getLocalName()); + (featureType3).getGeometryDescriptor().getLocalName()); } catch (PSQLException e) { logger.debug(e.getMessage(), e); } @@ -435,7 +428,7 @@ } catch (PSQLException e) { logger.debug(e.getMessage(), e); } - ArrayList<String> schemaTexts = createNewSchemaTexts(conn, typeBuilderSmallRect.buildFeatureType()); + ArrayList<String> schemaTexts = createNewSchemaTexts(conn, featureType3); for (String stmtText : schemaTexts) { Statement stmt = conn.createStatement(); stmt.execute(stmtText); @@ -455,8 +448,7 @@ } else { try { conn = getConnection(); - ArrayList<String> schemaTexts = createNewSchemaTexts(conn, - typeBuilderSmallRect.buildFeatureType()); + ArrayList<String> schemaTexts = createNewSchemaTexts(conn, featureType3); for (String stmtText : schemaTexts) { Statement stmt = conn.createStatement(); stmt.execute(stmtText); @@ -472,7 +464,6 @@ } } } - return typeBuilderSmallRect.buildFeatureType(); } public SimpleFeature createFeature(SimpleFeatureType featureType, Element element) throws IllegalAttributeException { @@ -771,15 +762,15 @@ } private SimpleFeature createFeature(Element element) throws SchemaException, IllegalAttributeException { - if (featureType == null) { + if (featureType1 == null) { String dgnname = getFilename().toLowerCase(); int i = dgnname.lastIndexOf("."); if (i != -1) { dgnname = dgnname.substring(0, i); } - featureType = createFeatureElement(dgnname.toLowerCase()); + createFeatureElement(dgnname.toLowerCase()); } - return createFeature(featureType, element); + return createFeature(featureType1, element); } private SimpleFeature createFeature2(Element element) throws SchemaException, IllegalAttributeException { @@ -790,7 +781,7 @@ dgnname = dgnname.substring(0, i); } dgnname = dgnname + "_p"; - featureType2 = createFeatureElement2(dgnname.toLowerCase()); + createFeatureElement2(dgnname.toLowerCase()); } return createFeature2(featureType2, element); } @@ -803,7 +794,7 @@ dgnname = dgnname.substring(0, i); } dgnname = dgnname + "_s"; - featureType3 = createFeatureElement3(dgnname.toLowerCase()); + createFeatureElement3(dgnname.toLowerCase()); } return createFeature3(featureType3, element); } diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/edbgeo/OracleConvertEdbGeoJobContext.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/edbgeo/OracleConvertEdbGeoJobContext.java index 9191594..08c0be1 100644 --- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/edbgeo/OracleConvertEdbGeoJobContext.java +++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/edbgeo/OracleConvertEdbGeoJobContext.java @@ -15,35 +15,33 @@ import java.util.HashMap; import java.util.Iterator; +import com.edb.util.PSQLException; import com.vividsolutions.jts.geom.Geometry; -import org.apache.commons.digester.Digester; -import org.apache.commons.digester.xmlrules.DigesterLoader; +import com.vividsolutions.jts.util.Assert; +import com.ximple.eofms.filter.AbstractFLinkageDispatchableFilter; +import com.ximple.eofms.filter.CreateFeatureTypeEventListener; +import com.ximple.eofms.filter.ElementDispatcher; +import com.ximple.eofms.filter.FeatureTypeEvent; +import com.ximple.eofms.jobs.OracleElementLogger; +import com.ximple.eofms.util.ElementDigesterUtils; +import com.ximple.io.dgn7.ComplexElement; +import com.ximple.io.dgn7.Element; +import com.ximple.io.dgn7.FrammeAttributeData; +import org.apache.commons.digester3.Digester; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.commons.transaction.util.CommonsLoggingLogger; import org.apache.commons.transaction.util.LoggerFacade; import org.geotools.data.DataStore; import org.geotools.data.Transaction; -import org.geotools.data.jdbc.JDBCUtils; import org.geotools.data.edbgeo.PostgisDataStoreFactory; +import org.geotools.data.jdbc.JDBCUtils; import org.geotools.feature.SchemaException; import org.geotools.feature.type.FeatureTypeImpl; import org.opengis.feature.simple.SimpleFeature; import org.opengis.feature.simple.SimpleFeatureType; -import com.edb.util.PSQLException; import org.quartz.JobExecutionContext; import org.xml.sax.SAXException; - -import com.vividsolutions.jts.util.Assert; - -import com.ximple.eofms.filter.AbstractFLinkageDispatchableFilter; -import com.ximple.eofms.filter.CreateFeatureTypeEventListener; -import com.ximple.eofms.filter.ElementDispatcher; -import com.ximple.eofms.filter.FeatureTypeEvent; -import com.ximple.eofms.jobs.OracleElementLogger; -import com.ximple.io.dgn7.ComplexElement; -import com.ximple.io.dgn7.Element; -import com.ximple.io.dgn7.FrammeAttributeData; public class OracleConvertEdbGeoJobContext extends AbstractOracleToEdbGeoJobContext implements CreateFeatureTypeEventListener { @@ -86,9 +84,6 @@ private ElementDispatcher createElementDispatcher() { try { - URL rulesURL = ElementDispatcher.class.getResource("ElementDispatcherRules.xml"); - assert rulesURL != null; - Digester digester = DigesterLoader.createDigester(rulesURL); URL filterURL = null; if (_filterConfig != null) { File config = new File(_filterConfig); @@ -102,6 +97,7 @@ // filterURL = this.getClass().getResource("/conf/ConvertShpFilterForLevel.xml"); } assert filterURL != null; + Digester digester = ElementDigesterUtils.getElementDigester(); return (ElementDispatcher) digester.parse(filterURL); } catch (UnsupportedEncodingException e) { logger.info(e.getMessage(), e); diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/mysql/AbstractDgnToMySQLJobContext.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/mysql/AbstractDgnToMySQLJobContext.java index fbc8c44..1dc6ee4 100644 --- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/mysql/AbstractDgnToMySQLJobContext.java +++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/mysql/AbstractDgnToMySQLJobContext.java @@ -6,25 +6,25 @@ import org.geotools.data.DataStore; import org.geotools.data.SchemaNotFoundException; import org.geotools.data.Transaction; -import org.geotools.data.mysql.MySQLDataStore; import com.ximple.eofms.jobs.context.AbstractDgnFileJobContext; +import org.geotools.jdbc.JDBCDataStore; import org.opengis.feature.simple.SimpleFeatureType; public abstract class AbstractDgnToMySQLJobContext extends AbstractDgnFileJobContext { - protected MySQLDataStore targetDataStore; + protected JDBCDataStore targetDataStore; public AbstractDgnToMySQLJobContext(String dataPath, DataStore targetDataStore, boolean profileMode, boolean useTransform) { super(dataPath, profileMode, useTransform); - this.targetDataStore = (MySQLDataStore) targetDataStore; + this.targetDataStore = (JDBCDataStore) targetDataStore; } - public MySQLDataStore getTargetDataStore() { + public JDBCDataStore getTargetDataStore() { return targetDataStore; } - public void setTargetDataStore(MySQLDataStore targetDataStore) { + public void setTargetDataStore(JDBCDataStore targetDataStore) { this.targetDataStore = targetDataStore; } diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/mysql/AbstractOracleToMySQLJobContext.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/mysql/AbstractOracleToMySQLJobContext.java index e901bd5..d319071 100644 --- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/mysql/AbstractOracleToMySQLJobContext.java +++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/mysql/AbstractOracleToMySQLJobContext.java @@ -6,30 +6,30 @@ import org.geotools.data.DataStore; import org.geotools.data.SchemaNotFoundException; import org.geotools.data.Transaction; -import org.geotools.data.mysql.MySQLDataStore; import com.ximple.eofms.jobs.context.AbstractOracleJobContext; +import org.geotools.jdbc.JDBCDataStore; import org.opengis.feature.simple.SimpleFeatureType; public abstract class AbstractOracleToMySQLJobContext extends AbstractOracleJobContext { - protected MySQLDataStore targetDataStore; + protected JDBCDataStore targetDataStore; public AbstractOracleToMySQLJobContext(String dataPath, DataStore targetDataStore, boolean profileMode, boolean useTransform) { super(profileMode, useTransform); - if ((targetDataStore != null) && (targetDataStore instanceof MySQLDataStore)) { - this.targetDataStore = (MySQLDataStore) targetDataStore; + if ((targetDataStore != null) && (targetDataStore instanceof JDBCDataStore)) { + this.targetDataStore = (JDBCDataStore) targetDataStore; } else { getLogger().info("targetDataStore has wrong."); } setDataPath(dataPath); } - public MySQLDataStore getTargetDataStore() { + public JDBCDataStore getTargetDataStore() { return targetDataStore; } - public void setTargetDataStore(MySQLDataStore targetDataStore) { + public void setTargetDataStore(JDBCDataStore targetDataStore) { this.targetDataStore = targetDataStore; } diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/mysql/DummyFeatureConvertMySQlJobContext.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/mysql/DummyFeatureConvertMySQlJobContext.java index 750b695..98c1a11 100644 --- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/mysql/DummyFeatureConvertMySQlJobContext.java +++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/mysql/DummyFeatureConvertMySQlJobContext.java @@ -10,8 +10,18 @@ import java.util.Iterator; import java.util.List; -import org.apache.commons.digester.Digester; -import org.apache.commons.digester.xmlrules.DigesterLoader; +import com.ximple.eofms.filter.AbstractFLinkageDispatchableFilter; +import com.ximple.eofms.filter.ElementDispatchableFilter; +import com.ximple.eofms.filter.ElementDispatcher; +import com.ximple.eofms.filter.TypeCompIdDispatchableFilter; +import com.ximple.eofms.filter.TypeCompLevelIdDispatchableFilter; +import com.ximple.eofms.filter.TypeIdDispatchableFilter; +import com.ximple.eofms.util.ElementDigesterUtils; +import com.ximple.io.dgn7.ComplexElement; +import com.ximple.io.dgn7.Element; +import com.ximple.io.dgn7.FrammeAttributeData; +import com.ximple.io.dgn7.UserAttributeData; +import org.apache.commons.digester3.Digester; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.commons.transaction.memory.PessimisticMapWrapper; @@ -25,19 +35,6 @@ import org.opengis.feature.simple.SimpleFeature; import org.opengis.feature.simple.SimpleFeatureType; import org.xml.sax.SAXException; - -import com.vividsolutions.jts.geom.GeometryFactory; - -import com.ximple.eofms.filter.AbstractFLinkageDispatchableFilter; -import com.ximple.eofms.filter.ElementDispatchableFilter; -import com.ximple.eofms.filter.ElementDispatcher; -import com.ximple.eofms.filter.TypeCompIdDispatchableFilter; -import com.ximple.eofms.filter.TypeCompLevelIdDispatchableFilter; -import com.ximple.eofms.filter.TypeIdDispatchableFilter; -import com.ximple.io.dgn7.ComplexElement; -import com.ximple.io.dgn7.Element; -import com.ximple.io.dgn7.FrammeAttributeData; -import com.ximple.io.dgn7.UserAttributeData; public class DummyFeatureConvertMySQlJobContext extends AbstractDgnToMySQLJobContext { static final Log logger = LogFactory.getLog(DummyFeatureConvertMySQlJobContext.class); @@ -65,9 +62,6 @@ private ElementDispatcher createElementDispatcher() { try { - URL rulesURL = ElementDispatcher.class.getResource("ElementDispatcherRules.xml"); - assert rulesURL != null; - Digester digester = DigesterLoader.createDigester(rulesURL); URL filterURL = null; if (_filterConfig != null) { File config = new File(_filterConfig); @@ -81,6 +75,7 @@ // filterURL = this.getClass().getResource("/conf/ConvertShpFilterForLevel.xml"); } assert filterURL != null; + Digester digester = ElementDigesterUtils.getElementDigester(); return (ElementDispatcher) digester.parse(filterURL); } catch (UnsupportedEncodingException e) { logger.info(e.getMessage(), e); diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/mysql/FeatureDgnConvertMySQLJobContext.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/mysql/FeatureDgnConvertMySQLJobContext.java index 72465b9..5c1cef7 100644 --- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/mysql/FeatureDgnConvertMySQLJobContext.java +++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/mysql/FeatureDgnConvertMySQLJobContext.java @@ -10,8 +10,14 @@ import java.util.Iterator; import java.util.List; -import org.apache.commons.digester.Digester; -import org.apache.commons.digester.xmlrules.DigesterLoader; +import com.ximple.eofms.filter.AbstractFLinkageDispatchableFilter; +import com.ximple.eofms.filter.ElementDispatcher; +import com.ximple.eofms.util.ElementDigesterUtils; +import com.ximple.io.dgn7.ComplexElement; +import com.ximple.io.dgn7.Element; +import com.ximple.io.dgn7.FrammeAttributeData; +import com.ximple.io.dgn7.UserAttributeData; +import org.apache.commons.digester3.Digester; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.commons.transaction.memory.PessimisticMapWrapper; @@ -25,15 +31,6 @@ import org.opengis.feature.simple.SimpleFeature; import org.opengis.feature.simple.SimpleFeatureType; import org.xml.sax.SAXException; - -import com.vividsolutions.jts.geom.GeometryFactory; - -import com.ximple.eofms.filter.AbstractFLinkageDispatchableFilter; -import com.ximple.eofms.filter.ElementDispatcher; -import com.ximple.io.dgn7.ComplexElement; -import com.ximple.io.dgn7.Element; -import com.ximple.io.dgn7.FrammeAttributeData; -import com.ximple.io.dgn7.UserAttributeData; public class FeatureDgnConvertMySQLJobContext extends AbstractDgnToMySQLJobContext { static final Log logger = LogFactory.getLog(FeatureDgnConvertMySQLJobContext.class); @@ -58,9 +55,6 @@ private ElementDispatcher createElementDispatcher() { try { - URL rulesURL = ElementDispatcher.class.getResource("ElementDispatcherRules.xml"); - assert rulesURL != null; - Digester digester = DigesterLoader.createDigester(rulesURL); URL filterURL = null; if (_filterConfig != null) { File config = new File(_filterConfig); @@ -74,6 +68,7 @@ // filterURL = this.getClass().getResource("/conf/ConvertShpFilterForLevel.xml"); } assert filterURL != null; + Digester digester = ElementDigesterUtils.getElementDigester(); return (ElementDispatcher) digester.parse(filterURL); } catch (UnsupportedEncodingException e) { logger.info(e.getMessage(), e); diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/mysql/OracleConvertMySQLJobContext.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/mysql/OracleConvertMySQLJobContext.java index 7815432..c7e0336 100644 --- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/mysql/OracleConvertMySQLJobContext.java +++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/mysql/OracleConvertMySQLJobContext.java @@ -11,8 +11,8 @@ import java.util.HashMap; import java.util.Iterator; -import org.apache.commons.digester.Digester; -import org.apache.commons.digester.xmlrules.DigesterLoader; +import com.ximple.eofms.util.ElementDigesterUtils; +import org.apache.commons.digester3.Digester; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.commons.transaction.memory.PessimisticMapWrapper; @@ -78,9 +78,6 @@ private ElementDispatcher createElementDispatcher() { try { - URL rulesURL = ElementDispatcher.class.getResource("ElementDispatcherRules.xml"); - assert rulesURL != null; - Digester digester = DigesterLoader.createDigester(rulesURL); URL filterURL = null; if (_filterConfig != null) { File config = new File(_filterConfig); @@ -94,6 +91,7 @@ // filterURL = this.getClass().getResource("/conf/ConvertShpFilterForLevel.xml"); } assert filterURL != null; + Digester digester = ElementDigesterUtils.getElementDigester(); return (ElementDispatcher) digester.parse(filterURL); } catch (UnsupportedEncodingException e) { logger.info(e.getMessage(), e); @@ -112,7 +110,7 @@ public void putFeatureCollection(Element element) { assert elementDispatcher != null; - // �P�_�O�_�ũM��� + SimpleFeature feature = elementDispatcher.execute(element, isTransformed()); if (feature == null) { boolean isEmptySize = false; diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/orasdo/AbstractDgnToOraSDOJobContext.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/orasdo/AbstractDgnToOraSDOJobContext.java index 2647b46..cc0761d 100644 --- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/orasdo/AbstractDgnToOraSDOJobContext.java +++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/orasdo/AbstractDgnToOraSDOJobContext.java @@ -6,25 +6,25 @@ import org.geotools.data.DataStore; import org.geotools.data.SchemaNotFoundException; import org.geotools.data.Transaction; -import org.geotools.data.oracle.OracleDataStore; import com.ximple.eofms.jobs.context.AbstractDgnFileJobContext; +import org.geotools.jdbc.JDBCDataStore; import org.opengis.feature.simple.SimpleFeatureType; public abstract class AbstractDgnToOraSDOJobContext extends AbstractDgnFileJobContext { - protected OracleDataStore targetDataStore; + protected JDBCDataStore targetDataStore; public AbstractDgnToOraSDOJobContext(String dataPath, DataStore targetDataStore, boolean profileMode, boolean useTransform) { super(dataPath, profileMode, useTransform); - this.targetDataStore = (OracleDataStore) targetDataStore; + this.targetDataStore = (JDBCDataStore) targetDataStore; } - public OracleDataStore getTargetDataStore() { + public JDBCDataStore getTargetDataStore() { return targetDataStore; } - public void setTargetDataStore(OracleDataStore targetDataStore) { + public void setTargetDataStore(JDBCDataStore targetDataStore) { this.targetDataStore = targetDataStore; } diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/orasdo/AbstractOracleToOraSDOJobContext.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/orasdo/AbstractOracleToOraSDOJobContext.java index dec4d5d..9535bba 100644 --- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/orasdo/AbstractOracleToOraSDOJobContext.java +++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/orasdo/AbstractOracleToOraSDOJobContext.java @@ -6,31 +6,31 @@ import org.geotools.data.DataStore; import org.geotools.data.SchemaNotFoundException; import org.geotools.data.Transaction; -import org.geotools.data.oracle.OracleDataStore; import com.ximple.eofms.jobs.context.AbstractOracleJobContext; +import org.geotools.jdbc.JDBCDataStore; import org.opengis.feature.simple.SimpleFeatureType; public abstract class AbstractOracleToOraSDOJobContext extends AbstractOracleJobContext { protected boolean profileMode = false; - protected OracleDataStore targetDataStore; + protected JDBCDataStore targetDataStore; public AbstractOracleToOraSDOJobContext(String dataPath, DataStore targetDataStore, boolean profileMode, boolean useTransform) { super(profileMode, useTransform); - if ((targetDataStore != null) && (targetDataStore instanceof OracleDataStore)) { - this.targetDataStore = (OracleDataStore) targetDataStore; + if ((targetDataStore != null) && (targetDataStore instanceof JDBCDataStore)) { + this.targetDataStore = (JDBCDataStore) targetDataStore; } else { getLogger().info("targetDataStore has wrong."); } setDataPath(dataPath); } - public OracleDataStore getTargetDataStore() { + public JDBCDataStore getTargetDataStore() { return targetDataStore; } - public void setTargetDataStore(OracleDataStore targetDataStore) { + public void setTargetDataStore(JDBCDataStore targetDataStore) { this.targetDataStore = targetDataStore; } diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/orasdo/DummyFeatureConvertOraSDOJobContext.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/orasdo/DummyFeatureConvertOraSDOJobContext.java index 1ba19b3..70683e1 100644 --- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/orasdo/DummyFeatureConvertOraSDOJobContext.java +++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/orasdo/DummyFeatureConvertOraSDOJobContext.java @@ -10,8 +10,18 @@ import java.util.Iterator; import java.util.List; -import org.apache.commons.digester.Digester; -import org.apache.commons.digester.xmlrules.DigesterLoader; +import com.ximple.eofms.filter.AbstractFLinkageDispatchableFilter; +import com.ximple.eofms.filter.ElementDispatchableFilter; +import com.ximple.eofms.filter.ElementDispatcher; +import com.ximple.eofms.filter.TypeCompIdDispatchableFilter; +import com.ximple.eofms.filter.TypeCompLevelIdDispatchableFilter; +import com.ximple.eofms.filter.TypeIdDispatchableFilter; +import com.ximple.eofms.util.ElementDigesterUtils; +import com.ximple.io.dgn7.ComplexElement; +import com.ximple.io.dgn7.Element; +import com.ximple.io.dgn7.FrammeAttributeData; +import com.ximple.io.dgn7.UserAttributeData; +import org.apache.commons.digester3.Digester; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.commons.transaction.memory.PessimisticMapWrapper; @@ -22,23 +32,9 @@ import org.geotools.data.Transaction; import org.geotools.feature.IllegalAttributeException; import org.geotools.feature.SchemaException; -import org.geotools.geometry.jts.JTSFactoryFinder; import org.opengis.feature.simple.SimpleFeature; import org.opengis.feature.simple.SimpleFeatureType; import org.xml.sax.SAXException; - -import com.vividsolutions.jts.geom.GeometryFactory; - -import com.ximple.eofms.filter.AbstractFLinkageDispatchableFilter; -import com.ximple.eofms.filter.ElementDispatchableFilter; -import com.ximple.eofms.filter.ElementDispatcher; -import com.ximple.eofms.filter.TypeCompIdDispatchableFilter; -import com.ximple.eofms.filter.TypeCompLevelIdDispatchableFilter; -import com.ximple.eofms.filter.TypeIdDispatchableFilter; -import com.ximple.io.dgn7.ComplexElement; -import com.ximple.io.dgn7.Element; -import com.ximple.io.dgn7.FrammeAttributeData; -import com.ximple.io.dgn7.UserAttributeData; public class DummyFeatureConvertOraSDOJobContext extends AbstractDgnToOraSDOJobContext { static final Log logger = LogFactory.getLog(DummyFeatureConvertOraSDOJobContext.class); @@ -66,9 +62,6 @@ private ElementDispatcher createElementDispatcher() { try { - URL rulesURL = ElementDispatcher.class.getResource("ElementDispatcherRules.xml"); - assert rulesURL != null; - Digester digester = DigesterLoader.createDigester(rulesURL); URL filterURL = null; if (_filterConfig != null) { File config = new File(_filterConfig); @@ -82,6 +75,7 @@ // filterURL = this.getClass().getResource("/conf/ConvertShpFilterForLevel.xml"); } assert filterURL != null; + Digester digester = ElementDigesterUtils.getElementDigester(); return (ElementDispatcher) digester.parse(filterURL); } catch (UnsupportedEncodingException e) { logger.info(e.getMessage(), e); diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/orasdo/FeatureDgnConvertOraSDOJobContext.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/orasdo/FeatureDgnConvertOraSDOJobContext.java index 3de2377..c24b318 100644 --- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/orasdo/FeatureDgnConvertOraSDOJobContext.java +++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/orasdo/FeatureDgnConvertOraSDOJobContext.java @@ -10,8 +10,14 @@ import java.util.Iterator; import java.util.List; -import org.apache.commons.digester.Digester; -import org.apache.commons.digester.xmlrules.DigesterLoader; +import com.ximple.eofms.filter.AbstractFLinkageDispatchableFilter; +import com.ximple.eofms.filter.ElementDispatcher; +import com.ximple.eofms.util.ElementDigesterUtils; +import com.ximple.io.dgn7.ComplexElement; +import com.ximple.io.dgn7.Element; +import com.ximple.io.dgn7.FrammeAttributeData; +import com.ximple.io.dgn7.UserAttributeData; +import org.apache.commons.digester3.Digester; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.commons.transaction.memory.PessimisticMapWrapper; @@ -25,15 +31,6 @@ import org.opengis.feature.simple.SimpleFeature; import org.opengis.feature.simple.SimpleFeatureType; import org.xml.sax.SAXException; - -import com.vividsolutions.jts.geom.GeometryFactory; - -import com.ximple.eofms.filter.AbstractFLinkageDispatchableFilter; -import com.ximple.eofms.filter.ElementDispatcher; -import com.ximple.io.dgn7.ComplexElement; -import com.ximple.io.dgn7.Element; -import com.ximple.io.dgn7.FrammeAttributeData; -import com.ximple.io.dgn7.UserAttributeData; public class FeatureDgnConvertOraSDOJobContext extends AbstractDgnToOraSDOJobContext { static final Log logger = LogFactory.getLog(FeatureDgnConvertOraSDOJobContext.class); @@ -58,9 +55,6 @@ private ElementDispatcher createElementDispatcher() { try { - URL rulesURL = ElementDispatcher.class.getResource("ElementDispatcherRules.xml"); - assert rulesURL != null; - Digester digester = DigesterLoader.createDigester(rulesURL); URL filterURL = null; if (_filterConfig != null) { File config = new File(_filterConfig); @@ -74,6 +68,7 @@ // filterURL = this.getClass().getResource("/conf/ConvertShpFilterForLevel.xml"); } assert filterURL != null; + Digester digester = ElementDigesterUtils.getElementDigester(); return (ElementDispatcher) digester.parse(filterURL); } catch (UnsupportedEncodingException e) { logger.info(e.getMessage(), e); diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/orasdo/OracleConvertOraSDOJobContext.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/orasdo/OracleConvertOraSDOJobContext.java index c112330..09d4d6b 100644 --- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/orasdo/OracleConvertOraSDOJobContext.java +++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/orasdo/OracleConvertOraSDOJobContext.java @@ -11,8 +11,15 @@ import java.util.HashMap; import java.util.Iterator; -import org.apache.commons.digester.Digester; -import org.apache.commons.digester.xmlrules.DigesterLoader; +import com.vividsolutions.jts.util.Assert; +import com.ximple.eofms.filter.AbstractFLinkageDispatchableFilter; +import com.ximple.eofms.filter.ElementDispatcher; +import com.ximple.eofms.jobs.OracleElementLogger; +import com.ximple.eofms.util.ElementDigesterUtils; +import com.ximple.io.dgn7.ComplexElement; +import com.ximple.io.dgn7.Element; +import com.ximple.io.dgn7.FrammeAttributeData; +import org.apache.commons.digester3.Digester; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.commons.transaction.memory.PessimisticMapWrapper; @@ -21,27 +28,18 @@ import org.geotools.data.DataStore; import org.geotools.data.FeatureWriter; import org.geotools.data.Transaction; -import org.geotools.data.oracle.OracleDataStoreFactory; +import org.geotools.data.oracle.OracleNGDataStoreFactory; import org.geotools.feature.IllegalAttributeException; import org.opengis.feature.simple.SimpleFeature; import org.opengis.feature.simple.SimpleFeatureType; import org.quartz.JobExecutionContext; import org.xml.sax.SAXException; -import com.vividsolutions.jts.util.Assert; - -import com.ximple.eofms.filter.AbstractFLinkageDispatchableFilter; -import com.ximple.eofms.filter.ElementDispatcher; -import com.ximple.eofms.jobs.OracleElementLogger; -import com.ximple.io.dgn7.ComplexElement; -import com.ximple.io.dgn7.Element; -import com.ximple.io.dgn7.FrammeAttributeData; - public class OracleConvertOraSDOJobContext extends AbstractOracleToOraSDOJobContext { static Log logger = LogFactory.getLog(OracleConvertOraSDOJobContext.class); static final LoggerFacade sLogger = new CommonsLoggingLogger(logger); - static OracleDataStoreFactory dataStoreFactory = new OracleDataStoreFactory(); + static OracleNGDataStoreFactory dataStoreFactory = new OracleNGDataStoreFactory(); private OracleElementLogger elmLogger = null; @@ -78,9 +76,6 @@ private ElementDispatcher createElementDispatcher() { try { - URL rulesURL = ElementDispatcher.class.getResource("ElementDispatcherRules.xml"); - assert rulesURL != null; - Digester digester = DigesterLoader.createDigester(rulesURL); URL filterURL = null; if (_filterConfig != null) { File config = new File(_filterConfig); @@ -94,6 +89,7 @@ // filterURL = this.getClass().getResource("/conf/ConvertShpFilterForLevel.xml"); } assert filterURL != null; + Digester digester = ElementDigesterUtils.getElementDigester(); return (ElementDispatcher) digester.parse(filterURL); } catch (UnsupportedEncodingException e) { logger.info(e.getMessage(), e); @@ -112,7 +108,7 @@ public void putFeatureCollection(Element element) { assert elementDispatcher != null; - // �P�_�O�_�ũM��� + SimpleFeature feature = elementDispatcher.execute(element, isTransformed()); if (feature == null) { boolean isEmptySize = false; @@ -224,11 +220,6 @@ executionContext = context; } - /** - * �����]�Ƽg�J�� - * - * @throws IOException IO�o�Ϳ�~ - */ public void closeFeatureWriter() throws IOException { for (FeatureWriter featureWriter : this.featuresWriterContext.values()) { diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/AbstractDgnToPostGISJobContext.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/AbstractDgnToPostGISJobContext.java index 17aa358..65d59d8 100644 --- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/AbstractDgnToPostGISJobContext.java +++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/AbstractDgnToPostGISJobContext.java @@ -8,16 +8,31 @@ import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; -import java.util.*; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Set; +import com.vividsolutions.jts.geom.Geometry; +import com.vividsolutions.jts.geom.GeometryCollection; +import com.vividsolutions.jts.geom.LineString; +import com.vividsolutions.jts.geom.LinearRing; +import com.vividsolutions.jts.geom.MultiLineString; +import com.vividsolutions.jts.geom.MultiPoint; +import com.vividsolutions.jts.geom.MultiPolygon; +import com.vividsolutions.jts.geom.Point; +import com.vividsolutions.jts.geom.Polygon; +import com.ximple.eofms.jobs.context.AbstractDgnFileJobContext; import com.ximple.eofms.util.FeatureTypeBuilderUtil; +import com.ximple.eofms.util.postjts.JtsBinaryWriter; import org.geotools.data.DataSourceException; import org.geotools.data.DataStore; import org.geotools.data.SchemaNotFoundException; import org.geotools.data.Transaction; import org.geotools.data.jdbc.JDBCUtils; -import org.geotools.data.postgis.PostgisDataStore; import org.geotools.filter.LengthFunction; +import org.geotools.jdbc.JDBCDataStore; import org.geotools.referencing.NamedIdentifier; import org.geotools.referencing.crs.DefaultGeographicCRS; import org.opengis.feature.simple.SimpleFeature; @@ -25,7 +40,6 @@ import org.opengis.feature.type.AttributeDescriptor; import org.opengis.feature.type.AttributeType; import org.opengis.feature.type.GeometryDescriptor; -import org.opengis.feature.type.GeometryType; import org.opengis.feature.type.PropertyType; import org.opengis.filter.BinaryComparisonOperator; import org.opengis.filter.Filter; @@ -34,21 +48,8 @@ import org.opengis.filter.expression.Literal; import org.opengis.referencing.crs.CoordinateReferenceSystem; -import com.vividsolutions.jts.geom.Geometry; -import com.vividsolutions.jts.geom.GeometryCollection; -import com.vividsolutions.jts.geom.LineString; -import com.vividsolutions.jts.geom.MultiLineString; -import com.vividsolutions.jts.geom.MultiPoint; -import com.vividsolutions.jts.geom.MultiPolygon; -import com.vividsolutions.jts.geom.Point; -import com.vividsolutions.jts.geom.Polygon; -import com.vividsolutions.jts.io.WKBWriter; -import com.vividsolutions.jts.io.WKTWriter; - -import com.ximple.eofms.jobs.context.AbstractDgnFileJobContext; -import com.ximple.eofms.util.postjts.JtsBinaryWriter; - public abstract class AbstractDgnToPostGISJobContext extends AbstractDgnFileJobContext { + private static Map<String, Class> GEOM_TYPE_MAP = new HashMap<String, Class>(); private static Map<String, Class> GEOM3D_TYPE_MAP = new HashMap<String, Class>(); @@ -118,10 +119,10 @@ /** * Well Known Text writer (from JTS). */ - protected static WKTWriter geometryWriter = new WKTWriter(); + // protected static WKTWriter geometryWriter = new WKTWriter(); protected static JtsBinaryWriter binaryWriter = new JtsBinaryWriter(); - private PostgisDataStore targetDataStore; + private JDBCDataStore targetDataStore; // protected Connection connection; protected String targetSchema = "public"; @@ -130,8 +131,8 @@ public AbstractDgnToPostGISJobContext(String dataPath, DataStore targetDataStore, String targetSchema, boolean profileMode, boolean useTransform) { super(dataPath, profileMode, useTransform); - if ((targetDataStore != null) && (targetDataStore instanceof PostgisDataStore)) { - this.targetDataStore = (PostgisDataStore) targetDataStore; + if ((targetDataStore != null) && (targetDataStore instanceof JDBCDataStore)) { + this.targetDataStore = (JDBCDataStore) targetDataStore; } else { getLogger().info("targetDataStore has wrong."); } @@ -139,11 +140,11 @@ setTargetSchema(targetSchema); } - public PostgisDataStore getTargetDataStore() { + public JDBCDataStore getTargetDataStore() { return targetDataStore; } - public void setTargetDataStore(PostgisDataStore targetDataStore) { + public void setTargetDataStore(JDBCDataStore targetDataStore) { this.targetDataStore = targetDataStore; } @@ -153,12 +154,12 @@ public void setTargetSchema(String schemaName) { targetSchema = schemaName; + targetDataStore.setDatabaseSchema(targetSchema); } public Connection getConnection() { try { return targetDataStore.getConnection(Transaction.AUTO_COMMIT); - } catch (IOException e) { getLogger().warn(e.getMessage(), e); @@ -193,7 +194,7 @@ JDBCUtils.close(stmt); } - protected void dropTable(Connection conn, String tableName) throws SQLException { + protected boolean dropTable(Connection conn, String tableName) throws SQLException { Statement stmt = conn.createStatement(); StringBuilder sb = new StringBuilder(); sb.append("DROP TABLE \""); @@ -202,24 +203,45 @@ sb.append(tableName); sb.append("\""); // sb.append(" CASCADE"); - stmt.execute(sb.toString()); - if (!conn.getAutoCommit()) - conn.commit(); - JDBCUtils.close(stmt); + + try { + stmt.execute(sb.toString()); + } catch (SQLException e) { + getLogger().warn("Execute-" + sb.toString()); + getLogger().warn(e.getMessage(), e); + return false; + } finally { + if (!conn.getAutoCommit()) + conn.commit(); + JDBCUtils.close(stmt); + } + + return true; } - protected void dropGeometryColumn(Connection conn, String tableName, String geomField) throws SQLException { + protected boolean dropGeometryColumn(Connection conn, String dbSchema, String tableName, String geomField) throws SQLException { Statement stmt = conn.createStatement(); StringBuilder sb = new StringBuilder(); - sb.append("SELECT \"public\".DropGeometryColumn('','"); + sb.append("SELECT \"public\".DropGeometryColumn('"); + sb.append(dbSchema); + sb.append("','"); sb.append(tableName); sb.append("','"); sb.append(geomField); sb.append("')"); - stmt.execute(sb.toString()); - if (!conn.getAutoCommit()) - conn.commit(); - JDBCUtils.close(stmt); + try { + stmt.execute(sb.toString()); + } catch (SQLException e) { + getLogger().warn("Execute-" + sb.toString()); + getLogger().warn(e.getMessage(), e); + return false; + } finally { + if (!conn.getAutoCommit()) + conn.commit(); + JDBCUtils.close(stmt); + } + + return true; } protected String dropGeometryColumn(String dbSchema, String tableName, String geomField) { @@ -237,7 +259,7 @@ private String addGeometryColumn(String dbSchema, String tableName, GeometryDescriptor geometryDescriptor, int srid) { StringBuilder sql; - String typeName = getGeometrySQLTypeName(((AttributeType) geometryDescriptor.getType()).getBinding()); + String typeName = getGeometrySQLTypeName((geometryDescriptor.getType()).getBinding()); if (typeName == null) { getLogger().warn("Error: " + geometryDescriptor.getLocalName() + " unknown type!!!"); throw new RuntimeException("Error: " + geometryDescriptor.getLocalName() + " unknown type!!!"); @@ -320,7 +342,8 @@ sql.append(encodeSchemaTableName(tableName)); sql.append(" USING GIST ("); sql.append(encodeSchemaColumnName(descriptor.getLocalName())); - sql.append(" gist_geometry_ops);"); + sql.append(" );"); + // sql.append(" gist_geometry_ops);"); sqlStr = sql.toString(); getLogger().debug(sqlStr); @@ -399,9 +422,9 @@ for (AttributeDescriptor descriptor : descriptors) { String typeName; - typeName = CLASS_MAPPINGS.get(((AttributeType) descriptor.getType()).getBinding()); + typeName = CLASS_MAPPINGS.get(descriptor.getType().getBinding()); if (typeName == null) { - typeName = GEOM_CLASS_MAPPINGS.get(((AttributeType) descriptor.getType()).getBinding()); + typeName = GEOM_CLASS_MAPPINGS.get(descriptor.getType().getBinding()); if (typeName != null) continue; } @@ -483,6 +506,7 @@ return "null"; } + /* if (targetDataStore.isWKBEnabled()) { //String wkb = WKBEncoder.encodeGeometryHex(geom); String wkb = WKBWriter.bytesToHex(new WKBWriter().write(geom)); @@ -495,8 +519,13 @@ } String geoText = geometryWriter.write(geom); - return "GeometryFromText('" + geoText + "', " + srid + ")"; + */ + if (geom instanceof LinearRing) { + //postgis does not handle linear rings, convert to just a line string + geom = geom.getFactory().createLineString(((LinearRing) geom).getCoordinateSequence()); + } + return "ST_GeomFromText('" + geom.toText() + "', " + srid + ")"; } protected String makeInsertSql(SimpleFeature feature, int srid) // throws IOException @@ -630,9 +659,11 @@ for (int i = 0; i < descriptors.size(); i++) { if (descriptors.get(i) instanceof GeometryDescriptor) { + Geometry geom = (Geometry) attributes.get(i); + geom.setSRID(FeatureTypeBuilderUtil.getDefaultFeatureSRID()); pstmt.setBytes(i + 1, binaryWriter.writeBinary((Geometry) attributes.get(i))); } else { - Class<?> bindingType = ((AttributeType) descriptors.get(i).getType()).getBinding(); + Class<?> bindingType = descriptors.get(i).getType().getBinding(); if (bindingType.equals(Short.class)) { pstmt.setShort(i + 1, (Short) attributes.get(i)); } else if (bindingType.equals(Integer.class)) { diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/AbstractOracleToPostGISJobContext.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/AbstractOracleToPostGISJobContext.java index 6350890..fec33b4 100644 --- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/AbstractOracleToPostGISJobContext.java +++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/AbstractOracleToPostGISJobContext.java @@ -10,12 +10,13 @@ import java.sql.Statement; import java.util.*; +import com.vividsolutions.jts.geom.LinearRing; import com.ximple.eofms.util.FeatureTypeBuilderUtil; import org.geotools.data.DataSourceException; import org.geotools.data.DataStore; import org.geotools.data.SchemaNotFoundException; -import org.geotools.data.postgis.PostgisDataStore; import org.geotools.filter.LengthFunction; +import org.geotools.jdbc.JDBCDataStore; import org.geotools.referencing.NamedIdentifier; import org.geotools.referencing.crs.DefaultGeographicCRS; import org.opengis.feature.simple.SimpleFeature; @@ -115,19 +116,19 @@ /** * Well Known Text writer (from JTS). */ - protected static WKTWriter geometryWriter = new WKTWriter(); + // protected static WKTWriter geometryWriter = new WKTWriter(); protected static JtsBinaryWriter binaryWriter = new JtsBinaryWriter(); protected boolean schemaEnabled = true; - private PostgisDataStore targetDataStore; + private JDBCDataStore targetDataStore; private String targetSchema = "public"; public AbstractOracleToPostGISJobContext(String dataPath, DataStore targetDataStore, String targetSchema, boolean profileMode, boolean useTransform) { super(profileMode, useTransform); - if ((targetDataStore != null) && (targetDataStore instanceof PostgisDataStore)) { - this.targetDataStore = (PostgisDataStore) targetDataStore; + if ((targetDataStore != null) && (targetDataStore instanceof JDBCDataStore)) { + this.targetDataStore = (JDBCDataStore) targetDataStore; } else { getLogger().info("targetDataStore has wrong."); } @@ -135,11 +136,11 @@ setTargetSchema(targetSchema); } - public PostgisDataStore getTargetDataStore() { + public JDBCDataStore getTargetDataStore() { return targetDataStore; } - public void setTargetDataStore(PostgisDataStore targetDataStore) { + public void setTargetDataStore(JDBCDataStore targetDataStore) { this.targetDataStore = targetDataStore; } @@ -149,6 +150,7 @@ public void setTargetSchema(String schemaName) { targetSchema = schemaName; + targetDataStore.setDatabaseSchema(targetSchema); } public Connection getConnection() { @@ -188,7 +190,7 @@ conn.commit(); } - protected void dropTable(Connection conn, String schemaName, String tableName) throws SQLException { + protected boolean dropTable(Connection conn, String schemaName, String tableName) throws SQLException { Statement stmt = conn.createStatement(); StringBuilder sb = new StringBuilder(); sb.append("DROP TABLE \""); @@ -197,12 +199,20 @@ sb.append(tableName); sb.append("\""); // sb.append(" CASCADE"); - stmt.execute(sb.toString()); - stmt.close(); - conn.commit(); + try { + stmt.execute(sb.toString()); + } catch (SQLException e) { + getLogger().warn("Execute-" + sb.toString()); + getLogger().warn(e.getMessage(), e); + return false; + } finally { + stmt.close(); + conn.commit(); + } + return true; } - protected void dropGeometryColumn(Connection conn, String dbSchema, String tableName, String geomField) throws SQLException { + protected boolean dropGeometryColumn(Connection conn, String dbSchema, String tableName, String geomField) throws SQLException { Statement stmt = conn.createStatement(); StringBuilder sb = new StringBuilder(); sb.append("SELECT \"public\".DropGeometryColumn('"); @@ -212,9 +222,18 @@ sb.append("','"); sb.append(geomField); sb.append("')"); - stmt.execute(sb.toString()); - stmt.close(); - conn.commit(); + + try { + stmt.execute(sb.toString()); + } catch (SQLException e) { + getLogger().warn("Execute-" + sb.toString()); + getLogger().warn(e.getMessage(), e); + return false; + } finally { + stmt.close(); + conn.commit(); + } + return true; } protected String dropGeometryColumn(String dbSchema, String tableName, String geomField) { @@ -316,7 +335,8 @@ sql.append(encodeSchemaTableName(tableName)); sql.append(" USING GIST ("); sql.append(encodeSchemaColumnName(descriptor.getLocalName())); - sql.append(" gist_geometry_ops);"); + sql.append(" );"); + // sql.append(" gist_geometry_ops);"); sqlStr = sql.toString(); getLogger().debug(sqlStr); @@ -505,6 +525,7 @@ return "null"; } + /* if (targetDataStore.isWKBEnabled()) { //String wkb = WKBEncoder.encodeGeometryHex(geom); String wkb = WKBWriter.bytesToHex(new WKBWriter().write(geom)); @@ -517,8 +538,13 @@ } String geoText = geometryWriter.write(geom); - return "GeometryFromText('" + geoText + "', " + srid + ")"; + */ + if (geom instanceof LinearRing) { + //postgis does not handle linear rings, convert to just a line string + geom = geom.getFactory().createLineString(((LinearRing) geom).getCoordinateSequence()); + } + return "ST_GeomFromText('" + geom.toText() + "', " + srid + ")"; } protected String makeInsertSql(SimpleFeature feature, int srid) // throws IOException diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/DummyFeatureConvertPostGISJobContext.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/DummyFeatureConvertPostGISJobContext.java index a0fd81e..85319ca 100644 --- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/DummyFeatureConvertPostGISJobContext.java +++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/DummyFeatureConvertPostGISJobContext.java @@ -10,8 +10,18 @@ import java.util.Iterator; import java.util.List; -import org.apache.commons.digester.Digester; -import org.apache.commons.digester.xmlrules.DigesterLoader; +import com.ximple.eofms.filter.AbstractFLinkageDispatchableFilter; +import com.ximple.eofms.filter.ElementDispatchableFilter; +import com.ximple.eofms.filter.ElementDispatcher; +import com.ximple.eofms.filter.TypeCompIdDispatchableFilter; +import com.ximple.eofms.filter.TypeCompLevelIdDispatchableFilter; +import com.ximple.eofms.filter.TypeIdDispatchableFilter; +import com.ximple.eofms.util.ElementDigesterUtils; +import com.ximple.io.dgn7.ComplexElement; +import com.ximple.io.dgn7.Element; +import com.ximple.io.dgn7.FrammeAttributeData; +import com.ximple.io.dgn7.UserAttributeData; +import org.apache.commons.digester3.Digester; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.commons.transaction.memory.PessimisticMapWrapper; @@ -25,19 +35,6 @@ import org.opengis.feature.simple.SimpleFeature; import org.opengis.feature.simple.SimpleFeatureType; import org.xml.sax.SAXException; - -import com.vividsolutions.jts.geom.GeometryFactory; - -import com.ximple.eofms.filter.AbstractFLinkageDispatchableFilter; -import com.ximple.eofms.filter.ElementDispatchableFilter; -import com.ximple.eofms.filter.ElementDispatcher; -import com.ximple.eofms.filter.TypeCompIdDispatchableFilter; -import com.ximple.eofms.filter.TypeCompLevelIdDispatchableFilter; -import com.ximple.eofms.filter.TypeIdDispatchableFilter; -import com.ximple.io.dgn7.ComplexElement; -import com.ximple.io.dgn7.Element; -import com.ximple.io.dgn7.FrammeAttributeData; -import com.ximple.io.dgn7.UserAttributeData; public class DummyFeatureConvertPostGISJobContext extends AbstractDgnToPostGISJobContext { static final Log logger = LogFactory.getLog(DummyFeatureConvertPostGISJobContext.class); @@ -65,9 +62,6 @@ private ElementDispatcher createElementDispatcher() { try { - URL rulesURL = ElementDispatcher.class.getResource("ElementDispatcherRules.xml"); - assert rulesURL != null; - Digester digester = DigesterLoader.createDigester(rulesURL); URL filterURL = null; if (_filterConfig != null) { File config = new File(_filterConfig); @@ -81,6 +75,7 @@ // filterURL = this.getClass().getResource("/conf/ConvertShpFilterForLevel.xml"); } assert filterURL != null; + Digester digester = ElementDigesterUtils.getElementDigester(); return (ElementDispatcher) digester.parse(filterURL); } catch (UnsupportedEncodingException e) { logger.info(e.getMessage(), e); diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/FeatureDgnConvertPostGISJobContext.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/FeatureDgnConvertPostGISJobContext.java index cabcb83..27be640 100644 --- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/FeatureDgnConvertPostGISJobContext.java +++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/FeatureDgnConvertPostGISJobContext.java @@ -10,8 +10,14 @@ import java.util.Iterator; import java.util.List; -import org.apache.commons.digester.Digester; -import org.apache.commons.digester.xmlrules.DigesterLoader; +import com.ximple.eofms.filter.AbstractFLinkageDispatchableFilter; +import com.ximple.eofms.filter.ElementDispatcher; +import com.ximple.eofms.util.ElementDigesterUtils; +import com.ximple.io.dgn7.ComplexElement; +import com.ximple.io.dgn7.Element; +import com.ximple.io.dgn7.FrammeAttributeData; +import com.ximple.io.dgn7.UserAttributeData; +import org.apache.commons.digester3.Digester; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.commons.transaction.memory.PessimisticMapWrapper; @@ -25,15 +31,6 @@ import org.opengis.feature.simple.SimpleFeature; import org.opengis.feature.simple.SimpleFeatureType; import org.xml.sax.SAXException; - -import com.vividsolutions.jts.geom.GeometryFactory; - -import com.ximple.eofms.filter.AbstractFLinkageDispatchableFilter; -import com.ximple.eofms.filter.ElementDispatcher; -import com.ximple.io.dgn7.ComplexElement; -import com.ximple.io.dgn7.Element; -import com.ximple.io.dgn7.FrammeAttributeData; -import com.ximple.io.dgn7.UserAttributeData; public class FeatureDgnConvertPostGISJobContext extends AbstractDgnToPostGISJobContext { static final Log logger = LogFactory.getLog(FeatureDgnConvertPostGISJobContext.class); @@ -59,9 +56,6 @@ private ElementDispatcher createElementDispatcher() { try { - URL rulesURL = ElementDispatcher.class.getResource("ElementDispatcherRules.xml"); - assert rulesURL != null; - Digester digester = DigesterLoader.createDigester(rulesURL); URL filterURL = null; if (_filterConfig != null) { File config = new File(_filterConfig); @@ -75,6 +69,7 @@ // filterURL = this.getClass().getResource("/conf/ConvertShpFilterForLevel.xml"); } assert filterURL != null; + Digester digester = ElementDigesterUtils.getElementDigester(); return (ElementDispatcher) digester.parse(filterURL); } catch (UnsupportedEncodingException e) { logger.info(e.getMessage(), e); diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/GeneralDgnConvertPostGISJobContext.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/GeneralDgnConvertPostGISJobContext.java index 0ad49bb..d1ab3cc 100644 --- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/GeneralDgnConvertPostGISJobContext.java +++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/GeneralDgnConvertPostGISJobContext.java @@ -60,7 +60,6 @@ private TreeMap<String, SimpleFeatureType> featureTypes = new TreeMap<String, SimpleFeatureType>(); - private GeometryConverterDecorator convertDecorator = null; private String featureBaseName = null; private boolean dropTableMode = true; @@ -196,6 +195,10 @@ } catch (SQLException e) { JDBCUtils.close(conn, Transaction.AUTO_COMMIT, e); logger.error(e.getMessage(), e); + Exception nextE = e.getNextException(); + if (nextE != null) { + logger.error("getNextException:" + nextE.getMessage(), nextE); + } } finally { if (isProfileMode()) accumulateUpdateTime(); } @@ -218,7 +221,7 @@ SimpleFeatureTypeBuilder typeBuilder = FeatureTypeBuilderUtil.createNormalPointFeatureTypeBuilder(featureName); SimpleFeatureType featureType = typeBuilder.buildFeatureType(); featureTypes.put(featureName, featureType); - clearFeatureData(typeBuilder); + clearFeatureData(featureName); } return featureTypes.get(featureName); } @@ -228,7 +231,7 @@ SimpleFeatureTypeBuilder typeBuilder = FeatureTypeBuilderUtil.createNormalPolygonFeatureTypeBuilder(featureName); SimpleFeatureType featureType = typeBuilder.buildFeatureType(); featureTypes.put(featureName, featureType); - clearFeatureData(typeBuilder); + clearFeatureData(featureName); } return featureTypes.get(featureName); } @@ -238,7 +241,7 @@ SimpleFeatureTypeBuilder typeBuilder = FeatureTypeBuilderUtil.createNormalLineFeatureTypeBuilder(featureName); SimpleFeatureType featureType = typeBuilder.buildFeatureType(); featureTypes.put(featureName, featureType); - clearFeatureData(typeBuilder); + clearFeatureData(featureName); } return featureTypes.get(featureName); } @@ -248,7 +251,7 @@ SimpleFeatureTypeBuilder typeBuilder = FeatureTypeBuilderUtil.createNormalMultiLineFeatureTypeBuilder(featureName); SimpleFeatureType featureType = typeBuilder.buildFeatureType(); featureTypes.put(featureName, featureType); - clearFeatureData(typeBuilder); + clearFeatureData(featureName); } return featureTypes.get(featureName); } @@ -258,7 +261,7 @@ SimpleFeatureTypeBuilder typeBuilder = FeatureTypeBuilderUtil.createNormalArcFeatureTypeBuilder(featureName); SimpleFeatureType featureType = typeBuilder.buildFeatureType(); featureTypes.put(featureName, featureType); - clearFeatureData(typeBuilder); + clearFeatureData(featureName); } return featureTypes.get(featureName); } @@ -268,13 +271,15 @@ SimpleFeatureTypeBuilder typeBuilder = FeatureTypeBuilderUtil.createNormalEllipseFeatureTypeBuilder(featureName); SimpleFeatureType featureType = typeBuilder.buildFeatureType(); featureTypes.put(featureName, featureType); - clearFeatureData(typeBuilder); + clearFeatureData(featureName); } return featureTypes.get(featureName); } public SimpleFeature createFeature(SimpleFeatureType featureType, Element element) throws IllegalAttributeException { DefaultColorTable colorTable = (DefaultColorTable) DefaultColorTable.getInstance(); + GeometryConverterDecorator convertDecorator = FeatureTypeBuilderUtil.lookupDefaultGeometryConverter(); + if (element instanceof TextElement) { TextElement textElement = (TextElement) element; convertDecorator.setConverter(textElement); @@ -521,55 +526,63 @@ this.dropTableMode = dropTableMode; } - protected void clearFeatureData(SimpleFeatureTypeBuilder typeBuilder) throws SchemaException { + protected void clearFeatureData(String featureTypeName) throws SchemaException { if (isProfileMode()) markUpdateTime(); - String featureName = typeBuilder.getName(); Connection conn = null; - if (isExistFeature(typeBuilder.buildFeatureType())) { + + SimpleFeatureType featureType = featureTypes.get(featureTypeName); + String featureName = featureType.getName().getLocalPart(); + String currentSQL = null; + if (isExistFeature(featureType)) { try { conn = getConnection(); if (dropTableMode) { - dropGeometryColumn(conn, featureName, - ((FeatureTypeImpl)typeBuilder.buildFeatureType()).getGeometryDescriptor().getLocalName()); + dropGeometryColumn(conn, featureName, getTargetSchema(), + (featureType).getGeometryDescriptor().getLocalName()); dropTable(conn, featureName); - ArrayList<String> schemaTexts = createNewSchemaTexts(conn, typeBuilder.buildFeatureType()); + ArrayList<String> schemaTexts = createNewSchemaTexts(conn, featureType); for (String stmtText : schemaTexts) { Statement stmt = conn.createStatement(); + currentSQL = stmtText; stmt.execute(stmtText); JDBCUtils.close(stmt); } } else { deleteTable(conn, featureName); } - JDBCUtils.close(conn, Transaction.AUTO_COMMIT, null); } catch (IOException e) { - JDBCUtils.close(conn, Transaction.AUTO_COMMIT, null); + if (currentSQL != null) + logger.warn("executeSQL:" + currentSQL); logger.warn(e.getMessage(), e); } catch (SQLException e) { - JDBCUtils.close(conn, Transaction.AUTO_COMMIT, e); + if (currentSQL != null) + logger.warn("executeSQL:" + currentSQL); logger.warn(e.getMessage(), e); } finally { + JDBCUtils.close(conn, Transaction.AUTO_COMMIT, null); if (isProfileMode()) accumulateUpdateTime(); } } else { try { conn = getConnection(); - ArrayList<String> schemaTexts = createNewSchemaTexts(conn, typeBuilder.buildFeatureType()); + ArrayList<String> schemaTexts = createNewSchemaTexts(conn, featureType); for (String stmtText : schemaTexts) { Statement stmt = conn.createStatement(); stmt.execute(stmtText); JDBCUtils.close(stmt); } - JDBCUtils.close(conn, Transaction.AUTO_COMMIT, null); } catch (IOException e) { - JDBCUtils.close(conn, Transaction.AUTO_COMMIT, null); + if (currentSQL != null) + logger.warn("executeSQL:" + currentSQL); logger.warn(e.getMessage(), e); } catch (SQLException e) { - JDBCUtils.close(conn, Transaction.AUTO_COMMIT, e); + if (currentSQL != null) + logger.warn("executeSQL:" + currentSQL); logger.warn(e.getMessage(), e); } finally { + JDBCUtils.close(conn, Transaction.AUTO_COMMIT, null); if (isProfileMode()) accumulateUpdateTime(); } } 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 774ba91..484ee30 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 @@ -37,8 +37,6 @@ import com.vividsolutions.jts.geom.Polygon; import com.ximple.eofms.util.DefaultColorTable; -import com.ximple.eofms.util.EPSG3825GeometryConverterDecorator; -import com.ximple.eofms.util.EPSG3826GeometryConverterDecorator; import com.ximple.eofms.util.FeatureTypeBuilderUtil; import com.ximple.eofms.util.GeometryConverterDecorator; import com.ximple.eofms.util.TPCLIDConverter; @@ -50,6 +48,7 @@ import com.ximple.io.dgn7.UserAttributeData; public class IndexDgnConvertPostGISJobContext extends AbstractDgnToPostGISJobContext { + static final Log logger = LogFactory.getLog(IndexDgnConvertPostGISJobContext.class); static final LoggerFacade sLogger = new CommonsLoggingLogger(logger); static final GeometryFactory geometryFactory = JTSFactoryFinder.getGeometryFactory(null); @@ -57,11 +56,9 @@ private HashMap<SimpleFeatureType, ArrayList<SimpleFeature>> txFeaturesContext = new HashMap<SimpleFeatureType, ArrayList<SimpleFeature>>(); - private SimpleFeatureTypeBuilder typeBuilderPnt = null; - private SimpleFeatureTypeBuilder typeBuilderRect = null; - private SimpleFeatureTypeBuilder typeBuilderSmallRect = null; + private HashMap<String, SimpleFeatureType> typesMapping = new HashMap<String, SimpleFeatureType>(); - private SimpleFeatureType featureType = null; + private SimpleFeatureType featureType1 = null; private SimpleFeatureType featureType2 = null; private SimpleFeatureType featureType3 = null; @@ -90,7 +87,7 @@ protected void putTextFeatureCollection(TextElement element) throws SchemaException, IllegalAttributeException { SimpleFeature feature = createFeature(element); if (feature == null) { - logger.info("cannot craete feature." + element.toString() + "'" + + logger.info("cannot craete feature. " + element.toString() + "'" + element.getText() + "'"); return; } @@ -103,7 +100,7 @@ feature = createFeature2(element); if (feature == null) { - logger.info("cannot craete feature2." + element.toString() + "'" + + logger.info("cannot craete feature2. " + element.toString() + "'" + element.getText() + "'"); return; } @@ -138,12 +135,12 @@ if (feature == null) { Polygon polygon = (Polygon) element.toGeometry(geometryFactory); if (polygon == null) { - logger.info("cannot craete feature." + element.toString() + "'" + + logger.info("cannot craete feature. " + element.toString() + "'" + "linear is null" + "'"); } else { Coordinate pt = polygon.getEnvelopeInternal().centre(); String id = TPCLIDConverter.CoordinateToTpclId(pt); - logger.info("cannot craete feature." + element.toString() + "'" + + logger.info("cannot craete feature. " + element.toString() + "'" + id + "'- from pt=" + pt); } return; @@ -288,6 +285,10 @@ } catch (SQLException e) { JDBCUtils.close(conn, Transaction.AUTO_COMMIT, e); logger.error(e.getMessage(), e); + Exception nextE = e.getNextException(); + if (nextE != null) { + logger.error("getNextException:" + nextE.getMessage(), nextE); + } } finally { if (isProfileMode()) this.accumulateUpdateTime(); } @@ -305,17 +306,20 @@ */ } - public SimpleFeatureType createFeatureElement(String featureName) throws SchemaException { - if (typeBuilderRect == null) { + public void createFeatureElement(String featureName) throws SchemaException { + if (featureType1 == null) { Connection conn = null; - typeBuilderRect = FeatureTypeBuilderUtil.createNormalIndexFeatureTypeBuilder(featureName); - if (isExistFeature(typeBuilderRect.buildFeatureType())) { + SimpleFeatureTypeBuilder typeBuilder1 = FeatureTypeBuilderUtil.createNormalIndexFeatureTypeBuilder(featureName); + featureType1 = typeBuilder1.buildFeatureType(); + String currentSQL = null; + + if (isExistFeature(featureType1)) { try { conn = getConnection(); if (dropTableMode) { try { - dropGeometryColumn(conn, featureName, - ((FeatureTypeImpl)typeBuilderRect.buildFeatureType()).getGeometryDescriptor().getLocalName()); + dropGeometryColumn(conn, getTargetSchema(), featureName, + (featureType1).getGeometryDescriptor().getLocalName()); } catch (PSQLException e) { logger.debug(e.getMessage(), e); } @@ -324,111 +328,125 @@ } catch (PSQLException e) { logger.debug(e.getMessage(), e); } - ArrayList<String> schemaTexts = createNewSchemaTexts(conn, - typeBuilderRect.buildFeatureType()); + ArrayList<String> schemaTexts = createNewSchemaTexts(conn, featureType1); for (String stmtText : schemaTexts) { Statement stmt = conn.createStatement(); + currentSQL = stmtText; stmt.execute(stmtText); JDBCUtils.close(stmt); } } else { deleteTable(conn, featureName); } - JDBCUtils.close(conn, Transaction.AUTO_COMMIT, null); } catch (IOException e) { - JDBCUtils.close(conn, Transaction.AUTO_COMMIT, null); + if (currentSQL != null) + logger.warn("executeSQL:" + currentSQL); logger.warn(e.getMessage(), e); } catch (SQLException e) { - JDBCUtils.close(conn, Transaction.AUTO_COMMIT, e); + if (currentSQL != null) + logger.warn("executeSQL:" + currentSQL); logger.warn(e.getMessage(), e); + } finally { + JDBCUtils.close(conn, Transaction.AUTO_COMMIT, null); } } else { try { conn = getConnection(); - ArrayList<String> schemaTexts = createNewSchemaTexts(conn, - typeBuilderRect.buildFeatureType()); + ArrayList<String> schemaTexts = createNewSchemaTexts(conn, featureType1); for (String stmtText : schemaTexts) { Statement stmt = conn.createStatement(); stmt.execute(stmtText); + currentSQL = stmtText; JDBCUtils.close(stmt); } - JDBCUtils.close(conn, Transaction.AUTO_COMMIT, null); } catch (IOException e) { - JDBCUtils.close(conn, Transaction.AUTO_COMMIT, null); + if (currentSQL != null) + logger.warn("executeSQL:" + currentSQL); logger.warn(e.getMessage(), e); } catch (SQLException e) { - JDBCUtils.close(conn, Transaction.AUTO_COMMIT, e); + if (currentSQL != null) + logger.warn("executeSQL:" + currentSQL); logger.warn(e.getMessage(), e); + } finally { + JDBCUtils.close(conn, Transaction.AUTO_COMMIT, null); } } } - return typeBuilderRect.buildFeatureType(); } - public SimpleFeatureType createFeatureElement2(String featureName) throws SchemaException { - if (typeBuilderPnt == null) { + public void createFeatureElement2(String featureName) throws SchemaException { + if (featureType2 == null) { Connection conn = null; - typeBuilderPnt = FeatureTypeBuilderUtil.createNormalIndexTextFeatureTypeBuilder(featureName); - if (isExistFeature(typeBuilderPnt.buildFeatureType())) { + SimpleFeatureTypeBuilder typeBuilder = FeatureTypeBuilderUtil.createNormalIndexTextFeatureTypeBuilder(featureName); + featureType2 = typeBuilder.buildFeatureType(); + String currentSQL = null; + if (isExistFeature(featureType2)) { try { conn = getConnection(); if (dropTableMode) { - dropGeometryColumn(conn, featureName, - ((FeatureTypeImpl)typeBuilderPnt.buildFeatureType()).getGeometryDescriptor().getLocalName()); + dropGeometryColumn(conn, getTargetSchema(), featureName, + (featureType2).getGeometryDescriptor().getLocalName()); dropTable(conn, featureName); - ArrayList<String> schemaTexts = createNewSchemaTexts(conn, - typeBuilderPnt.buildFeatureType()); + ArrayList<String> schemaTexts = createNewSchemaTexts(conn, featureType2); for (String stmtText : schemaTexts) { Statement stmt = conn.createStatement(); + currentSQL = stmtText; stmt.execute(stmtText); JDBCUtils.close(stmt); } } else { deleteTable(conn, featureName); } - JDBCUtils.close(conn, Transaction.AUTO_COMMIT, null); } catch (IOException e) { - JDBCUtils.close(conn, Transaction.AUTO_COMMIT, null); + if (currentSQL != null) + logger.warn("executeSQL:" + currentSQL); logger.warn(e.getMessage(), e); } catch (SQLException e) { - JDBCUtils.close(conn, Transaction.AUTO_COMMIT, e); + if (currentSQL != null) + logger.warn("executeSQL:" + currentSQL); logger.warn(e.getMessage(), e); + } finally { + JDBCUtils.close(conn, Transaction.AUTO_COMMIT, null); } } else { try { conn = getConnection(); - ArrayList<String> schemaTexts = createNewSchemaTexts(conn, - typeBuilderPnt.buildFeatureType()); + ArrayList<String> schemaTexts = createNewSchemaTexts(conn, featureType2); for (String stmtText : schemaTexts) { Statement stmt = conn.createStatement(); + currentSQL = stmtText; stmt.execute(stmtText); JDBCUtils.close(stmt); } - JDBCUtils.close(conn, Transaction.AUTO_COMMIT, null); } catch (IOException e) { - JDBCUtils.close(conn, Transaction.AUTO_COMMIT, null); + if (currentSQL != null) + logger.warn("executeSQL:" + currentSQL); logger.warn(e.getMessage(), e); } catch (SQLException e) { - JDBCUtils.close(conn, Transaction.AUTO_COMMIT, e); + if (currentSQL != null) + logger.warn("executeSQL:" + currentSQL); logger.warn(e.getMessage(), e); + } finally { + JDBCUtils.close(conn, Transaction.AUTO_COMMIT, null); } } } - return typeBuilderPnt.buildFeatureType(); } - public SimpleFeatureType createFeatureElement3(String featureName) throws SchemaException { - if (typeBuilderSmallRect == null) { + public void createFeatureElement3(String featureName) throws SchemaException { + if (featureType3 == null) { Connection conn = null; - typeBuilderSmallRect = FeatureTypeBuilderUtil.createNormalIndexFeatureTypeBuilder(featureName); - if (isExistFeature(typeBuilderSmallRect.buildFeatureType())) { + SimpleFeatureTypeBuilder typeBuilder = FeatureTypeBuilderUtil.createNormalIndexFeatureTypeBuilder(featureName); + featureType3 = typeBuilder.buildFeatureType(); + String currentSQL = null; + if (isExistFeature(featureType3)) { try { conn = getConnection(); if (dropTableMode) { try { - dropGeometryColumn(conn, featureName, - ((FeatureTypeImpl)typeBuilderSmallRect.buildFeatureType()).getGeometryDescriptor().getLocalName()); + dropGeometryColumn(conn, getTargetSchema(), featureName, + (featureType3).getGeometryDescriptor().getLocalName()); } catch (PSQLException e) { logger.debug(e.getMessage(), e); } @@ -437,44 +455,50 @@ } catch (PSQLException e) { logger.debug(e.getMessage(), e); } - ArrayList<String> schemaTexts = createNewSchemaTexts(conn, typeBuilderSmallRect.buildFeatureType()); + ArrayList<String> schemaTexts = createNewSchemaTexts(conn, featureType3); for (String stmtText : schemaTexts) { Statement stmt = conn.createStatement(); + currentSQL = stmtText; stmt.execute(stmtText); JDBCUtils.close(stmt); } } else { deleteTable(conn, featureName); } - JDBCUtils.close(conn, Transaction.AUTO_COMMIT, null); } catch (IOException e) { - JDBCUtils.close(conn, Transaction.AUTO_COMMIT, null); + if (currentSQL != null) + logger.warn("executeSQL:" + currentSQL); logger.warn(e.getMessage(), e); } catch (SQLException e) { - JDBCUtils.close(conn, Transaction.AUTO_COMMIT, e); + if (currentSQL != null) + logger.warn("executeSQL:" + currentSQL); logger.warn(e.getMessage(), e); + } finally { + JDBCUtils.close(conn, Transaction.AUTO_COMMIT, null); } } else { try { conn = getConnection(); - ArrayList<String> schemaTexts = createNewSchemaTexts(conn, - typeBuilderSmallRect.buildFeatureType()); + ArrayList<String> schemaTexts = createNewSchemaTexts(conn, featureType3); for (String stmtText : schemaTexts) { Statement stmt = conn.createStatement(); + currentSQL = stmtText; stmt.execute(stmtText); JDBCUtils.close(stmt); } - JDBCUtils.close(conn, Transaction.AUTO_COMMIT, null); } catch (IOException e) { - JDBCUtils.close(conn, Transaction.AUTO_COMMIT, null); + if (currentSQL != null) + logger.warn("executeSQL:" + currentSQL); logger.warn(e.getMessage(), e); } catch (SQLException e) { - JDBCUtils.close(conn, Transaction.AUTO_COMMIT, e); + if (currentSQL != null) + logger.warn("executeSQL:" + currentSQL); logger.warn(e.getMessage(), e); + } finally { + JDBCUtils.close(conn, Transaction.AUTO_COMMIT, null); } } } - return typeBuilderSmallRect.buildFeatureType(); } public SimpleFeature createFeature(SimpleFeatureType featureType, Element element) throws IllegalAttributeException { @@ -773,15 +797,15 @@ } private SimpleFeature createFeature(Element element) throws SchemaException, IllegalAttributeException { - if (featureType == null) { + if (featureType1 == null) { String dgnname = getFilename().toLowerCase(); int i = dgnname.lastIndexOf("."); if (i != -1) { dgnname = dgnname.substring(0, i); } - featureType = createFeatureElement(dgnname.toLowerCase()); + createFeatureElement(dgnname.toLowerCase()); } - return createFeature(featureType, element); + return createFeature(featureType1, element); } private SimpleFeature createFeature2(Element element) throws SchemaException, IllegalAttributeException { @@ -792,7 +816,7 @@ dgnname = dgnname.substring(0, i); } dgnname = dgnname + "_p"; - featureType2 = createFeatureElement2(dgnname.toLowerCase()); + createFeatureElement2(dgnname.toLowerCase()); } return createFeature2(featureType2, element); } @@ -805,7 +829,7 @@ dgnname = dgnname.substring(0, i); } dgnname = dgnname + "_s"; - featureType3 = createFeatureElement3(dgnname.toLowerCase()); + createFeatureElement3(dgnname.toLowerCase()); } return createFeature3(featureType3, element); } diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/OracleConvertGeoServerContext.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/OracleConvertGeoServerContext.java new file mode 100644 index 0000000..96ace1e --- /dev/null +++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/OracleConvertGeoServerContext.java @@ -0,0 +1,10 @@ +package com.ximple.eofms.jobs.context.postgis; + +import org.geotools.data.DataStore; + +public class OracleConvertGeoServerContext extends OracleConvertPostGISJobContext { + + public OracleConvertGeoServerContext(String dataPath, DataStore pgDS, String targetSchema, String filterConfig, boolean profileMode, boolean useTransform) { + super(dataPath, pgDS, targetSchema, filterConfig, profileMode, useTransform); + } +} diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/OracleConvertPostGISJobContext.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/OracleConvertPostGISJobContext.java index b41674a..853f72e 100644 --- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/OracleConvertPostGISJobContext.java +++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/OracleConvertPostGISJobContext.java @@ -16,8 +16,17 @@ import java.util.Iterator; import com.vividsolutions.jts.geom.Geometry; -import org.apache.commons.digester.Digester; -import org.apache.commons.digester.xmlrules.DigesterLoader; +import com.vividsolutions.jts.util.Assert; +import com.ximple.eofms.filter.AbstractFLinkageDispatchableFilter; +import com.ximple.eofms.filter.CreateFeatureTypeEventListener; +import com.ximple.eofms.filter.ElementDispatcher; +import com.ximple.eofms.filter.FeatureTypeEvent; +import com.ximple.eofms.jobs.OracleElementLogger; +import com.ximple.eofms.util.ElementDigesterUtils; +import com.ximple.io.dgn7.ComplexElement; +import com.ximple.io.dgn7.Element; +import com.ximple.io.dgn7.FrammeAttributeData; +import org.apache.commons.digester3.Digester; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.commons.transaction.util.CommonsLoggingLogger; @@ -25,32 +34,19 @@ import org.geotools.data.DataStore; import org.geotools.data.Transaction; import org.geotools.data.jdbc.JDBCUtils; -import org.geotools.data.postgis.PostgisDataStoreFactory; import org.geotools.feature.SchemaException; -import org.geotools.feature.type.FeatureTypeImpl; import org.opengis.feature.simple.SimpleFeature; import org.opengis.feature.simple.SimpleFeatureType; import org.postgresql.util.PSQLException; import org.quartz.JobExecutionContext; import org.xml.sax.SAXException; -import com.vividsolutions.jts.util.Assert; - -import com.ximple.eofms.filter.AbstractFLinkageDispatchableFilter; -import com.ximple.eofms.filter.CreateFeatureTypeEventListener; -import com.ximple.eofms.filter.ElementDispatcher; -import com.ximple.eofms.filter.FeatureTypeEvent; -import com.ximple.eofms.jobs.OracleElementLogger; -import com.ximple.io.dgn7.ComplexElement; -import com.ximple.io.dgn7.Element; -import com.ximple.io.dgn7.FrammeAttributeData; - public class OracleConvertPostGISJobContext extends AbstractOracleToPostGISJobContext implements CreateFeatureTypeEventListener { static Log logger = LogFactory.getLog(OracleConvertPostGISJobContext.class); static final LoggerFacade sLogger = new CommonsLoggingLogger(logger); - static PostgisDataStoreFactory dataStoreFactory = new PostgisDataStoreFactory(); + // static PostgisNGDataStoreFactory dataStoreFactory = new PostgisNGDataStoreFactory(); private OracleElementLogger elmLogger = null; @@ -86,9 +82,6 @@ private ElementDispatcher createElementDispatcher() { try { - URL rulesURL = ElementDispatcher.class.getResource("ElementDispatcherRules.xml"); - assert rulesURL != null; - Digester digester = DigesterLoader.createDigester(rulesURL); URL filterURL = null; if (_filterConfig != null) { File config = new File(_filterConfig); @@ -102,6 +95,7 @@ // filterURL = this.getClass().getResource("/conf/ConvertShpFilterForLevel.xml"); } assert filterURL != null; + Digester digester = ElementDigesterUtils.getElementDigester(); return (ElementDispatcher) digester.parse(filterURL); } catch (UnsupportedEncodingException e) { logger.info(e.getMessage(), e); @@ -337,7 +331,7 @@ conn = getConnection(); if (dropTableMode) { dropGeometryColumn(conn, getTargetSchema(), featureName, - ((FeatureTypeImpl)featureType).getGeometryDescriptor().getName().getLocalPart()); + (featureType).getGeometryDescriptor().getName().getLocalPart()); dropTable(conn, getTargetSchema(), featureName); ArrayList<String> schemaTexts = createNewSchemaTexts(conn, featureType); @@ -349,13 +343,12 @@ } else { deleteTable(conn, getTargetSchema(), featureName); } - JDBCUtils.close(conn, Transaction.AUTO_COMMIT, null); } catch (IOException e) { - JDBCUtils.close(conn, Transaction.AUTO_COMMIT, null); logger.warn(e.getMessage(), e); } catch (SQLException e) { - JDBCUtils.close(conn, Transaction.AUTO_COMMIT, e); logger.warn(e.getMessage(), e); + } finally { + JDBCUtils.close(conn, Transaction.AUTO_COMMIT, null); } } else { String tempStmt = null; diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/shapefile/DummyFeatureConvertShpJobContext.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/shapefile/DummyFeatureConvertShpJobContext.java index d34314e..d2f85db 100644 --- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/shapefile/DummyFeatureConvertShpJobContext.java +++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/shapefile/DummyFeatureConvertShpJobContext.java @@ -11,8 +11,18 @@ import java.util.Iterator; import java.util.List; -import org.apache.commons.digester.Digester; -import org.apache.commons.digester.xmlrules.DigesterLoader; +import com.ximple.eofms.filter.AbstractFLinkageDispatchableFilter; +import com.ximple.eofms.filter.ElementDispatchableFilter; +import com.ximple.eofms.filter.ElementDispatcher; +import com.ximple.eofms.filter.TypeCompIdDispatchableFilter; +import com.ximple.eofms.filter.TypeCompLevelIdDispatchableFilter; +import com.ximple.eofms.filter.TypeIdDispatchableFilter; +import com.ximple.eofms.util.ElementDigesterUtils; +import com.ximple.io.dgn7.ComplexElement; +import com.ximple.io.dgn7.Element; +import com.ximple.io.dgn7.FrammeAttributeData; +import com.ximple.io.dgn7.UserAttributeData; +import org.apache.commons.digester3.Digester; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.commons.transaction.memory.PessimisticMapWrapper; @@ -28,19 +38,6 @@ import org.opengis.feature.simple.SimpleFeature; import org.opengis.feature.simple.SimpleFeatureType; import org.xml.sax.SAXException; - -import com.vividsolutions.jts.geom.GeometryFactory; - -import com.ximple.eofms.filter.AbstractFLinkageDispatchableFilter; -import com.ximple.eofms.filter.ElementDispatchableFilter; -import com.ximple.eofms.filter.ElementDispatcher; -import com.ximple.eofms.filter.TypeCompIdDispatchableFilter; -import com.ximple.eofms.filter.TypeCompLevelIdDispatchableFilter; -import com.ximple.eofms.filter.TypeIdDispatchableFilter; -import com.ximple.io.dgn7.ComplexElement; -import com.ximple.io.dgn7.Element; -import com.ximple.io.dgn7.FrammeAttributeData; -import com.ximple.io.dgn7.UserAttributeData; public class DummyFeatureConvertShpJobContext extends AbstractDgnToShapefileJobContext { static final Log logger = LogFactory.getLog(DummyFeatureConvertShpJobContext.class); @@ -68,9 +65,6 @@ private ElementDispatcher createElementDispatcher() { try { - URL rulesURL = ElementDispatcher.class.getResource("ElementDispatcherRules.xml"); - assert rulesURL != null; - Digester digester = DigesterLoader.createDigester(rulesURL); URL filterURL = null; if (_filterConfig != null) { File config = new File(_filterConfig); @@ -84,6 +78,7 @@ // filterURL = this.getClass().getResource("/conf/ConvertShpFilterForLevel.xml"); } assert filterURL != null; + Digester digester = ElementDigesterUtils.getElementDigester(); return (ElementDispatcher) digester.parse(filterURL); } catch (UnsupportedEncodingException e) { logger.info(e.getMessage(), e); diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/shapefile/FeatureDgnConvertShpJobContext.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/shapefile/FeatureDgnConvertShpJobContext.java index 0208b29..ffc965e 100644 --- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/shapefile/FeatureDgnConvertShpJobContext.java +++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/shapefile/FeatureDgnConvertShpJobContext.java @@ -11,8 +11,14 @@ import java.util.Iterator; import java.util.List; -import org.apache.commons.digester.Digester; -import org.apache.commons.digester.xmlrules.DigesterLoader; +import com.ximple.eofms.filter.AbstractFLinkageDispatchableFilter; +import com.ximple.eofms.filter.ElementDispatcher; +import com.ximple.eofms.util.ElementDigesterUtils; +import com.ximple.io.dgn7.ComplexElement; +import com.ximple.io.dgn7.Element; +import com.ximple.io.dgn7.FrammeAttributeData; +import com.ximple.io.dgn7.UserAttributeData; +import org.apache.commons.digester3.Digester; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.commons.transaction.memory.PessimisticMapWrapper; @@ -29,18 +35,11 @@ import org.opengis.feature.simple.SimpleFeatureType; import org.xml.sax.SAXException; -import com.vividsolutions.jts.geom.GeometryFactory; - -import com.ximple.eofms.filter.AbstractFLinkageDispatchableFilter; -import com.ximple.eofms.filter.ElementDispatcher; -import com.ximple.io.dgn7.ComplexElement; -import com.ximple.io.dgn7.Element; -import com.ximple.io.dgn7.FrammeAttributeData; -import com.ximple.io.dgn7.UserAttributeData; - public class FeatureDgnConvertShpJobContext extends AbstractDgnToShapefileJobContext { + static final Log logger = LogFactory.getLog(FeatureDgnConvertShpJobContext.class); static final LoggerFacade sLogger = new CommonsLoggingLogger(logger); + static final String SHPOUTPATH = "shpout"; private String dataOut = null; @@ -64,9 +63,6 @@ private ElementDispatcher createElementDispatcher() { try { - URL rulesURL = ElementDispatcher.class.getResource("ElementDispatcherRules.xml"); - assert rulesURL != null; - Digester digester = DigesterLoader.createDigester(rulesURL); URL filterURL = null; if (_filterConfig != null) { File config = new File(_filterConfig); @@ -80,6 +76,7 @@ // filterURL = this.getClass().getResource("/conf/ConvertShpFilterForLevel.xml"); } assert filterURL != null; + Digester digester = ElementDigesterUtils.getElementDigester(); return (ElementDispatcher) digester.parse(filterURL); } catch (UnsupportedEncodingException e) { logger.info(e.getMessage(), e); diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/shapefile/OracleConvertShapefilesJobContext.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/shapefile/OracleConvertShapefilesJobContext.java index 72a1796..8beaf47 100644 --- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/shapefile/OracleConvertShapefilesJobContext.java +++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/shapefile/OracleConvertShapefilesJobContext.java @@ -13,8 +13,8 @@ import java.util.Iterator; import java.util.Properties; -import org.apache.commons.digester.Digester; -import org.apache.commons.digester.xmlrules.DigesterLoader; +import com.ximple.eofms.util.ElementDigesterUtils; +import org.apache.commons.digester3.Digester; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.commons.transaction.memory.PessimisticMapWrapper; @@ -89,9 +89,6 @@ private ElementDispatcher createElementDispatcher() { try { - URL rulesURL = ElementDispatcher.class.getResource("ElementDispatcherRules.xml"); - assert rulesURL != null; - Digester digester = DigesterLoader.createDigester(rulesURL); URL filterURL = null; if (_filterConfig != null) { File config = new File(_filterConfig); @@ -105,6 +102,7 @@ // filterURL = this.getClass().getResource("/conf/ConvertShpFilterForLevel.xml"); } assert filterURL != null; + Digester digester = ElementDigesterUtils.getElementDigester(); return (ElementDispatcher) digester.parse(filterURL); } catch (UnsupportedEncodingException e) { logger.info(e.getMessage(), e); diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/util/BinConverter.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/util/BinConverter.java index 293119c..cce5008 100644 --- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/util/BinConverter.java +++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/util/BinConverter.java @@ -10,7 +10,6 @@ * BinConverter * User: Ulysses * Date: 2007/9/17 - * Time: �W�� 01:13:13 */ public class BinConverter { // our table for binhex conversion diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/util/Bits.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/util/Bits.java index b2d02e5..c924225 100644 --- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/util/Bits.java +++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/util/Bits.java @@ -12,7 +12,7 @@ * Bits * User: Ulysses * Date: 2007/6/17 - * Time: �W�� 01:16:39 + * Time: 01:16:39 */ public class Bits { // -- Unsafe access -- diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/util/ByteArrayCompressor.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/util/ByteArrayCompressor.java index ab015f9..22e1be5 100644 --- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/util/ByteArrayCompressor.java +++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/util/ByteArrayCompressor.java @@ -12,7 +12,6 @@ * ByteArrayCompressor * User: Ulysses * Date: 2007/6/15 - * Time: �U�� 02:21:00 * To change this template use File | Settings | File Templates. */ public final class ByteArrayCompressor { diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/util/ElementDigesterUtils.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/util/ElementDigesterUtils.java new file mode 100644 index 0000000..393f76e --- /dev/null +++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/util/ElementDigesterUtils.java @@ -0,0 +1,25 @@ +package com.ximple.eofms.util; + +import com.ximple.eofms.filter.ElementDispatcher; +import org.apache.commons.digester3.Digester; +import org.apache.commons.digester3.binder.DigesterLoader; +import org.apache.commons.digester3.xmlrules.FromXmlRulesModule; + +public class ElementDigesterUtils { + protected static Digester digester = null; + protected static DigesterLoader loader = DigesterLoader.newLoader( new FromXmlRulesModule() { + @Override + protected void loadRules() { + loadXMLRules(ElementDispatcher.class.getResource("ElementDispatcherRules.xml")); + } + + } ); + + static { + digester = loader.newDigester(); + } + + public static Digester getElementDigester() { + return digester; + } +} diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/util/FeatureTypeBuilderUtil.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/util/FeatureTypeBuilderUtil.java index 028aa86..5ab01fc 100644 --- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/util/FeatureTypeBuilderUtil.java +++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/util/FeatureTypeBuilderUtil.java @@ -1,32 +1,36 @@ package com.ximple.eofms.util; -import com.vividsolutions.jts.geom.*; +import java.util.ArrayList; +import java.util.TreeMap; + +import com.vividsolutions.jts.geom.LineString; +import com.vividsolutions.jts.geom.MultiLineString; +import com.vividsolutions.jts.geom.MultiPoint; +import com.vividsolutions.jts.geom.Point; +import com.vividsolutions.jts.geom.Polygon; +import com.ximple.eofms.filter.ElementDispatcher; +import org.apache.commons.digester3.Digester; +import org.apache.commons.digester3.binder.DigesterLoader; +import org.apache.commons.digester3.xmlrules.FromXmlRulesModule; import org.apache.log4j.LogManager; import org.apache.log4j.Logger; import org.geotools.feature.AttributeTypeBuilder; import org.geotools.feature.simple.SimpleFeatureTypeBuilder; -import org.geotools.geometry.jts.JTSFactoryFinder; import org.geotools.referencing.CRS; -import org.geotools.referencing.ReferencingFactoryFinder; -import org.geotools.referencing.factory.epsg.ThreadedH2EpsgFactory; import org.opengis.feature.type.AttributeDescriptor; import org.opengis.feature.type.AttributeType; import org.opengis.feature.type.GeometryType; import org.opengis.referencing.FactoryException; -import org.opengis.referencing.crs.CRSFactory; import org.opengis.referencing.crs.CoordinateReferenceSystem; -import org.opengis.referencing.cs.CSFactory; -import org.opengis.referencing.cs.CoordinateSystem; import org.opengis.referencing.operation.MathTransform; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.TreeMap; - public final class FeatureTypeBuilderUtil { + + protected static final String DEFAULTNAMESPACE = "http://www.ximple.com.tw/tpc/"; + private static final Logger LOGGER = LogManager.getLogger(FeatureTypeBuilderUtil.class); private static boolean notAllowNull = false; - protected static final String DEFAULTNAMESPACE = "http://www.ximple.com.tw/tpc/"; + private static boolean allowNull = true; public static boolean isNotAllowNull() { return notAllowNull; @@ -422,7 +426,8 @@ // typeBuilder.addType(AttributeTypeFactory.newAttributeType("geom", Point.class, notAllowNull)); attrBuilder = new AttributeTypeBuilder(); attrDescs.add(attrBuilder.buildDescriptor( - "geom", createGeometryType(attrBuilder, "PointType", Point.class, notAllowNull, lookupCRS(defaultSRID)))); + // "geom", createGeometryType(attrBuilder, "PointType", Point.class, notAllowNull, lookupCRS(defaultSRID)))); + "geom", createGeometryType(attrBuilder, "PolygonType", Polygon.class, notAllowNull, lookupCRS(defaultSRID)))); // typeBuilder.addType(AttributeTypeFactory.newAttributeType("tid", Short.class, notAllowNull)); attrBuilder = new AttributeTypeBuilder(); attrDescs.add(attrBuilder.buildDescriptor( @@ -475,6 +480,9 @@ attrBuilder = new AttributeTypeBuilder(); attrDescs.add(attrBuilder.buildDescriptor( "symbol", createAttributeType(attrBuilder, "StringType", String.class, notAllowNull, 20))); + attrBuilder = new AttributeTypeBuilder(); + attrDescs.add(attrBuilder.buildDescriptor( + "origin", createGeometryType(attrBuilder, "PointType", Point.class, notAllowNull, lookupCRS(defaultSRID)))); typeBuilder.addAll(attrDescs); return typeBuilder; diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/util/GeomUtil.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/util/GeomUtil.java index d55a3c0..2a13867 100644 --- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/util/GeomUtil.java +++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/util/GeomUtil.java @@ -7,7 +7,6 @@ * Created by IntelliJ IDEA. * User: Ulysses * Date: 2007/6/15 - * Time: �W�� 01:20:20 * To change this template use File | Settings | File Templates. */ public final class GeomUtil { diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/util/LangUtil.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/util/LangUtil.java index 5cfe502..6c9a245 100644 --- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/util/LangUtil.java +++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/util/LangUtil.java @@ -13,7 +13,6 @@ * Created by IntelliJ IDEA. * User: Ulysses * Date: 2007/6/15 - * Time: �W�� 01:21:25 * To change this template use File | Settings | File Templates. */ public class LangUtil { diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/util/TPCLIDConverter.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/util/TPCLIDConverter.java index 61a2eb7..907cc5c 100644 --- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/util/TPCLIDConverter.java +++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/util/TPCLIDConverter.java @@ -604,7 +604,7 @@ Point.y = 2500000; break; } - case 83: //���� S + case 83: // S { Point.x = 10000; Point.y = 2894000; @@ -634,19 +634,19 @@ Point.y = 2400000; break; } - case 88: //��� X + case 88: //X { Point.x = 10000; Point.y = 2614000; break; } - case 89: //��� Y + case 89: //Y { Point.x = 10000; Point.y = 2564000; break; } - case 90: //���� ��Z + case 90: //Z { Point.x = (xMapId < 51) ? 90000 : 10000; Point.y = 2675800; diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/util/TWDDatumConverter.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/util/TWDDatumConverter.java index 494d163..9630267 100644 --- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/util/TWDDatumConverter.java +++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/util/TWDDatumConverter.java @@ -6,7 +6,6 @@ * TWDDatumConverter * User: Ulysses * Date: 2007/10/8 - * Time: �U�� 01:35:03 * To change this template use File | Settings | File Templates. */ public abstract class TWDDatumConverter { @@ -450,12 +449,6 @@ * } */ - /** - * ��TM2�y���ഫ��TWD97�y�� - * - * @param pt TM2��m - * @return �s��TWD97�y�� - */ public static Coordinate fromTM2ToEPSG3826(Coordinate pt) { Coordinate ptTWD67 = fromTM2(TWD67_A, TWD67_ECC, TWD67_ECC2, 0, 121, TWD67_TM2, pt.x - 250000.0, pt.y); ptTWD67.z = 0; @@ -466,12 +459,6 @@ return pt97TM2; } - /** - * ��TM2�y���ഫ��TWD97�y�� - * - * @param pt TM2��m - * @return �s��TWD97�y�� - */ public static Coordinate fromTM2ToEPSG3825(Coordinate pt) { Coordinate ptTWD67 = fromTM2(TWD67_A, TWD67_ECC, TWD67_ECC2, 0, 191, TWD67_TM2, pt.x - 250000.0, pt.y); ptTWD67.z = 0; diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/util/XGeosConfigDigesterUtils.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/util/XGeosConfigDigesterUtils.java new file mode 100644 index 0000000..a89e7c8 --- /dev/null +++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/util/XGeosConfigDigesterUtils.java @@ -0,0 +1,27 @@ +package com.ximple.eofms.util; + +import com.ximple.eofms.geoserver.config.XGeosDataConfigMapping; +import org.apache.commons.digester3.Digester; +import org.apache.commons.digester3.binder.DigesterLoader; +import org.apache.commons.digester3.xmlrules.FromXmlRulesModule; + +public class XGeosConfigDigesterUtils { + private static final String XGEOSRULES_NAME = "DefaultXGeosDataConfigRules.xml"; + + protected static Digester digester = null; + protected static DigesterLoader loader = DigesterLoader.newLoader( new FromXmlRulesModule() { + @Override + protected void loadRules() { + loadXMLRules(XGeosDataConfigMapping.class.getResource(XGEOSRULES_NAME)); + } + + } ); + + static { + digester = loader.newDigester(); + } + + public static Digester getXGeosConfigDigester() { + return digester; + } +} diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/util/postjts/JtsGisWrapper.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/util/postjts/JtsGisWrapper.java index 53db05b..92809a0 100644 --- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/util/postjts/JtsGisWrapper.java +++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/util/postjts/JtsGisWrapper.java @@ -27,7 +27,9 @@ import java.sql.Connection; import java.sql.SQLException; +import java.sql.SQLFeatureNotSupportedException; import java.util.Properties; +import java.util.logging.Logger; import org.postgresql.Driver; import org.postgresql.PGConnection; @@ -155,4 +157,8 @@ public static String getVersion() { return "JtsGisWrapper " + REVISION + ", wrapping " + Driver.getVersion(); } + + public Logger getParentLogger() throws SQLFeatureNotSupportedException { + throw new UnsupportedOperationException("Not supported yet."); + } } diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/util/postjts/JtsWrapper.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/util/postjts/JtsWrapper.java index 235a483..6720216 100644 --- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/util/postjts/JtsWrapper.java +++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/util/postjts/JtsWrapper.java @@ -27,6 +27,7 @@ import java.sql.Connection; import java.sql.SQLException; +import java.sql.SQLFeatureNotSupportedException; import java.util.Properties; import java.util.logging.Level; import java.util.logging.Logger; @@ -163,4 +164,8 @@ public static String getVersion() { return "JtsGisWrapper " + REVISION + ", wrapping " + Driver.getVersion(); } + + public Logger getParentLogger() throws SQLFeatureNotSupportedException { + throw new UnsupportedOperationException("Not supported yet."); + } } diff --git a/xdgnjobs/ximple-spatialjob/src/main/resources/com/ximple/eofms/filter/ElementDispatcherRules.xml b/xdgnjobs/ximple-spatialjob/src/main/resources/com/ximple/eofms/filter/ElementDispatcherRules.xml index 6719421..72c6ad4 100644 --- a/xdgnjobs/ximple-spatialjob/src/main/resources/com/ximple/eofms/filter/ElementDispatcherRules.xml +++ b/xdgnjobs/ximple-spatialjob/src/main/resources/com/ximple/eofms/filter/ElementDispatcherRules.xml @@ -1,5 +1,5 @@ <?xml version='1.0' encoding="big5"?> -<!DOCTYPE digester-rules PUBLIC "-//Jakarta Apache //DTD digester-rules XML V1.0//EN" "digester-rules.dtd"> +<!DOCTYPE digester-rules PUBLIC "-//Apache Commons //DTD digester-rules XML V1.0//EN" "digester-rules-3.0.dtd"> <digester-rules> <pattern value="ElementDispatcherRules"> <object-create-rule classname="com.ximple.eofms.filter.ElementDispatcher"/> diff --git a/xdgnjobs/ximple-spatialjob/src/main/resources/com/ximple/eofms/filter/FeatureClassificationRules.xml b/xdgnjobs/ximple-spatialjob/src/main/resources/com/ximple/eofms/filter/FeatureClassificationRules.xml index e925ce6..ea1e91b 100644 --- a/xdgnjobs/ximple-spatialjob/src/main/resources/com/ximple/eofms/filter/FeatureClassificationRules.xml +++ b/xdgnjobs/ximple-spatialjob/src/main/resources/com/ximple/eofms/filter/FeatureClassificationRules.xml @@ -1,5 +1,5 @@ <?xml version='1.0' encoding="big5"?> -<!DOCTYPE digester-rules PUBLIC "-//Jakarta Apache //DTD digester-rules XML V1.0//EN" "digester-rules.dtd"> +<!DOCTYPE digester-rules PUBLIC "-//Apache Commons //DTD digester-rules XML V1.0//EN" "http://commons.apache.org/digester/dtds/digester-rules-3.0.dtd"> <digester-rules> <pattern value="FeatureClassificationRules"> <object-create-rule classname="com.ximple.eofms.collector.FeatureClassification"/> diff --git a/xdgnjobs/ximple-spatialjob/src/main/resources/com/ximple/eofms/filter/digester-rules-3.0.dtd b/xdgnjobs/ximple-spatialjob/src/main/resources/com/ximple/eofms/filter/digester-rules-3.0.dtd new file mode 100644 index 0000000..34668aa --- /dev/null +++ b/xdgnjobs/ximple-spatialjob/src/main/resources/com/ximple/eofms/filter/digester-rules-3.0.dtd @@ -0,0 +1,244 @@ +<?xml version="1.0" encoding="UTF-8" ?> + +<!-- $Id: digester-rules-3.0.dtd 1209995 2011-12-03 20:23:25Z simonetripodi $ + + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<!-- + "Digester" component of the Commons Subproject + DTD for the definition of Digester rules in XML. + $Id: digester-rules-3.0.dtd 1209995 2011-12-03 20:23:25Z simonetripodi $ + + Applications wishing to reference this DTD in their own documents + should use the following DOCTYPE declaration: + + <!DOCTYPE digester-rules PUBLIC + "-//Apache Commons //DTD digester-rules XML V1.0//EN" + "http://commons.apache.org/digester/dtds/digester-rules-3.0.dtd"> + +--> + +<!-- This document type defines an XML format for defining Digester rules. + Digester is a framework for pattern-matching-based parsing of XML into + Java objects. See http://commons.apache.org/digester/. --> + +<!ENTITY % rule-elements "bean-property-setter-rule | call-method-rule | + call-param-rule | object-param-rule | node-create-rule | + factory-create-rule | object-create-rule | + set-properties-rule | set-nested-properties-rule | + set-property-rule | set-top-rule | + set-next-rule | set-root-rule" > + +<!-- digester-rules is the root element. --> +<!ELEMENT digester-rules (pattern | include | %rule-elements; )*> +<!ATTLIST digester-rules + namespaceURI CDATA #IMPLIED> + +<!-- <pattern> defines a matching pattern, or part of a matching pattern. Any + rule nested in a pattern element prepends its parent's to its pattern. + Patterns may be recursively nested. + Example: + <pattern value="foo"> + <pattern value="bar"> + <object-create-rule pattern="baz" classname="Fubar" /> + </pattern> + </pattern> + + The above sample fragment defines an ObjectCreateRule associated + with the pattern "foo/bar/baz". + + Note that the use of pattern elements is optional; an alternative is for + each rule element to contain a 'pattern' attribute. --> +<!ELEMENT pattern (pattern | include | %rule-elements; )*> +<!ATTLIST pattern + value CDATA #REQUIRED> + + +<!-- + <include> allows one set of digester rules to be included inside + another. The 'path' attribute contains the URI of the document to + include. Inclusion behaves as if the included rules document is + 'macro-expanded' within the outer document. + Programmatically initialized rules can be included as well, via the + 'class' attribute. The 'class' attribute should contain the name + of a class that implements + org.apache.commons.digester.xmlrules.DigesterRulesSource. +--> +<!ELEMENT include EMPTY> +<!ATTLIST include + url CDATA #IMPLIED + class CDATA #IMPLIED> + + +<!-- Each 'rule' element below corresponds to a concrete subclass + of org.apache.framework.digester.Rule. + Each 'rule' element has an optional 'pattern' attribute, which + defines the pattern for that rule instance. If the rule element + is nested inside one or more <pattern> elements, those patterns + will be prepended to the pattern specified in the rule's 'pattern' + attribute. --> + +<!-- Bean Property Setter Rule --> +<!ELEMENT bean-property-setter-rule EMPTY> +<!ATTLIST bean-property-setter-rule + pattern CDATA #IMPLIED + propertyname CDATA #IMPLIED + propertynameFromAttribute CDATA #IMPLIED> + +<!-- CallMethodRule + - + - Note that paramtypes is ignored unless paramcount is defined. + --> +<!ELEMENT call-method-rule EMPTY> +<!ATTLIST call-method-rule + pattern CDATA #IMPLIED + targetoffset CDATA #IMPLIED + methodname CDATA #REQUIRED + paramcount CDATA #IMPLIED + paramtypes CDATA #IMPLIED + usingElementBodyAsArgument CDATA #IMPLIED + useExactMatch CDATA #IMPLIED> + +<!-- + CallParamRule + attrname + - set param from attribute value (cannot be combined with from-stack or + stack-index) + from-stack + - select an object from the current digester stack to pass as the + parameter value. + stack-index + - select an object from the current digester stack to pass as a + parameter value. If this is defined then from-stack is implicitly + true. If from-stack is defined but this is not defined then this + has an implicit value of zero, ie the top object on the stack is + passed as the parameter. + --> +<!ELEMENT call-param-rule EMPTY> +<!ATTLIST call-param-rule + pattern CDATA #IMPLIED + paramnumber CDATA #REQUIRED + attrname CDATA #IMPLIED + from-stack CDATA #IMPLIED + stack-index CDATA #IMPLIED> + +<!-- + ObjectParamRule + attrname + - Optional. This attribute is not normally specified. If it is provided, + then this rule is executed *only* if the matched element has an attribute + with this name. + type + - The type of the object to be passed to the target method. + Mandatory. + value + - Initial value for the object. The BeanUtils converter module will + be used to convert this to the type specified by the type attribute. + Optional; if no value is provided then the converter will be invoked + to convert NULL to the target type. For most (but not all) converters, + NULL input results in NULL output. + --> +<!ELEMENT object-param-rule EMPTY> +<!ATTLIST object-param-rule + pattern CDATA #IMPLIED + paramnumber CDATA #REQUIRED + attrname CDATA #IMPLIED + type CDATA #REQUIRED + value CDATA #IMPLIED> + +<!-- + NodeCreateRule + type + - node type: either 'element' or 'fragment'. this is optional, default is 'element' + --> +<!ELEMENT node-create-rule EMPTY> +<!ATTLIST node-create-rule + pattern CDATA #IMPLIED + type CDATA #IMPLIED> + +<!-- + FactoryCreateRule + + ignore-exceptions - if this attribute is (ignore case) 'true' then any exceptions + thrown by the object create rule will be ignore. + This will allow processing to continue. + --> +<!ELEMENT factory-create-rule EMPTY> +<!ATTLIST factory-create-rule + pattern CDATA #IMPLIED + classname CDATA #REQUIRED + attrname CDATA #IMPLIED + ignore-exceptions CDATA #IMPLIED> + +<!-- ObjectCreateRule --> +<!ELEMENT object-create-rule EMPTY> +<!ATTLIST object-create-rule + pattern CDATA #IMPLIED + classname CDATA #REQUIRED + attrname CDATA #IMPLIED + paramtypes CDATA #IMPLIED> + +<!-- SetPropertiesRule --> +<!ELEMENT set-properties-rule (alias)*> +<!ATTLIST set-properties-rule + pattern CDATA #IMPLIED> + +<!-- SetNestedPropertiesRule --> +<!ELEMENT set-nested-properties-rule (alias)*> +<!ATTLIST set-nested-properties-rule + pattern CDATA #IMPLIED + allow-unknown-child-elements CDATA #IMPLIED> + +<!-- An alias is a custom attribute->property name mapping --> +<!ELEMENT alias EMPTY> +<!ATTLIST alias + attr-name CDATA #REQUIRED + prop-name CDATA #IMPLIED> + +<!-- SetPropertyRule --> +<!ELEMENT set-property-rule EMPTY> +<!ATTLIST set-property-rule + pattern CDATA #IMPLIED + name CDATA #IMPLIED + value CDATA #IMPLIED> + +<!-- SetTopRule --> +<!ELEMENT set-top-rule EMPTY> +<!ATTLIST set-top-rule + pattern CDATA #IMPLIED + methodname CDATA #REQUIRED + paramtype CDATA #IMPLIED + exactMatch CDATA #IMPLIED + fireOnBegin CDATA #IMPLIED> + +<!-- SetNextRule --> +<!ELEMENT set-next-rule EMPTY> +<!ATTLIST set-next-rule + pattern CDATA #IMPLIED + methodname CDATA #REQUIRED + paramtype CDATA #IMPLIED + exactMatch CDATA #IMPLIED + fireOnBegin CDATA #IMPLIED> + +<!-- SetRootRule --> +<!ELEMENT set-root-rule EMPTY> +<!ATTLIST set-root-rule + pattern CDATA #IMPLIED + methodname CDATA #REQUIRED + paramtype CDATA #IMPLIED + exactMatch CDATA #IMPLIED + fireOnBegin CDATA #IMPLIED> diff --git a/xdgnjobs/ximple-spatialjob/src/main/resources/com/ximple/eofms/geoserver/config/DefaultXGeosDataConfigRules.xml b/xdgnjobs/ximple-spatialjob/src/main/resources/com/ximple/eofms/geoserver/config/DefaultXGeosDataConfigRules.xml new file mode 100644 index 0000000..3674334 --- /dev/null +++ b/xdgnjobs/ximple-spatialjob/src/main/resources/com/ximple/eofms/geoserver/config/DefaultXGeosDataConfigRules.xml @@ -0,0 +1,19 @@ +<?xml version='1.0' encoding="big5"?> +<!DOCTYPE digester-rules PUBLIC "-//Apache Commons //DTD digester-rules XML V1.0//EN" "digester-rules-3.0.dtd"> +<digester-rules> + <pattern value="dataroot"> + <object-create-rule classname="com.ximple.eofms.geoserver.config.XGeosDataConfigMapping"/> + <set-properties-rule/> + <pattern value="XGeosDataConfig"> + <object-create-rule classname="com.ximple.eofms.geoserver.config.XGeosDataConfig"/> + <set-next-rule methodname="addConfig" paramtype="com.ximple.eofms.geoserver.config.XGeosDataConfig"/> + <set-properties-rule/> + <bean-property-setter-rule pattern="PG"/> + <bean-property-setter-rule pattern="FSC"/> + <bean-property-setter-rule pattern="COMP"/> + <bean-property-setter-rule pattern="LEV"/> + <bean-property-setter-rule pattern="WEIGHT"/> + <bean-property-setter-rule pattern="FTYPE"/> + </pattern> + </pattern> +</digester-rules> \ No newline at end of file diff --git a/xdgnjobs/ximple-spatialjob/src/main/resources/com/ximple/eofms/geoserver/config/digester-rules-3.0.dtd b/xdgnjobs/ximple-spatialjob/src/main/resources/com/ximple/eofms/geoserver/config/digester-rules-3.0.dtd new file mode 100644 index 0000000..34668aa --- /dev/null +++ b/xdgnjobs/ximple-spatialjob/src/main/resources/com/ximple/eofms/geoserver/config/digester-rules-3.0.dtd @@ -0,0 +1,244 @@ +<?xml version="1.0" encoding="UTF-8" ?> + +<!-- $Id: digester-rules-3.0.dtd 1209995 2011-12-03 20:23:25Z simonetripodi $ + + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<!-- + "Digester" component of the Commons Subproject + DTD for the definition of Digester rules in XML. + $Id: digester-rules-3.0.dtd 1209995 2011-12-03 20:23:25Z simonetripodi $ + + Applications wishing to reference this DTD in their own documents + should use the following DOCTYPE declaration: + + <!DOCTYPE digester-rules PUBLIC + "-//Apache Commons //DTD digester-rules XML V1.0//EN" + "http://commons.apache.org/digester/dtds/digester-rules-3.0.dtd"> + +--> + +<!-- This document type defines an XML format for defining Digester rules. + Digester is a framework for pattern-matching-based parsing of XML into + Java objects. See http://commons.apache.org/digester/. --> + +<!ENTITY % rule-elements "bean-property-setter-rule | call-method-rule | + call-param-rule | object-param-rule | node-create-rule | + factory-create-rule | object-create-rule | + set-properties-rule | set-nested-properties-rule | + set-property-rule | set-top-rule | + set-next-rule | set-root-rule" > + +<!-- digester-rules is the root element. --> +<!ELEMENT digester-rules (pattern | include | %rule-elements; )*> +<!ATTLIST digester-rules + namespaceURI CDATA #IMPLIED> + +<!-- <pattern> defines a matching pattern, or part of a matching pattern. Any + rule nested in a pattern element prepends its parent's to its pattern. + Patterns may be recursively nested. + Example: + <pattern value="foo"> + <pattern value="bar"> + <object-create-rule pattern="baz" classname="Fubar" /> + </pattern> + </pattern> + + The above sample fragment defines an ObjectCreateRule associated + with the pattern "foo/bar/baz". + + Note that the use of pattern elements is optional; an alternative is for + each rule element to contain a 'pattern' attribute. --> +<!ELEMENT pattern (pattern | include | %rule-elements; )*> +<!ATTLIST pattern + value CDATA #REQUIRED> + + +<!-- + <include> allows one set of digester rules to be included inside + another. The 'path' attribute contains the URI of the document to + include. Inclusion behaves as if the included rules document is + 'macro-expanded' within the outer document. + Programmatically initialized rules can be included as well, via the + 'class' attribute. The 'class' attribute should contain the name + of a class that implements + org.apache.commons.digester.xmlrules.DigesterRulesSource. +--> +<!ELEMENT include EMPTY> +<!ATTLIST include + url CDATA #IMPLIED + class CDATA #IMPLIED> + + +<!-- Each 'rule' element below corresponds to a concrete subclass + of org.apache.framework.digester.Rule. + Each 'rule' element has an optional 'pattern' attribute, which + defines the pattern for that rule instance. If the rule element + is nested inside one or more <pattern> elements, those patterns + will be prepended to the pattern specified in the rule's 'pattern' + attribute. --> + +<!-- Bean Property Setter Rule --> +<!ELEMENT bean-property-setter-rule EMPTY> +<!ATTLIST bean-property-setter-rule + pattern CDATA #IMPLIED + propertyname CDATA #IMPLIED + propertynameFromAttribute CDATA #IMPLIED> + +<!-- CallMethodRule + - + - Note that paramtypes is ignored unless paramcount is defined. + --> +<!ELEMENT call-method-rule EMPTY> +<!ATTLIST call-method-rule + pattern CDATA #IMPLIED + targetoffset CDATA #IMPLIED + methodname CDATA #REQUIRED + paramcount CDATA #IMPLIED + paramtypes CDATA #IMPLIED + usingElementBodyAsArgument CDATA #IMPLIED + useExactMatch CDATA #IMPLIED> + +<!-- + CallParamRule + attrname + - set param from attribute value (cannot be combined with from-stack or + stack-index) + from-stack + - select an object from the current digester stack to pass as the + parameter value. + stack-index + - select an object from the current digester stack to pass as a + parameter value. If this is defined then from-stack is implicitly + true. If from-stack is defined but this is not defined then this + has an implicit value of zero, ie the top object on the stack is + passed as the parameter. + --> +<!ELEMENT call-param-rule EMPTY> +<!ATTLIST call-param-rule + pattern CDATA #IMPLIED + paramnumber CDATA #REQUIRED + attrname CDATA #IMPLIED + from-stack CDATA #IMPLIED + stack-index CDATA #IMPLIED> + +<!-- + ObjectParamRule + attrname + - Optional. This attribute is not normally specified. If it is provided, + then this rule is executed *only* if the matched element has an attribute + with this name. + type + - The type of the object to be passed to the target method. + Mandatory. + value + - Initial value for the object. The BeanUtils converter module will + be used to convert this to the type specified by the type attribute. + Optional; if no value is provided then the converter will be invoked + to convert NULL to the target type. For most (but not all) converters, + NULL input results in NULL output. + --> +<!ELEMENT object-param-rule EMPTY> +<!ATTLIST object-param-rule + pattern CDATA #IMPLIED + paramnumber CDATA #REQUIRED + attrname CDATA #IMPLIED + type CDATA #REQUIRED + value CDATA #IMPLIED> + +<!-- + NodeCreateRule + type + - node type: either 'element' or 'fragment'. this is optional, default is 'element' + --> +<!ELEMENT node-create-rule EMPTY> +<!ATTLIST node-create-rule + pattern CDATA #IMPLIED + type CDATA #IMPLIED> + +<!-- + FactoryCreateRule + + ignore-exceptions - if this attribute is (ignore case) 'true' then any exceptions + thrown by the object create rule will be ignore. + This will allow processing to continue. + --> +<!ELEMENT factory-create-rule EMPTY> +<!ATTLIST factory-create-rule + pattern CDATA #IMPLIED + classname CDATA #REQUIRED + attrname CDATA #IMPLIED + ignore-exceptions CDATA #IMPLIED> + +<!-- ObjectCreateRule --> +<!ELEMENT object-create-rule EMPTY> +<!ATTLIST object-create-rule + pattern CDATA #IMPLIED + classname CDATA #REQUIRED + attrname CDATA #IMPLIED + paramtypes CDATA #IMPLIED> + +<!-- SetPropertiesRule --> +<!ELEMENT set-properties-rule (alias)*> +<!ATTLIST set-properties-rule + pattern CDATA #IMPLIED> + +<!-- SetNestedPropertiesRule --> +<!ELEMENT set-nested-properties-rule (alias)*> +<!ATTLIST set-nested-properties-rule + pattern CDATA #IMPLIED + allow-unknown-child-elements CDATA #IMPLIED> + +<!-- An alias is a custom attribute->property name mapping --> +<!ELEMENT alias EMPTY> +<!ATTLIST alias + attr-name CDATA #REQUIRED + prop-name CDATA #IMPLIED> + +<!-- SetPropertyRule --> +<!ELEMENT set-property-rule EMPTY> +<!ATTLIST set-property-rule + pattern CDATA #IMPLIED + name CDATA #IMPLIED + value CDATA #IMPLIED> + +<!-- SetTopRule --> +<!ELEMENT set-top-rule EMPTY> +<!ATTLIST set-top-rule + pattern CDATA #IMPLIED + methodname CDATA #REQUIRED + paramtype CDATA #IMPLIED + exactMatch CDATA #IMPLIED + fireOnBegin CDATA #IMPLIED> + +<!-- SetNextRule --> +<!ELEMENT set-next-rule EMPTY> +<!ATTLIST set-next-rule + pattern CDATA #IMPLIED + methodname CDATA #REQUIRED + paramtype CDATA #IMPLIED + exactMatch CDATA #IMPLIED + fireOnBegin CDATA #IMPLIED> + +<!-- SetRootRule --> +<!ELEMENT set-root-rule EMPTY> +<!ATTLIST set-root-rule + pattern CDATA #IMPLIED + methodname CDATA #REQUIRED + paramtype CDATA #IMPLIED + exactMatch CDATA #IMPLIED + fireOnBegin CDATA #IMPLIED> diff --git a/xdgnjobs/ximple-spatialjob/src/main/resources/com/ximple/eofms/geoserver/config/xgeosdataconfig.xml b/xdgnjobs/ximple-spatialjob/src/main/resources/com/ximple/eofms/geoserver/config/xgeosdataconfig.xml new file mode 100644 index 0000000..46703b9 --- /dev/null +++ b/xdgnjobs/ximple-spatialjob/src/main/resources/com/ximple/eofms/geoserver/config/xgeosdataconfig.xml @@ -0,0 +1,11530 @@ +<?xml version="1.0" encoding="UTF-8"?> +<dataroot> + <XGeosDataConfig> + <PG>pg11KVHVOH</PG> + <FSC>100</FSC> + <COMP>0</COMP> + <LEV>59</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVOH</PG> + <FSC>102</FSC> + <COMP>0</COMP> + <LEV>30</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVOH</PG> + <FSC>106</FSC> + <COMP>1</COMP> + <LEV>1</LEV> + <WEIGHT>0</WEIGHT> + <FTYPE>pgTPC_Conductor2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVOH</PG> + <FSC>106</FSC> + <COMP>0</COMP> + <LEV>1</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVOH</PG> + <FSC>106</FSC> + <COMP>2</COMP> + <LEV>1</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVOH</PG> + <FSC>106</FSC> + <COMP>4</COMP> + <LEV>1</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVOH</PG> + <FSC>106</FSC> + <COMP>0</COMP> + <LEV>1</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Conductor</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVOH</PG> + <FSC>106</FSC> + <COMP>1</COMP> + <LEV>1</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVOH</PG> + <FSC>106</FSC> + <COMP>2</COMP> + <LEV>1</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVOH</PG> + <FSC>106</FSC> + <COMP>4</COMP> + <LEV>1</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVOH</PG> + <FSC>107</FSC> + <COMP>0</COMP> + <LEV>27</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVOH</PG> + <FSC>107</FSC> + <COMP>2</COMP> + <LEV>37</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVOH</PG> + <FSC>108</FSC> + <COMP>1</COMP> + <LEV>54</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVOH</PG> + <FSC>108</FSC> + <COMP>0</COMP> + <LEV>44</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVOH</PG> + <FSC>109</FSC> + <COMP>0</COMP> + <LEV>13</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVOH</PG> + <FSC>109</FSC> + <COMP>0</COMP> + <LEV>13</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVOH</PG> + <FSC>109</FSC> + <COMP>0</COMP> + <LEV>13</LEV> + <WEIGHT>3</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVOH</PG> + <FSC>114</FSC> + <COMP>2</COMP> + <LEV>21</LEV> + <WEIGHT>0</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVOH</PG> + <FSC>114</FSC> + <COMP>0</COMP> + <LEV>21</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVOH</PG> + <FSC>114</FSC> + <COMP>1</COMP> + <LEV>31</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVOH</PG> + <FSC>114</FSC> + <COMP>1</COMP> + <LEV>31</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVOH</PG> + <FSC>114</FSC> + <COMP>2</COMP> + <LEV>21</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVOH</PG> + <FSC>114</FSC> + <COMP>2</COMP> + <LEV>21</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVOH</PG> + <FSC>114</FSC> + <COMP>0</COMP> + <LEV>21</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVOH</PG> + <FSC>115</FSC> + <COMP>1</COMP> + <LEV>46</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVOH</PG> + <FSC>115</FSC> + <COMP>0</COMP> + <LEV>46</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVOH</PG> + <FSC>115</FSC> + <COMP>10</COMP> + <LEV>46</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVOH</PG> + <FSC>115</FSC> + <COMP>10</COMP> + <LEV>46</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVOH</PG> + <FSC>115</FSC> + <COMP>91</COMP> + <LEV>46</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVOH</PG> + <FSC>115</FSC> + <COMP>0</COMP> + <LEV>46</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVOH</PG> + <FSC>115</FSC> + <COMP>1</COMP> + <LEV>46</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVOH</PG> + <FSC>116</FSC> + <COMP>0</COMP> + <LEV>14</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVOH</PG> + <FSC>116</FSC> + <COMP>0</COMP> + <LEV>14</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVOH</PG> + <FSC>117</FSC> + <COMP>0</COMP> + <LEV>27</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVOH</PG> + <FSC>118</FSC> + <COMP>0</COMP> + <LEV>27</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVOH</PG> + <FSC>118</FSC> + <COMP>0</COMP> + <LEV>49</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVOH</PG> + <FSC>119</FSC> + <COMP>0</COMP> + <LEV>61</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVOH</PG> + <FSC>120</FSC> + <COMP>0</COMP> + <LEV>42</LEV> + <FTYPE>pgTPC_Symbol_circle</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVOH</PG> + <FSC>130</FSC> + <COMP>0</COMP> + <LEV>11</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVOH</PG> + <FSC>130</FSC> + <COMP>0</COMP> + <LEV>11</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVOH</PG> + <FSC>131</FSC> + <COMP>0</COMP> + <LEV>12</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVOH</PG> + <FSC>131</FSC> + <COMP>0</COMP> + <LEV>12</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVOH</PG> + <FSC>140</FSC> + <COMP>3</COMP> + <LEV>51</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVOH</PG> + <FSC>140</FSC> + <COMP>2</COMP> + <LEV>51</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVOH</PG> + <FSC>140</FSC> + <COMP>2</COMP> + <LEV>51</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVOH</PG> + <FSC>140</FSC> + <COMP>0</COMP> + <LEV>51</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVOH</PG> + <FSC>140</FSC> + <COMP>0</COMP> + <LEV>51</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Conductor</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVOH</PG> + <FSC>140</FSC> + <COMP>4</COMP> + <LEV>51</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVOH</PG> + <FSC>140</FSC> + <COMP>3</COMP> + <LEV>51</LEV> + <WEIGHT>0</WEIGHT> + <FTYPE>pgTPC_Conductor2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVOH</PG> + <FSC>140</FSC> + <COMP>1</COMP> + <LEV>51</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVOH</PG> + <FSC>140</FSC> + <COMP>1</COMP> + <LEV>51</LEV> + <WEIGHT>0</WEIGHT> + <FTYPE>pgTPC_Conductor2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVOH</PG> + <FSC>140</FSC> + <COMP>4</COMP> + <LEV>51</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVOH</PG> + <FSC>402</FSC> + <COMP>1</COMP> + <LEV>37</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVOH</PG> + <FSC>402</FSC> + <COMP>0</COMP> + <LEV>27</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVOH</PG> + <FSC>402</FSC> + <COMP>2</COMP> + <LEV>37</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVOH</PG> + <FSC>402</FSC> + <COMP>2</COMP> + <LEV>15</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVOH</PG> + <FSC>402</FSC> + <COMP>0</COMP> + <LEV>5</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVOH</PG> + <FSC>402</FSC> + <COMP>1</COMP> + <LEV>15</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVOH</PG> + <FSC>407</FSC> + <COMP>10</COMP> + <LEV>9</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVOH</PG> + <FSC>407</FSC> + <COMP>10</COMP> + <LEV>9</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVOH</PG> + <FSC>407</FSC> + <COMP>10</COMP> + <LEV>9</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVOH</PG> + <FSC>407</FSC> + <COMP>11</COMP> + <LEV>9</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVOH</PG> + <FSC>407</FSC> + <COMP>11</COMP> + <LEV>9</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVOH</PG> + <FSC>407</FSC> + <COMP>9</COMP> + <LEV>9</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Conductor2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVOH</PG> + <FSC>407</FSC> + <COMP>9</COMP> + <LEV>9</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVOH</PG> + <FSC>407</FSC> + <COMP>8</COMP> + <LEV>9</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVOH</PG> + <FSC>407</FSC> + <COMP>8</COMP> + <LEV>9</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVOH</PG> + <FSC>407</FSC> + <COMP>1</COMP> + <LEV>19</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVOH</PG> + <FSC>407</FSC> + <COMP>0</COMP> + <LEV>9</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVOH</PG> + <FSC>407</FSC> + <COMP>0</COMP> + <LEV>9</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVOH</PG> + <FSC>407</FSC> + <COMP>1</COMP> + <LEV>19</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVOH</PG> + <FSC>501</FSC> + <COMP>0</COMP> + <LEV>1</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVOH</PG> + <FSC>502</FSC> + <COMP>1</COMP> + <LEV>2</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVOH</PG> + <FSC>502</FSC> + <COMP>0</COMP> + <LEV>1</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVOH</PG> + <FSC>503</FSC> + <COMP>0</COMP> + <LEV>1</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVOH</PG> + <FSC>504</FSC> + <COMP>1</COMP> + <LEV>2</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVOH</PG> + <FSC>999</FSC> + <COMP>0</COMP> + <LEV>62</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVUG</PG> + <FSC>101</FSC> + <COMP>0</COMP> + <LEV>41</LEV> + <WEIGHT>0</WEIGHT> + <FTYPE>pgTPC_Conductor</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVUG</PG> + <FSC>101</FSC> + <COMP>0</COMP> + <LEV>41</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVUG</PG> + <FSC>105</FSC> + <COMP>0</COMP> + <LEV>29</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVUG</PG> + <FSC>105</FSC> + <COMP>0</COMP> + <LEV>29</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVUG</PG> + <FSC>107</FSC> + <COMP>0</COMP> + <LEV>25</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVUG</PG> + <FSC>107</FSC> + <COMP>2</COMP> + <LEV>35</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVUG</PG> + <FSC>107</FSC> + <COMP>0</COMP> + <LEV>25</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVUG</PG> + <FSC>107</FSC> + <COMP>2</COMP> + <LEV>35</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVUG</PG> + <FSC>108</FSC> + <COMP>1</COMP> + <LEV>54</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVUG</PG> + <FSC>108</FSC> + <COMP>0</COMP> + <LEV>44</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVUG</PG> + <FSC>113</FSC> + <COMP>0</COMP> + <LEV>4</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVUG</PG> + <FSC>114</FSC> + <COMP>2</COMP> + <LEV>23</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVUG</PG> + <FSC>114</FSC> + <COMP>1</COMP> + <LEV>33</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVUG</PG> + <FSC>114</FSC> + <COMP>3</COMP> + <LEV>60</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVUG</PG> + <FSC>114</FSC> + <COMP>0</COMP> + <LEV>23</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVUG</PG> + <FSC>114</FSC> + <COMP>0</COMP> + <LEV>23</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVUG</PG> + <FSC>114</FSC> + <COMP>3</COMP> + <LEV>60</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVUG</PG> + <FSC>114</FSC> + <COMP>2</COMP> + <LEV>23</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVUG</PG> + <FSC>114</FSC> + <COMP>1</COMP> + <LEV>33</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVUG</PG> + <FSC>115</FSC> + <COMP>10</COMP> + <LEV>47</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVUG</PG> + <FSC>115</FSC> + <COMP>0</COMP> + <LEV>47</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVUG</PG> + <FSC>115</FSC> + <COMP>91</COMP> + <LEV>47</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVUG</PG> + <FSC>115</FSC> + <COMP>10</COMP> + <LEV>47</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVUG</PG> + <FSC>115</FSC> + <COMP>0</COMP> + <LEV>47</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVUG</PG> + <FSC>117</FSC> + <COMP>0</COMP> + <LEV>27</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVUG</PG> + <FSC>118</FSC> + <COMP>0</COMP> + <LEV>49</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVUG</PG> + <FSC>118</FSC> + <COMP>0</COMP> + <LEV>27</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVUG</PG> + <FSC>119</FSC> + <COMP>0</COMP> + <LEV>61</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVUG</PG> + <FSC>122</FSC> + <COMP>1</COMP> + <LEV>33</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVUG</PG> + <FSC>122</FSC> + <COMP>0</COMP> + <LEV>23</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVUG</PG> + <FSC>122</FSC> + <COMP>0</COMP> + <LEV>23</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Conductor</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVUG</PG> + <FSC>130</FSC> + <COMP>0</COMP> + <LEV>11</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVUG</PG> + <FSC>130</FSC> + <COMP>0</COMP> + <LEV>11</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVUG</PG> + <FSC>140</FSC> + <COMP>3</COMP> + <LEV>52</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVUG</PG> + <FSC>140</FSC> + <COMP>3</COMP> + <LEV>52</LEV> + <WEIGHT>0</WEIGHT> + <FTYPE>pgTPC_Conductor2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVUG</PG> + <FSC>140</FSC> + <COMP>1</COMP> + <LEV>52</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVUG</PG> + <FSC>140</FSC> + <COMP>4</COMP> + <LEV>52</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVUG</PG> + <FSC>140</FSC> + <COMP>2</COMP> + <LEV>52</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVUG</PG> + <FSC>140</FSC> + <COMP>2</COMP> + <LEV>52</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVUG</PG> + <FSC>140</FSC> + <COMP>0</COMP> + <LEV>52</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Conductor</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVUG</PG> + <FSC>140</FSC> + <COMP>4</COMP> + <LEV>52</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVUG</PG> + <FSC>140</FSC> + <COMP>1</COMP> + <LEV>52</LEV> + <WEIGHT>0</WEIGHT> + <FTYPE>pgTPC_Conductor2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVUG</PG> + <FSC>140</FSC> + <COMP>0</COMP> + <LEV>52</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVUG</PG> + <FSC>402</FSC> + <COMP>1</COMP> + <LEV>15</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVUG</PG> + <FSC>402</FSC> + <COMP>0</COMP> + <LEV>5</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVUG</PG> + <FSC>402</FSC> + <COMP>2</COMP> + <LEV>37</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVUG</PG> + <FSC>402</FSC> + <COMP>1</COMP> + <LEV>37</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVUG</PG> + <FSC>402</FSC> + <COMP>0</COMP> + <LEV>27</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVUG</PG> + <FSC>402</FSC> + <COMP>2</COMP> + <LEV>15</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVUG</PG> + <FSC>403</FSC> + <COMP>1</COMP> + <LEV>25</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVUG</PG> + <FSC>403</FSC> + <COMP>2</COMP> + <LEV>15</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVUG</PG> + <FSC>403</FSC> + <COMP>1</COMP> + <LEV>23</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVUG</PG> + <FSC>403</FSC> + <COMP>1</COMP> + <LEV>22</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVUG</PG> + <FSC>403</FSC> + <COMP>1</COMP> + <LEV>24</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVUG</PG> + <FSC>403</FSC> + <COMP>1</COMP> + <LEV>4</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVUG</PG> + <FSC>403</FSC> + <COMP>1</COMP> + <LEV>13</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVUG</PG> + <FSC>403</FSC> + <COMP>2</COMP> + <LEV>14</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVUG</PG> + <FSC>403</FSC> + <COMP>1</COMP> + <LEV>3</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVUG</PG> + <FSC>411</FSC> + <COMP>0</COMP> + <LEV>7</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVUG</PG> + <FSC>411</FSC> + <COMP>1</COMP> + <LEV>17</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVUG</PG> + <FSC>411</FSC> + <COMP>0</COMP> + <LEV>7</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVUG</PG> + <FSC>411</FSC> + <COMP>0</COMP> + <LEV>27</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVUG</PG> + <FSC>411</FSC> + <COMP>1</COMP> + <LEV>17</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVUG</PG> + <FSC>411</FSC> + <COMP>0</COMP> + <LEV>27</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVUG</PG> + <FSC>411</FSC> + <COMP>1</COMP> + <LEV>37</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVUG</PG> + <FSC>411</FSC> + <COMP>1</COMP> + <LEV>37</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVUG</PG> + <FSC>418</FSC> + <COMP>1</COMP> + <LEV>3</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVUG</PG> + <FSC>418</FSC> + <COMP>1</COMP> + <LEV>4</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVUG</PG> + <FSC>501</FSC> + <COMP>1</COMP> + <LEV>2</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVUG</PG> + <FSC>501</FSC> + <COMP>0</COMP> + <LEV>1</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVUG</PG> + <FSC>502</FSC> + <COMP>1</COMP> + <LEV>2</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVUG</PG> + <FSC>502</FSC> + <COMP>0</COMP> + <LEV>1</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVUG</PG> + <FSC>503</FSC> + <COMP>0</COMP> + <LEV>1</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVUG</PG> + <FSC>504</FSC> + <COMP>1</COMP> + <LEV>2</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVHVUG</PG> + <FSC>999</FSC> + <COMP>0</COMP> + <LEV>62</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVMAINHV</PG> + <FSC>100</FSC> + <COMP>0</COMP> + <LEV>59</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVMAINHV</PG> + <FSC>101</FSC> + <COMP>0</COMP> + <LEV>41</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVMAINHV</PG> + <FSC>102</FSC> + <COMP>0</COMP> + <LEV>30</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVMAINHV</PG> + <FSC>105</FSC> + <COMP>0</COMP> + <LEV>29</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVMAINHV</PG> + <FSC>105</FSC> + <COMP>0</COMP> + <LEV>29</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVMAINHV</PG> + <FSC>106</FSC> + <COMP>2</COMP> + <LEV>2</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVMAINHV</PG> + <FSC>106</FSC> + <COMP>0</COMP> + <LEV>2</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Conductor</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVMAINHV</PG> + <FSC>106</FSC> + <COMP>2</COMP> + <LEV>2</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVMAINHV</PG> + <FSC>106</FSC> + <COMP>4</COMP> + <LEV>2</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVMAINHV</PG> + <FSC>106</FSC> + <COMP>0</COMP> + <LEV>1</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Conductor</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVMAINHV</PG> + <FSC>106</FSC> + <COMP>4</COMP> + <LEV>1</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVMAINHV</PG> + <FSC>106</FSC> + <COMP>1</COMP> + <LEV>2</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVMAINHV</PG> + <FSC>106</FSC> + <COMP>1</COMP> + <LEV>1</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVMAINHV</PG> + <FSC>106</FSC> + <COMP>2</COMP> + <LEV>1</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVMAINHV</PG> + <FSC>107</FSC> + <COMP>2</COMP> + <LEV>35</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVMAINHV</PG> + <FSC>107</FSC> + <COMP>2</COMP> + <LEV>37</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVMAINHV</PG> + <FSC>107</FSC> + <COMP>0</COMP> + <LEV>27</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVMAINHV</PG> + <FSC>107</FSC> + <COMP>0</COMP> + <LEV>25</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVMAINHV</PG> + <FSC>108</FSC> + <COMP>1</COMP> + <LEV>54</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVMAINHV</PG> + <FSC>108</FSC> + <COMP>0</COMP> + <LEV>44</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVMAINHV</PG> + <FSC>109</FSC> + <COMP>0</COMP> + <LEV>13</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVMAINHV</PG> + <FSC>114</FSC> + <COMP>3</COMP> + <LEV>60</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVMAINHV</PG> + <FSC>114</FSC> + <COMP>2</COMP> + <LEV>23</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVMAINHV</PG> + <FSC>114</FSC> + <COMP>0</COMP> + <LEV>23</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVMAINHV</PG> + <FSC>114</FSC> + <COMP>1</COMP> + <LEV>33</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVMAINHV</PG> + <FSC>114</FSC> + <COMP>2</COMP> + <LEV>21</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVMAINHV</PG> + <FSC>114</FSC> + <COMP>0</COMP> + <LEV>21</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVMAINHV</PG> + <FSC>114</FSC> + <COMP>1</COMP> + <LEV>31</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVMAINHV</PG> + <FSC>115</FSC> + <COMP>91</COMP> + <LEV>46</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVMAINHV</PG> + <FSC>115</FSC> + <COMP>1</COMP> + <LEV>57</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVMAINHV</PG> + <FSC>115</FSC> + <COMP>91</COMP> + <LEV>47</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVMAINHV</PG> + <FSC>115</FSC> + <COMP>10</COMP> + <LEV>47</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVMAINHV</PG> + <FSC>115</FSC> + <COMP>6</COMP> + <LEV>47</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVMAINHV</PG> + <FSC>115</FSC> + <COMP>0</COMP> + <LEV>47</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVMAINHV</PG> + <FSC>115</FSC> + <COMP>10</COMP> + <LEV>46</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVMAINHV</PG> + <FSC>115</FSC> + <COMP>0</COMP> + <LEV>46</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVMAINHV</PG> + <FSC>115</FSC> + <COMP>1</COMP> + <LEV>46</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVMAINHV</PG> + <FSC>116</FSC> + <COMP>0</COMP> + <LEV>14</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVMAINHV</PG> + <FSC>117</FSC> + <COMP>0</COMP> + <LEV>27</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVMAINHV</PG> + <FSC>118</FSC> + <COMP>0</COMP> + <LEV>27</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVMAINHV</PG> + <FSC>118</FSC> + <COMP>0</COMP> + <LEV>49</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVMAINHV</PG> + <FSC>119</FSC> + <COMP>0</COMP> + <LEV>61</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVMAINHV</PG> + <FSC>120</FSC> + <COMP>0</COMP> + <LEV>42</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol_circle</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVMAINHV</PG> + <FSC>122</FSC> + <COMP>0</COMP> + <LEV>23</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Conductor</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVMAINHV</PG> + <FSC>122</FSC> + <COMP>0</COMP> + <LEV>23</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Conductor</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVMAINHV</PG> + <FSC>122</FSC> + <COMP>1</COMP> + <LEV>33</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVMAINHV</PG> + <FSC>122</FSC> + <COMP>1</COMP> + <LEV>33</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVMAINHV</PG> + <FSC>130</FSC> + <COMP>0</COMP> + <LEV>11</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVMAINHV</PG> + <FSC>131</FSC> + <COMP>0</COMP> + <LEV>12</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVMAINHV</PG> + <FSC>402</FSC> + <COMP>1</COMP> + <LEV>37</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVMAINHV</PG> + <FSC>402</FSC> + <COMP>2</COMP> + <LEV>15</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVMAINHV</PG> + <FSC>402</FSC> + <COMP>2</COMP> + <LEV>37</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVMAINHV</PG> + <FSC>402</FSC> + <COMP>0</COMP> + <LEV>5</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVMAINHV</PG> + <FSC>402</FSC> + <COMP>1</COMP> + <LEV>15</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVMAINHV</PG> + <FSC>402</FSC> + <COMP>0</COMP> + <LEV>27</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVMAINHV</PG> + <FSC>407</FSC> + <COMP>11</COMP> + <LEV>9</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVMAINHV</PG> + <FSC>407</FSC> + <COMP>1</COMP> + <LEV>19</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVMAINHV</PG> + <FSC>407</FSC> + <COMP>8</COMP> + <LEV>9</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVMAINHV</PG> + <FSC>407</FSC> + <COMP>9</COMP> + <LEV>9</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Conductor2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVMAINHV</PG> + <FSC>407</FSC> + <COMP>0</COMP> + <LEV>9</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVMAINHV</PG> + <FSC>411</FSC> + <COMP>1</COMP> + <LEV>17</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVMAINHV</PG> + <FSC>411</FSC> + <COMP>1</COMP> + <LEV>37</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVMAINHV</PG> + <FSC>411</FSC> + <COMP>0</COMP> + <LEV>27</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVMAINHV</PG> + <FSC>411</FSC> + <COMP>0</COMP> + <LEV>7</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVMAINHV</PG> + <FSC>501</FSC> + <COMP>0</COMP> + <LEV>1</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVMAINHV</PG> + <FSC>501</FSC> + <COMP>1</COMP> + <LEV>2</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVMAINHV</PG> + <FSC>502</FSC> + <COMP>0</COMP> + <LEV>1</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVMAINHV</PG> + <FSC>502</FSC> + <COMP>1</COMP> + <LEV>2</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVMAINHV</PG> + <FSC>503</FSC> + <COMP>0</COMP> + <LEV>1</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVMAINHV</PG> + <FSC>504</FSC> + <COMP>1</COMP> + <LEV>2</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVMAINHV</PG> + <FSC>999</FSC> + <COMP>0</COMP> + <LEV>62</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVSUBHV</PG> + <FSC>101</FSC> + <COMP>0</COMP> + <LEV>41</LEV> + <WEIGHT>0</WEIGHT> + <FTYPE>pgTPC_Conductor</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVSUBHV</PG> + <FSC>102</FSC> + <COMP>0</COMP> + <LEV>40</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVSUBHV</PG> + <FSC>105</FSC> + <COMP>0</COMP> + <LEV>29</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVSUBHV</PG> + <FSC>106</FSC> + <COMP>0</COMP> + <LEV>2</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVSUBHV</PG> + <FSC>106</FSC> + <COMP>1</COMP> + <LEV>1</LEV> + <WEIGHT>0</WEIGHT> + <FTYPE>pgTPC_Conductor2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVSUBHV</PG> + <FSC>106</FSC> + <COMP>2</COMP> + <LEV>2</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVSUBHV</PG> + <FSC>106</FSC> + <COMP>0</COMP> + <LEV>1</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVSUBHV</PG> + <FSC>106</FSC> + <COMP>1</COMP> + <LEV>2</LEV> + <WEIGHT>0</WEIGHT> + <FTYPE>pgTPC_Conductor2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVSUBHV</PG> + <FSC>106</FSC> + <COMP>4</COMP> + <LEV>2</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVSUBHV</PG> + <FSC>106</FSC> + <COMP>2</COMP> + <LEV>1</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVSUBHV</PG> + <FSC>106</FSC> + <COMP>4</COMP> + <LEV>1</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVSUBHV</PG> + <FSC>107</FSC> + <COMP>0</COMP> + <LEV>27</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVSUBHV</PG> + <FSC>107</FSC> + <COMP>2</COMP> + <LEV>37</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVSUBHV</PG> + <FSC>107</FSC> + <COMP>0</COMP> + <LEV>25</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVSUBHV</PG> + <FSC>107</FSC> + <COMP>2</COMP> + <LEV>35</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVSUBHV</PG> + <FSC>109</FSC> + <COMP>0</COMP> + <LEV>13</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVSUBHV</PG> + <FSC>114</FSC> + <COMP>2</COMP> + <LEV>21</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVSUBHV</PG> + <FSC>114</FSC> + <COMP>0</COMP> + <LEV>23</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVSUBHV</PG> + <FSC>114</FSC> + <COMP>1</COMP> + <LEV>33</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVSUBHV</PG> + <FSC>114</FSC> + <COMP>0</COMP> + <LEV>21</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVSUBHV</PG> + <FSC>114</FSC> + <COMP>3</COMP> + <LEV>60</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVSUBHV</PG> + <FSC>114</FSC> + <COMP>2</COMP> + <LEV>23</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVSUBHV</PG> + <FSC>114</FSC> + <COMP>1</COMP> + <LEV>31</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVSUBHV</PG> + <FSC>115</FSC> + <COMP>10</COMP> + <LEV>47</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVSUBHV</PG> + <FSC>115</FSC> + <COMP>10</COMP> + <LEV>46</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVSUBHV</PG> + <FSC>115</FSC> + <COMP>91</COMP> + <LEV>46</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVSUBHV</PG> + <FSC>115</FSC> + <COMP>0</COMP> + <LEV>47</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVSUBHV</PG> + <FSC>115</FSC> + <COMP>1</COMP> + <LEV>57</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVSUBHV</PG> + <FSC>115</FSC> + <COMP>0</COMP> + <LEV>46</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVSUBHV</PG> + <FSC>115</FSC> + <COMP>10</COMP> + <LEV>47</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVSUBHV</PG> + <FSC>115</FSC> + <COMP>6</COMP> + <LEV>47</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVSUBHV</PG> + <FSC>115</FSC> + <COMP>1</COMP> + <LEV>46</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVSUBHV</PG> + <FSC>115</FSC> + <COMP>91</COMP> + <LEV>47</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVSUBHV</PG> + <FSC>116</FSC> + <COMP>0</COMP> + <LEV>14</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVSUBHV</PG> + <FSC>117</FSC> + <COMP>0</COMP> + <LEV>27</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVSUBHV</PG> + <FSC>120</FSC> + <COMP>0</COMP> + <LEV>42</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol_circle</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVSUBHV</PG> + <FSC>122</FSC> + <COMP>0</COMP> + <LEV>23</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVSUBHV</PG> + <FSC>122</FSC> + <COMP>1</COMP> + <LEV>33</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVSUBHV</PG> + <FSC>130</FSC> + <COMP>0</COMP> + <LEV>11</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVSUBHV</PG> + <FSC>131</FSC> + <COMP>0</COMP> + <LEV>12</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVSUBHV</PG> + <FSC>407</FSC> + <COMP>9</COMP> + <LEV>9</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVSUBHV</PG> + <FSC>407</FSC> + <COMP>1</COMP> + <LEV>19</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVSUBHV</PG> + <FSC>407</FSC> + <COMP>8</COMP> + <LEV>9</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVSUBHV</PG> + <FSC>407</FSC> + <COMP>10</COMP> + <LEV>9</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVSUBHV</PG> + <FSC>407</FSC> + <COMP>0</COMP> + <LEV>9</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVSUBHV</PG> + <FSC>407</FSC> + <COMP>11</COMP> + <LEV>9</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVSUBHV</PG> + <FSC>409</FSC> + <COMP>10</COMP> + <LEV>9</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVSUBHV</PG> + <FSC>411</FSC> + <COMP>0</COMP> + <LEV>7</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVSUBHV</PG> + <FSC>411</FSC> + <COMP>0</COMP> + <LEV>27</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVSUBHV</PG> + <FSC>411</FSC> + <COMP>1</COMP> + <LEV>37</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVSUBHV</PG> + <FSC>411</FSC> + <COMP>1</COMP> + <LEV>17</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVSUBHV</PG> + <FSC>501</FSC> + <COMP>0</COMP> + <LEV>1</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVSUBHV</PG> + <FSC>501</FSC> + <COMP>1</COMP> + <LEV>2</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVSUBHV</PG> + <FSC>502</FSC> + <COMP>1</COMP> + <LEV>2</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVSUBHV</PG> + <FSC>502</FSC> + <COMP>0</COMP> + <LEV>1</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVSUBHV</PG> + <FSC>503</FSC> + <COMP>0</COMP> + <LEV>1</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVSUBHV</PG> + <FSC>504</FSC> + <COMP>1</COMP> + <LEV>2</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg11KVSUBHV</PG> + <FSC>999</FSC> + <COMP>0</COMP> + <LEV>62</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVHVOH</PG> + <FSC>100</FSC> + <COMP>0</COMP> + <LEV>60</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVHVOH</PG> + <FSC>107</FSC> + <COMP>2</COMP> + <LEV>38</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVHVOH</PG> + <FSC>107</FSC> + <COMP>2</COMP> + <LEV>38</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVHVOH</PG> + <FSC>107</FSC> + <COMP>0</COMP> + <LEV>28</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVHVOH</PG> + <FSC>107</FSC> + <COMP>0</COMP> + <LEV>28</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVHVOH</PG> + <FSC>108</FSC> + <COMP>1</COMP> + <LEV>55</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVHVOH</PG> + <FSC>108</FSC> + <COMP>0</COMP> + <LEV>45</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVHVOH</PG> + <FSC>114</FSC> + <COMP>1</COMP> + <LEV>32</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVHVOH</PG> + <FSC>114</FSC> + <COMP>2</COMP> + <LEV>22</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVHVOH</PG> + <FSC>114</FSC> + <COMP>0</COMP> + <LEV>22</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVHVOH</PG> + <FSC>114</FSC> + <COMP>1</COMP> + <LEV>32</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVHVOH</PG> + <FSC>114</FSC> + <COMP>2</COMP> + <LEV>22</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVHVOH</PG> + <FSC>114</FSC> + <COMP>0</COMP> + <LEV>22</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVHVOH</PG> + <FSC>115</FSC> + <COMP>91</COMP> + <LEV>56</LEV> + <WEIGHT>0</WEIGHT> + <FTYPE>pgTPC_Conductor2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVHVOH</PG> + <FSC>115</FSC> + <COMP>10</COMP> + <LEV>56</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVHVOH</PG> + <FSC>115</FSC> + <COMP>10</COMP> + <LEV>56</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVHVOH</PG> + <FSC>115</FSC> + <COMP>0</COMP> + <LEV>56</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVHVOH</PG> + <FSC>115</FSC> + <COMP>1</COMP> + <LEV>56</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVHVOH</PG> + <FSC>117</FSC> + <COMP>0</COMP> + <LEV>27</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVHVOH</PG> + <FSC>118</FSC> + <COMP>0</COMP> + <LEV>50</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVHVOH</PG> + <FSC>119</FSC> + <COMP>0</COMP> + <LEV>62</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVHVOH</PG> + <FSC>119</FSC> + <COMP>0</COMP> + <LEV>62</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVHVOH</PG> + <FSC>140</FSC> + <COMP>4</COMP> + <LEV>53</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVHVOH</PG> + <FSC>140</FSC> + <COMP>0</COMP> + <LEV>53</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVHVOH</PG> + <FSC>140</FSC> + <COMP>3</COMP> + <LEV>53</LEV> + <WEIGHT>0</WEIGHT> + <FTYPE>pgTPC_Conductor2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVHVOH</PG> + <FSC>140</FSC> + <COMP>3</COMP> + <LEV>53</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVHVOH</PG> + <FSC>140</FSC> + <COMP>0</COMP> + <LEV>53</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Conductor</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVHVOH</PG> + <FSC>140</FSC> + <COMP>4</COMP> + <LEV>53</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVHVOH</PG> + <FSC>140</FSC> + <COMP>2</COMP> + <LEV>53</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVHVOH</PG> + <FSC>140</FSC> + <COMP>1</COMP> + <LEV>53</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVHVOH</PG> + <FSC>140</FSC> + <COMP>1</COMP> + <LEV>53</LEV> + <WEIGHT>0</WEIGHT> + <FTYPE>pgTPC_Conductor2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVHVOH</PG> + <FSC>140</FSC> + <COMP>2</COMP> + <LEV>53</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVHVOH</PG> + <FSC>402</FSC> + <COMP>0</COMP> + <LEV>27</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVHVOH</PG> + <FSC>402</FSC> + <COMP>2</COMP> + <LEV>37</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVHVOH</PG> + <FSC>402</FSC> + <COMP>1</COMP> + <LEV>16</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVHVOH</PG> + <FSC>402</FSC> + <COMP>2</COMP> + <LEV>16</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVHVOH</PG> + <FSC>402</FSC> + <COMP>0</COMP> + <LEV>6</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVHVOH</PG> + <FSC>402</FSC> + <COMP>1</COMP> + <LEV>37</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVHVOH</PG> + <FSC>407</FSC> + <COMP>11</COMP> + <LEV>10</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVHVOH</PG> + <FSC>407</FSC> + <COMP>8</COMP> + <LEV>10</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVHVOH</PG> + <FSC>407</FSC> + <COMP>9</COMP> + <LEV>10</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVHVOH</PG> + <FSC>407</FSC> + <COMP>10</COMP> + <LEV>10</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVHVOH</PG> + <FSC>407</FSC> + <COMP>10</COMP> + <LEV>10</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVHVOH</PG> + <FSC>407</FSC> + <COMP>1</COMP> + <LEV>20</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVHVOH</PG> + <FSC>407</FSC> + <COMP>11</COMP> + <LEV>10</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVHVOH</PG> + <FSC>407</FSC> + <COMP>8</COMP> + <LEV>10</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVHVOH</PG> + <FSC>407</FSC> + <COMP>0</COMP> + <LEV>10</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVHVOH</PG> + <FSC>501</FSC> + <COMP>1</COMP> + <LEV>2</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVHVOH</PG> + <FSC>501</FSC> + <COMP>0</COMP> + <LEV>1</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVHVOH</PG> + <FSC>502</FSC> + <COMP>0</COMP> + <LEV>1</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVHVOH</PG> + <FSC>502</FSC> + <COMP>1</COMP> + <LEV>2</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVHVOH</PG> + <FSC>503</FSC> + <COMP>0</COMP> + <LEV>1</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVHVOH</PG> + <FSC>999</FSC> + <COMP>0</COMP> + <LEV>62</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVHVUG</PG> + <FSC>101</FSC> + <COMP>0</COMP> + <LEV>51</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVHVUG</PG> + <FSC>105</FSC> + <COMP>0</COMP> + <LEV>39</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVHVUG</PG> + <FSC>105</FSC> + <COMP>0</COMP> + <LEV>39</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVHVUG</PG> + <FSC>107</FSC> + <COMP>2</COMP> + <LEV>36</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVHVUG</PG> + <FSC>107</FSC> + <COMP>0</COMP> + <LEV>26</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVHVUG</PG> + <FSC>107</FSC> + <COMP>2</COMP> + <LEV>36</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVHVUG</PG> + <FSC>107</FSC> + <COMP>0</COMP> + <LEV>26</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVHVUG</PG> + <FSC>108</FSC> + <COMP>1</COMP> + <LEV>55</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVHVUG</PG> + <FSC>108</FSC> + <COMP>0</COMP> + <LEV>45</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVHVUG</PG> + <FSC>113</FSC> + <COMP>0</COMP> + <LEV>4</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVHVUG</PG> + <FSC>113</FSC> + <COMP>0</COMP> + <LEV>5</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVHVUG</PG> + <FSC>114</FSC> + <COMP>2</COMP> + <LEV>24</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVHVUG</PG> + <FSC>114</FSC> + <COMP>3</COMP> + <LEV>60</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVHVUG</PG> + <FSC>114</FSC> + <COMP>3</COMP> + <LEV>60</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVHVUG</PG> + <FSC>114</FSC> + <COMP>2</COMP> + <LEV>24</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVHVUG</PG> + <FSC>114</FSC> + <COMP>0</COMP> + <LEV>24</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVHVUG</PG> + <FSC>114</FSC> + <COMP>0</COMP> + <LEV>24</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVHVUG</PG> + <FSC>114</FSC> + <COMP>1</COMP> + <LEV>34</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVHVUG</PG> + <FSC>115</FSC> + <COMP>10</COMP> + <LEV>48</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVHVUG</PG> + <FSC>115</FSC> + <COMP>10</COMP> + <LEV>48</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVHVUG</PG> + <FSC>115</FSC> + <COMP>91</COMP> + <LEV>48</LEV> + <WEIGHT>0</WEIGHT> + <FTYPE>pgTPC_Conductor2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVHVUG</PG> + <FSC>115</FSC> + <COMP>0</COMP> + <LEV>48</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVHVUG</PG> + <FSC>115</FSC> + <COMP>0</COMP> + <LEV>48</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVHVUG</PG> + <FSC>117</FSC> + <COMP>0</COMP> + <LEV>27</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVHVUG</PG> + <FSC>118</FSC> + <COMP>0</COMP> + <LEV>27</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVHVUG</PG> + <FSC>118</FSC> + <COMP>0</COMP> + <LEV>50</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVHVUG</PG> + <FSC>119</FSC> + <COMP>0</COMP> + <LEV>62</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVHVUG</PG> + <FSC>120</FSC> + <COMP>0</COMP> + <LEV>52</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol_circle</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVHVUG</PG> + <FSC>120</FSC> + <COMP>0</COMP> + <LEV>52</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol_circle</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVHVUG</PG> + <FSC>122</FSC> + <COMP>0</COMP> + <LEV>24</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVHVUG</PG> + <FSC>122</FSC> + <COMP>1</COMP> + <LEV>34</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVHVUG</PG> + <FSC>140</FSC> + <COMP>1</COMP> + <LEV>54</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVHVUG</PG> + <FSC>140</FSC> + <COMP>4</COMP> + <LEV>54</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVHVUG</PG> + <FSC>140</FSC> + <COMP>0</COMP> + <LEV>54</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Conductor</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVHVUG</PG> + <FSC>140</FSC> + <COMP>3</COMP> + <LEV>54</LEV> + <WEIGHT>0</WEIGHT> + <FTYPE>pgTPC_Conductor2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVHVUG</PG> + <FSC>140</FSC> + <COMP>4</COMP> + <LEV>54</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVHVUG</PG> + <FSC>140</FSC> + <COMP>2</COMP> + <LEV>54</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVHVUG</PG> + <FSC>140</FSC> + <COMP>0</COMP> + <LEV>54</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVHVUG</PG> + <FSC>140</FSC> + <COMP>2</COMP> + <LEV>54</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVHVUG</PG> + <FSC>140</FSC> + <COMP>1</COMP> + <LEV>54</LEV> + <WEIGHT>0</WEIGHT> + <FTYPE>pgTPC_Conductor2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVHVUG</PG> + <FSC>140</FSC> + <COMP>4</COMP> + <LEV>54</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVHVUG</PG> + <FSC>402</FSC> + <COMP>2</COMP> + <LEV>37</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVHVUG</PG> + <FSC>402</FSC> + <COMP>2</COMP> + <LEV>16</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVHVUG</PG> + <FSC>402</FSC> + <COMP>1</COMP> + <LEV>37</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVHVUG</PG> + <FSC>402</FSC> + <COMP>1</COMP> + <LEV>16</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVHVUG</PG> + <FSC>402</FSC> + <COMP>0</COMP> + <LEV>6</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVHVUG</PG> + <FSC>402</FSC> + <COMP>0</COMP> + <LEV>27</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVHVUG</PG> + <FSC>403</FSC> + <COMP>1</COMP> + <LEV>13</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVHVUG</PG> + <FSC>403</FSC> + <COMP>1</COMP> + <LEV>23</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVHVUG</PG> + <FSC>403</FSC> + <COMP>1</COMP> + <LEV>4</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVHVUG</PG> + <FSC>403</FSC> + <COMP>1</COMP> + <LEV>24</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVHVUG</PG> + <FSC>403</FSC> + <COMP>1</COMP> + <LEV>22</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVHVUG</PG> + <FSC>403</FSC> + <COMP>2</COMP> + <LEV>15</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVHVUG</PG> + <FSC>403</FSC> + <COMP>1</COMP> + <LEV>3</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVHVUG</PG> + <FSC>403</FSC> + <COMP>2</COMP> + <LEV>14</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVHVUG</PG> + <FSC>403</FSC> + <COMP>1</COMP> + <LEV>25</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVHVUG</PG> + <FSC>411</FSC> + <COMP>1</COMP> + <LEV>37</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVHVUG</PG> + <FSC>411</FSC> + <COMP>1</COMP> + <LEV>37</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVHVUG</PG> + <FSC>411</FSC> + <COMP>0</COMP> + <LEV>8</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVHVUG</PG> + <FSC>411</FSC> + <COMP>0</COMP> + <LEV>27</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVHVUG</PG> + <FSC>411</FSC> + <COMP>0</COMP> + <LEV>27</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVHVUG</PG> + <FSC>411</FSC> + <COMP>1</COMP> + <LEV>18</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVHVUG</PG> + <FSC>411</FSC> + <COMP>0</COMP> + <LEV>8</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVHVUG</PG> + <FSC>418</FSC> + <COMP>1</COMP> + <LEV>3</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVHVUG</PG> + <FSC>418</FSC> + <COMP>1</COMP> + <LEV>4</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVHVUG</PG> + <FSC>501</FSC> + <COMP>1</COMP> + <LEV>2</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVHVUG</PG> + <FSC>501</FSC> + <COMP>0</COMP> + <LEV>1</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVHVUG</PG> + <FSC>502</FSC> + <COMP>0</COMP> + <LEV>1</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVHVUG</PG> + <FSC>502</FSC> + <COMP>1</COMP> + <LEV>2</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVHVUG</PG> + <FSC>503</FSC> + <COMP>0</COMP> + <LEV>1</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVHVUG</PG> + <FSC>504</FSC> + <COMP>1</COMP> + <LEV>2</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVHVUG</PG> + <FSC>999</FSC> + <COMP>0</COMP> + <LEV>62</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVMAINHV</PG> + <FSC>100</FSC> + <COMP>0</COMP> + <LEV>60</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVMAINHV</PG> + <FSC>101</FSC> + <COMP>0</COMP> + <LEV>51</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVMAINHV</PG> + <FSC>105</FSC> + <COMP>0</COMP> + <LEV>39</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVMAINHV</PG> + <FSC>106</FSC> + <COMP>0</COMP> + <LEV>3</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Conductor</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVMAINHV</PG> + <FSC>106</FSC> + <COMP>0</COMP> + <LEV>4</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Conductor</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVMAINHV</PG> + <FSC>106</FSC> + <COMP>2</COMP> + <LEV>4</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVMAINHV</PG> + <FSC>106</FSC> + <COMP>1</COMP> + <LEV>3</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVMAINHV</PG> + <FSC>106</FSC> + <COMP>2</COMP> + <LEV>3</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVMAINHV</PG> + <FSC>106</FSC> + <COMP>4</COMP> + <LEV>3</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVMAINHV</PG> + <FSC>106</FSC> + <COMP>1</COMP> + <LEV>4</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVMAINHV</PG> + <FSC>106</FSC> + <COMP>1</COMP> + <LEV>4</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVMAINHV</PG> + <FSC>106</FSC> + <COMP>4</COMP> + <LEV>4</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVMAINHV</PG> + <FSC>107</FSC> + <COMP>0</COMP> + <LEV>26</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVMAINHV</PG> + <FSC>107</FSC> + <COMP>2</COMP> + <LEV>36</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVMAINHV</PG> + <FSC>107</FSC> + <COMP>2</COMP> + <LEV>38</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVMAINHV</PG> + <FSC>107</FSC> + <COMP>0</COMP> + <LEV>28</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVMAINHV</PG> + <FSC>108</FSC> + <COMP>1</COMP> + <LEV>55</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVMAINHV</PG> + <FSC>108</FSC> + <COMP>0</COMP> + <LEV>45</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVMAINHV</PG> + <FSC>114</FSC> + <COMP>2</COMP> + <LEV>22</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVMAINHV</PG> + <FSC>114</FSC> + <COMP>3</COMP> + <LEV>60</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVMAINHV</PG> + <FSC>114</FSC> + <COMP>2</COMP> + <LEV>24</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVMAINHV</PG> + <FSC>114</FSC> + <COMP>0</COMP> + <LEV>24</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVMAINHV</PG> + <FSC>114</FSC> + <COMP>1</COMP> + <LEV>32</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVMAINHV</PG> + <FSC>114</FSC> + <COMP>1</COMP> + <LEV>34</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVMAINHV</PG> + <FSC>114</FSC> + <COMP>0</COMP> + <LEV>22</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVMAINHV</PG> + <FSC>115</FSC> + <COMP>91</COMP> + <LEV>56</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVMAINHV</PG> + <FSC>115</FSC> + <COMP>10</COMP> + <LEV>48</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVMAINHV</PG> + <FSC>115</FSC> + <COMP>0</COMP> + <LEV>48</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVMAINHV</PG> + <FSC>115</FSC> + <COMP>0</COMP> + <LEV>56</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVMAINHV</PG> + <FSC>115</FSC> + <COMP>91</COMP> + <LEV>48</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVMAINHV</PG> + <FSC>115</FSC> + <COMP>1</COMP> + <LEV>56</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVMAINHV</PG> + <FSC>115</FSC> + <COMP>10</COMP> + <LEV>56</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVMAINHV</PG> + <FSC>115</FSC> + <COMP>6</COMP> + <LEV>48</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVMAINHV</PG> + <FSC>115</FSC> + <COMP>1</COMP> + <LEV>58</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVMAINHV</PG> + <FSC>115</FSC> + <COMP>6</COMP> + <LEV>48</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVMAINHV</PG> + <FSC>117</FSC> + <COMP>0</COMP> + <LEV>27</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVMAINHV</PG> + <FSC>118</FSC> + <COMP>0</COMP> + <LEV>50</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVMAINHV</PG> + <FSC>119</FSC> + <COMP>0</COMP> + <LEV>62</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVMAINHV</PG> + <FSC>120</FSC> + <COMP>0</COMP> + <LEV>52</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol_circle</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVMAINHV</PG> + <FSC>122</FSC> + <COMP>1</COMP> + <LEV>34</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVMAINHV</PG> + <FSC>122</FSC> + <COMP>0</COMP> + <LEV>24</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Conductor</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVMAINHV</PG> + <FSC>402</FSC> + <COMP>0</COMP> + <LEV>27</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVMAINHV</PG> + <FSC>402</FSC> + <COMP>1</COMP> + <LEV>37</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVMAINHV</PG> + <FSC>402</FSC> + <COMP>0</COMP> + <LEV>6</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVMAINHV</PG> + <FSC>402</FSC> + <COMP>1</COMP> + <LEV>16</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVMAINHV</PG> + <FSC>402</FSC> + <COMP>2</COMP> + <LEV>16</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVMAINHV</PG> + <FSC>402</FSC> + <COMP>2</COMP> + <LEV>37</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVMAINHV</PG> + <FSC>407</FSC> + <COMP>10</COMP> + <LEV>10</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVMAINHV</PG> + <FSC>407</FSC> + <COMP>11</COMP> + <LEV>10</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVMAINHV</PG> + <FSC>407</FSC> + <COMP>1</COMP> + <LEV>20</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVMAINHV</PG> + <FSC>407</FSC> + <COMP>8</COMP> + <LEV>10</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVMAINHV</PG> + <FSC>407</FSC> + <COMP>0</COMP> + <LEV>10</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVMAINHV</PG> + <FSC>407</FSC> + <COMP>9</COMP> + <LEV>10</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Conductor2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVMAINHV</PG> + <FSC>411</FSC> + <COMP>0</COMP> + <LEV>8</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVMAINHV</PG> + <FSC>411</FSC> + <COMP>1</COMP> + <LEV>18</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVMAINHV</PG> + <FSC>501</FSC> + <COMP>1</COMP> + <LEV>2</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVMAINHV</PG> + <FSC>501</FSC> + <COMP>0</COMP> + <LEV>1</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVMAINHV</PG> + <FSC>502</FSC> + <COMP>0</COMP> + <LEV>1</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVMAINHV</PG> + <FSC>502</FSC> + <COMP>1</COMP> + <LEV>2</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVMAINHV</PG> + <FSC>503</FSC> + <COMP>0</COMP> + <LEV>1</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVMAINHV</PG> + <FSC>504</FSC> + <COMP>1</COMP> + <LEV>2</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVMAINHV</PG> + <FSC>999</FSC> + <COMP>0</COMP> + <LEV>62</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVSUBHV</PG> + <FSC>101</FSC> + <COMP>0</COMP> + <LEV>51</LEV> + <WEIGHT>0</WEIGHT> + <FTYPE>pgTPC_Conductor</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVSUBHV</PG> + <FSC>105</FSC> + <COMP>0</COMP> + <LEV>39</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVSUBHV</PG> + <FSC>106</FSC> + <COMP>2</COMP> + <LEV>3</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVSUBHV</PG> + <FSC>106</FSC> + <COMP>2</COMP> + <LEV>4</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVSUBHV</PG> + <FSC>106</FSC> + <COMP>1</COMP> + <LEV>3</LEV> + <WEIGHT>0</WEIGHT> + <FTYPE>pgTPC_Conductor2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVSUBHV</PG> + <FSC>106</FSC> + <COMP>0</COMP> + <LEV>3</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVSUBHV</PG> + <FSC>106</FSC> + <COMP>1</COMP> + <LEV>4</LEV> + <WEIGHT>0</WEIGHT> + <FTYPE>pgTPC_Conductor2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVSUBHV</PG> + <FSC>106</FSC> + <COMP>4</COMP> + <LEV>3</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVSUBHV</PG> + <FSC>106</FSC> + <COMP>4</COMP> + <LEV>4</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVSUBHV</PG> + <FSC>106</FSC> + <COMP>0</COMP> + <LEV>4</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVSUBHV</PG> + <FSC>107</FSC> + <COMP>0</COMP> + <LEV>26</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVSUBHV</PG> + <FSC>107</FSC> + <COMP>2</COMP> + <LEV>36</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVSUBHV</PG> + <FSC>107</FSC> + <COMP>0</COMP> + <LEV>28</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVSUBHV</PG> + <FSC>107</FSC> + <COMP>2</COMP> + <LEV>38</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVSUBHV</PG> + <FSC>114</FSC> + <COMP>2</COMP> + <LEV>24</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVSUBHV</PG> + <FSC>114</FSC> + <COMP>2</COMP> + <LEV>22</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVSUBHV</PG> + <FSC>114</FSC> + <COMP>0</COMP> + <LEV>22</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVSUBHV</PG> + <FSC>114</FSC> + <COMP>0</COMP> + <LEV>24</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVSUBHV</PG> + <FSC>114</FSC> + <COMP>1</COMP> + <LEV>34</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVSUBHV</PG> + <FSC>114</FSC> + <COMP>3</COMP> + <LEV>60</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVSUBHV</PG> + <FSC>115</FSC> + <COMP>1</COMP> + <LEV>58</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVSUBHV</PG> + <FSC>115</FSC> + <COMP>10</COMP> + <LEV>56</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVSUBHV</PG> + <FSC>115</FSC> + <COMP>91</COMP> + <LEV>56</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVSUBHV</PG> + <FSC>115</FSC> + <COMP>10</COMP> + <LEV>48</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVSUBHV</PG> + <FSC>115</FSC> + <COMP>6</COMP> + <LEV>48</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVSUBHV</PG> + <FSC>115</FSC> + <COMP>91</COMP> + <LEV>48</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVSUBHV</PG> + <FSC>115</FSC> + <COMP>0</COMP> + <LEV>56</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVSUBHV</PG> + <FSC>115</FSC> + <COMP>0</COMP> + <LEV>48</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVSUBHV</PG> + <FSC>115</FSC> + <COMP>1</COMP> + <LEV>56</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVSUBHV</PG> + <FSC>115</FSC> + <COMP>6</COMP> + <LEV>48</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVSUBHV</PG> + <FSC>117</FSC> + <COMP>0</COMP> + <LEV>27</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVSUBHV</PG> + <FSC>120</FSC> + <COMP>0</COMP> + <LEV>52</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol_circle</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVSUBHV</PG> + <FSC>122</FSC> + <COMP>0</COMP> + <LEV>24</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVSUBHV</PG> + <FSC>122</FSC> + <COMP>1</COMP> + <LEV>34</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVSUBHV</PG> + <FSC>407</FSC> + <COMP>0</COMP> + <LEV>10</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVSUBHV</PG> + <FSC>407</FSC> + <COMP>11</COMP> + <LEV>10</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVSUBHV</PG> + <FSC>407</FSC> + <COMP>9</COMP> + <LEV>10</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVSUBHV</PG> + <FSC>407</FSC> + <COMP>1</COMP> + <LEV>20</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVSUBHV</PG> + <FSC>407</FSC> + <COMP>9</COMP> + <LEV>10</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVSUBHV</PG> + <FSC>407</FSC> + <COMP>10</COMP> + <LEV>10</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVSUBHV</PG> + <FSC>411</FSC> + <COMP>0</COMP> + <LEV>27</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVSUBHV</PG> + <FSC>411</FSC> + <COMP>1</COMP> + <LEV>18</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVSUBHV</PG> + <FSC>411</FSC> + <COMP>0</COMP> + <LEV>8</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVSUBHV</PG> + <FSC>411</FSC> + <COMP>1</COMP> + <LEV>37</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVSUBHV</PG> + <FSC>501</FSC> + <COMP>1</COMP> + <LEV>2</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVSUBHV</PG> + <FSC>501</FSC> + <COMP>0</COMP> + <LEV>1</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVSUBHV</PG> + <FSC>502</FSC> + <COMP>0</COMP> + <LEV>1</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVSUBHV</PG> + <FSC>502</FSC> + <COMP>1</COMP> + <LEV>2</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVSUBHV</PG> + <FSC>503</FSC> + <COMP>0</COMP> + <LEV>1</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVSUBHV</PG> + <FSC>504</FSC> + <COMP>1</COMP> + <LEV>2</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pg22KVSUBHV</PG> + <FSC>999</FSC> + <COMP>0</COMP> + <LEV>62</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgCLS</PG> + <FSC>203</FSC> + <COMP>1</COMP> + <LEV>37</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgCLS</PG> + <FSC>203</FSC> + <COMP>0</COMP> + <LEV>38</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgCLS</PG> + <FSC>203</FSC> + <COMP>1</COMP> + <LEV>38</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgCLS</PG> + <FSC>203</FSC> + <COMP>0</COMP> + <LEV>37</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgCLS</PG> + <FSC>311</FSC> + <COMP>1</COMP> + <LEV>45</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgCLS</PG> + <FSC>311</FSC> + <COMP>1</COMP> + <LEV>45</LEV> + <WEIGHT>0</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgCLS</PG> + <FSC>311</FSC> + <COMP>0</COMP> + <LEV>45</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgCLS</PG> + <FSC>501</FSC> + <COMP>0</COMP> + <LEV>1</LEV> + <FTYPE>pgTPC_Conductor</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgCLS</PG> + <FSC>501</FSC> + <COMP>1</COMP> + <LEV>2</LEV> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgCLS</PG> + <FSC>502</FSC> + <COMP>0</COMP> + <LEV>1</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgCLS</PG> + <FSC>502</FSC> + <COMP>1</COMP> + <LEV>2</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgCLS</PG> + <FSC>503</FSC> + <COMP>0</COMP> + <LEV>1</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgCLS</PG> + <FSC>999</FSC> + <COMP>0</COMP> + <LEV>62</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgFIBER</PG> + <FSC>300</FSC> + <COMP>0</COMP> + <LEV>10</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Conductor</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgFIBER</PG> + <FSC>300</FSC> + <COMP>2</COMP> + <LEV>11</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgFIBER</PG> + <FSC>300</FSC> + <COMP>3</COMP> + <LEV>11</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgFIBER</PG> + <FSC>319</FSC> + <COMP>0</COMP> + <LEV>12</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgFIBER</PG> + <FSC>320</FSC> + <COMP>0</COMP> + <LEV>13</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgFIBER</PG> + <FSC>323</FSC> + <COMP>0</COMP> + <LEV>1</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgFIBER</PG> + <FSC>324</FSC> + <COMP>1</COMP> + <LEV>2</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgFIBER</PG> + <FSC>324</FSC> + <COMP>0</COMP> + <LEV>1</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgFIBER</PG> + <FSC>402</FSC> + <COMP>1</COMP> + <LEV>16</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgFIBER</PG> + <FSC>402</FSC> + <COMP>1</COMP> + <LEV>37</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgFIBER</PG> + <FSC>402</FSC> + <COMP>1</COMP> + <LEV>15</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgFIBER</PG> + <FSC>402</FSC> + <COMP>0</COMP> + <LEV>6</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgFIBER</PG> + <FSC>402</FSC> + <COMP>0</COMP> + <LEV>27</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgFIBER</PG> + <FSC>402</FSC> + <COMP>0</COMP> + <LEV>5</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgFIBER</PG> + <FSC>403</FSC> + <COMP>7</COMP> + <LEV>45</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgFIBER</PG> + <FSC>403</FSC> + <COMP>6</COMP> + <LEV>45</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgFIBER</PG> + <FSC>501</FSC> + <COMP>0</COMP> + <LEV>1</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgFIBER</PG> + <FSC>501</FSC> + <COMP>1</COMP> + <LEV>2</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgFIBER</PG> + <FSC>502</FSC> + <COMP>0</COMP> + <LEV>1</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgFIBER</PG> + <FSC>502</FSC> + <COMP>1</COMP> + <LEV>2</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgFIBER</PG> + <FSC>503</FSC> + <COMP>0</COMP> + <LEV>1</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgFIBER</PG> + <FSC>999</FSC> + <COMP>0</COMP> + <LEV>62</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHICUSTOMER</PG> + <FSC>107</FSC> + <COMP>2</COMP> + <LEV>36</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHICUSTOMER</PG> + <FSC>107</FSC> + <COMP>0</COMP> + <LEV>25</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHICUSTOMER</PG> + <FSC>107</FSC> + <COMP>0</COMP> + <LEV>26</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHICUSTOMER</PG> + <FSC>107</FSC> + <COMP>0</COMP> + <LEV>26</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHICUSTOMER</PG> + <FSC>107</FSC> + <COMP>0</COMP> + <LEV>21</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHICUSTOMER</PG> + <FSC>107</FSC> + <COMP>2</COMP> + <LEV>0</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHICUSTOMER</PG> + <FSC>107</FSC> + <COMP>2</COMP> + <LEV>35</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHICUSTOMER</PG> + <FSC>107</FSC> + <COMP>0</COMP> + <LEV>25</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHICUSTOMER</PG> + <FSC>107</FSC> + <COMP>2</COMP> + <LEV>35</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHICUSTOMER</PG> + <FSC>107</FSC> + <COMP>2</COMP> + <LEV>25</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHICUSTOMER</PG> + <FSC>107</FSC> + <COMP>2</COMP> + <LEV>37</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHICUSTOMER</PG> + <FSC>107</FSC> + <COMP>2</COMP> + <LEV>26</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHICUSTOMER</PG> + <FSC>107</FSC> + <COMP>2</COMP> + <LEV>36</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHLVPIPE</PG> + <FSC>202</FSC> + <COMP>1</COMP> + <LEV>35</LEV> + <WEIGHT>0</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHLVPIPE</PG> + <FSC>202</FSC> + <COMP>0</COMP> + <LEV>35</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHLVPIPE</PG> + <FSC>203</FSC> + <COMP>0</COMP> + <LEV>1</LEV> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHLVPIPE</PG> + <FSC>203</FSC> + <COMP>1</COMP> + <LEV>37</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHLVPIPE</PG> + <FSC>203</FSC> + <COMP>0</COMP> + <LEV>37</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHLVPIPE</PG> + <FSC>206</FSC> + <COMP>0</COMP> + <LEV>1</LEV> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHLVPIPE</PG> + <FSC>206</FSC> + <COMP>1</COMP> + <LEV>1</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHLVPIPE</PG> + <FSC>206</FSC> + <COMP>2</COMP> + <LEV>1</LEV> + <WEIGHT>0</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHLVPIPE</PG> + <FSC>207</FSC> + <COMP>1</COMP> + <LEV>1</LEV> + <WEIGHT>0</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHLVPIPE</PG> + <FSC>207</FSC> + <COMP>0</COMP> + <LEV>1</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHLVPIPE</PG> + <FSC>209</FSC> + <COMP>0</COMP> + <LEV>45</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHLVPIPE</PG> + <FSC>216</FSC> + <COMP>0</COMP> + <LEV>1</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHLVPIPE</PG> + <FSC>216</FSC> + <COMP>2</COMP> + <LEV>1</LEV> + <WEIGHT>0</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHLVPIPE</PG> + <FSC>216</FSC> + <COMP>1</COMP> + <LEV>1</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHLVPIPE</PG> + <FSC>401</FSC> + <COMP>3</COMP> + <LEV>4</LEV> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHLVPIPE</PG> + <FSC>401</FSC> + <COMP>2</COMP> + <LEV>4</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHLVPIPE</PG> + <FSC>401</FSC> + <COMP>5</COMP> + <LEV>4</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHLVPIPE</PG> + <FSC>401</FSC> + <COMP>2</COMP> + <LEV>11</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHLVPIPE</PG> + <FSC>401</FSC> + <COMP>3</COMP> + <LEV>11</LEV> + <WEIGHT>0</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHLVPIPE</PG> + <FSC>401</FSC> + <COMP>0</COMP> + <LEV>4</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Conductor</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHLVPIPE</PG> + <FSC>401</FSC> + <COMP>1</COMP> + <LEV>11</LEV> + <WEIGHT>0</WEIGHT> + <FTYPE>pgTPC_Conductor2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHLVPIPE</PG> + <FSC>401</FSC> + <COMP>1</COMP> + <LEV>4</LEV> + <WEIGHT>0</WEIGHT> + <FTYPE>pgTPC_Conductor2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHLVPIPE</PG> + <FSC>401</FSC> + <COMP>0</COMP> + <LEV>11</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_dotted_line</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHLVPIPE</PG> + <FSC>401</FSC> + <COMP>5</COMP> + <LEV>11</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHLVPIPE</PG> + <FSC>402</FSC> + <COMP>0</COMP> + <LEV>5</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHLVPIPE</PG> + <FSC>402</FSC> + <COMP>1</COMP> + <LEV>15</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHLVPIPE</PG> + <FSC>402</FSC> + <COMP>2</COMP> + <LEV>37</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHLVPIPE</PG> + <FSC>402</FSC> + <COMP>0</COMP> + <LEV>27</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHLVPIPE</PG> + <FSC>402</FSC> + <COMP>2</COMP> + <LEV>15</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHLVPIPE</PG> + <FSC>402</FSC> + <COMP>2</COMP> + <LEV>16</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHLVPIPE</PG> + <FSC>402</FSC> + <COMP>0</COMP> + <LEV>6</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHLVPIPE</PG> + <FSC>402</FSC> + <COMP>1</COMP> + <LEV>16</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHLVPIPE</PG> + <FSC>402</FSC> + <COMP>1</COMP> + <LEV>37</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHLVPIPE</PG> + <FSC>403</FSC> + <COMP>0</COMP> + <LEV>24</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHLVPIPE</PG> + <FSC>403</FSC> + <COMP>1</COMP> + <LEV>24</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHLVPIPE</PG> + <FSC>403</FSC> + <COMP>0</COMP> + <LEV>3</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHLVPIPE</PG> + <FSC>403</FSC> + <COMP>0</COMP> + <LEV>11</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHLVPIPE</PG> + <FSC>403</FSC> + <COMP>1</COMP> + <LEV>22</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHLVPIPE</PG> + <FSC>403</FSC> + <COMP>1</COMP> + <LEV>23</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHLVPIPE</PG> + <FSC>403</FSC> + <COMP>0</COMP> + <LEV>23</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHLVPIPE</PG> + <FSC>403</FSC> + <COMP>0</COMP> + <LEV>22</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHLVPIPE</PG> + <FSC>403</FSC> + <COMP>1</COMP> + <LEV>13</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHLVPIPE</PG> + <FSC>403</FSC> + <COMP>1</COMP> + <LEV>4</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHLVPIPE</PG> + <FSC>403</FSC> + <COMP>1</COMP> + <LEV>11</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHLVPIPE</PG> + <FSC>403</FSC> + <COMP>1</COMP> + <LEV>3</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHLVPIPE</PG> + <FSC>403</FSC> + <COMP>0</COMP> + <LEV>13</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHLVPIPE</PG> + <FSC>403</FSC> + <COMP>0</COMP> + <LEV>4</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHLVPIPE</PG> + <FSC>403</FSC> + <COMP>0</COMP> + <LEV>25</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHLVPIPE</PG> + <FSC>403</FSC> + <COMP>1</COMP> + <LEV>25</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHLVPIPE</PG> + <FSC>405</FSC> + <COMP>1</COMP> + <LEV>3</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHLVPIPE</PG> + <FSC>405</FSC> + <COMP>0</COMP> + <LEV>1</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHLVPIPE</PG> + <FSC>405</FSC> + <COMP>1</COMP> + <LEV>1</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHLVPIPE</PG> + <FSC>405</FSC> + <COMP>0</COMP> + <LEV>2</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHLVPIPE</PG> + <FSC>405</FSC> + <COMP>1</COMP> + <LEV>2</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHLVPIPE</PG> + <FSC>405</FSC> + <COMP>0</COMP> + <LEV>3</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHLVPIPE</PG> + <FSC>407</FSC> + <COMP>2</COMP> + <LEV>9</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHLVPIPE</PG> + <FSC>407</FSC> + <COMP>2</COMP> + <LEV>9</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHLVPIPE</PG> + <FSC>407</FSC> + <COMP>2</COMP> + <LEV>10</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHLVPIPE</PG> + <FSC>407</FSC> + <COMP>7</COMP> + <LEV>10</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHLVPIPE</PG> + <FSC>407</FSC> + <COMP>7</COMP> + <LEV>9</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHLVPIPE</PG> + <FSC>407</FSC> + <COMP>7</COMP> + <LEV>9</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHLVPIPE</PG> + <FSC>407</FSC> + <COMP>3</COMP> + <LEV>19</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHLVPIPE</PG> + <FSC>407</FSC> + <COMP>3</COMP> + <LEV>19</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHLVPIPE</PG> + <FSC>407</FSC> + <COMP>3</COMP> + <LEV>20</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHLVPIPE</PG> + <FSC>411</FSC> + <COMP>3</COMP> + <LEV>37</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHLVPIPE</PG> + <FSC>411</FSC> + <COMP>7</COMP> + <LEV>7</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHLVPIPE</PG> + <FSC>411</FSC> + <COMP>2</COMP> + <LEV>7</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHLVPIPE</PG> + <FSC>411</FSC> + <COMP>2</COMP> + <LEV>27</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHLVPIPE</PG> + <FSC>411</FSC> + <COMP>2</COMP> + <LEV>8</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHLVPIPE</PG> + <FSC>411</FSC> + <COMP>2</COMP> + <LEV>8</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHLVPIPE</PG> + <FSC>411</FSC> + <COMP>3</COMP> + <LEV>17</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHLVPIPE</PG> + <FSC>411</FSC> + <COMP>7</COMP> + <LEV>7</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHLVPIPE</PG> + <FSC>411</FSC> + <COMP>3</COMP> + <LEV>37</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHLVPIPE</PG> + <FSC>411</FSC> + <COMP>2</COMP> + <LEV>7</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHLVPIPE</PG> + <FSC>411</FSC> + <COMP>3</COMP> + <LEV>18</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHLVPIPE</PG> + <FSC>411</FSC> + <COMP>3</COMP> + <LEV>18</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHLVPIPE</PG> + <FSC>411</FSC> + <COMP>7</COMP> + <LEV>7</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHLVPIPE</PG> + <FSC>411</FSC> + <COMP>7</COMP> + <LEV>7</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHLVPIPE</PG> + <FSC>411</FSC> + <COMP>7</COMP> + <LEV>8</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHLVPIPE</PG> + <FSC>411</FSC> + <COMP>3</COMP> + <LEV>17</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHLVPIPE</PG> + <FSC>411</FSC> + <COMP>7</COMP> + <LEV>8</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHLVPIPE</PG> + <FSC>411</FSC> + <COMP>2</COMP> + <LEV>27</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHLVPIPE</PG> + <FSC>418</FSC> + <COMP>0</COMP> + <LEV>4</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHLVPIPE</PG> + <FSC>418</FSC> + <COMP>1</COMP> + <LEV>4</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHLVPIPE</PG> + <FSC>418</FSC> + <COMP>0</COMP> + <LEV>11</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHLVPIPE</PG> + <FSC>418</FSC> + <COMP>0</COMP> + <LEV>3</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHLVPIPE</PG> + <FSC>418</FSC> + <COMP>1</COMP> + <LEV>11</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHLVPIPE</PG> + <FSC>418</FSC> + <COMP>1</COMP> + <LEV>3</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHLVPIPE</PG> + <FSC>420</FSC> + <COMP>1</COMP> + <LEV>2</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHLVPIPE</PG> + <FSC>420</FSC> + <COMP>0</COMP> + <LEV>54</LEV> + <WEIGHT>3</WEIGHT> + <FTYPE>pgTPC_Conductor</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHLVPIPE</PG> + <FSC>421</FSC> + <COMP>1</COMP> + <LEV>2</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHLVPIPE</PG> + <FSC>421</FSC> + <COMP>0</COMP> + <LEV>1</LEV> + <WEIGHT>3</WEIGHT> + <FTYPE>pgTPC_Conductor</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHLVPIPE</PG> + <FSC>423</FSC> + <COMP>1</COMP> + <LEV>12</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHLVPIPE</PG> + <FSC>423</FSC> + <COMP>1</COMP> + <LEV>4</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHLVPIPE</PG> + <FSC>423</FSC> + <COMP>3</COMP> + <LEV>11</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHLVPIPE</PG> + <FSC>423</FSC> + <COMP>4</COMP> + <LEV>12</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHLVPIPE</PG> + <FSC>423</FSC> + <COMP>3</COMP> + <LEV>12</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHLVPIPE</PG> + <FSC>423</FSC> + <COMP>2</COMP> + <LEV>4</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHLVPIPE</PG> + <FSC>423</FSC> + <COMP>0</COMP> + <LEV>4</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHLVPIPE</PG> + <FSC>423</FSC> + <COMP>3</COMP> + <LEV>4</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHLVPIPE</PG> + <FSC>423</FSC> + <COMP>2</COMP> + <LEV>11</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHLVPIPE</PG> + <FSC>423</FSC> + <COMP>1</COMP> + <LEV>11</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHLVPIPE</PG> + <FSC>423</FSC> + <COMP>0</COMP> + <LEV>11</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHLVPIPE</PG> + <FSC>423</FSC> + <COMP>2</COMP> + <LEV>12</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHLVPIPE</PG> + <FSC>423</FSC> + <COMP>4</COMP> + <LEV>4</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHLVPIPE</PG> + <FSC>423</FSC> + <COMP>0</COMP> + <LEV>12</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHLVPIPE</PG> + <FSC>423</FSC> + <COMP>4</COMP> + <LEV>11</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHLVPIPE</PG> + <FSC>424</FSC> + <COMP>1</COMP> + <LEV>5</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHLVPIPE</PG> + <FSC>424</FSC> + <COMP>0</COMP> + <LEV>1</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHLVPIPE</PG> + <FSC>424</FSC> + <COMP>1</COMP> + <LEV>5</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHLVPIPE</PG> + <FSC>424</FSC> + <COMP>0</COMP> + <LEV>1</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHLVPIPE</PG> + <FSC>501</FSC> + <COMP>1</COMP> + <LEV>2</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHLVPIPE</PG> + <FSC>501</FSC> + <COMP>0</COMP> + <LEV>1</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHLVPIPE</PG> + <FSC>501</FSC> + <COMP>0</COMP> + <LEV>1</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHLVPIPE</PG> + <FSC>502</FSC> + <COMP>0</COMP> + <LEV>1</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHLVPIPE</PG> + <FSC>502</FSC> + <COMP>1</COMP> + <LEV>2</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHLVPIPE</PG> + <FSC>503</FSC> + <COMP>0</COMP> + <LEV>1</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHLVPIPE</PG> + <FSC>999</FSC> + <COMP>0</COMP> + <LEV>62</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHVPIPE</PG> + <FSC>401</FSC> + <COMP>1</COMP> + <LEV>4</LEV> + <WEIGHT>0</WEIGHT> + <FTYPE>pgTPC_Conductor2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHVPIPE</PG> + <FSC>401</FSC> + <COMP>3</COMP> + <LEV>4</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHVPIPE</PG> + <FSC>401</FSC> + <COMP>0</COMP> + <LEV>4</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Conductor</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHVPIPE</PG> + <FSC>401</FSC> + <COMP>5</COMP> + <LEV>4</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHVPIPE</PG> + <FSC>401</FSC> + <COMP>2</COMP> + <LEV>4</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHVPIPE</PG> + <FSC>402</FSC> + <COMP>0</COMP> + <LEV>5</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHVPIPE</PG> + <FSC>402</FSC> + <COMP>1</COMP> + <LEV>15</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHVPIPE</PG> + <FSC>402</FSC> + <COMP>2</COMP> + <LEV>37</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHVPIPE</PG> + <FSC>402</FSC> + <COMP>0</COMP> + <LEV>27</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHVPIPE</PG> + <FSC>402</FSC> + <COMP>1</COMP> + <LEV>37</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHVPIPE</PG> + <FSC>402</FSC> + <COMP>0</COMP> + <LEV>6</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHVPIPE</PG> + <FSC>402</FSC> + <COMP>1</COMP> + <LEV>16</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHVPIPE</PG> + <FSC>402</FSC> + <COMP>2</COMP> + <LEV>15</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHVPIPE</PG> + <FSC>402</FSC> + <COMP>2</COMP> + <LEV>16</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHVPIPE</PG> + <FSC>403</FSC> + <COMP>0</COMP> + <LEV>22</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHVPIPE</PG> + <FSC>403</FSC> + <COMP>1</COMP> + <LEV>24</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHVPIPE</PG> + <FSC>403</FSC> + <COMP>1</COMP> + <LEV>23</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHVPIPE</PG> + <FSC>403</FSC> + <COMP>1</COMP> + <LEV>22</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHVPIPE</PG> + <FSC>403</FSC> + <COMP>0</COMP> + <LEV>24</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHVPIPE</PG> + <FSC>403</FSC> + <COMP>0</COMP> + <LEV>23</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHVPIPE</PG> + <FSC>403</FSC> + <COMP>1</COMP> + <LEV>13</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHVPIPE</PG> + <FSC>403</FSC> + <COMP>1</COMP> + <LEV>4</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHVPIPE</PG> + <FSC>403</FSC> + <COMP>1</COMP> + <LEV>3</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHVPIPE</PG> + <FSC>403</FSC> + <COMP>0</COMP> + <LEV>3</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHVPIPE</PG> + <FSC>403</FSC> + <COMP>0</COMP> + <LEV>13</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHVPIPE</PG> + <FSC>403</FSC> + <COMP>0</COMP> + <LEV>4</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHVPIPE</PG> + <FSC>403</FSC> + <COMP>0</COMP> + <LEV>25</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHVPIPE</PG> + <FSC>403</FSC> + <COMP>1</COMP> + <LEV>25</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHVPIPE</PG> + <FSC>405</FSC> + <COMP>1</COMP> + <LEV>3</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHVPIPE</PG> + <FSC>405</FSC> + <COMP>0</COMP> + <LEV>1</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHVPIPE</PG> + <FSC>405</FSC> + <COMP>0</COMP> + <LEV>2</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHVPIPE</PG> + <FSC>405</FSC> + <COMP>0</COMP> + <LEV>3</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHVPIPE</PG> + <FSC>405</FSC> + <COMP>1</COMP> + <LEV>1</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHVPIPE</PG> + <FSC>405</FSC> + <COMP>1</COMP> + <LEV>2</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHVPIPE</PG> + <FSC>407</FSC> + <COMP>2</COMP> + <LEV>9</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHVPIPE</PG> + <FSC>407</FSC> + <COMP>2</COMP> + <LEV>9</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHVPIPE</PG> + <FSC>407</FSC> + <COMP>7</COMP> + <LEV>9</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHVPIPE</PG> + <FSC>407</FSC> + <COMP>7</COMP> + <LEV>10</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHVPIPE</PG> + <FSC>407</FSC> + <COMP>7</COMP> + <LEV>9</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHVPIPE</PG> + <FSC>407</FSC> + <COMP>3</COMP> + <LEV>19</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHVPIPE</PG> + <FSC>407</FSC> + <COMP>3</COMP> + <LEV>19</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHVPIPE</PG> + <FSC>407</FSC> + <COMP>2</COMP> + <LEV>10</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHVPIPE</PG> + <FSC>407</FSC> + <COMP>3</COMP> + <LEV>20</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHVPIPE</PG> + <FSC>411</FSC> + <COMP>2</COMP> + <LEV>27</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHVPIPE</PG> + <FSC>411</FSC> + <COMP>2</COMP> + <LEV>7</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHVPIPE</PG> + <FSC>411</FSC> + <COMP>2</COMP> + <LEV>27</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHVPIPE</PG> + <FSC>411</FSC> + <COMP>2</COMP> + <LEV>8</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHVPIPE</PG> + <FSC>411</FSC> + <COMP>2</COMP> + <LEV>8</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHVPIPE</PG> + <FSC>411</FSC> + <COMP>3</COMP> + <LEV>17</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHVPIPE</PG> + <FSC>411</FSC> + <COMP>3</COMP> + <LEV>17</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHVPIPE</PG> + <FSC>411</FSC> + <COMP>7</COMP> + <LEV>8</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHVPIPE</PG> + <FSC>411</FSC> + <COMP>3</COMP> + <LEV>37</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHVPIPE</PG> + <FSC>411</FSC> + <COMP>7</COMP> + <LEV>7</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHVPIPE</PG> + <FSC>411</FSC> + <COMP>3</COMP> + <LEV>37</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHVPIPE</PG> + <FSC>411</FSC> + <COMP>3</COMP> + <LEV>18</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHVPIPE</PG> + <FSC>411</FSC> + <COMP>7</COMP> + <LEV>7</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHVPIPE</PG> + <FSC>411</FSC> + <COMP>3</COMP> + <LEV>18</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHVPIPE</PG> + <FSC>411</FSC> + <COMP>2</COMP> + <LEV>7</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHVPIPE</PG> + <FSC>418</FSC> + <COMP>1</COMP> + <LEV>3</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHVPIPE</PG> + <FSC>418</FSC> + <COMP>1</COMP> + <LEV>4</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHVPIPE</PG> + <FSC>418</FSC> + <COMP>0</COMP> + <LEV>4</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHVPIPE</PG> + <FSC>420</FSC> + <COMP>1</COMP> + <LEV>2</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHVPIPE</PG> + <FSC>420</FSC> + <COMP>0</COMP> + <LEV>54</LEV> + <WEIGHT>3</WEIGHT> + <FTYPE>pgTPC_Conductor</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHVPIPE</PG> + <FSC>421</FSC> + <COMP>1</COMP> + <LEV>2</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHVPIPE</PG> + <FSC>421</FSC> + <COMP>0</COMP> + <LEV>1</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHVPIPE</PG> + <FSC>423</FSC> + <COMP>4</COMP> + <LEV>4</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHVPIPE</PG> + <FSC>423</FSC> + <COMP>2</COMP> + <LEV>4</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHVPIPE</PG> + <FSC>423</FSC> + <COMP>3</COMP> + <LEV>4</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHVPIPE</PG> + <FSC>423</FSC> + <COMP>0</COMP> + <LEV>4</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHVPIPE</PG> + <FSC>423</FSC> + <COMP>1</COMP> + <LEV>4</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHVPIPE</PG> + <FSC>424</FSC> + <COMP>0</COMP> + <LEV>1</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHVPIPE</PG> + <FSC>424</FSC> + <COMP>1</COMP> + <LEV>5</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHVPIPE</PG> + <FSC>501</FSC> + <COMP>0</COMP> + <LEV>1</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHVPIPE</PG> + <FSC>501</FSC> + <COMP>1</COMP> + <LEV>2</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHVPIPE</PG> + <FSC>502</FSC> + <COMP>0</COMP> + <LEV>1</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHVPIPE</PG> + <FSC>502</FSC> + <COMP>1</COMP> + <LEV>2</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHVPIPE</PG> + <FSC>503</FSC> + <COMP>0</COMP> + <LEV>1</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHVPIPE</PG> + <FSC>504</FSC> + <COMP>1</COMP> + <LEV>2</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgHVPIPE</PG> + <FSC>999</FSC> + <COMP>0</COMP> + <LEV>62</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLINEFEATURE</PG> + <FSC>102</FSC> + <COMP>0</COMP> + <LEV>30</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLINEFEATURE</PG> + <FSC>102</FSC> + <COMP>0</COMP> + <LEV>40</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLINEFEATURE</PG> + <FSC>102</FSC> + <COMP>0</COMP> + <LEV>40</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLINEFEATURE</PG> + <FSC>102</FSC> + <COMP>0</COMP> + <LEV>30</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLINEFEATURE</PG> + <FSC>115</FSC> + <COMP>10</COMP> + <LEV>48</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLINEFEATURE</PG> + <FSC>115</FSC> + <COMP>10</COMP> + <LEV>48</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLINEFEATURE</PG> + <FSC>115</FSC> + <COMP>91</COMP> + <LEV>48</LEV> + <WEIGHT>0</WEIGHT> + <FTYPE>pgTPC_Conductor2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLINEFEATURE</PG> + <FSC>115</FSC> + <COMP>1</COMP> + <LEV>56</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLINEFEATURE</PG> + <FSC>115</FSC> + <COMP>1</COMP> + <LEV>56</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLINEFEATURE</PG> + <FSC>115</FSC> + <COMP>91</COMP> + <LEV>56</LEV> + <WEIGHT>0</WEIGHT> + <FTYPE>pgTPC_Conductor2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLINEFEATURE</PG> + <FSC>115</FSC> + <COMP>10</COMP> + <LEV>56</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLINEFEATURE</PG> + <FSC>115</FSC> + <COMP>1</COMP> + <LEV>46</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLINEFEATURE</PG> + <FSC>115</FSC> + <COMP>10</COMP> + <LEV>56</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLINEFEATURE</PG> + <FSC>115</FSC> + <COMP>0</COMP> + <LEV>46</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLINEFEATURE</PG> + <FSC>115</FSC> + <COMP>10</COMP> + <LEV>47</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLINEFEATURE</PG> + <FSC>115</FSC> + <COMP>10</COMP> + <LEV>47</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLINEFEATURE</PG> + <FSC>115</FSC> + <COMP>10</COMP> + <LEV>46</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLINEFEATURE</PG> + <FSC>115</FSC> + <COMP>10</COMP> + <LEV>46</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLINEFEATURE</PG> + <FSC>115</FSC> + <COMP>1</COMP> + <LEV>56</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLINEFEATURE</PG> + <FSC>115</FSC> + <COMP>0</COMP> + <LEV>46</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLINEFEATURE</PG> + <FSC>115</FSC> + <COMP>0</COMP> + <LEV>56</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLINEFEATURE</PG> + <FSC>115</FSC> + <COMP>1</COMP> + <LEV>46</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLINEFEATURE</PG> + <FSC>115</FSC> + <COMP>91</COMP> + <LEV>47</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLINEFEATURE</PG> + <FSC>115</FSC> + <COMP>0</COMP> + <LEV>47</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLINEFEATURE</PG> + <FSC>115</FSC> + <COMP>0</COMP> + <LEV>47</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLINEFEATURE</PG> + <FSC>115</FSC> + <COMP>0</COMP> + <LEV>48</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLINEFEATURE</PG> + <FSC>115</FSC> + <COMP>0</COMP> + <LEV>48</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLINEFEATURE</PG> + <FSC>117</FSC> + <COMP>0</COMP> + <LEV>27</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVOH</PG> + <FSC>115</FSC> + <COMP>5</COMP> + <LEV>50</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVOH</PG> + <FSC>115</FSC> + <COMP>4</COMP> + <LEV>50</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVOH</PG> + <FSC>115</FSC> + <COMP>6</COMP> + <LEV>57</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVOH</PG> + <FSC>115</FSC> + <COMP>3</COMP> + <LEV>50</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVOH</PG> + <FSC>115</FSC> + <COMP>7</COMP> + <LEV>58</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVOH</PG> + <FSC>115</FSC> + <COMP>2</COMP> + <LEV>50</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVOH</PG> + <FSC>200</FSC> + <COMP>0</COMP> + <LEV>28</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVOH</PG> + <FSC>200</FSC> + <COMP>0</COMP> + <LEV>30</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVOH</PG> + <FSC>202</FSC> + <COMP>1</COMP> + <LEV>36</LEV> + <WEIGHT>0</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVOH</PG> + <FSC>202</FSC> + <COMP>0</COMP> + <LEV>36</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVOH</PG> + <FSC>203</FSC> + <COMP>1</COMP> + <LEV>38</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVOH</PG> + <FSC>203</FSC> + <COMP>0</COMP> + <LEV>38</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVOH</PG> + <FSC>204</FSC> + <COMP>0</COMP> + <LEV>49</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVOH</PG> + <FSC>205</FSC> + <COMP>2</COMP> + <LEV>41</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVOH</PG> + <FSC>205</FSC> + <COMP>0</COMP> + <LEV>39</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_dotted_line</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVOH</PG> + <FSC>206</FSC> + <COMP>0</COMP> + <LEV>2</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVOH</PG> + <FSC>206</FSC> + <COMP>1</COMP> + <LEV>2</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVOH</PG> + <FSC>206</FSC> + <COMP>2</COMP> + <LEV>2</LEV> + <WEIGHT>0</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVOH</PG> + <FSC>207</FSC> + <COMP>0</COMP> + <LEV>2</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVOH</PG> + <FSC>207</FSC> + <COMP>1</COMP> + <LEV>2</LEV> + <WEIGHT>0</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVOH</PG> + <FSC>208</FSC> + <COMP>0</COMP> + <LEV>44</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVOH</PG> + <FSC>209</FSC> + <COMP>0</COMP> + <LEV>46</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVOH</PG> + <FSC>211</FSC> + <COMP>0</COMP> + <LEV>32</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_dotted_line</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVOH</PG> + <FSC>211</FSC> + <COMP>1</COMP> + <LEV>34</LEV> + <WEIGHT>0</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVOH</PG> + <FSC>211</FSC> + <COMP>2</COMP> + <LEV>34</LEV> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVOH</PG> + <FSC>212</FSC> + <COMP>0</COMP> + <LEV>32</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVOH</PG> + <FSC>212</FSC> + <COMP>1</COMP> + <LEV>34</LEV> + <WEIGHT>0</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVOH</PG> + <FSC>216</FSC> + <COMP>2</COMP> + <LEV>2</LEV> + <WEIGHT>0</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVOH</PG> + <FSC>216</FSC> + <COMP>0</COMP> + <LEV>2</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVOH</PG> + <FSC>216</FSC> + <COMP>1</COMP> + <LEV>2</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVOH</PG> + <FSC>303</FSC> + <COMP>0</COMP> + <LEV>29</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVOH</PG> + <FSC>305</FSC> + <COMP>0</COMP> + <LEV>34</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVOH</PG> + <FSC>306</FSC> + <COMP>0</COMP> + <LEV>36</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVOH</PG> + <FSC>307</FSC> + <COMP>0</COMP> + <LEV>38</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVOH</PG> + <FSC>308</FSC> + <COMP>0</COMP> + <LEV>40</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVOH</PG> + <FSC>314</FSC> + <COMP>1</COMP> + <LEV>28</LEV> + <WEIGHT>0</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVOH</PG> + <FSC>314</FSC> + <COMP>0</COMP> + <LEV>26</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVOH</PG> + <FSC>315</FSC> + <COMP>1</COMP> + <LEV>28</LEV> + <WEIGHT>0</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVOH</PG> + <FSC>315</FSC> + <COMP>0</COMP> + <LEV>26</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVOH</PG> + <FSC>316</FSC> + <COMP>0</COMP> + <LEV>54</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVOH</PG> + <FSC>317</FSC> + <COMP>1</COMP> + <LEV>32</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVOH</PG> + <FSC>317</FSC> + <COMP>0</COMP> + <LEV>32</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVOH</PG> + <FSC>318</FSC> + <COMP>0</COMP> + <LEV>54</LEV> + <WEIGHT>4</WEIGHT> + <FTYPE>pgTPC_Conductor</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVOH</PG> + <FSC>402</FSC> + <COMP>0</COMP> + <LEV>5</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVOH</PG> + <FSC>402</FSC> + <COMP>1</COMP> + <LEV>15</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVOH</PG> + <FSC>402</FSC> + <COMP>2</COMP> + <LEV>37</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVOH</PG> + <FSC>402</FSC> + <COMP>0</COMP> + <LEV>27</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVOH</PG> + <FSC>402</FSC> + <COMP>1</COMP> + <LEV>37</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVOH</PG> + <FSC>402</FSC> + <COMP>2</COMP> + <LEV>15</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVOH</PG> + <FSC>402</FSC> + <COMP>0</COMP> + <LEV>6</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVOH</PG> + <FSC>402</FSC> + <COMP>1</COMP> + <LEV>16</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVOH</PG> + <FSC>402</FSC> + <COMP>2</COMP> + <LEV>16</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVOH</PG> + <FSC>407</FSC> + <COMP>1</COMP> + <LEV>19</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVOH</PG> + <FSC>407</FSC> + <COMP>1</COMP> + <LEV>9</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVOH</PG> + <FSC>407</FSC> + <COMP>0</COMP> + <LEV>10</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVOH</PG> + <FSC>407</FSC> + <COMP>0</COMP> + <LEV>9</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVOH</PG> + <FSC>407</FSC> + <COMP>1</COMP> + <LEV>19</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVOH</PG> + <FSC>407</FSC> + <COMP>1</COMP> + <LEV>20</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVOH</PG> + <FSC>407</FSC> + <COMP>0</COMP> + <LEV>9</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVOH</PG> + <FSC>407</FSC> + <COMP>10</COMP> + <LEV>10</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVOH</PG> + <FSC>407</FSC> + <COMP>9</COMP> + <LEV>10</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVOH</PG> + <FSC>407</FSC> + <COMP>9</COMP> + <LEV>9</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Conductor2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVOH</PG> + <FSC>407</FSC> + <COMP>9</COMP> + <LEV>9</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVOH</PG> + <FSC>407</FSC> + <COMP>8</COMP> + <LEV>9</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVOH</PG> + <FSC>407</FSC> + <COMP>8</COMP> + <LEV>9</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVOH</PG> + <FSC>407</FSC> + <COMP>11</COMP> + <LEV>9</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVOH</PG> + <FSC>407</FSC> + <COMP>1</COMP> + <LEV>9</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVOH</PG> + <FSC>501</FSC> + <COMP>1</COMP> + <LEV>2</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVOH</PG> + <FSC>501</FSC> + <COMP>0</COMP> + <LEV>1</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVOH</PG> + <FSC>502</FSC> + <COMP>0</COMP> + <LEV>1</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVOH</PG> + <FSC>502</FSC> + <COMP>1</COMP> + <LEV>2</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVOH</PG> + <FSC>503</FSC> + <COMP>0</COMP> + <LEV>1</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVOH</PG> + <FSC>504</FSC> + <COMP>1</COMP> + <LEV>2</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVOH</PG> + <FSC>999</FSC> + <COMP>0</COMP> + <LEV>62</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVPIPE</PG> + <FSC>202</FSC> + <COMP>1</COMP> + <LEV>35</LEV> + <WEIGHT>0</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVPIPE</PG> + <FSC>202</FSC> + <COMP>0</COMP> + <LEV>35</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVPIPE</PG> + <FSC>203</FSC> + <COMP>0</COMP> + <LEV>37</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVPIPE</PG> + <FSC>203</FSC> + <COMP>1</COMP> + <LEV>37</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVPIPE</PG> + <FSC>206</FSC> + <COMP>0</COMP> + <LEV>1</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVPIPE</PG> + <FSC>206</FSC> + <COMP>2</COMP> + <LEV>1</LEV> + <WEIGHT>0</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVPIPE</PG> + <FSC>206</FSC> + <COMP>1</COMP> + <LEV>1</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVPIPE</PG> + <FSC>207</FSC> + <COMP>1</COMP> + <LEV>1</LEV> + <WEIGHT>0</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVPIPE</PG> + <FSC>207</FSC> + <COMP>0</COMP> + <LEV>1</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVPIPE</PG> + <FSC>209</FSC> + <COMP>0</COMP> + <LEV>45</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVPIPE</PG> + <FSC>216</FSC> + <COMP>2</COMP> + <LEV>1</LEV> + <WEIGHT>0</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVPIPE</PG> + <FSC>216</FSC> + <COMP>1</COMP> + <LEV>1</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVPIPE</PG> + <FSC>216</FSC> + <COMP>0</COMP> + <LEV>1</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVPIPE</PG> + <FSC>401</FSC> + <COMP>5</COMP> + <LEV>11</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVPIPE</PG> + <FSC>401</FSC> + <COMP>1</COMP> + <LEV>11</LEV> + <WEIGHT>0</WEIGHT> + <FTYPE>pgTPC_Conductor2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVPIPE</PG> + <FSC>401</FSC> + <COMP>0</COMP> + <LEV>11</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_dotted_line</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVPIPE</PG> + <FSC>401</FSC> + <COMP>2</COMP> + <LEV>11</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVPIPE</PG> + <FSC>401</FSC> + <COMP>3</COMP> + <LEV>11</LEV> + <WEIGHT>0</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVPIPE</PG> + <FSC>402</FSC> + <COMP>2</COMP> + <LEV>15</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVPIPE</PG> + <FSC>402</FSC> + <COMP>0</COMP> + <LEV>6</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVPIPE</PG> + <FSC>402</FSC> + <COMP>2</COMP> + <LEV>37</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVPIPE</PG> + <FSC>402</FSC> + <COMP>1</COMP> + <LEV>37</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVPIPE</PG> + <FSC>402</FSC> + <COMP>2</COMP> + <LEV>16</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVPIPE</PG> + <FSC>402</FSC> + <COMP>1</COMP> + <LEV>15</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVPIPE</PG> + <FSC>402</FSC> + <COMP>0</COMP> + <LEV>5</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVPIPE</PG> + <FSC>402</FSC> + <COMP>1</COMP> + <LEV>16</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVPIPE</PG> + <FSC>402</FSC> + <COMP>0</COMP> + <LEV>27</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVPIPE</PG> + <FSC>403</FSC> + <COMP>1</COMP> + <LEV>23</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVPIPE</PG> + <FSC>403</FSC> + <COMP>1</COMP> + <LEV>11</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVPIPE</PG> + <FSC>403</FSC> + <COMP>0</COMP> + <LEV>3</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVPIPE</PG> + <FSC>403</FSC> + <COMP>1</COMP> + <LEV>3</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVPIPE</PG> + <FSC>403</FSC> + <COMP>0</COMP> + <LEV>22</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVPIPE</PG> + <FSC>403</FSC> + <COMP>0</COMP> + <LEV>23</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVPIPE</PG> + <FSC>403</FSC> + <COMP>1</COMP> + <LEV>22</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVPIPE</PG> + <FSC>403</FSC> + <COMP>0</COMP> + <LEV>24</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVPIPE</PG> + <FSC>403</FSC> + <COMP>1</COMP> + <LEV>24</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVPIPE</PG> + <FSC>403</FSC> + <COMP>0</COMP> + <LEV>25</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVPIPE</PG> + <FSC>403</FSC> + <COMP>1</COMP> + <LEV>25</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVPIPE</PG> + <FSC>403</FSC> + <COMP>0</COMP> + <LEV>11</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVPIPE</PG> + <FSC>405</FSC> + <COMP>1</COMP> + <LEV>1</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVPIPE</PG> + <FSC>405</FSC> + <COMP>1</COMP> + <LEV>3</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVPIPE</PG> + <FSC>405</FSC> + <COMP>0</COMP> + <LEV>3</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVPIPE</PG> + <FSC>405</FSC> + <COMP>0</COMP> + <LEV>2</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVPIPE</PG> + <FSC>405</FSC> + <COMP>1</COMP> + <LEV>2</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVPIPE</PG> + <FSC>407</FSC> + <COMP>7</COMP> + <LEV>9</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVPIPE</PG> + <FSC>407</FSC> + <COMP>7</COMP> + <LEV>9</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVPIPE</PG> + <FSC>407</FSC> + <COMP>7</COMP> + <LEV>10</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVPIPE</PG> + <FSC>407</FSC> + <COMP>3</COMP> + <LEV>20</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVPIPE</PG> + <FSC>407</FSC> + <COMP>3</COMP> + <LEV>19</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVPIPE</PG> + <FSC>407</FSC> + <COMP>3</COMP> + <LEV>19</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVPIPE</PG> + <FSC>407</FSC> + <COMP>2</COMP> + <LEV>10</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVPIPE</PG> + <FSC>407</FSC> + <COMP>2</COMP> + <LEV>9</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVPIPE</PG> + <FSC>407</FSC> + <COMP>2</COMP> + <LEV>9</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVPIPE</PG> + <FSC>411</FSC> + <COMP>3</COMP> + <LEV>18</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVPIPE</PG> + <FSC>411</FSC> + <COMP>3</COMP> + <LEV>18</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVPIPE</PG> + <FSC>411</FSC> + <COMP>7</COMP> + <LEV>8</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVPIPE</PG> + <FSC>411</FSC> + <COMP>7</COMP> + <LEV>7</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVPIPE</PG> + <FSC>411</FSC> + <COMP>2</COMP> + <LEV>27</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVPIPE</PG> + <FSC>411</FSC> + <COMP>7</COMP> + <LEV>7</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVPIPE</PG> + <FSC>411</FSC> + <COMP>2</COMP> + <LEV>7</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVPIPE</PG> + <FSC>411</FSC> + <COMP>2</COMP> + <LEV>27</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVPIPE</PG> + <FSC>411</FSC> + <COMP>2</COMP> + <LEV>8</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVPIPE</PG> + <FSC>411</FSC> + <COMP>2</COMP> + <LEV>8</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVPIPE</PG> + <FSC>411</FSC> + <COMP>3</COMP> + <LEV>17</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVPIPE</PG> + <FSC>411</FSC> + <COMP>3</COMP> + <LEV>17</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVPIPE</PG> + <FSC>411</FSC> + <COMP>3</COMP> + <LEV>37</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVPIPE</PG> + <FSC>411</FSC> + <COMP>3</COMP> + <LEV>37</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVPIPE</PG> + <FSC>411</FSC> + <COMP>2</COMP> + <LEV>7</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVPIPE</PG> + <FSC>418</FSC> + <COMP>1</COMP> + <LEV>11</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVPIPE</PG> + <FSC>418</FSC> + <COMP>0</COMP> + <LEV>3</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVPIPE</PG> + <FSC>418</FSC> + <COMP>1</COMP> + <LEV>3</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVPIPE</PG> + <FSC>418</FSC> + <COMP>0</COMP> + <LEV>11</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVPIPE</PG> + <FSC>420</FSC> + <COMP>1</COMP> + <LEV>2</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVPIPE</PG> + <FSC>420</FSC> + <COMP>0</COMP> + <LEV>54</LEV> + <WEIGHT>3</WEIGHT> + <FTYPE>pgTPC_Conductor</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVPIPE</PG> + <FSC>421</FSC> + <COMP>1</COMP> + <LEV>2</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVPIPE</PG> + <FSC>421</FSC> + <COMP>0</COMP> + <LEV>1</LEV> + <WEIGHT>3</WEIGHT> + <FTYPE>pgTPC_Conductor</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVPIPE</PG> + <FSC>423</FSC> + <COMP>4</COMP> + <LEV>11</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVPIPE</PG> + <FSC>423</FSC> + <COMP>0</COMP> + <LEV>12</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVPIPE</PG> + <FSC>423</FSC> + <COMP>0</COMP> + <LEV>11</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVPIPE</PG> + <FSC>423</FSC> + <COMP>1</COMP> + <LEV>11</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVPIPE</PG> + <FSC>423</FSC> + <COMP>3</COMP> + <LEV>11</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVPIPE</PG> + <FSC>423</FSC> + <COMP>0</COMP> + <LEV>12</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVPIPE</PG> + <FSC>423</FSC> + <COMP>2</COMP> + <LEV>12</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVPIPE</PG> + <FSC>423</FSC> + <COMP>4</COMP> + <LEV>12</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVPIPE</PG> + <FSC>423</FSC> + <COMP>2</COMP> + <LEV>11</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVPIPE</PG> + <FSC>424</FSC> + <COMP>1</COMP> + <LEV>5</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVPIPE</PG> + <FSC>501</FSC> + <COMP>1</COMP> + <LEV>2</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVPIPE</PG> + <FSC>501</FSC> + <COMP>0</COMP> + <LEV>1</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVPIPE</PG> + <FSC>502</FSC> + <COMP>1</COMP> + <LEV>2</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVPIPE</PG> + <FSC>502</FSC> + <COMP>0</COMP> + <LEV>1</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Conductor</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVPIPE</PG> + <FSC>503</FSC> + <COMP>0</COMP> + <LEV>1</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVPIPE</PG> + <FSC>504</FSC> + <COMP>1</COMP> + <LEV>2</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVPIPE</PG> + <FSC>999</FSC> + <COMP>0</COMP> + <LEV>62</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVUG</PG> + <FSC>115</FSC> + <COMP>6</COMP> + <LEV>56</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVUG</PG> + <FSC>115</FSC> + <COMP>7</COMP> + <LEV>55</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVUG</PG> + <FSC>115</FSC> + <COMP>8</COMP> + <LEV>47</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVUG</PG> + <FSC>115</FSC> + <COMP>5</COMP> + <LEV>51</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVUG</PG> + <FSC>115</FSC> + <COMP>6</COMP> + <LEV>47</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVUG</PG> + <FSC>115</FSC> + <COMP>8</COMP> + <LEV>47</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVUG</PG> + <FSC>115</FSC> + <COMP>8</COMP> + <LEV>48</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVUG</PG> + <FSC>115</FSC> + <COMP>4</COMP> + <LEV>51</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVUG</PG> + <FSC>115</FSC> + <COMP>6</COMP> + <LEV>47</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVUG</PG> + <FSC>115</FSC> + <COMP>2</COMP> + <LEV>51</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVUG</PG> + <FSC>115</FSC> + <COMP>3</COMP> + <LEV>51</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVUG</PG> + <FSC>200</FSC> + <COMP>0</COMP> + <LEV>28</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVUG</PG> + <FSC>200</FSC> + <COMP>0</COMP> + <LEV>29</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVUG</PG> + <FSC>201</FSC> + <COMP>0</COMP> + <LEV>31</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_dotted_line</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVUG</PG> + <FSC>201</FSC> + <COMP>1</COMP> + <LEV>33</LEV> + <WEIGHT>0</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVUG</PG> + <FSC>202</FSC> + <COMP>0</COMP> + <LEV>35</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVUG</PG> + <FSC>202</FSC> + <COMP>1</COMP> + <LEV>35</LEV> + <WEIGHT>0</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVUG</PG> + <FSC>203</FSC> + <COMP>0</COMP> + <LEV>37</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVUG</PG> + <FSC>203</FSC> + <COMP>1</COMP> + <LEV>37</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVUG</PG> + <FSC>206</FSC> + <COMP>2</COMP> + <LEV>1</LEV> + <WEIGHT>0</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVUG</PG> + <FSC>206</FSC> + <COMP>1</COMP> + <LEV>1</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVUG</PG> + <FSC>206</FSC> + <COMP>0</COMP> + <LEV>1</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVUG</PG> + <FSC>207</FSC> + <COMP>0</COMP> + <LEV>1</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVUG</PG> + <FSC>207</FSC> + <COMP>1</COMP> + <LEV>1</LEV> + <WEIGHT>0</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVUG</PG> + <FSC>208</FSC> + <COMP>0</COMP> + <LEV>43</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVUG</PG> + <FSC>209</FSC> + <COMP>0</COMP> + <LEV>45</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVUG</PG> + <FSC>210</FSC> + <COMP>0</COMP> + <LEV>40</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_dotted_line</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVUG</PG> + <FSC>210</FSC> + <COMP>4</COMP> + <LEV>42</LEV> + <WEIGHT>0</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVUG</PG> + <FSC>210</FSC> + <COMP>3</COMP> + <LEV>42</LEV> + <WEIGHT>0</WEIGHT> + <FTYPE>pgTPC_Conductor2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVUG</PG> + <FSC>213</FSC> + <COMP>0</COMP> + <LEV>31</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_dotted_line</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVUG</PG> + <FSC>213</FSC> + <COMP>1</COMP> + <LEV>33</LEV> + <WEIGHT>0</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVUG</PG> + <FSC>215</FSC> + <COMP>0</COMP> + <LEV>45</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVUG</PG> + <FSC>216</FSC> + <COMP>1</COMP> + <LEV>1</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVUG</PG> + <FSC>216</FSC> + <COMP>2</COMP> + <LEV>1</LEV> + <WEIGHT>0</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVUG</PG> + <FSC>216</FSC> + <COMP>0</COMP> + <LEV>1</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVUG</PG> + <FSC>217</FSC> + <COMP>0</COMP> + <LEV>11</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVUG</PG> + <FSC>217</FSC> + <COMP>0</COMP> + <LEV>11</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVUG</PG> + <FSC>301</FSC> + <COMP>3</COMP> + <LEV>23</LEV> + <WEIGHT>0</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVUG</PG> + <FSC>301</FSC> + <COMP>1</COMP> + <LEV>23</LEV> + <WEIGHT>0</WEIGHT> + <FTYPE>pgTPC_Conductor2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVUG</PG> + <FSC>301</FSC> + <COMP>0</COMP> + <LEV>21</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVUG</PG> + <FSC>301</FSC> + <COMP>1</COMP> + <LEV>23</LEV> + <WEIGHT>0</WEIGHT> + <FTYPE>pgTPC_Conductor2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVUG</PG> + <FSC>302</FSC> + <COMP>1</COMP> + <LEV>27</LEV> + <WEIGHT>0</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVUG</PG> + <FSC>302</FSC> + <COMP>0</COMP> + <LEV>25</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVUG</PG> + <FSC>303</FSC> + <COMP>0</COMP> + <LEV>29</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVUG</PG> + <FSC>303</FSC> + <COMP>3</COMP> + <LEV>43</LEV> + <WEIGHT>0</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVUG</PG> + <FSC>303</FSC> + <COMP>1</COMP> + <LEV>43</LEV> + <WEIGHT>0</WEIGHT> + <FTYPE>pgTPC_Conductor2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVUG</PG> + <FSC>305</FSC> + <COMP>0</COMP> + <LEV>33</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVUG</PG> + <FSC>306</FSC> + <COMP>0</COMP> + <LEV>35</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVUG</PG> + <FSC>307</FSC> + <COMP>0</COMP> + <LEV>46</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVUG</PG> + <FSC>307</FSC> + <COMP>0</COMP> + <LEV>37</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVUG</PG> + <FSC>308</FSC> + <COMP>0</COMP> + <LEV>39</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVUG</PG> + <FSC>316</FSC> + <COMP>0</COMP> + <LEV>53</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVUG</PG> + <FSC>317</FSC> + <COMP>1</COMP> + <LEV>31</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVUG</PG> + <FSC>317</FSC> + <COMP>0</COMP> + <LEV>31</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVUG</PG> + <FSC>318</FSC> + <COMP>0</COMP> + <LEV>53</LEV> + <WEIGHT>4</WEIGHT> + <FTYPE>pgTPC_Conductor</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVUG</PG> + <FSC>402</FSC> + <COMP>0</COMP> + <LEV>5</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVUG</PG> + <FSC>402</FSC> + <COMP>1</COMP> + <LEV>16</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVUG</PG> + <FSC>402</FSC> + <COMP>1</COMP> + <LEV>15</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVUG</PG> + <FSC>402</FSC> + <COMP>0</COMP> + <LEV>27</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVUG</PG> + <FSC>402</FSC> + <COMP>1</COMP> + <LEV>37</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVUG</PG> + <FSC>402</FSC> + <COMP>2</COMP> + <LEV>16</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVUG</PG> + <FSC>402</FSC> + <COMP>0</COMP> + <LEV>6</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVUG</PG> + <FSC>402</FSC> + <COMP>2</COMP> + <LEV>15</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVUG</PG> + <FSC>402</FSC> + <COMP>2</COMP> + <LEV>37</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVUG</PG> + <FSC>403</FSC> + <COMP>1</COMP> + <LEV>24</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVUG</PG> + <FSC>403</FSC> + <COMP>1</COMP> + <LEV>22</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVUG</PG> + <FSC>403</FSC> + <COMP>2</COMP> + <LEV>15</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVUG</PG> + <FSC>403</FSC> + <COMP>2</COMP> + <LEV>20</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVUG</PG> + <FSC>403</FSC> + <COMP>1</COMP> + <LEV>3</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVUG</PG> + <FSC>403</FSC> + <COMP>1</COMP> + <LEV>25</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVUG</PG> + <FSC>403</FSC> + <COMP>1</COMP> + <LEV>23</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVUG</PG> + <FSC>407</FSC> + <COMP>2</COMP> + <LEV>9</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVUG</PG> + <FSC>407</FSC> + <COMP>11</COMP> + <LEV>9</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVUG</PG> + <FSC>407</FSC> + <COMP>10</COMP> + <LEV>9</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVUG</PG> + <FSC>407</FSC> + <COMP>9</COMP> + <LEV>9</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVUG</PG> + <FSC>407</FSC> + <COMP>8</COMP> + <LEV>10</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVUG</PG> + <FSC>407</FSC> + <COMP>0</COMP> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVUG</PG> + <FSC>407</FSC> + <COMP>9</COMP> + <LEV>10</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVUG</PG> + <FSC>407</FSC> + <COMP>7</COMP> + <LEV>9</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVUG</PG> + <FSC>407</FSC> + <COMP>2</COMP> + <LEV>9</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVUG</PG> + <FSC>407</FSC> + <COMP>3</COMP> + <LEV>19</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVUG</PG> + <FSC>407</FSC> + <COMP>3</COMP> + <LEV>19</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVUG</PG> + <FSC>407</FSC> + <COMP>3</COMP> + <LEV>20</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVUG</PG> + <FSC>407</FSC> + <COMP>7</COMP> + <LEV>10</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVUG</PG> + <FSC>407</FSC> + <COMP>7</COMP> + <LEV>9</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVUG</PG> + <FSC>407</FSC> + <COMP>1</COMP> + <LEV>20</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVUG</PG> + <FSC>407</FSC> + <COMP>2</COMP> + <LEV>10</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVUG</PG> + <FSC>407</FSC> + <COMP>9</COMP> + <LEV>10</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVUG</PG> + <FSC>411</FSC> + <COMP>7</COMP> + <LEV>7</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVUG</PG> + <FSC>411</FSC> + <COMP>7</COMP> + <LEV>8</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVUG</PG> + <FSC>411</FSC> + <COMP>7</COMP> + <LEV>7</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVUG</PG> + <FSC>501</FSC> + <COMP>1</COMP> + <LEV>2</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVUG</PG> + <FSC>501</FSC> + <COMP>0</COMP> + <LEV>1</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVUG</PG> + <FSC>502</FSC> + <COMP>0</COMP> + <LEV>1</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVUG</PG> + <FSC>502</FSC> + <COMP>1</COMP> + <LEV>2</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVUG</PG> + <FSC>503</FSC> + <COMP>0</COMP> + <LEV>1</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVUG</PG> + <FSC>504</FSC> + <COMP>1</COMP> + <LEV>2</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgLVUG</PG> + <FSC>999</FSC> + <COMP>0</COMP> + <LEV>62</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>100</FSC> + <COMP>0</COMP> + <LEV>59</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>100</FSC> + <COMP>0</COMP> + <LEV>60</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>102</FSC> + <COMP>0</COMP> + <LEV>30</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>106</FSC> + <COMP>1</COMP> + <LEV>1</LEV> + <WEIGHT>0</WEIGHT> + <FTYPE>pgTPC_Conductor2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>106</FSC> + <COMP>0</COMP> + <LEV>3</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>106</FSC> + <COMP>4</COMP> + <LEV>3</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>106</FSC> + <COMP>2</COMP> + <LEV>3</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>106</FSC> + <COMP>0</COMP> + <LEV>1</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Conductor</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>106</FSC> + <COMP>0</COMP> + <LEV>1</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>106</FSC> + <COMP>1</COMP> + <LEV>1</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>106</FSC> + <COMP>1</COMP> + <LEV>3</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>106</FSC> + <COMP>1</COMP> + <LEV>3</LEV> + <WEIGHT>0</WEIGHT> + <FTYPE>pgTPC_Conductor2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>106</FSC> + <COMP>4</COMP> + <LEV>1</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>106</FSC> + <COMP>2</COMP> + <LEV>1</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>106</FSC> + <COMP>2</COMP> + <LEV>1</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>106</FSC> + <COMP>4</COMP> + <LEV>1</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>107</FSC> + <COMP>2</COMP> + <LEV>38</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>107</FSC> + <COMP>2</COMP> + <LEV>36</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>107</FSC> + <COMP>2</COMP> + <LEV>38</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>107</FSC> + <COMP>2</COMP> + <LEV>35</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>107</FSC> + <COMP>0</COMP> + <LEV>25</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>107</FSC> + <COMP>2</COMP> + <LEV>36</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>107</FSC> + <COMP>0</COMP> + <LEV>26</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>107</FSC> + <COMP>0</COMP> + <LEV>26</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>107</FSC> + <COMP>2</COMP> + <LEV>37</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>107</FSC> + <COMP>0</COMP> + <LEV>27</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>107</FSC> + <COMP>2</COMP> + <LEV>35</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>107</FSC> + <COMP>0</COMP> + <LEV>28</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>107</FSC> + <COMP>0</COMP> + <LEV>28</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>107</FSC> + <COMP>0</COMP> + <LEV>25</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>109</FSC> + <COMP>0</COMP> + <LEV>13</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>109</FSC> + <COMP>0</COMP> + <LEV>13</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>114</FSC> + <COMP>1</COMP> + <LEV>31</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>114</FSC> + <COMP>1</COMP> + <LEV>31</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>114</FSC> + <COMP>1</COMP> + <LEV>32</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>114</FSC> + <COMP>1</COMP> + <LEV>32</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>114</FSC> + <COMP>0</COMP> + <LEV>22</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>114</FSC> + <COMP>2</COMP> + <LEV>21</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>114</FSC> + <COMP>2</COMP> + <LEV>21</LEV> + <WEIGHT>0</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>114</FSC> + <COMP>0</COMP> + <LEV>21</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>114</FSC> + <COMP>0</COMP> + <LEV>21</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>114</FSC> + <COMP>0</COMP> + <LEV>22</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>114</FSC> + <COMP>2</COMP> + <LEV>22</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>114</FSC> + <COMP>2</COMP> + <LEV>22</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>115</FSC> + <COMP>10</COMP> + <LEV>56</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>115</FSC> + <COMP>2</COMP> + <LEV>50</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>115</FSC> + <COMP>1</COMP> + <LEV>56</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>115</FSC> + <COMP>1</COMP> + <LEV>46</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>115</FSC> + <COMP>1</COMP> + <LEV>46</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>115</FSC> + <COMP>0</COMP> + <LEV>56</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>115</FSC> + <COMP>0</COMP> + <LEV>46</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>115</FSC> + <COMP>3</COMP> + <LEV>51</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>115</FSC> + <COMP>3</COMP> + <LEV>50</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>115</FSC> + <COMP>7</COMP> + <LEV>55</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>115</FSC> + <COMP>2</COMP> + <LEV>51</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>115</FSC> + <COMP>91</COMP> + <LEV>56</LEV> + <WEIGHT>0</WEIGHT> + <FTYPE>pgTPC_Conductor2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>115</FSC> + <COMP>10</COMP> + <LEV>56</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>115</FSC> + <COMP>5</COMP> + <LEV>50</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>115</FSC> + <COMP>4</COMP> + <LEV>50</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>115</FSC> + <COMP>10</COMP> + <LEV>46</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>115</FSC> + <COMP>10</COMP> + <LEV>46</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>115</FSC> + <COMP>0</COMP> + <LEV>46</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>115</FSC> + <COMP>7</COMP> + <LEV>58</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>115</FSC> + <COMP>6</COMP> + <LEV>57</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>116</FSC> + <COMP>0</COMP> + <LEV>14</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>116</FSC> + <COMP>0</COMP> + <LEV>14</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>117</FSC> + <COMP>0</COMP> + <LEV>27</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>118</FSC> + <COMP>0</COMP> + <LEV>50</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>118</FSC> + <COMP>0</COMP> + <LEV>49</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>118</FSC> + <COMP>0</COMP> + <LEV>27</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>120</FSC> + <COMP>0</COMP> + <LEV>52</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol_circle</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>120</FSC> + <COMP>0</COMP> + <LEV>42</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol_circle</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>120</FSC> + <COMP>0</COMP> + <LEV>42</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol_circle</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>120</FSC> + <COMP>0</COMP> + <LEV>52</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol_circle</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>130</FSC> + <COMP>0</COMP> + <LEV>11</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>130</FSC> + <COMP>0</COMP> + <LEV>11</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>131</FSC> + <COMP>0</COMP> + <LEV>12</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>131</FSC> + <COMP>0</COMP> + <LEV>12</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>140</FSC> + <COMP>1</COMP> + <LEV>51</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>140</FSC> + <COMP>1</COMP> + <LEV>51</LEV> + <WEIGHT>0</WEIGHT> + <FTYPE>pgTPC_Conductor2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>140</FSC> + <COMP>0</COMP> + <LEV>51</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Conductor</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>140</FSC> + <COMP>2</COMP> + <LEV>51</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>140</FSC> + <COMP>3</COMP> + <LEV>51</LEV> + <WEIGHT>0</WEIGHT> + <FTYPE>pgTPC_Conductor2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>140</FSC> + <COMP>4</COMP> + <LEV>51</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>140</FSC> + <COMP>4</COMP> + <LEV>53</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>140</FSC> + <COMP>4</COMP> + <LEV>51</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>140</FSC> + <COMP>1</COMP> + <LEV>53</LEV> + <WEIGHT>0</WEIGHT> + <FTYPE>pgTPC_Conductor2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>140</FSC> + <COMP>2</COMP> + <LEV>51</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>140</FSC> + <COMP>2</COMP> + <LEV>53</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>140</FSC> + <COMP>2</COMP> + <LEV>53</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>140</FSC> + <COMP>3</COMP> + <LEV>53</LEV> + <WEIGHT>0</WEIGHT> + <FTYPE>pgTPC_Conductor2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>140</FSC> + <COMP>2</COMP> + <LEV>51</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>140</FSC> + <COMP>3</COMP> + <LEV>51</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>140</FSC> + <COMP>3</COMP> + <LEV>53</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>140</FSC> + <COMP>2</COMP> + <LEV>51</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>140</FSC> + <COMP>1</COMP> + <LEV>53</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>140</FSC> + <COMP>0</COMP> + <LEV>51</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>140</FSC> + <COMP>4</COMP> + <LEV>53</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>200</FSC> + <COMP>0</COMP> + <LEV>30</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>200</FSC> + <COMP>0</COMP> + <LEV>28</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>202</FSC> + <COMP>1</COMP> + <LEV>36</LEV> + <WEIGHT>0</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>202</FSC> + <COMP>0</COMP> + <LEV>36</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>203</FSC> + <COMP>1</COMP> + <LEV>38</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>203</FSC> + <COMP>0</COMP> + <LEV>38</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>205</FSC> + <COMP>2</COMP> + <LEV>41</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>205</FSC> + <COMP>0</COMP> + <LEV>39</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_dotted_line</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>206</FSC> + <COMP>2</COMP> + <LEV>2</LEV> + <WEIGHT>0</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>206</FSC> + <COMP>1</COMP> + <LEV>2</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>206</FSC> + <COMP>0</COMP> + <LEV>2</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>207</FSC> + <COMP>1</COMP> + <LEV>2</LEV> + <WEIGHT>0</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>207</FSC> + <COMP>0</COMP> + <LEV>2</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>208</FSC> + <COMP>0</COMP> + <LEV>44</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>209</FSC> + <COMP>0</COMP> + <LEV>46</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>211</FSC> + <COMP>1</COMP> + <LEV>34</LEV> + <WEIGHT>0</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>211</FSC> + <COMP>0</COMP> + <LEV>32</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_dotted_line</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>211</FSC> + <COMP>2</COMP> + <LEV>34</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>212</FSC> + <COMP>1</COMP> + <LEV>34</LEV> + <WEIGHT>0</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>212</FSC> + <COMP>0</COMP> + <LEV>32</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>216</FSC> + <COMP>0</COMP> + <LEV>2</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>216</FSC> + <COMP>1</COMP> + <LEV>2</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>216</FSC> + <COMP>2</COMP> + <LEV>2</LEV> + <WEIGHT>0</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>303</FSC> + <COMP>1</COMP> + <LEV>43</LEV> + <WEIGHT>0</WEIGHT> + <FTYPE>pgTPC_Conductor2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>303</FSC> + <COMP>0</COMP> + <LEV>29</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>303</FSC> + <COMP>3</COMP> + <LEV>43</LEV> + <WEIGHT>0</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>305</FSC> + <COMP>0</COMP> + <LEV>34</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>306</FSC> + <COMP>0</COMP> + <LEV>36</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>307</FSC> + <COMP>0</COMP> + <LEV>38</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>307</FSC> + <COMP>0</COMP> + <LEV>46</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>308</FSC> + <COMP>0</COMP> + <LEV>40</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>314</FSC> + <COMP>1</COMP> + <LEV>28</LEV> + <WEIGHT>0</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>314</FSC> + <COMP>0</COMP> + <LEV>26</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>315</FSC> + <COMP>1</COMP> + <LEV>28</LEV> + <WEIGHT>0</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>315</FSC> + <COMP>0</COMP> + <LEV>26</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>316</FSC> + <COMP>0</COMP> + <LEV>54</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>317</FSC> + <COMP>1</COMP> + <LEV>32</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>317</FSC> + <COMP>0</COMP> + <LEV>32</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>318</FSC> + <COMP>0</COMP> + <LEV>54</LEV> + <WEIGHT>4</WEIGHT> + <FTYPE>pgTPC_Conductor</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>402</FSC> + <COMP>2</COMP> + <LEV>37</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>402</FSC> + <COMP>2</COMP> + <LEV>15</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>402</FSC> + <COMP>1</COMP> + <LEV>16</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>402</FSC> + <COMP>0</COMP> + <LEV>6</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>402</FSC> + <COMP>1</COMP> + <LEV>15</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>402</FSC> + <COMP>2</COMP> + <LEV>16</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>402</FSC> + <COMP>0</COMP> + <LEV>27</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>402</FSC> + <COMP>1</COMP> + <LEV>37</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>402</FSC> + <COMP>0</COMP> + <LEV>5</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>407</FSC> + <COMP>8</COMP> + <LEV>9</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>407</FSC> + <COMP>0</COMP> + <LEV>9</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>407</FSC> + <COMP>0</COMP> + <LEV>9</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>407</FSC> + <COMP>0</COMP> + <LEV>10</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>407</FSC> + <COMP>1</COMP> + <LEV>19</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>407</FSC> + <COMP>9</COMP> + <LEV>9</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>407</FSC> + <COMP>9</COMP> + <LEV>9</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Conductor2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>407</FSC> + <COMP>9</COMP> + <LEV>10</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>407</FSC> + <COMP>10</COMP> + <LEV>9</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>407</FSC> + <COMP>8</COMP> + <LEV>9</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>407</FSC> + <COMP>1</COMP> + <LEV>19</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>407</FSC> + <COMP>8</COMP> + <LEV>10</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>407</FSC> + <COMP>8</COMP> + <LEV>10</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>407</FSC> + <COMP>10</COMP> + <LEV>10</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>407</FSC> + <COMP>10</COMP> + <LEV>10</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>407</FSC> + <COMP>11</COMP> + <LEV>10</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>407</FSC> + <COMP>11</COMP> + <LEV>10</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>407</FSC> + <COMP>11</COMP> + <LEV>9</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>407</FSC> + <COMP>1</COMP> + <LEV>20</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>501</FSC> + <COMP>0</COMP> + <LEV>1</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>501</FSC> + <COMP>1</COMP> + <LEV>2</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>502</FSC> + <COMP>1</COMP> + <LEV>2</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>502</FSC> + <COMP>0</COMP> + <LEV>1</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>503</FSC> + <COMP>0</COMP> + <LEV>1</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>504</FSC> + <COMP>1</COMP> + <LEV>2</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOHS</PG> + <FSC>999</FSC> + <COMP>0</COMP> + <LEV>62</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>101</FSC> + <COMP>0</COMP> + <LEV>51</LEV> + <WEIGHT>0</WEIGHT> + <FTYPE>pgTPC_Conductor</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>101</FSC> + <COMP>0</COMP> + <LEV>41</LEV> + <WEIGHT>0</WEIGHT> + <FTYPE>pgTPC_Conductor</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>101</FSC> + <COMP>0</COMP> + <LEV>41</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>101</FSC> + <COMP>0</COMP> + <LEV>51</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>102</FSC> + <COMP>0</COMP> + <LEV>40</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>106</FSC> + <COMP>0</COMP> + <LEV>1</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Conductor</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>106</FSC> + <COMP>0</COMP> + <LEV>2</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Conductor</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>106</FSC> + <COMP>0</COMP> + <LEV>3</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>106</FSC> + <COMP>0</COMP> + <LEV>4</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>106</FSC> + <COMP>0</COMP> + <LEV>2</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>106</FSC> + <COMP>0</COMP> + <LEV>1</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>106</FSC> + <COMP>0</COMP> + <LEV>4</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Conductor</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>107</FSC> + <COMP>0</COMP> + <LEV>25</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>107</FSC> + <COMP>0</COMP> + <LEV>25</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>107</FSC> + <COMP>0</COMP> + <LEV>25</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>107</FSC> + <COMP>0</COMP> + <LEV>25</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>107</FSC> + <COMP>2</COMP> + <LEV>35</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>107</FSC> + <COMP>2</COMP> + <LEV>35</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>107</FSC> + <COMP>2</COMP> + <LEV>37</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>107</FSC> + <COMP>2</COMP> + <LEV>36</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>107</FSC> + <COMP>2</COMP> + <LEV>36</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>107</FSC> + <COMP>0</COMP> + <LEV>26</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>107</FSC> + <COMP>2</COMP> + <LEV>38</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>108</FSC> + <COMP>0</COMP> + <LEV>44</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>108</FSC> + <COMP>0</COMP> + <LEV>45</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>108</FSC> + <COMP>1</COMP> + <LEV>55</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>108</FSC> + <COMP>1</COMP> + <LEV>54</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>109</FSC> + <COMP>0</COMP> + <LEV>13</LEV> + <WEIGHT>3</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>109</FSC> + <COMP>0</COMP> + <LEV>13</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>109</FSC> + <COMP>0</COMP> + <LEV>13</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>114</FSC> + <COMP>1</COMP> + <LEV>33</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>114</FSC> + <COMP>2</COMP> + <LEV>23</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>114</FSC> + <COMP>3</COMP> + <LEV>60</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>114</FSC> + <COMP>2</COMP> + <LEV>23</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>114</FSC> + <COMP>3</COMP> + <LEV>60</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>114</FSC> + <COMP>1</COMP> + <LEV>32</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>114</FSC> + <COMP>1</COMP> + <LEV>34</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>114</FSC> + <COMP>1</COMP> + <LEV>34</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>114</FSC> + <COMP>1</COMP> + <LEV>33</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>114</FSC> + <COMP>1</COMP> + <LEV>32</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>114</FSC> + <COMP>0</COMP> + <LEV>23</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>114</FSC> + <COMP>1</COMP> + <LEV>31</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>114</FSC> + <COMP>1</COMP> + <LEV>31</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>114</FSC> + <COMP>2</COMP> + <LEV>24</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>114</FSC> + <COMP>0</COMP> + <LEV>24</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>114</FSC> + <COMP>0</COMP> + <LEV>24</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>114</FSC> + <COMP>2</COMP> + <LEV>22</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>114</FSC> + <COMP>2</COMP> + <LEV>22</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>114</FSC> + <COMP>0</COMP> + <LEV>22</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>114</FSC> + <COMP>2</COMP> + <LEV>21</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>114</FSC> + <COMP>0</COMP> + <LEV>23</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>114</FSC> + <COMP>0</COMP> + <LEV>21</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>114</FSC> + <COMP>0</COMP> + <LEV>21</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>114</FSC> + <COMP>2</COMP> + <LEV>21</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>114</FSC> + <COMP>0</COMP> + <LEV>22</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>115</FSC> + <COMP>91</COMP> + <LEV>48</LEV> + <WEIGHT>0</WEIGHT> + <FTYPE>pgTPC_Conductor2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>115</FSC> + <COMP>91</COMP> + <LEV>56</LEV> + <WEIGHT>0</WEIGHT> + <FTYPE>pgTPC_Conductor2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>115</FSC> + <COMP>10</COMP> + <LEV>46</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>115</FSC> + <COMP>10</COMP> + <LEV>56</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>115</FSC> + <COMP>0</COMP> + <LEV>47</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>115</FSC> + <COMP>10</COMP> + <LEV>48</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>115</FSC> + <COMP>10</COMP> + <LEV>56</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>115</FSC> + <COMP>0</COMP> + <LEV>48</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>115</FSC> + <COMP>10</COMP> + <LEV>47</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>115</FSC> + <COMP>0</COMP> + <LEV>56</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>115</FSC> + <COMP>10</COMP> + <LEV>47</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>115</FSC> + <COMP>10</COMP> + <LEV>48</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>115</FSC> + <COMP>0</COMP> + <LEV>46</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>115</FSC> + <COMP>91</COMP> + <LEV>47</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>115</FSC> + <COMP>0</COMP> + <LEV>48</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>115</FSC> + <COMP>10</COMP> + <LEV>46</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>115</FSC> + <COMP>0</COMP> + <LEV>46</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>115</FSC> + <COMP>0</COMP> + <LEV>56</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>115</FSC> + <COMP>0</COMP> + <LEV>56</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>115</FSC> + <COMP>91</COMP> + <LEV>46</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>115</FSC> + <COMP>0</COMP> + <LEV>47</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>116</FSC> + <COMP>0</COMP> + <LEV>14</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>116</FSC> + <COMP>0</COMP> + <LEV>14</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>117</FSC> + <COMP>0</COMP> + <LEV>27</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>117</FSC> + <COMP>0</COMP> + <LEV>27</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>118</FSC> + <COMP>0</COMP> + <LEV>50</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>118</FSC> + <COMP>0</COMP> + <LEV>49</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>118</FSC> + <COMP>0</COMP> + <LEV>27</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>119</FSC> + <COMP>0</COMP> + <LEV>61</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>119</FSC> + <COMP>0</COMP> + <LEV>62</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>120</FSC> + <COMP>0</COMP> + <LEV>42</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol_circle</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>120</FSC> + <COMP>0</COMP> + <LEV>42</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol_circle</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>122</FSC> + <COMP>0</COMP> + <LEV>23</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>122</FSC> + <COMP>0</COMP> + <LEV>23</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Conductor</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>122</FSC> + <COMP>1</COMP> + <LEV>33</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>122</FSC> + <COMP>1</COMP> + <LEV>33</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>122</FSC> + <COMP>1</COMP> + <LEV>34</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>122</FSC> + <COMP>0</COMP> + <LEV>24</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>130</FSC> + <COMP>0</COMP> + <LEV>11</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>130</FSC> + <COMP>0</COMP> + <LEV>11</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>131</FSC> + <COMP>0</COMP> + <LEV>12</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>131</FSC> + <COMP>0</COMP> + <LEV>12</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>402</FSC> + <COMP>2</COMP> + <LEV>16</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>402</FSC> + <COMP>2</COMP> + <LEV>37</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>402</FSC> + <COMP>2</COMP> + <LEV>27</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>402</FSC> + <COMP>1</COMP> + <LEV>27</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>402</FSC> + <COMP>2</COMP> + <LEV>15</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>402</FSC> + <COMP>1</COMP> + <LEV>15</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>402</FSC> + <COMP>0</COMP> + <LEV>5</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>402</FSC> + <COMP>1</COMP> + <LEV>16</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>402</FSC> + <COMP>0</COMP> + <LEV>6</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>407</FSC> + <COMP>1</COMP> + <LEV>20</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>407</FSC> + <COMP>1</COMP> + <LEV>20</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>407</FSC> + <COMP>1</COMP> + <LEV>19</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>407</FSC> + <COMP>0</COMP> + <LEV>9</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>407</FSC> + <COMP>1</COMP> + <LEV>20</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>407</FSC> + <COMP>1</COMP> + <LEV>19</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>407</FSC> + <COMP>8</COMP> + <LEV>9</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>407</FSC> + <COMP>0</COMP> + <LEV>10</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>407</FSC> + <COMP>8</COMP> + <LEV>10</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>407</FSC> + <COMP>8</COMP> + <LEV>10</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>407</FSC> + <COMP>0</COMP> + <LEV>9</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>411</FSC> + <COMP>1</COMP> + <LEV>17</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>411</FSC> + <COMP>0</COMP> + <LEV>7</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>411</FSC> + <COMP>0</COMP> + <LEV>7</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>411</FSC> + <COMP>0</COMP> + <LEV>27</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>411</FSC> + <COMP>1</COMP> + <LEV>17</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>411</FSC> + <COMP>0</COMP> + <LEV>8</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>411</FSC> + <COMP>0</COMP> + <LEV>8</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>411</FSC> + <COMP>1</COMP> + <LEV>18</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>411</FSC> + <COMP>1</COMP> + <LEV>18</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>411</FSC> + <COMP>0</COMP> + <LEV>27</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>411</FSC> + <COMP>0</COMP> + <LEV>27</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>411</FSC> + <COMP>1</COMP> + <LEV>37</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>411</FSC> + <COMP>1</COMP> + <LEV>37</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>411</FSC> + <COMP>0</COMP> + <LEV>27</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>501</FSC> + <COMP>1</COMP> + <LEV>1</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>501</FSC> + <COMP>0</COMP> + <LEV>1</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>502</FSC> + <COMP>0</COMP> + <LEV>1</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>502</FSC> + <COMP>1</COMP> + <LEV>2</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>503</FSC> + <COMP>0</COMP> + <LEV>1</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>504</FSC> + <COMP>1</COMP> + <LEV>2</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgOMS</PG> + <FSC>999</FSC> + <COMP>0</COMP> + <LEV>62</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgPOLE</PG> + <FSC>407</FSC> + <COMP>1</COMP> + <LEV>19</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgPOLE</PG> + <FSC>407</FSC> + <COMP>1</COMP> + <LEV>9</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgPOLE</PG> + <FSC>407</FSC> + <COMP>1</COMP> + <LEV>9</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgPOLE</PG> + <FSC>407</FSC> + <COMP>1</COMP> + <LEV>20</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgPOLE</PG> + <FSC>407</FSC> + <COMP>0</COMP> + <LEV>10</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgPOLE</PG> + <FSC>407</FSC> + <COMP>0</COMP> + <LEV>9</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgPOLE</PG> + <FSC>407</FSC> + <COMP>0</COMP> + <LEV>9</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgPOLE</PG> + <FSC>407</FSC> + <COMP>1</COMP> + <LEV>19</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgSLS</PG> + <FSC>115</FSC> + <COMP>7</COMP> + <LEV>58</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgSLS</PG> + <FSC>115</FSC> + <COMP>3</COMP> + <LEV>51</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgSLS</PG> + <FSC>115</FSC> + <COMP>3</COMP> + <LEV>50</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgSLS</PG> + <FSC>115</FSC> + <COMP>2</COMP> + <LEV>50</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgSLS</PG> + <FSC>115</FSC> + <COMP>2</COMP> + <LEV>51</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgSLS</PG> + <FSC>115</FSC> + <COMP>7</COMP> + <LEV>55</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgSLS</PG> + <FSC>203</FSC> + <COMP>1</COMP> + <LEV>38</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgSLS</PG> + <FSC>203</FSC> + <COMP>0</COMP> + <LEV>37</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgSLS</PG> + <FSC>203</FSC> + <COMP>0</COMP> + <LEV>38</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgSLS</PG> + <FSC>203</FSC> + <COMP>1</COMP> + <LEV>37</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgSLS</PG> + <FSC>301</FSC> + <COMP>3</COMP> + <LEV>23</LEV> + <WEIGHT>0</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgSLS</PG> + <FSC>301</FSC> + <COMP>0</COMP> + <LEV>21</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgSLS</PG> + <FSC>301</FSC> + <COMP>1</COMP> + <LEV>23</LEV> + <WEIGHT>0</WEIGHT> + <FTYPE>pgTPC_Conductor2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgSLS</PG> + <FSC>302</FSC> + <COMP>1</COMP> + <LEV>27</LEV> + <WEIGHT>0</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgSLS</PG> + <FSC>302</FSC> + <COMP>0</COMP> + <LEV>25</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgSLS</PG> + <FSC>303</FSC> + <COMP>0</COMP> + <LEV>29</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgSLS</PG> + <FSC>303</FSC> + <COMP>3</COMP> + <LEV>43</LEV> + <WEIGHT>0</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgSLS</PG> + <FSC>303</FSC> + <COMP>1</COMP> + <LEV>43</LEV> + <WEIGHT>0</WEIGHT> + <FTYPE>pgTPC_Conductor2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgSLS</PG> + <FSC>305</FSC> + <COMP>0</COMP> + <LEV>34</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgSLS</PG> + <FSC>305</FSC> + <COMP>0</COMP> + <LEV>33</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgSLS</PG> + <FSC>306</FSC> + <COMP>0</COMP> + <LEV>35</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgSLS</PG> + <FSC>306</FSC> + <COMP>0</COMP> + <LEV>36</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgSLS</PG> + <FSC>307</FSC> + <COMP>0</COMP> + <LEV>46</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgSLS</PG> + <FSC>307</FSC> + <COMP>0</COMP> + <LEV>37</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgSLS</PG> + <FSC>307</FSC> + <COMP>0</COMP> + <LEV>38</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgSLS</PG> + <FSC>308</FSC> + <COMP>0</COMP> + <LEV>39</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgSLS</PG> + <FSC>308</FSC> + <COMP>0</COMP> + <LEV>40</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgSLS</PG> + <FSC>314</FSC> + <COMP>0</COMP> + <LEV>26</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgSLS</PG> + <FSC>314</FSC> + <COMP>1</COMP> + <LEV>28</LEV> + <WEIGHT>0</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgSLS</PG> + <FSC>315</FSC> + <COMP>0</COMP> + <LEV>26</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgSLS</PG> + <FSC>315</FSC> + <COMP>1</COMP> + <LEV>28</LEV> + <WEIGHT>0</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgSLS</PG> + <FSC>316</FSC> + <COMP>0</COMP> + <LEV>54</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgSLS</PG> + <FSC>316</FSC> + <COMP>0</COMP> + <LEV>53</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgSLS</PG> + <FSC>317</FSC> + <COMP>0</COMP> + <LEV>32</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgSLS</PG> + <FSC>317</FSC> + <COMP>0</COMP> + <LEV>31</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgSLS</PG> + <FSC>317</FSC> + <COMP>1</COMP> + <LEV>32</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgSLS</PG> + <FSC>317</FSC> + <COMP>1</COMP> + <LEV>31</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgSLS</PG> + <FSC>318</FSC> + <COMP>0</COMP> + <LEV>53</LEV> + <WEIGHT>4</WEIGHT> + <FTYPE>pgTPC_Conductor</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgSLS</PG> + <FSC>318</FSC> + <COMP>0</COMP> + <LEV>54</LEV> + <WEIGHT>4</WEIGHT> + <FTYPE>pgTPC_Conductor</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgSLS</PG> + <FSC>402</FSC> + <COMP>0</COMP> + <LEV>27</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgSLS</PG> + <FSC>402</FSC> + <COMP>2</COMP> + <LEV>16</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgSLS</PG> + <FSC>402</FSC> + <COMP>2</COMP> + <LEV>37</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgSLS</PG> + <FSC>402</FSC> + <COMP>1</COMP> + <LEV>15</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgSLS</PG> + <FSC>402</FSC> + <COMP>2</COMP> + <LEV>15</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgSLS</PG> + <FSC>402</FSC> + <COMP>1</COMP> + <LEV>37</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgSLS</PG> + <FSC>402</FSC> + <COMP>1</COMP> + <LEV>16</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgSLS</PG> + <FSC>402</FSC> + <COMP>0</COMP> + <LEV>6</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgSLS</PG> + <FSC>402</FSC> + <COMP>0</COMP> + <LEV>5</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgSLS</PG> + <FSC>403</FSC> + <COMP>5</COMP> + <LEV>44</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgSLS</PG> + <FSC>403</FSC> + <COMP>4</COMP> + <LEV>44</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgSLS</PG> + <FSC>407</FSC> + <COMP>8</COMP> + <LEV>10</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgSLS</PG> + <FSC>407</FSC> + <COMP>8</COMP> + <LEV>10</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgSLS</PG> + <FSC>407</FSC> + <COMP>0</COMP> + <LEV>9</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgSLS</PG> + <FSC>407</FSC> + <COMP>0</COMP> + <LEV>9</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgSLS</PG> + <FSC>407</FSC> + <COMP>0</COMP> + <LEV>10</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgSLS</PG> + <FSC>407</FSC> + <COMP>1</COMP> + <LEV>19</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgSLS</PG> + <FSC>407</FSC> + <COMP>1</COMP> + <LEV>19</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgSLS</PG> + <FSC>407</FSC> + <COMP>1</COMP> + <LEV>20</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgSLS</PG> + <FSC>407</FSC> + <COMP>8</COMP> + <LEV>9</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgSLS</PG> + <FSC>407</FSC> + <COMP>8</COMP> + <LEV>9</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Symbol</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgSLS</PG> + <FSC>501</FSC> + <COMP>0</COMP> + <LEV>1</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgSLS</PG> + <FSC>501</FSC> + <COMP>1</COMP> + <LEV>2</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgSLS</PG> + <FSC>502</FSC> + <COMP>1</COMP> + <LEV>2</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgSLS</PG> + <FSC>502</FSC> + <COMP>0</COMP> + <LEV>1</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Conductor</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgSLS</PG> + <FSC>503</FSC> + <COMP>0</COMP> + <LEV>1</LEV> + <WEIGHT>2</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgSLS</PG> + <FSC>504</FSC> + <COMP>1</COMP> + <LEV>2</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> + <XGeosDataConfig> + <PG>pgSLS</PG> + <FSC>999</FSC> + <COMP>0</COMP> + <LEV>62</LEV> + <WEIGHT>1</WEIGHT> + <FTYPE>pgTPC_Text2</FTYPE> + </XGeosDataConfig> +</dataroot> diff --git a/xdgnjobs/ximple-spatialjob/src/test/java/com/ximple/eofms/filter/ElementDispatcherTest.java b/xdgnjobs/ximple-spatialjob/src/test/java/com/ximple/eofms/filter/ElementDispatcherTest.java index c25783a..21508da 100644 --- a/xdgnjobs/ximple-spatialjob/src/test/java/com/ximple/eofms/filter/ElementDispatcherTest.java +++ b/xdgnjobs/ximple-spatialjob/src/test/java/com/ximple/eofms/filter/ElementDispatcherTest.java @@ -3,8 +3,8 @@ import java.io.File; import java.io.IOException; -import org.apache.commons.digester.Digester; -import org.apache.commons.digester.xmlrules.DigesterLoader; +import com.ximple.eofms.util.ElementDigesterUtils; +import org.apache.commons.digester3.Digester; import org.geotools.TestData; import org.testng.Assert; import org.testng.annotations.Test; @@ -17,7 +17,7 @@ @Test public void testLoadRules() throws IOException { File rules = TestData.file(this, TestRulesName); - Digester digester = DigesterLoader.createDigester(rules.toURI().toURL()); + Digester digester = ElementDigesterUtils.getElementDigester(); // File config = TestData.file(this, TestConfigName); // ElementDispatcher ed = (ElementDispatcher) digester.parse(config); Assert.assertNotNull(digester); @@ -26,7 +26,7 @@ @Test public void testLoadConfig() throws IOException, SAXException { File rules = TestData.file(this, TestRulesName); - Digester digester = DigesterLoader.createDigester(rules.toURI().toURL()); + Digester digester = ElementDigesterUtils.getElementDigester(); File config = TestData.file(this, TestConfigName); ElementDispatcher ed = (ElementDispatcher) digester.parse(config); Assert.assertNotNull(ed); diff --git a/xdgnjobs/ximple-spatialjob/src/test/java/com/ximple/eofms/rest/GeoManagerEncoderTest.java b/xdgnjobs/ximple-spatialjob/src/test/java/com/ximple/eofms/rest/GeoManagerEncoderTest.java new file mode 100644 index 0000000..45305a0 --- /dev/null +++ b/xdgnjobs/ximple-spatialjob/src/test/java/com/ximple/eofms/rest/GeoManagerEncoderTest.java @@ -0,0 +1,47 @@ +package com.ximple.eofms.rest; + +import it.geosolutions.geoserver.rest.encoder.GSLayerGroupEncoder; +import it.geosolutions.geoserver.rest.encoder.GSLayerGroupEncoder23; +import org.jdom.Element; +import org.testng.annotations.Test; + +public class GeoManagerEncoderTest { + @Test + public void testLaterGroupEncoder() { + String a = "pgCLS:xtpc:fsc-203-c1-l37-w1,xtpc:fsc-203-c0-l38-w1,xtpc:fsc-203-c1-l38-w1,xtpc:fsc-203-c0-l37-w1,xtpc:fsc-311-c1-l45-w1,xtpc:fsc-311-c1-l45-w0,xtpc:fsc-311-c0-l45-w1,xtpc:fsc-501-c0-l1-w0,xtpc:fsc-501-c1-l2-w0,xtpc:fsc-502-c0-l1-w1,xtpc:fsc-502-c1-l2-w1,xtpc:fsc-503-c0-l1-w2,xtpc:fsc-999-c0-l62-w1"; + GSLayerGroupEncoder groupWriter = new GSLayerGroupEncoder23() { + + @Override + protected void addToRoot(Element... elements) { + for (Element e : elements) { + if (e != null) { + getRoot().addContent(e.cloneContent()); + } + } + } + }; + groupWriter.addLayer("xtpc:fsc-203-c1-l37-w1"); + groupWriter.addLayer("xtpc:fsc-203-c0-l38-w1"); + groupWriter.addLayer("xtpc:fsc-203-c1-l38-w1"); + groupWriter.addLayer("xtpc:fsc-203-c0-l37-w1"); + groupWriter.addLayer("xtpc:fsc-311-c1-l45-w1"); + groupWriter.addLayer("xtpc:fsc-311-c1-l45-w0"); + groupWriter.addLayer("xtpc:fsc-311-c0-l45-w1"); + groupWriter.addLayer("xtpc:fsc-501-c0-l1-w0"); + groupWriter.addLayer("xtpc:fsc-501-c1-l2-w0"); + groupWriter.addLayer("xtpc:fsc-502-c0-l1-w1"); + groupWriter.addLayer("xtpc:fsc-502-c1-l2-w"); + groupWriter.addLayer("xtpc:fsc-503-c0-l1-w2"); + groupWriter.addLayer("xtpc:fsc-999-c0-l62-w1"); + String s = groupWriter.toString(); + System.out.println(s); + } + + @Test + public void testLaterGroupEncoder23() { + String a = "pgCLS:xtpc:fsc-203-c1-l37-w1,xtpc:fsc-203-c0-l38-w1,xtpc:fsc-203-c1-l38-w1,xtpc:fsc-203-c0-l37-w1,xtpc:fsc-311-c1-l45-w1,xtpc:fsc-311-c1-l45-w0,xtpc:fsc-311-c0-l45-w1,xtpc:fsc-501-c0-l1-w0,xtpc:fsc-501-c1-l2-w0,xtpc:fsc-502-c0-l1-w1,xtpc:fsc-502-c1-l2-w1,xtpc:fsc-503-c0-l1-w2,xtpc:fsc-999-c0-l62-w1"; + GSLayerGroupEncoder23 groupWriter = new GSLayerGroupEncoder23(); + groupWriter.addLayer("topp:boundaries"); + String s = groupWriter.toString(); + } +} -- Gitblit v0.0.0-SNAPSHOT