Example #1
1
 public static string ToGeoJson(System.Data.Entity.Spatial.DbGeometry location)
 {
     var wktReader = new WKTReader();
     var geometry = wktReader.Read(location.WellKnownValue.WellKnownText);
     var geoJsonWriter = new GeoJsonWriter();
     return geoJsonWriter.Write(geometry);
 }
        private void Execute(IGeometryFactory factory)
        {
            const string wkt1 = @"POLYGON ((34.8998882099012 30.3837960942026, 34.9010566737651 30.3644568453302, 34.952062587058 30.3841960548712, 34.9237694926759 30.3379967024143, 34.8688043479468 30.2722872698552, 34.8675239767921 30.2729668362851, 34.8644624659558 30.2746560404891, 34.8614352803289 30.2763912924804, 34.8584433396252 30.2781720660657, 34.8554875530179 30.2799978212197, 34.8525688188649 30.2818680042466, 34.8496880244379 30.2837820479458, 34.8468460456542 30.2857393717817, 34.8440437468117 30.2877393820578, 34.8412819803279 30.2897814720941, 34.8385615864812 30.291865022409, 34.8358833931563 30.2939894009049, 34.8332482155932 30.2961539630577, 34.8306568561393 30.2983580521099, 34.8281101040059 30.3006009992674, 34.8256087350277 30.3028821239005, 34.8231535114263 30.3052007337477, 34.8207451815784 30.3075561251236, 34.8183844797864 30.3099475831299, 34.8160721260548 30.3123743818706, 34.813808825869 30.3148357846692, 34.8115952699799 30.3173310442906, 34.8094321341915 30.3198594031656, 34.8073200791532 30.3224200936183, 34.8052597501567 30.3250123380972, 34.8038593775008 30.3268416420348, 34.8413134524996 30.34133631112, 34.8380456129141 30.3420679436136, 34.8345469119455 30.3429079098264, 34.8310655827664 30.3438006160548, 34.827824169131 30.3446853380141, 34.827602680711 30.3447457917824, 34.8241592556176 30.3457431505854, 34.8207363515157 30.3467923902175, 34.8173350063135 30.3478931927008, 34.8139562514873 30.34904522442, 34.8106011117732 30.3502481362226, 34.80727060486 30.3515015635225, 34.8039657410851 30.3528051264095, 34.8006875231308 30.3541584297621, 34.7974369457248 30.355561063366, 34.8114061852091 30.3793421607384, 34.8098261518056 30.3806388748041, 34.8072325551456 30.3828429255909, 34.8046836035397 30.3850858339783, 34.8021800734927 30.387366919357, 34.7997227278858 30.3896854894863, 34.797312315744 30.3920408407015, 34.7949495720071 30.3944322581256, 34.7926352173053 30.3968590158832, 34.7903699577383 30.3993203773193, 34.7881544846595 30.4018155952199, 34.8175519633847 30.421036532238, 34.8473374156124 30.4405111377535, 34.8473374156124 30.4405111377536, 34.8945946797018 30.4714093282142, 34.89504284421 30.4639917561117, 34.9249010902965 30.4502666241023, 34.9120339400511 30.4239712613602, 34.8990624811609 30.3974627330299, 34.8990624811609 30.3974627330298, 34.8998882099012 30.3837960942026), (34.8998882099012 30.3837960942026, 34.8896581575596 30.3782440174851, 34.8896581575596 30.3782440174851, 34.8998882099012 30.3837960942026))";
            const string wkt2 = @"POLYGON ((34.89504284421 30.4639917561117, 34.8974881525283 30.4235194508906, 34.8362388038152 30.4216169690234, 34.8683403196915 30.4762662772922, 34.89504284421 30.4639917561117))";

            WKTReader reader = new WKTReader(factory);

            IGeometry g1 = reader.Read(wkt1);
            Assert.IsFalse(g1.IsValid);
            IGeometry v1 = g1.Buffer(0);
            Assert.IsTrue(v1.IsValid);

            IGeometry g2 = reader.Read(wkt2);
            //Assert.IsFalse(g2.IsValid);
            IGeometry v2 = g2.Buffer(0);
            Assert.IsTrue(v2.IsValid);

            IGeometry union1 = g1.Union(g2);
            Assert.IsNotNull(union1);
            Assert.IsTrue(union1.IsValid);

            IGeometry union2 = v1.Union(v2);
            Assert.IsNotNull(union2);
            Assert.IsTrue(union2.IsValid);
        }
 public void Test5()
 {
     WKTReader reader = new WKTReader(new GeometryFactory(new PrecisionModel(1), 0));
     IGeometry geometry = reader.Read("MULTIPOINT (0 0, 5 0, 10 0)");
     LineString convexHull = (LineString)reader.Read("LINESTRING (0 0, 10 0)");
     Assert.IsTrue(convexHull.EqualsExact(geometry.ConvexHull()));
 }
 public void Test1()
 {
     WKTReader reader = new WKTReader(new GeometryFactory(new PrecisionModel(1), 0));
     LineString lineString = (LineString)reader.Read("LINESTRING (30 220, 240 220, 240 220)");
     LineString convexHull = (LineString)reader.Read("LINESTRING (30 220, 240 220)");
     Assert.IsTrue(convexHull.EqualsExact(lineString.ConvexHull()));
 }
        public void CascadedUnionError()
        {
            String[] wkt =
            {
               //MULTIPOLYGON (((-2.775 -37.382, -2.7694818956884695 -37.302294048833446, -4.381 -37.19, -4.379 -37.16, -2.7674053419183364 -37.272299383264858, -2.766 -37.252, -2.703 -37.257, -2.712 -37.386, -2.775 -37.382)), ((-0.558 -16.355, -0.556624473051351 -16.33528411373603, -2.168 -16.223, -2.165 -16.193, -0.55452706181921063 -16.305221219408683, -0.549 -16.226, -0.485 -16.23, -0.494 -16.36, -0.558 -16.355)))
                "MULTIPOLYGON (((-2.775 -37.382, -2.7694818956884695 -37.302294048833446, -4.381 -37.19, -4.379 -37.16, -2.7674053419183364 -37.272299383264858, -2.766 -37.252, -2.703 -37.257, -2.712 -37.386, -2.775 -37.382)), ((-0.558 -16.355, -0.556624473051351 -16.33528411373603, -2.168 -16.223, -2.165 -16.193, -0.55452706181921063 -16.305221219408683, -0.549 -16.226, -0.485 -16.23, -0.494 -16.36, -0.558 -16.355)))",
               //MULTIPOLYGON (((-4.218 -16.08, -4.216 -16.05, -2.924 -16.14, -2.926 -16.17, -4.218 -16.08)), ((-5.291 -18.097, -5.243 -17.415, -5.239 -17.352, -5.15929328747628 -17.357518157020873, -5.071 -16.091, -5.041 -16.093, -5.1292306097055169 -17.359599419328081, -5.109 -17.361, -5.114 -17.424, -5.161 -18.106, -5.291 -18.097)))
                "MULTIPOLYGON (((-4.218 -16.08, -4.216 -16.05, -2.924 -16.14, -2.926 -16.17, -4.218 -16.08)), ((-5.291 -18.097, -5.243 -17.415, -5.239 -17.352, -5.15929328747628 -17.357518157020873, -5.071 -16.091, -5.041 -16.093, -5.1292306097055169 -17.359599419328081, -5.109 -17.361, -5.114 -17.424, -5.161 -18.106, -5.291 -18.097)))"
            };

            IList<IGeometry> items = new List<IGeometry>();
            IGeometryFactory factory = GeometryFactory.Default;
            WKTReader reader = new WKTReader(factory);
            IGeometry geoms = reader.Read(wkt[0]);
            for (int i = 0; i < geoms.NumGeometries; i++)
            {
                IGeometry geom = geoms.GetGeometryN(i);
                items.Add(geom);
            }
            geoms = reader.Read(wkt[1]);
            for (int i = 0; i < geoms.NumGeometries; i++)
            {
                IGeometry geom = geoms.GetGeometryN(i);
                items.Add(geom);
            }

            UnaryUnionOp op = new UnaryUnionOp(items, new GeometryFactory(new PrecisionModel(100)));
            IGeometry result = op.Union();
            Assert.IsNotNull(result);
        }
        public void TestTransform()
        {
            CoordinateSystemFactory csFactory = new CoordinateSystemFactory();
            const string sourceCsWkt = "GEOGCS[\"WGS 84\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]]";                                    
            ICoordinateSystem sourceCs = csFactory.CreateFromWkt(sourceCsWkt);
            Assert.That(sourceCs, Is.Not.Null);
            const string targetCsWkt = "PROJCS[\"WGS 84 / Australian Antarctic Lambert\",GEOGCS[\"WGS 84\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",-68.5],PARAMETER[\"standard_parallel_2\",-74.5],PARAMETER[\"latitude_of_origin\",-50],PARAMETER[\"central_meridian\",70],PARAMETER[\"false_easting\",6000000],PARAMETER[\"false_northing\",6000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"3033\"]]";
            ICoordinateSystem targetCs = csFactory.CreateFromWkt(targetCsWkt);
            Assert.That(targetCs, Is.Not.Null);
            CoordinateTransformationFactory ctFactory = new CoordinateTransformationFactory();
            ICoordinateTransformation coordTransformation = ctFactory.CreateFromCoordinateSystems(sourceCs, targetCs);

            IGeometryFactory gf = GeometryFactory.Default;            
            const string geomWkt = "MULTIPOINT (152.83949210500001 -42.14413555,152.83910355899999 -42.129844618)";
            WKTReader reader = new WKTReader(gf);
            IGeometry geom = reader.Read(geomWkt);
            Assert.That(geom, Is.Not.Null);
            Assert.That(geom.IsValid, Is.True);
            Assert.That(geom, Is.InstanceOf<IMultiPoint>());

            IMultiPoint mp = (IMultiPoint)geom;
            foreach (IPoint pt in mp.Geometries)
            {
                IGeometry tp = GeometryTransform.TransformGeometry(gf, pt, coordTransformation.MathTransform);
                Assert.That(tp, Is.Not.Null);
                Assert.That(tp.IsValid, Is.True);
            }

            IGeometry transformed = GeometryTransform.TransformGeometry(gf, mp, coordTransformation.MathTransform);
            Assert.That(transformed, Is.Not.Null);
            Assert.That(transformed.IsValid, Is.True);
        }
