コード例 #1
0
        public virtual void TestRussia()
        {
            string wktStr = ReadFirstLineFromRsrc("russia.wkt.txt");
            //Russia exercises NtsGeometry fairly well because of these characteristics:
            // * a MultiPolygon
            // * crosses the dateline
            // * has coordinates needing normalization (longitude +180.000xxx)

            //TODO THE RUSSIA TEST DATA SET APPEARS CORRUPT
            // But this test "works" anyhow, and exercises a ton.
            //Unexplained holes revealed via KML export:
            // TODO Test contains: 64°12'44.82"N    61°29'5.20"E
            //  64.21245  61.48475
            // FAILS
            //AssertRelation(null,SpatialRelation.CONTAINS, shape, ctx.makePoint(61.48, 64.21));

            NtsSpatialContextFactory factory = new NtsSpatialContextFactory();

            factory.normWrapLongitude = true;

            NtsSpatialContext ctx = (NtsSpatialContext)factory.NewSpatialContext();

            IShape shape = ctx.ReadShapeFromWkt(wktStr);
            //System.out.println("Russia Area: "+shape.getArea(ctx));
        }
コード例 #2
0
        public virtual void TestPolygonRepair()
        {
            //because we're going to test validation
            //System.setProperty(NtsGeometry.SYSPROP_ASSERT_VALIDATE, "false"); // TODO: Figure this out...
            Environment.SetEnvironmentVariable(NtsGeometry.SYSPROP_ASSERT_VALIDATE, bool.FalseString);

            //note: doesn't repair all cases; this case isn't:
            //ctx.readShapeFromWkt("POLYGON((0 0, 10 0, 10 20))");//doesn't connect around
            string wkt = "POLYGON((0 0, 10 0, 10 20, 5 -5, 0 20, 0 0))";//Topology self-intersect

            NtsSpatialContextFactory factory = new NtsSpatialContextFactory();

            factory.validationRule = ValidationRule.RepairBuffer0;
            NtsSpatialContext ctx     = (NtsSpatialContext)factory.NewSpatialContext(); // TODO: Can we remove this cast?
            IShape            buffer0 = ctx.ReadShapeFromWkt(wkt);

            Assert.True(buffer0.GetArea(ctx) > 0);

            factory = new NtsSpatialContextFactory();
            factory.validationRule = ValidationRule.RepairConvexHull;
            ctx = (NtsSpatialContext)factory.NewSpatialContext();
            IShape cvxHull = ctx.ReadShapeFromWkt(wkt);

            Assert.True(cvxHull.GetArea(ctx) > 0);

            Assert.Equal(SpatialRelation.CONTAINS, cvxHull.Relate(buffer0));

            factory = new NtsSpatialContextFactory();
            factory.validationRule = ValidationRule.None;
            ctx = (NtsSpatialContext)factory.NewSpatialContext();
            ctx.ReadShapeFromWkt(wkt);//doesn't throw
        }
コード例 #3
0
 public NtsWktShapeParser(NtsSpatialContext ctx, NtsSpatialContextFactory factory)
     : base(ctx, factory)
 {
     this.m_ctx            = ctx;
     this.m_datelineRule   = factory.datelineRule;
     this.m_validationRule = factory.validationRule;
     this.m_autoIndex      = factory.autoIndex;
 }
コード例 #4
0
        public NtsWKTReaderShapeParserTest()
        {
            NtsSpatialContextFactory factory = new NtsSpatialContextFactory();

            factory.datelineRule        = DatelineRule.CcwRect;
            factory.wktShapeParserClass = typeof(NtsWKTReaderShapeParser);
            ctx = factory.NewSpatialContext();
        }
コード例 #5
0
        public virtual void TestFiji()
        {
            //Fiji is a group of islands crossing the dateline.
            string wktStr = ReadFirstLineFromRsrc("fiji.wkt.txt");

            NtsSpatialContextFactory factory = new NtsSpatialContextFactory();

            factory.normWrapLongitude = true;
            NtsSpatialContext ctx = (NtsSpatialContext)factory.NewSpatialContext();

            IShape shape = ctx.ReadShapeFromWkt(wktStr);

            AssertRelation(null, SpatialRelation.CONTAINS, shape,
                           ctx.MakePoint(-179.99, -16.9));
            AssertRelation(null, SpatialRelation.CONTAINS, shape,
                           ctx.MakePoint(+179.99, -16.9));
            Assert.True(shape.BoundingBox.Width < 5);//smart bbox
            Console.WriteLine("Fiji Area: " + shape.GetArea(ctx));
        }
コード例 #6
0
        //Note: Historically, the code here originated from the defunct NtsShapeReadWriter.

        public NtsWKTReaderShapeParser(NtsSpatialContext ctx, NtsSpatialContextFactory factory)
            : base(ctx, factory)
        {
        }
コード例 #7
0
 internal static bool once = false;//cheap way to test it was created
 public CustomWktShapeParser(NtsSpatialContext ctx, NtsSpatialContextFactory factory)
     : base(ctx, factory)
 {
     once = true;
 }
コード例 #8
0
 public NtsBinaryCodec(NtsSpatialContext ctx, NtsSpatialContextFactory factory)
     : base(ctx, factory)
 {
     //note: ctx.geometryFactory hasn't been set yet
     useFloat = (factory.precisionModel.PrecisionModelType == PrecisionModels.FloatingSingle);
 }