Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

GEOT-4214 - Support for parsing arc strings.

Refactored existing arc binding into a parent arc string binding with a child
binding specifc for arc, which allows for only 3 points.
  • Loading branch information...
commit 0bef023ade544a2149692e35993a773534b8cb8f 1 parent 5d96ab2
jdeolive authored
View
3  modules/extension/xsd/xsd-gml3/src/main/java/org/geotools/gml3/GMLConfiguration.java
@@ -26,6 +26,7 @@
import org.geotools.gml3.bindings.AbstractFeatureTypeBinding;
import org.geotools.gml3.bindings.AbstractGeometryTypeBinding;
import org.geotools.gml3.bindings.AbstractRingPropertyTypeBinding;
+import org.geotools.gml3.bindings.ArcStringTypeBinding;
import org.geotools.gml3.bindings.BoundingShapeTypeBinding;
import org.geotools.gml3.bindings.ComplexSupportXSAnyTypeBinding;
import org.geotools.gml3.bindings.CurveArrayPropertyTypeBinding;
@@ -279,6 +280,8 @@ protected void registerBindings(MutablePicoContainer container) {
//extended bindings for arc/surface support
if (isExtendedArcSurfaceSupport()) {
+ container.registerComponentImplementation(GML.ArcStringType,
+ ArcStringTypeBinding.class);
container.registerComponentImplementation(GML.ArcType,
ArcTypeBinding.class);
container.registerComponentImplementation(GML.CircleType,
View
184 ...extension/xsd/xsd-gml3/src/main/java/org/geotools/gml3/bindings/ArcStringTypeBinding.java
@@ -0,0 +1,184 @@
+package org.geotools.gml3.bindings;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.geotools.gml3.ArcParameters;
+import org.geotools.gml3.Circle;
+import org.geotools.gml3.GML;
+import org.geotools.xml.*;
+
+import com.vividsolutions.jts.geom.Coordinate;
+import com.vividsolutions.jts.geom.CoordinateSequenceFactory;
+import com.vividsolutions.jts.geom.GeometryFactory;
+import com.vividsolutions.jts.geom.LineString;
+
+import javax.xml.namespace.QName;
+
+/**
+ * Binding object for the type http://www.opengis.net/gml:ArcStringType.
+ * <p>
+ *
+ * <pre>
+ * <code>
+ * &lt;complexType name="ArcStringType"&gt;
+ * &lt;annotation&gt;
+ * &lt;documentation&gt;An ArcString is a curve segment that uses three-point circular arc interpolation.&lt;/documentation&gt;
+ * &lt;/annotation&gt;
+ * &lt;complexContent&gt;
+ * &lt;extension base="gml:AbstractCurveSegmentType"&gt;
+ * &lt;sequence&gt;
+ * &lt;choice&gt;
+ * &lt;annotation&gt;
+ * &lt;documentation&gt;GML supports two different ways to specify the control points of a curve segment.
+ * 1. A sequence of "pos" (DirectPositionType) or "pointProperty" (PointPropertyType) elements. "pos" elements are control points that are only part of this curve segment, "pointProperty" elements contain a point that may be referenced from other geometry elements or reference another point defined outside of this curve segment (reuse of existing points).
+ * 2. The "posList" element allows for a compact way to specifiy the coordinates of the control points, if all control points are in the same coordinate reference systems and belong to this curve segment only. The number of direct positions in the list must be at least three.&lt;/documentation&gt;
+ * &lt;/annotation&gt;
+ * &lt;choice maxOccurs="unbounded" minOccurs="3"&gt;
+ * &lt;element ref="gml:pos"/&gt;
+ * &lt;element ref="gml:pointProperty"/&gt;
+ * &lt;element ref="gml:pointRep"&gt;
+ * &lt;annotation&gt;
+ * &lt;documentation&gt;Deprecated with GML version 3.1.0. Use "pointProperty" instead. Included for backwards compatibility with GML 3.0.0.&lt;/documentation&gt;
+ * &lt;/annotation&gt;
+ * &lt;/element&gt;
+ * &lt;/choice&gt;
+ * &lt;element ref="gml:posList"/&gt;
+ * &lt;element ref="gml:coordinates"&gt;
+ * &lt;annotation&gt;
+ * &lt;documentation&gt;Deprecated with GML version 3.1.0. Use "posList" instead.&lt;/documentation&gt;
+ * &lt;/annotation&gt;
+ * &lt;/element&gt;
+ * &lt;/choice&gt;
+ * &lt;/sequence&gt;
+ * &lt;attribute fixed="circularArc3Points" name="interpolation" type="gml:CurveInterpolationType"&gt;
+ * &lt;annotation&gt;
+ * &lt;documentation&gt;The attribute "interpolation" specifies the curve interpolation mechanism used for this segment. This mechanism
+ * uses the control points and control parameters to determine the position of this curve segment. For an ArcString the interpolation is fixed as "circularArc3Points".&lt;/documentation&gt;
+ * &lt;/annotation&gt;
+ * &lt;/attribute&gt;
+ * &lt;attribute name="numArc" type="integer" use="optional"&gt;
+ * &lt;annotation&gt;
+ * &lt;documentation&gt;The number of arcs in the arc string can be explicitly stated in this attribute. The number of control points in the arc string must be 2 * numArc + 1.&lt;/documentation&gt;
+ * &lt;/annotation&gt;
+ * &lt;/attribute&gt;
+ * &lt;/extension&gt;
+ * &lt;/complexContent&gt;
+ * &lt;/complexType&gt;
+ *
+ * </code>
+ * </pre>
+ *
+ * </p>
+ *
+ * @generated
+ */
+public class ArcStringTypeBinding extends AbstractComplexBinding {
+
+ GeometryFactory gFactory;
+ CoordinateSequenceFactory csFactory;
+ ArcParameters arcParameters;
+
+ public ArcStringTypeBinding(GeometryFactory gFactory, CoordinateSequenceFactory csFactory, ArcParameters arcParameters) {
+ this.gFactory = gFactory;
+ this.csFactory = csFactory;
+ this.arcParameters = arcParameters;
+ }
+
+ /**
+ * @generated
+ */
+ public QName getTarget() {
+ return GML.ArcStringType;
+ }
+
+ @Override
+ public int getExecutionMode() {
+ return OVERRIDE;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated modifiable
+ */
+ public Class getType() {
+ return LineString.class;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated modifiable
+ */
+ public Object parse(ElementInstance instance, Node node, Object value)
+ throws Exception {
+
+ LineString arcLineString = GML3ParsingUtils.lineString(node, gFactory, csFactory);
+
+ Coordinate[] arcCoordinates = arcLineString.getCoordinates();
+ if (arcCoordinates.length < 3) {
+ // maybe log this instead and return null
+ throw new RuntimeException("Number of coordinates in an arc string must be at least 3, "
+ + arcCoordinates.length + " were specified: " + arcLineString);
+ }
+
+ Coordinate c1 = arcCoordinates[0];
+ Coordinate c2 = arcCoordinates[arcCoordinates.length/2];
+ Coordinate c3 = arcCoordinates[arcCoordinates.length-1];
+
+ // determine whether we need to reverse our input.
+ boolean mustReverse = laidOutClockwise(c1, c2, c3);
+
+ if (mustReverse) {
+ // swap coords 1 and 3
+ Coordinate cTemp = c1;
+ c1 = c3;
+ c3 = cTemp;
+ }
+
+ Circle circle = new Circle(c1, c2, c3);
+ double tolerance = arcParameters.getLinearizationTolerance().getTolerance(circle);
+ Coordinate[] resultCoordinates = circle.linearizeArc(c1, c2, c3, tolerance);
+
+ if (mustReverse) {
+ // reverse back
+ List<Coordinate> reversingCoordinates = Arrays.asList(resultCoordinates);
+ Collections.reverse(reversingCoordinates);
+ resultCoordinates = (Coordinate[])
+ reversingCoordinates.toArray(new Coordinate[reversingCoordinates.size()]);
+ }
+
+ LineString resultLineString = gFactory.createLineString(resultCoordinates);
+
+ return resultLineString;
+ }
+
+ /**
+ * Returns whether the input coordinates are laid out clockwise on their corresponding circle.
+ * Only works correctly if the Euclidean distance between c1 and c2 is equal to the Euclidean distance between c2 and c3.
+ * @param c1
+ * @param c2
+ * @param c3
+ * @return true if input coordinates are laid out clockwise on their corresponding circle. false otherwise.
+ */
+ protected boolean laidOutClockwise(Coordinate c1, Coordinate c2, Coordinate c3) {
+ double x1 = c1.x;
+ double y1 = c1.y;
+ double x2 = c2.x;
+ double y2 = c2.y;
+ double x3 = c3.x;
+ double y3 = c3.y;
+
+ double midY = y1 - (y1 - y3) / 2;
+
+ return (x1 < x3 && midY < y2) ||
+ (x1 > x3 && midY > y2) ||
+ (Double.compare(x1, x3) == 0 && (
+ (y1 < y3 && x1 > x2) || // x1 == x3 == midX in this case and the case below
+ (y1 > y3 && x1 < x2)
+ // Double.compare(y1, y3) == 0 degenerate case omitted
+ ));
+ }
+
+}
View
108 modules/extension/xsd/xsd-gml3/src/main/java/org/geotools/gml3/bindings/ArcTypeBinding.java
@@ -35,6 +35,44 @@
/**
+ * &lt;complexType name="ArcType">
+ * &lt;annotation>
+ * &lt;documentation>An Arc is an arc string with only one arc unit, i.e. three control points.&lt;/documentation>
+ * &lt;/annotation>
+ * &lt;complexContent>
+ * &lt;restriction base="gml:ArcStringType">
+ * &lt;sequence>
+ * &lt;choice>
+ * &lt;annotation>
+ * &lt;documentation>GML supports two different ways to specify the control points of a curve segment.
+ *1. A sequence of "pos" (DirectPositionType) or "pointProperty" (PointPropertyType) elements. "pos" elements are control points that are only part of this curve segment, "pointProperty" elements contain a point that may be referenced from other geometry elements or reference another point defined outside of this curve segment (reuse of existing points).
+ *2. The "posList" element allows for a compact way to specifiy the coordinates of the control points, if all control points are in the same coordinate reference systems and belong to this curve segment only. The number of direct positions in the list must be three.&lt;/documentation>
+ * &lt;/annotation>
+ * &lt;choice minOccurs="3" maxOccurs="3">
+ * &lt;element ref="gml:pos"/>
+ * &lt;element ref="gml:pointProperty"/>
+ * &lt;element ref="gml:pointRep">
+ * &lt;annotation>
+ * &lt;documentation>Deprecated with GML version 3.1.0. Use "pointProperty" instead. Included for backwards compatibility with GML 3.0.0.&lt;/documentation>
+ * &lt;/annotation>
+ * &lt;/element>
+ * &lt;/choice>
+ * &lt;element ref="gml:posList"/>
+ * &lt;element ref="gml:coordinates">
+ * &lt;annotation>
+ * &lt;documentation>Deprecated with GML version 3.1.0. Use "posList" instead.&lt;/documentation>
+ * &lt;/annotation>
+ * &lt;/element>
+ * &lt;/choice>
+ * &lt;/sequence>
+ * &lt;attribute name="numArc" type="integer" use="optional" fixed="1">
+ * &lt;annotation>
+ * &lt;documentation>An arc is an arc string consiting of a single arc, the attribute is fixed to "1".&lt;/documentation>
+ * &lt;/annotation>
+ * &lt;/attribute>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
*
* @author Erik van de Pol. B3Partners BV.
*
@@ -71,7 +109,7 @@ public Class getType() {
@Override
public int getExecutionMode() {
- return OVERRIDE;
+ return AFTER;
}
/**
@@ -84,71 +122,13 @@ public int getExecutionMode() {
public Object parse(ElementInstance instance, Node node, Object value)
throws Exception {
+ //check that three points were specified
LineString arcLineString = GML3ParsingUtils.lineString(node, gFactory, csFactory);
-
- Coordinate[] arcCoordinates = arcLineString.getCoordinates();
- if (arcCoordinates.length != 3) {
- // maybe log this instead and return null
- throw new RuntimeException(
- "GML3 parser exception: The number of coordinates of an Arc should be 3. It currently is: " + arcCoordinates.length + "; " + arcLineString);
+ if (arcLineString.getCoordinates().length != 3) {
+ throw new RuntimeException("Number of coordinates in an arc must be exactly 3, "
+ + arcLineString.getCoordinates().length + " were specified: " + arcLineString);
}
- Coordinate c1 = arcCoordinates[0];
- Coordinate c2 = arcCoordinates[1];
- Coordinate c3 = arcCoordinates[2];
-
- // determine whether we need to reverse our input.
- boolean mustReverse = laidOutClockwise(c1, c2, c3);
-
- if (mustReverse) {
- // swap coords 1 and 3
- Coordinate cTemp = c1;
- c1 = c3;
- c3 = cTemp;
- }
-
- Circle circle = new Circle(c1, c2, c3);
- double tolerance = arcParameters.getLinearizationTolerance().getTolerance(circle);
- Coordinate[] resultCoordinates = circle.linearizeArc(c1, c2, c3, tolerance);
-
- if (mustReverse) {
- // reverse back
- List<Coordinate> reversingCoordinates = Arrays.asList(resultCoordinates);
- Collections.reverse(reversingCoordinates);
- resultCoordinates = (Coordinate[])
- reversingCoordinates.toArray(new Coordinate[reversingCoordinates.size()]);
- }
-
- LineString resultLineString = gFactory.createLineString(resultCoordinates);
-
- return resultLineString;
- }
-
- /**
- * Returns whether the input coordinates are laid out clockwise on their corresponding circle.
- * Only works correctly if the Euclidean distance between c1 and c2 is equal to the Euclidean distance between c2 and c3.
- * @param c1
- * @param c2
- * @param c3
- * @return true if input coordinates are laid out clockwise on their corresponding circle. false otherwise.
- */
- protected boolean laidOutClockwise(Coordinate c1, Coordinate c2, Coordinate c3) {
- double x1 = c1.x;
- double y1 = c1.y;
- double x2 = c2.x;
- double y2 = c2.y;
- double x3 = c3.x;
- double y3 = c3.y;
-
- double midY = y1 - (y1 - y3) / 2;
-
- return (x1 < x3 && midY < y2) ||
- (x1 > x3 && midY > y2) ||
- (Double.compare(x1, x3) == 0 && (
- (y1 < y3 && x1 > x2) || // x1 == x3 == midX in this case and the case below
- (y1 > y3 && x1 < x2)
- // Double.compare(y1, y3) == 0 degenerate case omitted
- ));
+ return value;
}
-
}
View
3  modules/extension/xsd/xsd-gml3/src/main/java/org/geotools/gml3/v3_2/GMLConfiguration.java
@@ -24,6 +24,7 @@
import org.geotools.gml3.bindings.AbstractFeatureTypeBinding;
import org.geotools.gml3.bindings.AbstractGeometryTypeBinding;
import org.geotools.gml3.bindings.AbstractRingPropertyTypeBinding;
+import org.geotools.gml3.bindings.ArcStringTypeBinding;
import org.geotools.gml3.bindings.ArcTypeBinding;
import org.geotools.gml3.bindings.BoundingShapeTypeBinding;
import org.geotools.gml3.bindings.CircleTypeBinding;
@@ -231,6 +232,8 @@ protected final void registerBindings( MutablePicoContainer container ) {
//extended bindings for arc/surface support
if (isExtendedArcSurfaceSupport()) {
+ container.registerComponentImplementation(GML.ArcStringType,
+ ArcStringTypeBinding.class);
container.registerComponentImplementation(GML.ArcType,
ArcTypeBinding.class);
container.registerComponentImplementation(GML.CircleType,
View
15 .../extension/xsd/xsd-gml3/src/test/java/org/geotools/gml3/v3_2/GML32SurfaceParsingTest.java
@@ -0,0 +1,15 @@
+package org.geotools.gml3.v3_2;
+
+import org.geotools.xml.Parser;
+
+import com.vividsolutions.jts.geom.LineString;
+
+public class GML32SurfaceParsingTest extends GML32TestSupport {
+
+ public void testMultiSurface() throws Exception {
+ GMLConfiguration gml = new GMLConfiguration(true);
+ Parser p = new Parser(gml);
+ System.out.println(p.parse(getClass().getResourceAsStream("multisurface.xml")));
+ //assertNotNull(l);
+ }
+}
View
55 modules/extension/xsd/xsd-gml3/src/test/resources/org/geotools/gml3/v3_2/multisurface.xml
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<ns6:MultiSurfacePropertyType xmlns="urn:cz:isvs:ruian:schemas:VymennyFormatTypy:v1" xmlns:ns2="urn:cz:isvs:ruian:schemas:CommonTypy:v1" xmlns:ns3="http://www.w3.org/1999/xlink" xmlns:ns4="http://www.opengis.net/gml/3.2" xmlns:ns5="urn:cz:isvs:ruian:schemas:StatIntTypy:v1" xmlns:ns6="net.opengis.gml._3" xmlns:ns7="urn:cz:isvs:ruian:schemas:RegionIntiTypy:v1" xmlns:ns8="urn:cz:isvs:ruian:schemas:KrajIntTypy:v1" xmlns:ns9="urn:cz:isvs:ruian:schemas:VuscIntTypy:v1" xmlns:ns10="urn:cz:isvs:ruian:schemas:OkresIntTypy:v1" xmlns:ns11="urn:cz:isvs:ruian:schemas:OrpIntTypy:v1" xmlns:ns12="urn:cz:isvs:ruian:schemas:PouIntTypy:v1" xmlns:ns13="urn:cz:isvs:ruian:schemas:ObecIntTypy:v1" xmlns:ns14="urn:cz:isvs:ruian:schemas:SpravObvIntTypy:v1" xmlns:ns15="urn:cz:isvs:ruian:schemas:MopIntTypy:v1" xmlns:ns16="urn:cz:isvs:ruian:schemas:MomcIntTypy:v1" xmlns:ns17="urn:cz:isvs:ruian:schemas:CastObceIntTypy:v1" xmlns:ns18="urn:cz:isvs:ruian:schemas:KatUzIntTypy:v1" xmlns:ns19="urn:cz:isvs:ruian:schemas:ZsjIntTypy:v1" xmlns:ns20="urn:cz:isvs:ruian:schemas:UliceIntTypy:v1" xmlns:ns21="urn:cz:isvs:ruian:schemas:ParcelaIntTypy:v1" xmlns:ns22="urn:cz:isvs:ruian:schemas:StavObjIntTypy:v1" xmlns:ns23="urn:cz:isvs:ruian:schemas:BaseTypy:v1" xmlns:ns24="urn:cz:isvs:ruian:schemas:AdrMistoIntTypy:v1">
+ <ns4:MultiSurface srsDimension="2" srsName="urn:ogc:def:crs:EPSG::2065" ns4:id="HKU.710644">
+ <ns4:surfaceMember>
+ <ns4:Polygon ns4:id="HKU.710644.1">
+ <ns4:exterior>
+ <ns4:Ring>
+ <ns4:curveMember>
+ <ns4:Curve ns4:id="HKU.710644.1.1.2">
+ <ns4:segments>
+ <ns4:ArcString>
+ <ns4:posList>546786.61 1119372.36 546781.98 1119405.6 546774.32 1119438.15 546770.02 1119449.2 546765.34 1119460.1</ns4:posList>
+ </ns4:ArcString>
+ </ns4:segments>
+ </ns4:Curve>
+ </ns4:curveMember>
+ <ns4:curveMember>
+ <ns4:LineString ns4:id="HKU.710644.1.2">
+ <ns4:posList>546765.34 1119460.1 546780.58 1119460.6 546784.74 1119460.76 546793.77 1119461.08 546794.2 1119461.1 546799.31 1119461.27 546800.6 1119461.32 546806.68 1119460.31 546822.73 1119463.93 546823.57 1119463.18 546824.83 1119464.61 546825.77 1119463.78 546826.84 1119464.98 546827.15 1119464.99 546833.64 1119465.12 546843.21 1119465.43 546844.39 1119465.45 546845.34 1119465.47 546864.29 1119441.89 546865.93 1119439.77 546866.47 1119438.95 546869.36 1119435.33 546869.26 1119435.22 546875.0 1119429.38 546877.54 1119426.8 546893.44 1119443.3 546905.09 1119455.2 546908.07 1119458.05 546923.71 1119473.01 546924.65 1119473.88 546929.34 1119478.4 546934.84 1119483.62 546936.68 1119485.34 546936.94 1119485.58 546936.28 1119486.21 546944.65 1119494.44 546959.23 1119508.38 546972.64 1119520.22 546982.33 1119529.51 546989.17 1119536.16 547000.99 1119548.29 547004.28 1119551.64 547014.04 1119561.66 547014.39 1119563.75 547015.16 1119572.04 547016.08 1119591.63 547015.5 1119596.99 547014.25 1119604.2 547013.89 1119606.32 547013.59 1119607.84 547010.73 1119621.71 547010.13 1119627.06 547009.68 1119639.09 547010.02 1119653.14 547009.7 1119668.35 547009.14 1119695.45 547010.4 1119704.69 547010.96 1119714.86 547015.18 1119730.42 547019.79 1119740.32 547026.36 1119755.73 547034.31 1119766.57 547035.21 1119769.51 547040.88 1119788.28 547044.76 1119796.05 547046.27 1119799.23 547052.04 1119811.34 547066.36 1119840.68 547066.98 1119841.95 547070.83 1119858.61 547073.5 1119875.58 547080.39 1119891.77 547093.69 1119913.21 547098.54 1119922.57 547103.5 1119931.76 547107.89 1119939.89 547123.18 1119954.29 547134.48 1119957.75 547150.21 1119973.45 547169.71 1119996.14 547168.88 1120010.05 547171.67 1120018.74 547172.72 1120030.56 547172.94 1120034.66 547177.22 1120042.04 547176.63 1120053.21 547175.82 1120056.55 547169.04 1120069.17 547154.05 1120086.52 547151.63 1120094.05 547150.76 1120099.71 547148.73 1120103.29 547146.44 1120107.57 547136.76 1120111.72 547124.86 1120116.82 547088.68 1120137.48 547088.53 1120137.76 547075.79 1120143.93 547065.23 1120151.47 547054.87 1120157.15 547046.07 1120159.84 547045.21 1120160.03 547044.62 1120160.01 547032.67 1120161.86 547027.15 1120165.24 547022.75 1120174.31 547020.36 1120187.41 547024.79 1120201.57 547024.02 1120212.39 547023.43 1120220.05 547022.56 1120233.53 547024.1 1120236.39 547032.43 1120252.17 547038.32 1120253.6 547042.25 1120253.37 547056.61 1120252.94 547056.49 1120251.31 547061.9 1120251.9 547062.81 1120247.2 547065.66 1120234.21 547065.99 1120232.42 547066.16 1120231.68 547066.36 1120230.92 547071.57 1120218.49 547075.83 1120208.29 547082.35 1120192.84 547083.89 1120191.46 547085.12 1120190.44 547095.61 1120181.25 547100.03 1120179.78 547110.68 1120182.43 547121.04 1120188.31 547127.94 1120192.19 547151.95 1120205.79 547156.63 1120208.93 547175.58 1120222.05 547178.22 1120223.88 547189.61 1120245.53 547197.72 1120270.29 547198.06 1120271.31 547198.53 1120273.49 547204.05 1120300.51 547204.22 1120301.35 547205.01 1120305.13 547206.13 1120310.44 547206.3 1120312.01 547207.13 1120317.77 547207.89 1120324.57 547208.79 1120332.72 547209.35 1120337.76 547208.62 1120345.17 547207.49 1120357.72 547200.89 1120380.54 547190.36 1120403.54 547189.99 1120404.35 547179.1 1120413.4 547174.61 1120414.98 547175.99 1120420.01 547179.88 1120424.7 547188.4 1120444.04 547190.28 1120464.3 547190.36 1120465.35 547191.71 1120476.84 547195.56 1120477.63 547207.82 1120480.14 547215.56 1120483.61 547227.04 1120457.82 547228.52 1120454.52 547241.01 1120460.16 547246.16 1120462.49 547245.05 1120464.95 547248.0 1120466.28 547252.23 1120468.18 547250.14 1120472.8 547241.17 1120492.64 547246.84 1120494.2 547250.86 1120498.73 547266.59 1120515.45 547268.66 1120517.65 547272.51 1120524.19 547279.03 1120532.7 547282.84 1120538.85 547284.27 1120546.58 547283.48 1120559.93 547283.28 1120562.87 547283.24 1120564.11 547283.19 1120566.43 547283.02 1120574.6 547289.68 1120574.41 547289.7 1120575.5 547289.6 1120577.13 547292.08 1120577.15 547297.79 1120577.19 547298.81 1120577.2 547301.96 1120577.22 547307.66 1120577.07 547338.78 1120575.95 547383.8 1120574.33 547403.97 1120574.19 547427.98 1120574.03 547445.19 1120571.72 547454.57 1120568.28 547474.94 1120560.83 547480.31 1120558.92 547502.57 1120546.16 547502.35 1120545.53 547554.91 1120520.09 547645.86 1120476.49 547648.85 1120473.1 547653.07 1120476.53 547657.49 1120480.1 547659.11 1120481.4 547661.16 1120483.06 547673.88 1120493.3 547679.58 1120498.07 547686.29 1120503.57 547690.53 1120507.04 547733.24 1120560.46 547741.36 1120570.6 547754.37 1120586.82 547780.25 1120620.27 547784.92 1120626.26 547799.71 1120644.92 547856.64 1120718.41 547875.18 1120750.94 547883.23 1120773.28 547885.16 1120791.34 547885.49 1120795.3 547892.61 1120795.71 547926.62 1120797.66 547930.9 1120797.9 547936.09 1120798.2 547939.14 1120798.38 547963.49 1120799.78 547982.72 1120800.89 547998.62 1120801.81 548013.67 1120802.71 548028.63 1120803.53 548041.61 1120804.28 548054.47 1120805.05 548058.41 1120805.26 548072.7 1120806.04 548074.78 1120806.16 548076.65 1120806.18 548079.0 1120806.2 548086.73 1120806.28 548088.14 1120806.29 548087.51 1120791.1 548087.95 1120785.72 548089.31 1120767.42 548094.33 1120704.7 548098.36 1120661.19 548101.33 1120632.11 548102.16 1120631.34 548102.19 1120630.58 548103.68 1120630.76 548137.64 1120634.85 548138.85 1120631.71 548140.05 1120628.58 548148.41 1120606.44 548154.89 1120590.14 548158.13 1120581.71 548161.78 1120583.13 548172.04 1120587.21 548174.92 1120588.36 548177.82 1120589.51 548181.96 1120591.15 548192.36 1120595.23 548196.85 1120596.99 548196.75 1120597.25 548199.17 1120598.21 548205.08 1120600.56 548207.74 1120601.61 548228.35 1120549.5</ns4:posList>
+ </ns4:LineString>
+ </ns4:curveMember>
+ <ns4:curveMember>
+ <ns4:Curve ns4:id="HKU.710644.1.3.4">
+ <ns4:segments>
+ <ns4:Arc>
+ <ns4:posList>548228.35 1120549.5 548231.5 1120545.7 548236.37 1120544.9</ns4:posList>
+ </ns4:Arc>
+ </ns4:segments>
+ </ns4:Curve>
+ </ns4:curveMember>
+ <ns4:curveMember>
+ <ns4:LineString ns4:id="HKU.710644.1.4">
+ <ns4:posList>548236.37 1120544.9 548238.44 1120545.67 548316.22 1120575.72 548327.87 1120581.35 548335.4 1120587.16 548339.63 1120590.86 548402.92 1120662.32 548408.55 1120668.58 548419.11 1120680.3 548422.98 1120684.49 548427.32 1120689.2 548430.18 1120692.29 548436.54 1120699.24 548482.12 1120749.09 548484.85 1120746.72 548493.56 1120739.16 548495.07 1120737.85 548516.88 1120744.21 548524.15 1120739.39 548533.66 1120727.4 548547.17 1120707.91 548567.69 1120681.76 548577.13 1120670.63 548590.11 1120656.95 548599.59 1120647.26 548604.37 1120642.65 548607.89 1120639.99 548609.77 1120638.99 548609.27 1120637.21 548597.13 1120593.93 548586.03 1120561.21 548567.93 1120505.04 548557.5 1120483.9 548559.14 1120482.45 548575.94 1120467.55 548577.06 1120466.55 548568.49 1120444.83 548562.63 1120431.38 548529.82 1120373.03 548522.6 1120357.93 548512.52 1120338.55 548501.15 1120316.54 548486.86 1120289.3 548477.53 1120273.78 548455.25 1120248.99 548436.73 1120228.17 548401.78 1120194.6 548346.39 1120144.22 548340.97 1120136.85 548335.59 1120129.54 548335.18 1120128.98 548330.78 1120122.99 548329.36 1120121.06 548313.15 1120135.24 548295.53 1120150.66 548281.43 1120136.89 548274.17 1120129.8 548269.71 1120125.44 548268.85 1120124.6 548262.02 1120117.91 548253.46 1120109.54 548244.94 1120101.17 548233.52 1120089.95 548231.47 1120089.3 548222.89 1120086.55 548220.69 1120085.85 548209.25 1120074.63 548197.81 1120063.41 548187.87 1120053.64 548180.44 1120046.34 548172.84 1120038.94 548162.55 1120028.91 548158.92 1120025.37 548156.1 1120022.48 548155.35 1120023.07 548145.82 1120017.33 548145.54 1120017.16 548137.21 1120011.19 548127.51 1120007.8 548126.13 1120007.3 548124.45 1120006.3 548123.64 1120005.81 548120.76 1120003.92 548118.3 1120002.21 548115.81 1120000.45 548113.58 1119999.15 548110.81 1119997.58 548107.82 1119995.94 548104.78 1119994.09 548102.05 1119992.59 548098.7 1119990.63 548095.41 1119988.77 548094.34 1119988.02 548056.79 1119967.53 548041.05 1119957.22 547981.49 1119905.47 547966.62 1119892.9 547970.18 1119891.9 547974.48 1119891.23 547992.95 1119888.5 548004.45 1119889.69 548038.38 1119885.39 548076.35 1119847.26 548081.25 1119835.75 548078.24 1119820.76 548065.12 1119795.57 548059.24 1119787.79 548017.91 1119763.56 547987.88 1119747.77 547970.96 1119739.74 547962.98 1119727.93 547973.74 1119720.58 547984.57 1119713.17 548011.02 1119693.53 548018.9 1119687.68 548017.02 1119680.18 548014.48 1119670.07 548012.31 1119661.44 548009.66 1119650.88 548002.89 1119643.88 548003.62 1119643.33 548009.0 1119637.71 548015.08 1119631.04 548038.67 1119605.18 548072.73 1119549.71 548086.77 1119517.56 548099.17 1119481.14 548106.64 1119486.05 548108.45 1119484.94 548106.73 1119481.7 548103.29 1119478.24 548101.25 1119471.75 548095.39 1119475.08 547924.5 1119433.86 547919.85 1119432.74 547728.24 1119386.52 547565.92 1119347.36 547561.29 1119346.25 547324.58 1119289.15 547321.62 1119288.43 547250.73 1119271.33 547247.76 1119270.62 547150.55 1119247.17 547119.94 1119239.78 547080.09 1119230.17 547007.78 1119212.73 547058.59 1119184.61 547090.43 1119163.32 547136.54 1119132.48 547171.95 1119108.8 547181.24 1119102.59 547179.87 1119101.06 547178.51 1119099.55 547169.52 1119089.55 547154.28 1119076.18 547149.65 1119078.27 547144.96 1119084.48 547141.24 1119089.66 547142.09 1119092.79 547127.86 1119105.06 547120.7 1119108.02 547101.44 1119107.79 547021.13 1119095.41 547018.16 1119095.57 546992.63 1119096.35 546974.3 1119096.91 546958.33 1119098.87 546936.86 1119099.89 546879.88 1119119.08 546798.0 1119122.64 546795.08 1119122.76 546792.33 1119122.75 546784.46 1119122.22 546783.68 1119122.16 546780.04 1119121.98 546755.38 1119120.72 546751.66 1119120.94 546741.2 1119121.53 546735.97 1119121.83 546722.47 1119122.61</ns4:posList>
+ </ns4:LineString>
+ </ns4:curveMember>
+ <ns4:curveMember>
+ <ns4:Curve ns4:id="HKU.710644.1.5.6">
+ <ns4:segments>
+ <ns4:ArcString>
+ <ns4:posList>546722.47 1119122.61 546741.35 1119155.19 546758.85 1119188.55 546784.84 1119274.68 546788.43 1119304.57 546788.66 1119307.82 546789.08 1119316.14 546789.19 1119319.42 546787.4 1119364.6</ns4:posList>
+ </ns4:ArcString>
+ </ns4:segments>
+ </ns4:Curve>
+ </ns4:curveMember>
+ <ns4:curveMember>
+ <ns4:LineString ns4:id="HKU.710644.1.6">
+ <ns4:posList>546787.4 1119364.6 546787.26 1119365.99 546786.76 1119370.96 546786.61 1119372.36</ns4:posList>
+ </ns4:LineString>
+ </ns4:curveMember>
+ </ns4:Ring>
+ </ns4:exterior>
+ </ns4:Polygon>
+ </ns4:surfaceMember>
+ </ns4:MultiSurface>
+</ns6:MultiSurfacePropertyType>
Please sign in to comment.
Something went wrong with that request. Please try again.