Example #7
0
		public void MultiPoint_WKT_reader_should_skip_extra_parenthesis_around_coordinates()
		{
			WKTReader reader = new WKTReader();
			IGeometry mp1 = reader.Read("MULTIPOINT (10 10, 20 20)");
			IGeometry mp2 = reader.Read("MULTIPOINT ((10 10), (20 20))");
			Assert.IsTrue(mp1.EqualsExact(mp2));
		}
        private static void PerformTest(IGeometryFactory factory)
        {
            if (factory == null)
                throw new ArgumentNullException("factory");

            WKTReader reader = new WKTReader(factory);
            IGeometry g1 = reader.Read(t1);
            Assert.IsNotNull(g1);
            Assert.IsTrue(g1.IsValid);
            Assert.IsInstanceOf(typeof(IPolygon), g1);
            Assert.IsInstanceOf(typeof(Polygon), g1);

            IGeometry g2 = reader.Read(t2);
            Assert.IsNotNull(g2);
            Assert.IsTrue(g2.IsValid);
            Assert.IsInstanceOf(typeof(IMultiPolygon), g2);
            Assert.IsInstanceOf(typeof(MultiPolygon), g2);

            Stopwatch watch = new Stopwatch();
            watch.Start();
            IGeometry r = g1.Intersection(g2);
            watch.Stop();
            Assert.IsNotNull(r);
            Assert.IsInstanceOf(typeof(IMultiPolygon), r);
            Assert.IsInstanceOf(typeof(MultiPolygon), r);
            Assert.IsTrue(r.IsValid);
            Console.WriteLine("GeometryFactory.Default => Elapsed: {0}", watch.Elapsed);
        }
        private static bool TestWktWkb(int number, IGeometryFactory factory, string wkt, string wkb)
        {
            WKTReader r = new WKTReader(factory);
            IGeometry wktGeom = r.Read(wkt);
            WKBReader s = new WKBReader(factory);
            IGeometry wkbGeom = s.Read(WKBReader.HexToBytes(wkb));

            try
            {
                Assert.AreEqual(wkb, WKBWriter.ToHex(wktGeom.AsBinary()), "wkb's don't match");
                Assert.IsTrue(DiscreteHausdorffDistance.Distance(wktGeom, wkbGeom) < 1e-9, number + ": DiscreteHausdorffDistance.Distance(wktGeom, wkbGeom) < 1e-9");
                if (!wktGeom.EqualsExact(wkbGeom))
                {
                    Assert.AreEqual(wkt, wktGeom.AsText(), number + ": wkt.Equals(wktGeom.AsText())");
                    var wktGeom2 = s.Read(wktGeom.AsBinary());
                    Assert.AreEqual(wkt, wktGeom2.AsText(), number + ": wkt.Equals(wktGeom2.AsText())");
                    var diff = wkbGeom.Difference(wktGeom);
                    Assert.IsTrue(false, number + ": wktGeom.EqualsExact(wkbGeom)\n" + diff.AsText());
                }
                return false;
            }
            catch (AssertionException ex)
            {
                Console.WriteLine(ex.Message);
                return true;
            }
        }
 public void TestIssue147()
 {
     var wkt = "POLYGON ((-94.16 42.25, -94.15 42.26, -94.14 42.25, -94.16 42.25))";
     var geom = new WKTReader().Read(wkt);
     Assert.AreEqual(
         "0x010300000001000000040000000AD7A3703D8A57C000000000002045409A999999998957C0E17A14AE47214540295C8FC2F58857C000000000002045400AD7A3703D8A57C00000000000204540",
         "0x"+ WKBWriter.ToHex(geom.AsBinary()));
 }
 public void TestSerializeable(string wkt)
 {
     var reader = new WKTReader(new GeometryFactory());
     var gS = (Geometry)reader.Read(wkt);
     var buffer = SerializationUtility.Serialize(gS);
     
     var gD = SerializationUtility.Deserialize<Geometry>(buffer);
     Assert.IsTrue(gD.EqualsExact(gS));
 }
Example #12
0
 public static System.Data.Entity.Spatial.DbGeometry UnionAggregate(
     IEnumerable<System.Data.Entity.Spatial.DbGeometry> dbGeometrys)
 {
     var wktReader = new WKTReader();
     var geometries = dbGeometrys.Select(x => wktReader.Read(x.WellKnownValue.WellKnownText)).ToArray();
     var collection = new GeometryCollection(geometries);
     var wktWriter = new WKTWriter();
     return System.Data.Entity.Spatial.DbGeometry.FromText(wktWriter.Write(collection));
 }
Example #13
0
 public static string ToGeoJson(System.Data.Entity.Spatial.DbGeometry location, ProjectionInfo pStart,
     ProjectionInfo pEnd)
 {
     var wktReader = new WKTReader();
     var geometry = wktReader.Read(location.WellKnownValue.WellKnownText);
     geometry = Project(geometry, pStart, pEnd);
     var geoJsonWriter = new GeoJsonWriter();
     return geoJsonWriter.Write(geometry);
 }
		public static void main(string[] args)
		{
			WKTReader rdr = new WKTReader();			
			IGeometry[] geom = new IGeometry[3];
			geom[0] = rdr.Read("POLYGON (( 100 180, 100 260, 180 260, 180 180, 100 180 ))");
			geom[1] = rdr.Read("POLYGON (( 80 140, 80 200, 200 200, 200 140, 80 140 ))");
			geom[2] = rdr.Read("POLYGON (( 160 160, 160 240, 240 240, 240 160, 160 160 ))");
            UnionUsingBufferOp(geom);
		}
		public static void main(string[] args)
		{
			WKTReader rdr = new WKTReader();
			
			ILineString line1 = (ILineString) rdr.Read("LINESTRING (0 0, 10 10, 20 20)");
			ShowSelfIntersections(line1);			
            ILineString line2 = (ILineString) rdr.Read("LINESTRING (0 40, 60 40, 60 0, 20 0, 20 60)");
			ShowSelfIntersections(line2);
		}
 public void test_intersection_bug_clipped()
 {
     IGeometryFactory factory = GeometryFactory.Default;
     WKTReader reader = new WKTReader(factory);
     IGeometry geom = reader.Read(NonNodedIntersection);
     Envelope clipEnv = geom.EnvelopeInternal;
     clipEnv.ExpandBy(BufferValue);
     IGeometry clip = factory.ToGeometry(clipEnv);
     Assert.DoesNotThrow(() => DoIntersection(FromWkb(Poly1Wkb, clip), FromWkb(Poly2Wkb, clip), clip));
 }
        public void TestIssue87()
        {
            var wktReader = new WKTReader();
            var lines = new List<IGeometry>(_wkts.Length);
            lines.AddRange(_wkts.Select(wkt => wktReader.Read(wkt))/*.Where(g => g.Length > 0 )*/);
            var polygonizer = new NetTopologySuite.Operation.Polygonize.Polygonizer();
            polygonizer.Add(lines);

            IGeometry res;
            Assert.DoesNotThrow( () =>  res = polygonizer.GetGeometry());
        }
Example #18
0
        /**
         * Reads one or more WKT geometries from a string.
         * 
         * @param wkt
         * @param geomFact
         * @return
         * @throws ParseException
         * @throws IOException
         */

        public static IGeometry ReadGeometriesFromWktString(String wkt, IGeometryFactory geomFact)
        {
            var reader = new WKTReader(geomFact);
            WKTFileReader fileReader = new WKTFileReader(new StringReader(wkt), reader);
            var geomList = fileReader.Read();

            if (geomList.Count == 1)
                return geomList[0];

            return geomFact.CreateGeometryCollection(GeometryFactory.ToGeometryArray(geomList));
        }
 public void MyClassInitialize()
 {
     WKTReader reader = new WKTReader();
     geom1 = reader.Read("POLYGON ((341789.494471447 4657916.08580466, 341789.494471447 4659272.20917602, 343145.617842805 4659272.20917602, 343145.617842805 4657916.08580466, 341789.494471447 4657916.08580466))");
     geom2 = reader.Read("MULTIPOLYGON (((393822.68 4639241.67, 394318 4638929, 393751.1 4637700.09, 393481.19 4638197.29, 392802.12 4638566.07, 393211.45 4638499.55, 392909.35 4639191.17, 393260.08 4639255.05, 393586.75 4638744.94, 393822.68 4639241.67)), ((358734.44 4642618.57, 359891.83 4644189.05, 360301.41 4645435.23, 359947.84 4646028.19, 358634.94 4646371.61, 358531.69 4646692.64, 358335.16 4647250.54, 358638.29 4647625.31, 358797.09656183 4647772.32853894, 358898.659063356 4648319.20354715, 358812.721562065 4648491.07854974, 359043.03 4648526.46, 359398.61 4649425.97, 360059.69 4650085.9, 359727.08 4650528.59, 359836.159077436 4650709.82858306, 360120.97 4650739.3, 361039.284095505 4650530.14108036, 361437.721601489 4650319.20357719, 362258.034113808 4650366.07857789, 363142.1 4650655.48, 363474.5 4650638.7, 364656 4651615, 364334 4652594.7, 364069 4653651, 364250.02 4654650.14, 364422.65 4654652.47, 364169.73 4655677.28, 364645.1 4656179.46, 364271.21 4656323.7, 364441.31 4657134.86, 364329.34 4659257.96, 364362 4659640, 364144 4659755, 363767.45 4659440.03, 363388.54 4659506.75, 362225.8 4659960.22, 361469.33 4661821.26, 361713 4663904, 362393.36 4664518.67, 362909.37 4664675.53, 363030.16 4664940.51, 363587.34 4665037.93, 363793.84 4665532.82, 364226.34 4665509.44, 364495.19 4665645.82, 365091.33 4666715.48, 364604.28 4667027.22, 364491.29 4667572.77, 363536.68 4668102.73, 363755.69 4668386.74, 364623.9 4667980.53, 365165.57 4667935.38, 366295.55 4668308.83, 366890.25 4667990.11, 367669.02 4667961.78, 369293.59 4668893.59, 370452 4668830, 370706.24 4668273.42, 371916.88 4667338.49, 374217.81 4668755.05, 376216.31 4670162.31, 377861.5 4671489.09, 378033.42 4672034.69, 378439.2 4672295.89, 378512.41 4673686.97, 380007.5 4674173.47, 381707.41 4674030.94, 382818.36 4673583.84, 384334.29 4673162.1, 385627.39 4673231.04, 385837.97 4673409.4, 386557.67 4672828.66, 386975.33 4672890.85, 388006.92 4672635.26, 387960.75 4672193.25, 388672.73 4670577.57, 389054.95 4669797.49, 388755.7 4669668.12, 389356.24 4669197.71, 389682.7 4669186.36, 389905.78 4668960.53, 390205.93 4669057.63, 390217.95 4669851.5, 390557.86 4670035.27, 390846.35 4669591.96, 391180.23 4670170.79, 391340.6 4669427.94, 391468.973970144 4669631.70468354, 391398.78 4670176.34, 391784.09 4670188.43, 392524.53 4669626.01, 392986.83 4669315.08, 393365.93 4668654.55, 394001.59 4669126.82, 394994.89 4669484.83, 394850.31 4670125.88, 395301.8 4671178.18, 395599.22 4671088.99, 395852.5 4670503.53, 395698.7 4669903.58, 395901.29 4668959.03, 395576.1 4668454.19, 394444.42 4667573.85, 393819.37 4667925.57, 392550.02 4665622.76, 392601.25 4665051.76, 393337.55 4664451.22, 393642.01 4664039.69, 393600.3 4663700.32, 393422.43 4662918.5, 393042.47 4662576.08, 393531.86 4662037.54, 394528.18 4661906.8, 394442.9 4660932.07, 394036.42 4660361.88, 393431.06 4660037.51, 391907.44 4660540.09, 391664.86 4659910.9, 391703.95 4659399.25, 391765.6 4659056.98, 390524.73 4657468.38, 390354.89 4656626.65, 390143.44 4655952.88, 390235 4655437.81, 390765.24 4655073.07, 390904.53 4655617.97, 391190.65 4656254.42, 391703.49 4655884.6, 391990.72 4655549.3, 392286.54 4654889.8, 392025.67 4654644.71, 392421.8 4654072.09, 392272.23 4653743.78, 391578.1 4653877.91, 391623.25 4653749.35, 390959.9 4653354.98, 390465.11 4652910.84, 389815.09 4652247.05, 389978.44 4651610.59, 389618.97 4651177.63, 389255.26 4651538.25, 389599.72 4651956.87, 389315.28 4652354.86, 389583.24 4653317.84, 389128.23 4653292.58, 388746.64 4652892.37, 388413.8 4652215.69, 388456.25 4651397.45, 388107.32 4650774.51, 388321.9 4650527.07, 388421.33 4649956.07, 388824.66 4650664.54, 388650.53 4650873.79, 388915.49 4651201.61, 389314.04 4650863.28, 389410.63 4649840.78, 389962.81 4649913.71, 390644 4650126, 391440.37 4649941.35, 391788.64 4649733.21, 391862.54 4649220.19, 392096.93 4649066.06, 392153 4649807, 392457 4650006.2, 391694.03 4651346.65, 391992.42 4652290.71, 392414.286484697 4652350.45442867, 393041.17 4651429.06, 392963.71 4651076.7, 393861.18 4650791.26, 393720.75 4650347.48, 393712.87 4649879.21, 394006.66 4649152.61, 392844.53 4648389.46, 391873.27 4647876.63, 391843.52 4647683.09, 390917.63 4647239.32, 390123.49 4647375.73, 389798.32 4647721.03, 390332.82 4648915.31, 389578.26 4649160.16, 389078.93 4648817.29, 388909.57 4648467.02, 388558.02 4648654.86, 388326.03 4648489.91, 387885 4647041, 388004.53 4646214.29, 388072.02 4646038.93, 387804.68 4645580.91, 388006.1 4645270.91, 388118 4644721, 387541.05 4644303.17, 388362.07 4642940.91, 388124.02 4642685.71, 387539.284494553 4642881.70371236, 387279.96 4642811.02, 386602.15 4642021.84, 385797 4641304, 385210.71 4640471.5, 384217.22 4640098.82, 383964.65 4640274.72, 382773 4638539, 382550.42 4638535.01, 382542.74 4639067.57, 381940.02 4638769.93, 381316.21 4637673.03, 382488.52 4636906.64, 383000.78 4637327.53, 383945 4638030, 384502.79 4637956.32, 385448.8 4637544.49, 386000.1 4636283.58, 386062 4636036, 386421.84 4635181.26, 386103.28 4634067.47, 386384.19 4633695.69, 385893.64 4633187.75, 384826.37 4632859.66, 385120.95 4632064.69, 384810.13 4630721.34, 383194.48 4629981.33, 382934.14 4629064.86, 383283.71 4628662.1, 383337.31 4628307.7, 383551.71 4628328.69, 383503.49 4628074.41, 383787.09 4627485.28, 383141.55 4626574.23, 383272.05 4626217.51, 382237.21 4625991.81, 381630.49 4626737.83, 381383.02 4626469.21, 380800.14 4626215.67, 380484.55 4626275.19, 380519.27 4625598.66, 379569.5 4625504.08, 379105.05 4624034.79, 378183.86 4624017.19, 378304.910307572 4623592.64066448, 377976.21 4623576.2, 377806.4 4624091.78, 378106.54 4624739.11, 377686.34 4624821.33, 377236.99 4625092.18, 377030.64 4625600.25, 376289.41 4625616.05, 376276.14 4625921.16, 375851.59 4627520.34, 374091.83 4627872.76, 374253.51 4627623.94, 374116.82 4627331.58, 374255.33 4626296.73, 373945.64 4625931.12, 373947.31 4625730.52, 373586.160236704 4625952.01569991, 373229.32 4625896.1, 373031.472728373 4625741.07819675, 372644.84 4625739.29, 372178.28 4626230.96, 372891.23 4626571.89, 373048.92 4626990.94, 372950.49 4627734.44, 373100.81 4628978.93, 373538.9 4629278.9, 374850.7 4630226.14, 376515.847781038 4631323.10953352, 376462.52 4631475.19, 375100.58 4630977.99, 374812.49 4631555.03, 373582.35 4632656.01, 374665.1 4633317.74, 375250.15 4634046.57, 375942.27 4635218.72, 375574.01 4636626.78, 375820.93 4636949.7, 375773.88 4638214.02, 375847.41 4639077.27, 375713.07 4640292, 374414 4640679, 373688.65 4640000, 372622.73 4638403.93, 371126.28 4638885.35, 370624.33 4639972.03, 369576.08 4639559.94, 369818.05 4640594.16, 368120.46 4641920.77, 367529.01 4641674.25, 367344.9 4641754.16, 366104.87 4643158.25, 365634.1 4643076.98, 365195.88 4642890.43, 364765.49 4642804.06, 363791.54 4642361.28, 363227.09 4640683.54, 362517.72 4641055.75, 362043.08 4640486.06, 362032.05 4640264.99, 361814.78 4639788.87, 361118.22 4639217.61, 360986.26 4639061.47, 360609.67 4639541.94, 360582.38 4639648.82, 360635.75 4640326.68, 360523.69 4641330.02, 360167.2 4642202.38, 359850.74 4642863.39, 358734.44 4642618.57), (360396.2 4649774.37, 360739.69 4649340.32, 360871.65 4649403.78, 361086.159096209 4649530.14106534, 361077.26 4649909.32, 361017.93 4650287.97, 360835.85 4650357.56, 360398.03 4650179.49, 360396.2 4649774.37), (388060.12 4663379.42, 388310.87 4663188.42, 389424.65 4662512.25, 391812.11 4662345.42, 391698.33 4662577.05, 392055.52 4663191.31, 390765.62 4663485.81, 388060.12 4663379.42), (360396.2 4649774.37, 360739.69 4649340.32, 360871.65 4649403.78, 361086.159096209 4649530.14106534, 361077.26 4649909.32, 361017.93 4650287.97, 360835.85 4650357.56, 360398.03 4650179.49, 360396.2 4649774.37), (388060.12 4663379.42, 388310.87 4663188.42, 389424.65 4662512.25, 391812.11 4662345.42, 391698.33 4662577.05, 392055.52 4663191.31, 390765.62 4663485.81, 388060.12 4663379.42)), ((393822.68 4639241.67, 394318 4638929, 393751.1 4637700.09, 393481.19 4638197.29, 392802.12 4638566.07, 393211.45 4638499.55, 392909.35 4639191.17, 393260.08 4639255.05, 393586.75 4638744.94, 393822.68 4639241.67)), ((358734.44 4642618.57, 359891.83 4644189.05, 360301.41 4645435.23, 359947.84 4646028.19, 358634.94 4646371.61, 358531.69 4646692.64, 358335.16 4647250.54, 358638.29 4647625.31, 358797.09656183 4647772.32853894, 358898.659063356 4648319.20354715, 358812.721562065 4648491.07854974, 359043.03 4648526.46, 359398.61 4649425.97, 360059.69 4650085.9, 359727.08 4650528.59, 359836.159077436 4650709.82858306, 360120.97 4650739.3, 361039.284095505 4650530.14108036, 361437.721601489 4650319.20357719, 362258.034113808 4650366.07857789, 363142.1 4650655.48, 363474.5 4650638.7, 364656 4651615, 364334 4652594.7, 364069 4653651, 364250.02 4654650.14, 364422.65 4654652.47, 364169.73 4655677.28, 364645.1 4656179.46, 364271.21 4656323.7, 364441.31 4657134.86, 364329.34 4659257.96, 364362 4659640, 364144 4659755, 363767.45 4659440.03, 363388.54 4659506.75, 362225.8 4659960.22, 361469.33 4661821.26, 361713 4663904, 362393.36 4664518.67, 362909.37 4664675.53, 363030.16 4664940.51, 363587.34 4665037.93, 363793.84 4665532.82, 364226.34 4665509.44, 364495.19 4665645.82, 365091.33 4666715.48, 364604.28 4667027.22, 364491.29 4667572.77, 363536.68 4668102.73, 363755.69 4668386.74, 364623.9 4667980.53, 365165.57 4667935.38, 366295.55 4668308.83, 366890.25 4667990.11, 367669.02 4667961.78, 369293.59 4668893.59, 370452 4668830, 370706.24 4668273.42, 371916.88 4667338.49, 374217.81 4668755.05, 376216.31 4670162.31, 377861.5 4671489.09, 378033.42 4672034.69, 378439.2 4672295.89, 378512.41 4673686.97, 380007.5 4674173.47, 381707.41 4674030.94, 382818.36 4673583.84, 384334.29 4673162.1, 385627.39 4673231.04, 385837.97 4673409.4, 386557.67 4672828.66, 386975.33 4672890.85, 388006.92 4672635.26, 387960.75 4672193.25, 388672.73 4670577.57, 389054.95 4669797.49, 388755.7 4669668.12, 389356.24 4669197.71, 389682.7 4669186.36, 389905.78 4668960.53, 390205.93 4669057.63, 390217.95 4669851.5, 390557.86 4670035.27, 390846.35 4669591.96, 391180.23 4670170.79, 391340.6 4669427.94, 391468.973970144 4669631.70468354, 391398.78 4670176.34, 391784.09 4670188.43, 392524.53 4669626.01, 392986.83 4669315.08, 393365.93 4668654.55, 394001.59 4669126.82, 394994.89 4669484.83, 394850.31 4670125.88, 395301.8 4671178.18, 395599.22 4671088.99, 395852.5 4670503.53, 395698.7 4669903.58, 395901.29 4668959.03, 395576.1 4668454.19, 394444.42 4667573.85, 393819.37 4667925.57, 392550.02 4665622.76, 392601.25 4665051.76, 393337.55 4664451.22, 393642.01 4664039.69, 393600.3 4663700.32, 393422.43 4662918.5, 393042.47 4662576.08, 393531.86 4662037.54, 394528.18 4661906.8, 394442.9 4660932.07, 394036.42 4660361.88, 393431.06 4660037.51, 391907.44 4660540.09, 391664.86 4659910.9, 391703.95 4659399.25, 391765.6 4659056.98, 390524.73 4657468.38, 390354.89 4656626.65, 390143.44 4655952.88, 390235 4655437.81, 390765.24 4655073.07, 390904.53 4655617.97, 391190.65 4656254.42, 391703.49 4655884.6, 391990.72 4655549.3, 392286.54 4654889.8, 392025.67 4654644.71, 392421.8 4654072.09, 392272.23 4653743.78, 391578.1 4653877.91, 391623.25 4653749.35, 390959.9 4653354.98, 390465.11 4652910.84, 389815.09 4652247.05, 389978.44 4651610.59, 389618.97 4651177.63, 389255.26 4651538.25, 389599.72 4651956.87, 389315.28 4652354.86, 389583.24 4653317.84, 389128.23 4653292.58, 388746.64 4652892.37, 388413.8 4652215.69, 388456.25 4651397.45, 388107.32 4650774.51, 388321.9 4650527.07, 388421.33 4649956.07, 388824.66 4650664.54, 388650.53 4650873.79, 388915.49 4651201.61, 389314.04 4650863.28, 389410.63 4649840.78, 389962.81 4649913.71, 390644 4650126, 391440.37 4649941.35, 391788.64 4649733.21, 391862.54 4649220.19, 392096.93 4649066.06, 392153 4649807, 392457 4650006.2, 391694.03 4651346.65, 391992.42 4652290.71, 392414.286484697 4652350.45442867, 393041.17 4651429.06, 392963.71 4651076.7, 393861.18 4650791.26, 393720.75 4650347.48, 393712.87 4649879.21, 394006.66 4649152.61, 392844.53 4648389.46, 391873.27 4647876.63, 391843.52 4647683.09, 390917.63 4647239.32, 390123.49 4647375.73, 389798.32 4647721.03, 390332.82 4648915.31, 389578.26 4649160.16, 389078.93 4648817.29, 388909.57 4648467.02, 388558.02 4648654.86, 388326.03 4648489.91, 387885 4647041, 388004.53 4646214.29, 388072.02 4646038.93, 387804.68 4645580.91, 388006.1 4645270.91, 388118 4644721, 387541.05 4644303.17, 388362.07 4642940.91, 388124.02 4642685.71, 387539.284494553 4642881.70371236, 387279.96 4642811.02, 386602.15 4642021.84, 385797 4641304, 385210.71 4640471.5, 384217.22 4640098.82, 383964.65 4640274.72, 382773 4638539, 382550.42 4638535.01, 382542.74 4639067.57, 381940.02 4638769.93, 381316.21 4637673.03, 382488.52 4636906.64, 383000.78 4637327.53, 383945 4638030, 384502.79 4637956.32, 385448.8 4637544.49, 386000.1 4636283.58, 386062 4636036, 386421.84 4635181.26, 386103.28 4634067.47, 386384.19 4633695.69, 385893.64 4633187.75, 384826.37 4632859.66, 385120.95 4632064.69, 384810.13 4630721.34, 383194.48 4629981.33, 382934.14 4629064.86, 383283.71 4628662.1, 383337.31 4628307.7, 383551.71 4628328.69, 383503.49 4628074.41, 383787.09 4627485.28, 383141.55 4626574.23, 383272.05 4626217.51, 382237.21 4625991.81, 381630.49 4626737.83, 381383.02 4626469.21, 380800.14 4626215.67, 380484.55 4626275.19, 380519.27 4625598.66, 379569.5 4625504.08, 379105.05 4624034.79, 378183.86 4624017.19, 378304.910307572 4623592.64066448, 377976.21 4623576.2, 377806.4 4624091.78, 378106.54 4624739.11, 377686.34 4624821.33, 377236.99 4625092.18, 377030.64 4625600.25, 376289.41 4625616.05, 376276.14 4625921.16, 375851.59 4627520.34, 374091.83 4627872.76, 374253.51 4627623.94, 374116.82 4627331.58, 374255.33 4626296.73, 373945.64 4625931.12, 373947.31 4625730.52, 373586.160236704 4625952.01569991, 373229.32 4625896.1, 373031.472728373 4625741.07819675, 372644.84 4625739.29, 372178.28 4626230.96, 372891.23 4626571.89, 373048.92 4626990.94, 372950.49 4627734.44, 373100.81 4628978.93, 373538.9 4629278.9, 374850.7 4630226.14, 376515.847781038 4631323.10953352, 376462.52 4631475.19, 375100.58 4630977.99, 374812.49 4631555.03, 373582.35 4632656.01, 374665.1 4633317.74, 375250.15 4634046.57, 375942.27 4635218.72, 375574.01 4636626.78, 375820.93 4636949.7, 375773.88 4638214.02, 375847.41 4639077.27, 375713.07 4640292, 374414 4640679, 373688.65 4640000, 372622.73 4638403.93, 371126.28 4638885.35, 370624.33 4639972.03, 369576.08 4639559.94, 369818.05 4640594.16, 368120.46 4641920.77, 367529.01 4641674.25, 367344.9 4641754.16, 366104.87 4643158.25, 365634.1 4643076.98, 365195.88 4642890.43, 364765.49 4642804.06, 363791.54 4642361.28, 363227.09 4640683.54, 362517.72 4641055.75, 362043.08 4640486.06, 362032.05 4640264.99, 361814.78 4639788.87, 361118.22 4639217.61, 360986.26 4639061.47, 360609.67 4639541.94, 360582.38 4639648.82, 360635.75 4640326.68, 360523.69 4641330.02, 360167.2 4642202.38, 359850.74 4642863.39, 358734.44 4642618.57), (360396.2 4649774.37, 360739.69 4649340.32, 360871.65 4649403.78, 361086.159096209 4649530.14106534, 361077.26 4649909.32, 361017.93 4650287.97, 360835.85 4650357.56, 360398.03 4650179.49, 360396.2 4649774.37), (388060.12 4663379.42, 388310.87 4663188.42, 389424.65 4662512.25, 391812.11 4662345.42, 391698.33 4662577.05, 392055.52 4663191.31, 390765.62 4663485.81, 388060.12 4663379.42), (360396.2 4649774.37, 360739.69 4649340.32, 360871.65 4649403.78, 361086.159096209 4649530.14106534, 361077.26 4649909.32, 361017.93 4650287.97, 360835.85 4650357.56, 360398.03 4650179.49, 360396.2 4649774.37), (388060.12 4663379.42, 388310.87 4663188.42, 389424.65 4662512.25, 391812.11 4662345.42, 391698.33 4662577.05, 392055.52 4663191.31, 390765.62 4663485.81, 388060.12 4663379.42)))");
     geom3 = reader.Read("POLYGON ((334181.3 4626533.25, 333802.61 4626481.77, 332851.85 4626555.73, 332837.99 4626870.47, 331675.575478004 4625017.10334799, 331449.012974601 4624694.44709314, 330300.575457354 4623624.13457707, 329963.34 4623438.15, 330534.02 4622198.85, 331461.18 4622559.66, 331815.99 4622016.46, 332363.67 4622161.85, 332039.82 4619793.32, 331548.21 4619356.5, 331272.11 4619075.88, 330483.58 4619245.55, 329411.26 4618893.99, 328619.74 4618944.72, 327619.86 4619438.68, 326688.91 4620936.39, 326577.53 4622953.68, 324921.22 4622991.88, 324835.36 4623313.11, 323348.71 4623236.68, 322453.43 4623415.99, 321526.83 4621885.82, 322513.7 4621551.96, 321796.7 4620132.45, 320461.29 4619812.96, 320255.43 4620350.01, 319572.87 4620303.13, 317928.9 4620166.3, 317654.64 4619133.62, 317161.4 4619283.23, 316348.1 4619227.49, 314893.3 4618828.46, 314921.8 4617759.96, 313965.48 4617497.69, 313525.07 4618502.05, 312863.3 4619592.91, 311994.17 4620673.82, 311646.12 4620051.21, 310652.99 4619110.01, 309868.14 4619370.41, 309748.57 4619148.83, 309344.12 4618617.63, 308994.57 4619110.83, 308290.42 4618609.47, 307608.36 4620081.67, 306979.94 4620597.13, 306459.64 4621348.79, 305837.1 4622106.1, 305976.64 4622701.34, 304560.82 4624222.35, 303588.37 4625472.67, 302936.71 4626165.17, 302435.72 4626769.89, 302105.2 4627314.96, 301884.67 4627782.92, 301325.84 4629098.08, 300636.13 4629797.85, 299826.53 4631113.5, 299717.36 4631406.8, 298959.32 4633461.34, 299030.82 4635340.12, 299231.61 4636324.43, 299422.29 4637122.92, 299266.6 4637583.39, 299694.24 4637835.81, 300235.59 4637959.75, 301211.84 4638288.82, 301587.95 4639076.98, 300372.6 4640075.77, 301093.11 4642508.82, 300685.17 4643391.09, 300979.56 4643794.25, 301616.09 4643842.48, 299489.82 4644826.56, 299039.67 4645141.95, 298325.57 4645350.64, 297986.62 4645538.92, 298401.6 4646796.17, 299421.04 4648129.44, 300059.47 4648865.43, 300702.38 4649212.22, 301673.03 4648521.82, 302129.92 4649258.91, 302374.88 4650445.5, 302765 4651012.13, 302908.82 4651542.49, 304450.51 4652031.55, 304784.92 4650772.89, 304833.13 4650721.19, 305094.07 4652077.88, 305993.16 4652643.13, 306655 4654036, 306469 4654283, 306133 4654235, 305945 4655059, 305769 4655592, 306378 4657164, 307183 4657587, 307476 4659683, 308131 4660866, 308527.42 4659900.86, 309684 4659013, 311080 4658315, 313386 4658119, 313531 4657632, 314651 4657011, 315630 4656858, 317824.19 4657234.54, 318608.19 4657010.54, 321077.39 4656665.89, 322340.41 4656183.98, 324054 4656262, 325322 4656791, 325389.11 4656723.11, 325282.9 4656653.63, 325437.09 4656246.31, 326006.69 4655920.61, 328016.6 4654527.37, 330347.36 4654638.54, 331164.52 4654361.73, 331874.02 4654211.39, 334219.09 4654276.1, 335247.27 4654348.5, 336281.84 4655559.24, 336902.75 4655338.66, 338186.59 4655604.53, 340193.95 4655858.03, 340709.05 4654614.94, 340651 4652477, 341383.77 4652660.58, 342153.18 4654850.5, 341824.1 4655697.45, 340833.87 4656838.24, 341665.73 4657598.66, 342115.76 4657792.08, 342736.21 4658712.36, 342926.97 4659445.36, 343650 4660861.38, 344325 4661426.43, 344807.57 4662150, 345203.71 4663077.33, 345979.32 4664344.79, 346419.69 4664859.66, 346808 4664418, 346983.4 4664589.27, 347302 4664437, 347727.87 4665297.16, 348400 4665249, 348545.53 4664701.51, 348156.61 4663357.83, 348365.78 4662834.36, 348487.4 4661764.67, 348461.79 4660759.03, 349377.12 4660893.54, 349703.57 4661239.43, 349778.06 4661377.3, 350156.29 4661225.35, 351178.33 4661539.72, 351725.44 4660468.59, 352143.06 4660191.37, 352419 4660409, 352886.75 4660147.61, 352798.53 4659338.84, 353970.48 4658996.16, 353961.86 4658612.91, 354271.88 4658274.63, 354447 4657129, 353748.83 4656795.82, 354353.85 4655525.55, 354043.15 4654273.36, 354060.04 4653898.46, 355104.46 4652532.58, 354997.03 4652346.75, 355441.24 4652082.53, 356272.45 4651456, 355946.16 4650414.98, 355763.19 4650266.14, 355813.88 4648795.88, 356178.81 4648581.21, 355196.2 4645150.42, 354830.37 4644770.6, 355368.75 4644841.92, 355885.53 4645112.09, 358131.23 4646698.82, 358327.92 4646525.8, 358531.69 4646692.64, 358634.94 4646371.61, 359947.84 4646028.19, 360301.41 4645435.23, 359891.83 4644189.05, 358734.44 4642618.57, 358859.66 4641992.96, 358355.95 4641179.22, 358393.81 4640120.25, 358067.46 4639060.45, 357643.36 4638331.63, 357679.84 4637795.56, 357258.38 4637166.17, 356206.89 4636103.53, 355988 4635822.95, 355617.18 4635454.42, 355472.69 4635609.1, 353688.89 4633658.62, 353784.07 4633170.19, 353413.39 4632667.58, 352636.11 4631435.73, 351697.4 4630680.65, 350839.58 4631011.39, 349765.54 4629671.09, 349109.53 4629125.95, 348015.59 4627945.09, 347465.62 4627358.18, 346170.68 4627755.95, 345499.41 4627909.59, 345459.52 4628907.99, 345412.3 4630001.01, 346424.56 4630969.18, 346614 4631569.89, 346059.25 4631685.36, 345481.32 4631071.73, 345048.93 4629974.31, 344435.88 4630063.22, 344154.82 4630339.72, 342335.35 4630769.92, 342140.15 4631277.5, 342392.03 4631956.77, 342562.08 4632535.31, 343359.88 4631919.91, 344198.79 4632675.69, 344232 4633461.39, 344046 4634955, 343627.63 4635162.42, 343587 4635513, 342559.3 4635413.14, 342727.6 4635716.22, 342285.77 4635847.85, 340968.16 4633264.48, 340276.54 4632170.37, 340678.17 4632249.99, 340507.66 4631990.28, 338581.05 4628384.44, 336616.03 4626194.39, 335520.94 4627090.37, 335106.29 4627078.6, 334615.19 4626543.04, 334181.3 4626533.25), (332155.25 4627068.65, 331890.26 4627098.4, 331711.74 4626081.55, 331167.76249354 4625014.75959795, 330136.51295489 4624147.57208493, 329895.87 4623833.45, 329972.450452426 4623749.13457894, 330582.68 4624217.91, 331203.700470917 4624745.2283439, 331490.42 4625164.94, 331819.325289428 4625713.97835845, 332155.25 4627068.65), (339564.77 4633563.22, 339371.2 4634385.19, 339160.74 4635033.97, 338883.34 4635018.6, 338754.84 4635532.38, 338767.79 4635976.19, 337855.94 4636103.48, 337820.13 4636242.19, 337431.99 4636029.5, 337379.57 4635700.22, 336858.95 4635493.53, 336509.96 4635843.28, 335857.33 4635255.03, 335749.68 4634141.19, 336066.09 4633942.39, 335748.84 4632801.97, 336035.61 4632742.04, 336082.31 4632170.3, 336410.22 4631821.02, 337002.97 4632511.95, 338282.06 4632959.96, 338562.49 4633789.27, 339564.77 4633563.22), (332155.25 4627068.65, 331890.26 4627098.4, 331711.74 4626081.55, 331167.76249354 4625014.75959795, 330136.51295489 4624147.57208493, 329895.87 4623833.45, 329972.450452426 4623749.13457894, 330582.68 4624217.91, 331203.700470917 4624745.2283439, 331490.42 4625164.94, 331819.325289428 4625713.97835845, 332155.25 4627068.65), (339564.77 4633563.22, 339371.2 4634385.19, 339160.74 4635033.97, 338883.34 4635018.6, 338754.84 4635532.38, 338767.79 4635976.19, 337855.94 4636103.48, 337820.13 4636242.19, 337431.99 4636029.5, 337379.57 4635700.22, 336858.95 4635493.53, 336509.96 4635843.28, 335857.33 4635255.03, 335749.68 4634141.19, 336066.09 4633942.39, 335748.84 4632801.97, 336035.61 4632742.04, 336082.31 4632170.3, 336410.22 4631821.02, 337002.97 4632511.95, 338282.06 4632959.96, 338562.49 4633789.27, 339564.77 4633563.22))");
     geom4 = reader.Read("MULTIPOLYGON (((347727.87 4665297.16, 347302 4664437, 346983.4 4664589.27, 346808 4664418, 346419.69 4664859.66, 345979.32 4664344.79, 345203.71 4663077.33, 344807.57 4662150, 344325 4661426.43, 343650 4660861.38, 342926.97 4659445.36, 342736.21 4658712.36, 342115.76 4657792.08, 341665.73 4657598.66, 340833.87 4656838.24, 341824.1 4655697.45, 342153.18 4654850.5, 341383.77 4652660.58, 340651 4652477, 340709.05 4654614.94, 340193.95 4655858.03, 338186.59 4655604.53, 336902.75 4655338.66, 336281.84 4655559.24, 335247.27 4654348.5, 334219.09 4654276.1, 331874.02 4654211.39, 331164.52 4654361.73, 330347.36 4654638.54, 328016.6 4654527.37, 326006.69 4655920.61, 325437.09 4656246.31, 325282.9 4656653.63, 325389.11 4656723.11, 325322 4656791, 324054 4656262, 322340.41 4656183.98, 321077.39 4656665.89, 318608.19 4657010.54, 317824.19 4657234.54, 315630 4656858, 314651 4657011, 313531 4657632, 313386 4658119, 311080 4658315, 309684 4659013, 308527.42 4659900.86, 308131 4660866, 308486 4662077, 308914 4663147, 309508 4663743, 309877 4664990, 310132.24 4666016.64, 309876 4666576.98, 309738.85 4666836.39, 309794.53 4668503.01, 309774 4669301, 310401 4670177, 311229 4670677, 310095.22 4671365.62, 309950 4671760, 310825.93 4673990.35, 310905.75 4674922.43, 311366.41 4675841.6, 311625.62 4676890.64, 311481.08 4677546.8, 312360.79 4678683.57, 312691.81 4679805.42, 313179.04 4680401.77, 313461.13 4681887.68, 313682.52 4683605.63, 314127.61 4684226.73, 314215.28 4685646.38, 315185.53 4686717.15, 315148.64 4687202.55, 316046.82 4688252.06, 315622 4688460.89, 315069.96 4688525.43, 314337.36 4688732.85, 314061.92 4689744.2, 314112.02 4689966.62, 314469.06 4690244.38, 315053.39 4690625.85, 315313.67 4690949.81, 315808.07 4691085.73, 316242.409379774 4690600.45445179, 316998.82 4690233.96, 316648.659385875 4689498.89193525, 318375.01 4688600.52, 318763.3 4688127.76, 319358.68 4687991.76, 320259.24 4687438.46, 322661.82 4687106.03, 323571.53 4686311.96, 324831.94 4685348.19, 325993.98 4686119.69, 325960.86 4687623.47, 326105.64 4688449.87, 326403.89 4689300.35, 325095.66 4690115.12, 324874.82 4690019.31, 324918.04 4690758.26, 324707.19 4690902.97, 324451.08 4691578.36, 324432.09 4692112.13, 324171.12 4693043.75, 322876 4693123.74, 322318.02 4693719.72, 322046.86 4694550.4, 321804.85 4694440.23, 320872.54 4696099.47, 321844.21 4697035.64, 321014.95 4698416.07, 321623.36 4699497.06, 323636.78 4699469.22, 324155.83 4699840.67, 325078.06 4701359.7, 323921.55 4702766.14, 324179.28 4702831.55, 324716.1 4703381.35, 325632.75 4703212.95, 325871.15 4703334.62, 326852.11 4705158.87, 327828.94 4705503.11, 329264.38 4705889.59, 329523.87 4706775.87, 329266.2 4707608.28, 329278.5 4708016.59, 329934.28 4708902.19, 330196.6 4709386.96, 331292.37 4709571.09, 331283.87 4710235.44, 332008.05 4710633.92, 332392.11 4711148.04, 332226.68 4711884.41, 332643.43 4712212.15, 332947.97 4712661.37, 333558.36 4713257.56, 333685.39 4713294.36, 334223.72 4713429.26, 334880.28 4713474.24, 335851.34 4711619.08, 336899.18 4711860.53, 337462.42 4711066.48, 337766.34 4710237.06, 338022.69 4710084.58, 337849.24 4709333.03, 337760.55 4708782.08, 338280.85 4708128.99, 338322.74 4707716.02, 337885.43 4707402.55, 337646.49 4706976.67, 337781.86 4705647.68, 337279.89 4704913.02, 337236.38 4703307.58, 337356.13 4702318.14, 337046.36 4700379.31, 338302.87 4698880.91, 338678.25 4699063.73, 339104.94 4698264.66, 337801.02 4697864.15, 337406.79 4696216.98, 336767.79 4695668.48, 335966.19 4695230.02, 335879.65 4694427.15, 335534.36 4693933.75, 335202.01 4692664.39, 334919.17 4692106.96, 334797.95 4690777.34, 334046.66 4690173.61, 333801.57 4689473.73, 332177.92 4689644.86, 331739.57 4689132.74, 331645.27 4688588.59, 331701.86 4688129.21, 332178.48 4687805.19, 332561.59 4686772.73, 333127.31 4686775.71, 333274.08 4684943.52, 334332.78 4684902.39, 335022.51 4684796.69, 335461.84 4684198.15, 336401.36 4684206.64, 337208.56 4683325.92, 337355.5 4683743.65, 338121.81 4683416.3, 338400 4683100, 339768.14 4682999.77, 340750.29 4682446.41, 341626.25 4682441.53, 342785.6 4682298.75, 344254.04 4681767.48, 344416.94 4681738.28, 344282.02 4682344.67, 344684.49 4682144.86, 345271.46 4681675.3, 345967.66 4680892.58, 347280.09 4680570.11, 347627.54 4680435.09, 347586.21 4680274.59, 348159.28 4679001.47, 346690.04 4678047.9, 346702.75 4677308.94, 347007.38 4676711.76, 348490.98 4676060.16, 348732.05 4676015.81, 348830.41 4673950.38, 348166.11 4673379.36, 347986.37 4672907.95, 348530.44 4672694.12, 349748.71 4671803.07, 350235.53 4671032.04, 350216 4670463.07, 349851.76 4670304.29, 349891.23 4670095.57, 349613 4669339, 349212.24 4668650.52, 348745 4668779.95, 348585.33 4668413.51, 348170 4668431, 348164 4667899, 348069 4667181, 347616.34 4666559.51, 347727.87 4665297.16)), ((316121.46 4691161.34, 316370.83 4691494.63, 315704.26 4692068.99, 315645.1 4692254.09, 315779.7 4692907.83, 316255.3 4693566.22, 316747.49 4694061.2, 317670.27 4693794.47, 317914.284404883 4693631.70449732, 318096.16 4693623.39, 318250.221909928 4693694.20449825, 318704.6 4693061.03, 319534.44 4692130.34, 319411.94 4691663.29, 318847.23 4691497.64, 318643.22 4691192.2, 317150.95 4690849.29, 316633.034385641 4690897.32945625, 316121.46 4691161.34)), ((347727.87 4665297.16, 347302 4664437, 346983.4 4664589.27, 346808 4664418, 346419.69 4664859.66, 345979.32 4664344.79, 345203.71 4663077.33, 344807.57 4662150, 344325 4661426.43, 343650 4660861.38, 342926.97 4659445.36, 342736.21 4658712.36, 342115.76 4657792.08, 341665.73 4657598.66, 340833.87 4656838.24, 341824.1 4655697.45, 342153.18 4654850.5, 341383.77 4652660.58, 340651 4652477, 340709.05 4654614.94, 340193.95 4655858.03, 338186.59 4655604.53, 336902.75 4655338.66, 336281.84 4655559.24, 335247.27 4654348.5, 334219.09 4654276.1, 331874.02 4654211.39, 331164.52 4654361.73, 330347.36 4654638.54, 328016.6 4654527.37, 326006.69 4655920.61, 325437.09 4656246.31, 325282.9 4656653.63, 325389.11 4656723.11, 325322 4656791, 324054 4656262, 322340.41 4656183.98, 321077.39 4656665.89, 318608.19 4657010.54, 317824.19 4657234.54, 315630 4656858, 314651 4657011, 313531 4657632, 313386 4658119, 311080 4658315, 309684 4659013, 308527.42 4659900.86, 308131 4660866, 308486 4662077, 308914 4663147, 309508 4663743, 309877 4664990, 310132.24 4666016.64, 309876 4666576.98, 309738.85 4666836.39, 309794.53 4668503.01, 309774 4669301, 310401 4670177, 311229 4670677, 310095.22 4671365.62, 309950 4671760, 310825.93 4673990.35, 310905.75 4674922.43, 311366.41 4675841.6, 311625.62 4676890.64, 311481.08 4677546.8, 312360.79 4678683.57, 312691.81 4679805.42, 313179.04 4680401.77, 313461.13 4681887.68, 313682.52 4683605.63, 314127.61 4684226.73, 314215.28 4685646.38, 315185.53 4686717.15, 315148.64 4687202.55, 316046.82 4688252.06, 315622 4688460.89, 315069.96 4688525.43, 314337.36 4688732.85, 314061.92 4689744.2, 314112.02 4689966.62, 314469.06 4690244.38, 315053.39 4690625.85, 315313.67 4690949.81, 315808.07 4691085.73, 316242.409379774 4690600.45445179, 316998.82 4690233.96, 316648.659385875 4689498.89193525, 318375.01 4688600.52, 318763.3 4688127.76, 319358.68 4687991.76, 320259.24 4687438.46, 322661.82 4687106.03, 323571.53 4686311.96, 324831.94 4685348.19, 325993.98 4686119.69, 325960.86 4687623.47, 326105.64 4688449.87, 326403.89 4689300.35, 325095.66 4690115.12, 324874.82 4690019.31, 324918.04 4690758.26, 324707.19 4690902.97, 324451.08 4691578.36, 324432.09 4692112.13, 324171.12 4693043.75, 322876 4693123.74, 322318.02 4693719.72, 322046.86 4694550.4, 321804.85 4694440.23, 320872.54 4696099.47, 321844.21 4697035.64, 321014.95 4698416.07, 321623.36 4699497.06, 323636.78 4699469.22, 324155.83 4699840.67, 325078.06 4701359.7, 323921.55 4702766.14, 324179.28 4702831.55, 324716.1 4703381.35, 325632.75 4703212.95, 325871.15 4703334.62, 326852.11 4705158.87, 327828.94 4705503.11, 329264.38 4705889.59, 329523.87 4706775.87, 329266.2 4707608.28, 329278.5 4708016.59, 329934.28 4708902.19, 330196.6 4709386.96, 331292.37 4709571.09, 331283.87 4710235.44, 332008.05 4710633.92, 332392.11 4711148.04, 332226.68 4711884.41, 332643.43 4712212.15, 332947.97 4712661.37, 333558.36 4713257.56, 333685.39 4713294.36, 334223.72 4713429.26, 334880.28 4713474.24, 335851.34 4711619.08, 336899.18 4711860.53, 337462.42 4711066.48, 337766.34 4710237.06, 338022.69 4710084.58, 337849.24 4709333.03, 337760.55 4708782.08, 338280.85 4708128.99, 338322.74 4707716.02, 337885.43 4707402.55, 337646.49 4706976.67, 337781.86 4705647.68, 337279.89 4704913.02, 337236.38 4703307.58, 337356.13 4702318.14, 337046.36 4700379.31, 338302.87 4698880.91, 338678.25 4699063.73, 339104.94 4698264.66, 337801.02 4697864.15, 337406.79 4696216.98, 336767.79 4695668.48, 335966.19 4695230.02, 335879.65 4694427.15, 335534.36 4693933.75, 335202.01 4692664.39, 334919.17 4692106.96, 334797.95 4690777.34, 334046.66 4690173.61, 333801.57 4689473.73, 332177.92 4689644.86, 331739.57 4689132.74, 331645.27 4688588.59, 331701.86 4688129.21, 332178.48 4687805.19, 332561.59 4686772.73, 333127.31 4686775.71, 333274.08 4684943.52, 334332.78 4684902.39, 335022.51 4684796.69, 335461.84 4684198.15, 336401.36 4684206.64, 337208.56 4683325.92, 337355.5 4683743.65, 338121.81 4683416.3, 338400 4683100, 339768.14 4682999.77, 340750.29 4682446.41, 341626.25 4682441.53, 342785.6 4682298.75, 344254.04 4681767.48, 344416.94 4681738.28, 344282.02 4682344.67, 344684.49 4682144.86, 345271.46 4681675.3, 345967.66 4680892.58, 347280.09 4680570.11, 347627.54 4680435.09, 347586.21 4680274.59, 348159.28 4679001.47, 346690.04 4678047.9, 346702.75 4677308.94, 347007.38 4676711.76, 348490.98 4676060.16, 348732.05 4676015.81, 348830.41 4673950.38, 348166.11 4673379.36, 347986.37 4672907.95, 348530.44 4672694.12, 349748.71 4671803.07, 350235.53 4671032.04, 350216 4670463.07, 349851.76 4670304.29, 349891.23 4670095.57, 349613 4669339, 349212.24 4668650.52, 348745 4668779.95, 348585.33 4668413.51, 348170 4668431, 348164 4667899, 348069 4667181, 347616.34 4666559.51, 347727.87 4665297.16)), ((316121.46 4691161.34, 316370.83 4691494.63, 315704.26 4692068.99, 315645.1 4692254.09, 315779.7 4692907.83, 316255.3 4693566.22, 316747.49 4694061.2, 317670.27 4693794.47, 317914.284404883 4693631.70449732, 318096.16 4693623.39, 318250.221909928 4693694.20449825, 318704.6 4693061.03, 319534.44 4692130.34, 319411.94 4691663.29, 318847.23 4691497.64, 318643.22 4691192.2, 317150.95 4690849.29, 316633.034385641 4690897.32945625, 316121.46 4691161.34)))");
     geom5 = reader.Read("POLYGON ((334181.3 4626533.25, 333802.61 4626481.77, 332851.85 4626555.73, 332837.99 4626870.47, 331675.575478004 4625017.10334799, 331449.012974601 4624694.44709314, 330300.575457354 4623624.13457707, 329963.34 4623438.15, 330534.02 4622198.85, 331461.18 4622559.66, 331815.99 4622016.46, 332363.67 4622161.85, 332039.82 4619793.32, 331548.21 4619356.5, 331272.11 4619075.88, 330483.58 4619245.55, 329411.26 4618893.99, 328619.74 4618944.72, 327619.86 4619438.68, 326688.91 4620936.39, 326577.53 4622953.68, 324921.22 4622991.88, 324835.36 4623313.11, 323348.71 4623236.68, 322453.43 4623415.99, 321526.83 4621885.82, 322513.7 4621551.96, 321796.7 4620132.45, 320461.29 4619812.96, 320255.43 4620350.01, 319572.87 4620303.13, 317928.9 4620166.3, 317654.64 4619133.62, 317161.4 4619283.23, 316348.1 4619227.49, 314893.3 4618828.46, 314921.8 4617759.96, 313965.48 4617497.69, 313525.07 4618502.05, 312863.3 4619592.91, 311994.17 4620673.82, 311646.12 4620051.21, 310652.99 4619110.01, 309868.14 4619370.41, 309748.57 4619148.83, 309344.12 4618617.63, 308994.57 4619110.83, 308290.42 4618609.47, 307608.36 4620081.67, 306979.94 4620597.13, 306459.64 4621348.79, 305837.1 4622106.1, 305976.64 4622701.34, 304560.82 4624222.35, 303588.37 4625472.67, 302936.71 4626165.17, 302435.72 4626769.89, 302105.2 4627314.96, 301884.67 4627782.92, 301325.84 4629098.08, 300636.13 4629797.85, 299826.53 4631113.5, 299717.36 4631406.8, 298959.32 4633461.34, 299030.82 4635340.12, 299231.61 4636324.43, 299422.29 4637122.92, 299266.6 4637583.39, 299694.24 4637835.81, 300235.59 4637959.75, 301211.84 4638288.82, 301587.95 4639076.98, 300372.6 4640075.77, 301093.11 4642508.82, 300685.17 4643391.09, 300979.56 4643794.25, 301616.09 4643842.48, 299489.82 4644826.56, 299039.67 4645141.95, 298325.57 4645350.64, 297986.62 4645538.92, 298401.6 4646796.17, 299421.04 4648129.44, 300059.47 4648865.43, 300702.38 4649212.22, 301673.03 4648521.82, 302129.92 4649258.91, 302374.88 4650445.5, 302765 4651012.13, 302908.82 4651542.49, 304450.51 4652031.55, 304784.92 4650772.89, 304833.13 4650721.19, 305094.07 4652077.88, 305993.16 4652643.13, 306655 4654036, 306469 4654283, 306133 4654235, 305945 4655059, 305769 4655592, 306378 4657164, 307183 4657587, 307476 4659683, 308131 4660866, 308527.42 4659900.86, 309684 4659013, 311080 4658315, 313386 4658119, 313531 4657632, 314651 4657011, 315630 4656858, 317824.19 4657234.54, 318608.19 4657010.54, 321077.39 4656665.89, 322340.41 4656183.98, 324054 4656262, 325322 4656791, 325389.11 4656723.11, 325282.9 4656653.63, 325437.09 4656246.31, 326006.69 4655920.61, 328016.6 4654527.37, 330347.36 4654638.54, 331164.52 4654361.73, 331874.02 4654211.39, 334219.09 4654276.1, 335247.27 4654348.5, 336281.84 4655559.24, 336902.75 4655338.66, 338186.59 4655604.53, 340193.95 4655858.03, 340709.05 4654614.94, 340651 4652477, 341383.77 4652660.58, 342153.18 4654850.5, 341824.1 4655697.45, 340833.87 4656838.24, 341665.73 4657598.66, 342115.76 4657792.08, 342736.21 4658712.36, 342926.97 4659445.36, 343650 4660861.38, 344325 4661426.43, 344807.57 4662150, 345203.71 4663077.33, 345979.32 4664344.79, 346419.69 4664859.66, 346808 4664418, 346983.4 4664589.27, 347302 4664437, 347727.87 4665297.16, 348400 4665249, 348545.53 4664701.51, 348156.61 4663357.83, 348365.78 4662834.36, 348487.4 4661764.67, 348461.79 4660759.03, 349377.12 4660893.54, 349703.57 4661239.43, 349778.06 4661377.3, 350156.29 4661225.35, 351178.33 4661539.72, 351725.44 4660468.59, 352143.06 4660191.37, 352419 4660409, 352886.75 4660147.61, 352798.53 4659338.84, 353970.48 4658996.16, 353961.86 4658612.91, 354271.88 4658274.63, 354447 4657129, 353748.83 4656795.82, 354353.85 4655525.55, 354043.15 4654273.36, 354060.04 4653898.46, 355104.46 4652532.58, 354997.03 4652346.75, 355441.24 4652082.53, 356272.45 4651456, 355946.16 4650414.98, 355763.19 4650266.14, 355813.88 4648795.88, 356178.81 4648581.21, 355196.2 4645150.42, 354830.37 4644770.6, 355368.75 4644841.92, 355885.53 4645112.09, 358131.23 4646698.82, 358327.92 4646525.8, 358531.69 4646692.64, 358634.94 4646371.61, 359947.84 4646028.19, 360301.41 4645435.23, 359891.83 4644189.05, 358734.44 4642618.57, 358859.66 4641992.96, 358355.95 4641179.22, 358393.81 4640120.25, 358067.46 4639060.45, 357643.36 4638331.63, 357679.84 4637795.56, 357258.38 4637166.17, 356206.89 4636103.53, 355988 4635822.95, 355617.18 4635454.42, 355472.69 4635609.1, 353688.89 4633658.62, 353784.07 4633170.19, 353413.39 4632667.58, 352636.11 4631435.73, 351697.4 4630680.65, 350839.58 4631011.39, 349765.54 4629671.09, 349109.53 4629125.95, 348015.59 4627945.09, 347465.62 4627358.18, 346170.68 4627755.95, 345499.41 4627909.59, 345459.52 4628907.99, 345412.3 4630001.01, 346424.56 4630969.18, 346614 4631569.89, 346059.25 4631685.36, 345481.32 4631071.73, 345048.93 4629974.31, 344435.88 4630063.22, 344154.82 4630339.72, 342335.35 4630769.92, 342140.15 4631277.5, 342392.03 4631956.77, 342562.08 4632535.31, 343359.88 4631919.91, 344198.79 4632675.69, 344232 4633461.39, 344046 4634955, 343627.63 4635162.42, 343587 4635513, 342559.3 4635413.14, 342727.6 4635716.22, 342285.77 4635847.85, 340968.16 4633264.48, 340276.54 4632170.37, 340678.17 4632249.99, 340507.66 4631990.28, 338581.05 4628384.44, 336616.03 4626194.39, 335520.94 4627090.37, 335106.29 4627078.6, 334615.19 4626543.04, 334181.3 4626533.25), (332155.25 4627068.65, 331890.26 4627098.4, 331711.74 4626081.55, 331167.76249354 4625014.75959795, 330136.51295489 4624147.57208493, 329895.87 4623833.45, 329972.450452426 4623749.13457894, 330582.68 4624217.91, 331203.700470917 4624745.2283439, 331490.42 4625164.94, 331819.325289428 4625713.97835845, 332155.25 4627068.65), (339564.77 4633563.22, 339371.2 4634385.19, 339160.74 4635033.97, 338883.34 4635018.6, 338754.84 4635532.38, 338767.79 4635976.19, 337855.94 4636103.48, 337820.13 4636242.19, 337431.99 4636029.5, 337379.57 4635700.22, 336858.95 4635493.53, 336509.96 4635843.28, 335857.33 4635255.03, 335749.68 4634141.19, 336066.09 4633942.39, 335748.84 4632801.97, 336035.61 4632742.04, 336082.31 4632170.3, 336410.22 4631821.02, 337002.97 4632511.95, 338282.06 4632959.96, 338562.49 4633789.27, 339564.77 4633563.22), (332155.25 4627068.65, 331890.26 4627098.4, 331711.74 4626081.55, 331167.76249354 4625014.75959795, 330136.51295489 4624147.57208493, 329895.87 4623833.45, 329972.450452426 4623749.13457894, 330582.68 4624217.91, 331203.700470917 4624745.2283439, 331490.42 4625164.94, 331819.325289428 4625713.97835845, 332155.25 4627068.65), (339564.77 4633563.22, 339371.2 4634385.19, 339160.74 4635033.97, 338883.34 4635018.6, 338754.84 4635532.38, 338767.79 4635976.19, 337855.94 4636103.48, 337820.13 4636242.19, 337431.99 4636029.5, 337379.57 4635700.22, 336858.95 4635493.53, 336509.96 4635843.28, 335857.33 4635255.03, 335749.68 4634141.19, 336066.09 4633942.39, 335748.84 4632801.97, 336035.61 4632742.04, 336082.31 4632170.3, 336410.22 4631821.02, 337002.97 4632511.95, 338282.06 4632959.96, 338562.49 4633789.27, 339564.77 4633563.22))");
     geom6 = reader.Read("POLYGON ((347645.481756858 4618835.07592096, 347645.481756858 4621300.75477798, 350111.160613874 4621300.75477798, 350111.160613874 4618835.07592096, 347645.481756858 4618835.07592096))");
     geom7 = reader.Read("POLYGON ((334181.3 4626533.25, 333802.61 4626481.77, 332851.85 4626555.73, 332837.99 4626870.47, 331675.575478004 4625017.10334799, 331449.012974601 4624694.44709314, 330300.575457354 4623624.13457707, 329963.34 4623438.15, 330534.02 4622198.85, 331461.18 4622559.66, 331815.99 4622016.46, 332363.67 4622161.85, 332039.82 4619793.32, 331548.21 4619356.5, 331272.11 4619075.88, 330483.58 4619245.55, 329411.26 4618893.99, 328619.74 4618944.72, 327619.86 4619438.68, 326688.91 4620936.39, 326577.53 4622953.68, 324921.22 4622991.88, 324835.36 4623313.11, 323348.71 4623236.68, 322453.43 4623415.99, 321526.83 4621885.82, 322513.7 4621551.96, 321796.7 4620132.45, 320461.29 4619812.96, 320255.43 4620350.01, 319572.87 4620303.13, 317928.9 4620166.3, 317654.64 4619133.62, 317161.4 4619283.23, 316348.1 4619227.49, 314893.3 4618828.46, 314921.8 4617759.96, 313965.48 4617497.69, 313525.07 4618502.05, 312863.3 4619592.91, 311994.17 4620673.82, 311646.12 4620051.21, 310652.99 4619110.01, 309868.14 4619370.41, 309748.57 4619148.83, 309344.12 4618617.63, 308994.57 4619110.83, 308290.42 4618609.47, 307608.36 4620081.67, 306979.94 4620597.13, 306459.64 4621348.79, 305837.1 4622106.1, 305976.64 4622701.34, 304560.82 4624222.35, 303588.37 4625472.67, 302936.71 4626165.17, 302435.72 4626769.89, 302105.2 4627314.96, 301884.67 4627782.92, 301325.84 4629098.08, 300636.13 4629797.85, 299826.53 4631113.5, 299717.36 4631406.8, 298959.32 4633461.34, 299030.82 4635340.12, 299231.61 4636324.43, 299422.29 4637122.92, 299266.6 4637583.39, 299694.24 4637835.81, 300235.59 4637959.75, 301211.84 4638288.82, 301587.95 4639076.98, 300372.6 4640075.77, 301093.11 4642508.82, 300685.17 4643391.09, 300979.56 4643794.25, 301616.09 4643842.48, 299489.82 4644826.56, 299039.67 4645141.95, 298325.57 4645350.64, 297986.62 4645538.92, 298401.6 4646796.17, 299421.04 4648129.44, 300059.47 4648865.43, 300702.38 4649212.22, 301673.03 4648521.82, 302129.92 4649258.91, 302374.88 4650445.5, 302765 4651012.13, 302908.82 4651542.49, 304450.51 4652031.55, 304784.92 4650772.89, 304833.13 4650721.19, 305094.07 4652077.88, 305993.16 4652643.13, 306655 4654036, 306469 4654283, 306133 4654235, 305945 4655059, 305769 4655592, 306378 4657164, 307183 4657587, 307476 4659683, 308131 4660866, 308527.42 4659900.86, 309684 4659013, 311080 4658315, 313386 4658119, 313531 4657632, 314651 4657011, 315630 4656858, 317824.19 4657234.54, 318608.19 4657010.54, 321077.39 4656665.89, 322340.41 4656183.98, 324054 4656262, 325322 4656791, 325389.11 4656723.11, 325282.9 4656653.63, 325437.09 4656246.31, 326006.69 4655920.61, 328016.6 4654527.37, 330347.36 4654638.54, 331164.52 4654361.73, 331874.02 4654211.39, 334219.09 4654276.1, 335247.27 4654348.5, 336281.84 4655559.24, 336902.75 4655338.66, 338186.59 4655604.53, 340193.95 4655858.03, 340709.05 4654614.94, 340651 4652477, 341383.77 4652660.58, 342153.18 4654850.5, 341824.1 4655697.45, 340833.87 4656838.24, 341665.73 4657598.66, 342115.76 4657792.08, 342736.21 4658712.36, 342926.97 4659445.36, 343650 4660861.38, 344325 4661426.43, 344807.57 4662150, 345203.71 4663077.33, 345979.32 4664344.79, 346419.69 4664859.66, 346808 4664418, 346983.4 4664589.27, 347302 4664437, 347727.87 4665297.16, 348400 4665249, 348545.53 4664701.51, 348156.61 4663357.83, 348365.78 4662834.36, 348487.4 4661764.67, 348461.79 4660759.03, 349377.12 4660893.54, 349703.57 4661239.43, 349778.06 4661377.3, 350156.29 4661225.35, 351178.33 4661539.72, 351725.44 4660468.59, 352143.06 4660191.37, 352419 4660409, 352886.75 4660147.61, 352798.53 4659338.84, 353970.48 4658996.16, 353961.86 4658612.91, 354271.88 4658274.63, 354447 4657129, 353748.83 4656795.82, 354353.85 4655525.55, 354043.15 4654273.36, 354060.04 4653898.46, 355104.46 4652532.58, 354997.03 4652346.75, 355441.24 4652082.53, 356272.45 4651456, 355946.16 4650414.98, 355763.19 4650266.14, 355813.88 4648795.88, 356178.81 4648581.21, 355196.2 4645150.42, 354830.37 4644770.6, 355368.75 4644841.92, 355885.53 4645112.09, 358131.23 4646698.82, 358327.92 4646525.8, 358531.69 4646692.64, 358634.94 4646371.61, 359947.84 4646028.19, 360301.41 4645435.23, 359891.83 4644189.05, 358734.44 4642618.57, 358859.66 4641992.96, 358355.95 4641179.22, 358393.81 4640120.25, 358067.46 4639060.45, 357643.36 4638331.63, 357679.84 4637795.56, 357258.38 4637166.17, 356206.89 4636103.53, 355988 4635822.95, 355617.18 4635454.42, 355472.69 4635609.1, 353688.89 4633658.62, 353784.07 4633170.19, 353413.39 4632667.58, 352636.11 4631435.73, 351697.4 4630680.65, 350839.58 4631011.39, 349765.54 4629671.09, 349109.53 4629125.95, 348015.59 4627945.09, 347465.62 4627358.18, 346170.68 4627755.95, 345499.41 4627909.59, 345459.52 4628907.99, 345412.3 4630001.01, 346424.56 4630969.18, 346614 4631569.89, 346059.25 4631685.36, 345481.32 4631071.73, 345048.93 4629974.31, 344435.88 4630063.22, 344154.82 4630339.72, 342335.35 4630769.92, 342140.15 4631277.5, 342392.03 4631956.77, 342562.08 4632535.31, 343359.88 4631919.91, 344198.79 4632675.69, 344232 4633461.39, 344046 4634955, 343627.63 4635162.42, 343587 4635513, 342559.3 4635413.14, 342727.6 4635716.22, 342285.77 4635847.85, 340968.16 4633264.48, 340276.54 4632170.37, 340678.17 4632249.99, 340507.66 4631990.28, 338581.05 4628384.44, 336616.03 4626194.39, 335520.94 4627090.37, 335106.29 4627078.6, 334615.19 4626543.04, 334181.3 4626533.25), (332155.25 4627068.65, 331890.26 4627098.4, 331711.74 4626081.55, 331167.76249354 4625014.75959795, 330136.51295489 4624147.57208493, 329895.87 4623833.45, 329972.450452426 4623749.13457894, 330582.68 4624217.91, 331203.700470917 4624745.2283439, 331490.42 4625164.94, 331819.325289428 4625713.97835845, 332155.25 4627068.65), (339564.77 4633563.22, 339371.2 4634385.19, 339160.74 4635033.97, 338883.34 4635018.6, 338754.84 4635532.38, 338767.79 4635976.19, 337855.94 4636103.48, 337820.13 4636242.19, 337431.99 4636029.5, 337379.57 4635700.22, 336858.95 4635493.53, 336509.96 4635843.28, 335857.33 4635255.03, 335749.68 4634141.19, 336066.09 4633942.39, 335748.84 4632801.97, 336035.61 4632742.04, 336082.31 4632170.3, 336410.22 4631821.02, 337002.97 4632511.95, 338282.06 4632959.96, 338562.49 4633789.27, 339564.77 4633563.22), (332155.25 4627068.65, 331890.26 4627098.4, 331711.74 4626081.55, 331167.76249354 4625014.75959795, 330136.51295489 4624147.57208493, 329895.87 4623833.45, 329972.450452426 4623749.13457894, 330582.68 4624217.91, 331203.700470917 4624745.2283439, 331490.42 4625164.94, 331819.325289428 4625713.97835845, 332155.25 4627068.65), (339564.77 4633563.22, 339371.2 4634385.19, 339160.74 4635033.97, 338883.34 4635018.6, 338754.84 4635532.38, 338767.79 4635976.19, 337855.94 4636103.48, 337820.13 4636242.19, 337431.99 4636029.5, 337379.57 4635700.22, 336858.95 4635493.53, 336509.96 4635843.28, 335857.33 4635255.03, 335749.68 4634141.19, 336066.09 4633942.39, 335748.84 4632801.97, 336035.61 4632742.04, 336082.31 4632170.3, 336410.22 4631821.02, 337002.97 4632511.95, 338282.06 4632959.96, 338562.49 4633789.27, 339564.77 4633563.22))");        
 }
        public void Issue117()
        {
            var geometryNts = new WKTReader().Read("POLYGON((0 0,100 0,100 100, 0 100, 0 0 )))");

            //the features must be missing. What should I do there to add the features.Thanks
            var ntsGeometry = GetGeometryUsingNTS(geometryNts);
            using (var sw = new StreamWriter(File.Create("polygon.gml")))
            {
                sw.Write(ntsGeometry);
                sw.Close();
            }
        }
Example #21
0
 public static IGeometry Read(String wkt)
 {
     var rdr = new WKTReader();
     try
     {
         return rdr.Read(wkt);
     }
     catch (ParseException ex)
     {
         throw new AssertionException("Failed to read file", ex);
     }
 }
 /// <summary>
 /// Reads a <see cref="IGeometry"/> from a WKT string using a custom <see cref="IGeometryFactory"/>.
 /// </summary>
 /// <param name="geomFactory">The custom factory to use</param>
 /// <param name="wkt">The WKT string</param>
 /// <returns>The geometry read</returns>
 protected IGeometry Read(IGeometryFactory geomFactory, string wkt)
 {
     var reader = new WKTReader(geomFactory);
     try
     {
         return reader.Read(wkt);
     }
     catch (GeoAPI.IO.ParseException e)
     {
         throw new AssertionException(e.Message, e);
     }
 }
		public virtual void  Intersection(string wktA, string wktB, PrecisionModel pm)
		{
			Console.WriteLine("Running example using Precision Model = " + pm);
			GeometryFactory fact = new GeometryFactory(pm);
			WKTReader wktRdr = new WKTReader(fact);
			
			IGeometry A = wktRdr.Read(wktA);
			IGeometry B = wktRdr.Read(wktB);
			IGeometry C = A.Intersection(B);
			
			Console.WriteLine("A intersection B = " + C);
		}
        public GeometryPrecisionReducerTest()
        {
            pmFloat = new PrecisionModel();
            pmFixed1 = new PrecisionModel(1);
            reducer = new GeometryPrecisionReducer(pmFixed1);
            reducerKeepCollapse = new GeometryPrecisionReducer(pmFixed1);

            gfFloat = new GeometryFactory(pmFloat, 0);
            reader = new WKTReader(gfFloat);

            reducerKeepCollapse.RemoveCollapsedComponents = false;
        }
 public void ensure_geomcollection_union_works_as_expected()
 {
     const string wkt = "GEOMETRYCOLLECTION (LINESTRING (91.8060659371673 173.20142725005167, 91.39164134738692 173.99735164258493), LINESTRING (91.8060659371673 173.20142725005167, 93.86031559446384 169.09495765102088), POLYGON ((94.99521652217337 163.95078872427842, 95.49722524801828 162.9538793247459, 95.882367193821 162.14711279527867, 93.64652028360543 161.02863678119544, 92.74726556828251 162.82625769700874, 91.58462517497041 162.24465016968549, 89.30221145595522 166.80722245307652, 86.83657677518224 171.7035803499217, 87.99767166613637 172.28826715001233, 87.09365592138087 174.08349848141063, 89.3265307116773 175.2078961738926, 89.72851923404312 174.40961097321966, 89.74417082853229 174.4174406385417, 90.243535110612 173.41920547471025, 91.39164134738692 173.99735164258493, 91.79518263019484 173.19598290690502, 91.8060659371673 173.20142725005167, 93.86031559446387 169.09495765102082, 95.75430439421692 165.33379745623483, 96.14575287181019 164.52634123841523, 94.99521652217337 163.95078872427842)), POLYGON ((96.14575287181019 164.52634123841523, 95.75430439421692 165.33379745623483, 93.86031559446384 169.09495765102088, 96.14575287181019 164.52634123841523)))";
     WKTReader reader = new WKTReader();
     IGeometry geom = reader.Read(wkt);
     Assert.That(geom, Is.Not.Null);
     Assert.That(geom.IsValid, Is.True);
     Assert.That(geom, Is.InstanceOf<IGeometryCollection>());
     IGeometry res = geom.Union();
     Assert.That(res, Is.Not.Null);
     Assert.That(res.IsValid, Is.True);
     Assert.That(res, Is.InstanceOf<IGeometryCollection>());
 }
        public void TestPolygonWithHoles()
        {
            const string wkt = "POLYGON((2 2, 2 98, 98 98, 98 2, 2 2), (5 90, 10 90, 10 95, 5 95, 5 90))";
            var geom = new WKTReader().Read(wkt);

            var gpw = new WpfStreamGeometryWriter();
            var res = gpw.ToShape(geom);

            WpfGeometryToImage(res, "WPF-PolygonWithHoles.png");

            var reverse = WpfGeometryReader.Read(res, 0d, GeometryFactory.Default);
            Assert.AreEqual(geom, reverse);
        }
Example #27
0
        private IGeometryCollection ValidateGeo(string geo)
        {
            if (String.IsNullOrEmpty(geo))
                throw new ArgumentException("invalid argument 'geo': empty string");

            WKTReader reader = new WKTReader(this.factory);
            IGeometry data = reader.Read(geo);

            // we should expect a GeometryCollection object
            if (data is IGeometryCollection)
                return data as IGeometryCollection;
            throw new ArgumentException("invalid argument 'geo': IGeometryCollection expected");
        }
 public void NHSP_18()
 {
     var geometry = new WKTReader().Read("LINESTRING(5 5, 5 5)");
     geometry.SRID = 4326;
     var entity = new LineStringEntity { Id = int.MaxValue, Name = "test", Geometry = geometry };
     using (var session = sessions.OpenSession())
     {
         session.Transaction.Begin();
         session.Save(entity);
         session.Flush();
         session.Transaction.Rollback();
     }
 }
Example #29
0
        private ILineString ValidateCut(string cut)
        {
            if (String.IsNullOrEmpty(cut))
                throw new ArgumentException("invalid argument 'cut': empty string");

            WKTReader reader = new WKTReader(this.factory);
            IGeometry data = reader.Read(cut);

            // we should expect a GeometryCollection object
            if (data is ILineString)
                return data as ILineString;
            throw new ArgumentException("invalid argument 'cut': ILineString expected");
        }
Example #30
0
 public static string ToGeoJson(IEnumerable<System.Data.Entity.Spatial.DbGeometry> dbGeometrys,
     ProjectionInfo pStart)
 {
     var pEnd = Definitions.WorldProjection;
     var enumerable = dbGeometrys as IList<System.Data.Entity.Spatial.DbGeometry> ?? dbGeometrys.ToList();
     var reader = new WKTReader();
     var geometryCollection =
         new GeometryCollection(
             enumerable.Select(x => GeometryHelper.Project(x.MakeValid(), pStart, pEnd))
                 .Select(dbGeometry => reader.Read(dbGeometry.WellKnownValue.WellKnownText))
                 .ToArray());
     var geoJsonWriter = new GeoJsonWriter();
     return geoJsonWriter.Write(geometryCollection);
 }
Example #31
0
        private string ExtractWKTFromGeoJson(Stream stream, int points)
        {
            var wkt = ExtractWKTFromGeoJson(stream);

            NetTopologySuite.IO.WKTReader wktReader = new NetTopologySuite.IO.WKTReader();
            // wktReader.RepairRings = true;
            var finalgeometry = wktReader.Read(wkt);

            if (finalgeometry != null)
            {
                finalgeometry = SimplifyGeometry(finalgeometry, points);
                foreach (var p in finalgeometry.Coordinates.ToArray())
                {
                    p.X = Math.Round(p.X, 2);
                    p.Y = Math.Round(p.Y, 2);
                    if (p is CoordinateZ)
                    {
                        p.Z = Math.Round(p.Z, 2);
                    }
                }
                wkt = finalgeometry.AsText();
            }
            return(wkt);
        }
Example #32
0
        public void Write_works(string wkt, string expected)
        {
            var geometry = new WKTReader().Read(wkt);

            Assert.Equal(expected, Write(geometry));
        }
 ///<summary>
 /// Creates a new <see cref="WKTFileReader" />, given a <see cref="TextReader"/> to read with.
 ///</summary>
 /// <param name="reader">The stream reader of the file to read from</param>
 /// <param name="wktReader">The geometry reader to use</param>
 public WKTFileReader(TextReader reader, WKTReader wktReader)
     : this(wktReader)
 {
     _reader = reader;
 }
 ///<summary>
 /// Creates a new <see cref="WKTFileReader" />, given a <see cref="Stream"/> to read from.
 ///</summary>
 /// <param name="stream">The stream to read from</param>
 /// <param name="wktReader">The geometry reader to use</param>
 public WKTFileReader(Stream stream, WKTReader wktReader)
     : this(new StreamReader(stream), wktReader)
 {
 }
 ///<summary>
 /// Creates a new <see cref="WKTFileReader" />, given the name of the file to read from.
 ///</summary>
 /// <param name="filename">The name of the file to read from</param>
 /// <param name="wktReader">The geometry reader to use</param>
 public WKTFileReader(String filename, WKTReader wktReader)
     : this(new FileInfo(filename), wktReader)
 {
 }
 ///<summary>
 /// Creates a new <see cref="WKTFileReader" /> given the <paramref name="file" /> to read from and a <see cref="WKTReader" /> to use to parse the geometries.
 ///</summary>
 /// <param name="file"> the <see cref="FileInfo" /> to read from</param>
 /// <param name="wktReader">the geometry reader to use</param>
 public WKTFileReader(FileInfo file, WKTReader wktReader)
     : this(wktReader)
 {
     _file = file;
 }
 private WKTFileReader(WKTReader wktReader)
 {
     _wktReader = wktReader;
     Limit      = -1;
 }
Example #38
0
 ///<summary>
 /// Creates a new <see cref="WKTFileReader" />, given a <see cref="StreamReader"/> of the file to read from.
 ///</summary>
 /// <param name="reader">The stream reader of the file to read from</param>
 /// <param name="wktReader">The geometry reader to use</param>
 public WKTFileReader(TextReader reader, WKTReader wktReader)
 {
     _reader    = reader;
     _wktReader = wktReader;
 }
Example #39
0
 ///<summary>
 /// Creates a new <see cref="WKTFileReader" /> given the <paramref name="file" /> to read from and a <see cref="WKTReader" /> to use to parse the geometries.
 ///</summary>
 /// <param name="file"> the <see cref="FileInfo" /> to read from</param>
 /// <param name="wktReader">the geometry reader to use</param>
 public WKTFileReader(FileInfo file, WKTReader wktReader)
 {
     _file      = file;
     _wktReader = wktReader;
     Limit      = -1;
 }