示例#1
0
        private static async void ConnectToPostGis()
        {
            List <HRBorder> retour     = new List <HRBorder>();
            var             connString = "ToGetFromAppConfigFileDO";

            using (var conn = new NpgsqlConnection(connString))
            {
                conn.Open();
                conn.TypeMapper.UseLegacyPostgis();
                // Retrieve all rows
                using (var cmd = new NpgsqlCommand("SELECT name, wkb_geometry FROM boundaries", conn))
                    using (Task <DbDataReader> readerTask = cmd.ExecuteReaderAsync())
                    {
                        await readerTask;

                        NpgsqlDataReader        reader       = (NpgsqlDataReader)readerTask.Result;
                        PostGisFieldValueGetter readerFacade = new PostGisFieldValueGetter(reader);
                        Task <bool>             reading      = reader.ReadAsync();
                        await reading;
                        while (reading.Result)
                        {
                            Geometry geo = HRConverterPostGisToNetTopologySuite.ConvertFrom(readerFacade);
                            reading = reader.ReadAsync();
                        }
                    }
            }
            Console.ReadKey();
        }
        public void TestWrongColumnIndexThrowException()
        {
            StubFieldValueGetter valueGetter = new StubFieldValueGetter();

            valueGetter.OrdinalToStub = 0;
            valueGetter.FieldCount    = 1;
            int wrongIndex = 42;

            Assert.Throws <ArgumentOutOfRangeException>(() => HRConverterPostGisToNetTopologySuite.ConvertFrom(valueGetter, wrongIndex));
        }
        public void TestPostGisPointReturnPointWithCoordinatesAndSRS()
        {
            StubFieldValueGetter valueGetter = new StubFieldValueGetter();

            valueGetter.OrdinalToStub       = 0;
            valueGetter.FieldCount          = 1;
            valueGetter.GeometryToStub      = new PostgisPoint(_X1, _Y1);
            valueGetter.GeometryToStub.SRID = _SRID;
            Geometry geomResult = HRConverterPostGisToNetTopologySuite.ConvertFrom(valueGetter);

            Assert.IsType <Point>(geomResult);
            Point pointResult = (Point)geomResult;

            Assert.Equal(_X1, pointResult.X);
            Assert.Equal(_Y1, pointResult.Y);
            Assert.Equal(_SRID, pointResult.SRID);
        }
        public void TestPostGisMultiLineStringReturnMultiLineStringWithCoordinatesAndSRS()
        {
            StubFieldValueGetter valueGetter = new StubFieldValueGetter();

            valueGetter.OrdinalToStub = 0;
            valueGetter.FieldCount    = 1;
            Coordinate2D[]    coords1 = new Coordinate2D[] { new Coordinate2D(_X1, _Y1), new Coordinate2D(_X2, _Y2), new Coordinate2D(_X3, _Y3) };
            Coordinate2D[]    coords2 = new Coordinate2D[] { new Coordinate2D(_X4, _Y4), new Coordinate2D(_X5, _Y5), new Coordinate2D(_X6, _Y6) };
            PostgisLineString pgLS1   = new PostgisLineString(coords1);
            PostgisLineString pgLS2   = new PostgisLineString(coords2);

            valueGetter.GeometryToStub      = new PostgisMultiLineString(new PostgisLineString[] { pgLS1, pgLS2 });
            valueGetter.GeometryToStub.SRID = _SRID;
            Geometry geomResult = HRConverterPostGisToNetTopologySuite.ConvertFrom(valueGetter);

            Assert.NotNull(geomResult);
            Assert.IsType <MultiLineString>(geomResult);
            MultiLineString multiLineStringResult = (MultiLineString)geomResult;

            Assert.Equal(2, multiLineStringResult.NumGeometries);
            LineString ls1 = (LineString)multiLineStringResult[0];

            Assert.Equal(3, ls1.NumPoints);
            LineString ls2 = (LineString)multiLineStringResult[1];

            Assert.Equal(3, ls2.NumPoints);
            Assert.Equal(3, ls1.Coordinates.Length);
            Assert.Equal(_X1, ls1.Coordinates[0].X);
            Assert.Equal(_Y1, ls1.Coordinates[0].Y);
            Assert.Equal(_X2, ls1.Coordinates[1].X);
            Assert.Equal(_Y2, ls1.Coordinates[1].Y);
            Assert.Equal(_X3, ls1.Coordinates[2].X);
            Assert.Equal(_Y3, ls1.Coordinates[2].Y);
            Assert.Equal(_SRID, ls1.SRID);
            Assert.Equal(3, ls2.Coordinates.Length);
            Assert.Equal(_X4, ls2.Coordinates[0].X);
            Assert.Equal(_Y4, ls2.Coordinates[0].Y);
            Assert.Equal(_X5, ls2.Coordinates[1].X);
            Assert.Equal(_Y5, ls2.Coordinates[1].Y);
            Assert.Equal(_X6, ls2.Coordinates[2].X);
            Assert.Equal(_Y6, ls2.Coordinates[2].Y);
            Assert.Equal(_SRID, ls2.SRID);
        }
        public void TestPostGisMultiPointReturnMultiPointWithCoordinatesAndSRS()
        {
            StubFieldValueGetter valueGetter = new StubFieldValueGetter();

            valueGetter.OrdinalToStub = 0;
            valueGetter.FieldCount    = 1;
            Coordinate2D[] coords = new Coordinate2D[] { new Coordinate2D(_X1, _Y1), new Coordinate2D(_X2, _Y2) };
            valueGetter.GeometryToStub      = new PostgisMultiPoint(coords);
            valueGetter.GeometryToStub.SRID = _SRID;
            Geometry geomResult = HRConverterPostGisToNetTopologySuite.ConvertFrom(valueGetter);

            Assert.IsType <MultiPoint>(geomResult);
            MultiPoint multiPointResult = (MultiPoint)geomResult;

            Assert.Equal(_X1, multiPointResult.Coordinates[0].X);
            Assert.Equal(_Y1, multiPointResult.Coordinates[0].Y);
            Assert.Equal(_X2, multiPointResult.Coordinates[1].X);
            Assert.Equal(_Y2, multiPointResult.Coordinates[1].Y);
            Assert.Equal(_SRID, multiPointResult.SRID);
        }
        public void TestPostGisPolygonReturnPolygonWithCoordinatesAndSRS()
        {
            StubFieldValueGetter valueGetter = new StubFieldValueGetter();

            valueGetter.OrdinalToStub = 0;
            valueGetter.FieldCount    = 1;
            //Polygon with one hole, first element is exterior ring. Declaration with a jagged Array.
            PostgisPolygon postGisPolygon1 = CreatePostGisPolygon(1);

            valueGetter.GeometryToStub      = postGisPolygon1;
            valueGetter.GeometryToStub.SRID = _SRID;
            Geometry geomResult = HRConverterPostGisToNetTopologySuite.ConvertFrom(valueGetter);

            Assert.NotNull(geomResult);
            Assert.IsType <Polygon>(geomResult);
            Polygon polygonResult = (Polygon)geomResult;

            Assert.Equal(_SRID, polygonResult.SRID);
            CheckIsPolygonRightConverted(1, polygonResult);
        }
        public void TestPostGisMultiPolygonReturnMultiPolygonWithCoordinatesAndSRS()
        {
            StubFieldValueGetter valueGetter = new StubFieldValueGetter();

            valueGetter.OrdinalToStub = 0;
            valueGetter.FieldCount    = 1;
            PostgisPolygon[] postGisPolygons = new PostgisPolygon[] { CreatePostGisPolygon(1), CreatePostGisPolygon(2) };
            valueGetter.GeometryToStub      = new PostgisMultiPolygon(postGisPolygons);
            valueGetter.GeometryToStub.SRID = _SRID;
            Geometry geomResult = HRConverterPostGisToNetTopologySuite.ConvertFrom(valueGetter);

            Assert.NotNull(geomResult);
            Assert.IsType <MultiPolygon>(geomResult);
            MultiPolygon multiPolygonResult = (MultiPolygon)geomResult;

            Assert.Equal(_SRID, multiPolygonResult.SRID);
            Assert.Equal(2, multiPolygonResult.Count);
            Assert.IsType <Polygon>(multiPolygonResult[0]);
            Assert.IsType <Polygon>(multiPolygonResult[1]);
            CheckIsPolygonRightConverted(1, (Polygon)multiPolygonResult[0]);
            CheckIsPolygonRightConverted(2, (Polygon)multiPolygonResult[1]);
        }
        public void TestPostGisLineStringReturnLineStringWithCoordinatesAndSRS()
        {
            StubFieldValueGetter valueGetter = new StubFieldValueGetter();

            valueGetter.OrdinalToStub = 0;
            valueGetter.FieldCount    = 1;
            Coordinate2D[] coords = new Coordinate2D[] { new Coordinate2D(_X1, _Y1), new Coordinate2D(_X2, _Y2), new Coordinate2D(_X3, _Y3) };
            valueGetter.GeometryToStub      = new PostgisLineString(coords);
            valueGetter.GeometryToStub.SRID = _SRID;
            Geometry geomResult = HRConverterPostGisToNetTopologySuite.ConvertFrom(valueGetter);

            Assert.NotNull(geomResult);
            Assert.IsType <LineString>(geomResult);
            LineString lineStringResult = (LineString)geomResult;

            Assert.Equal(3, lineStringResult.Coordinates.Length);
            Assert.Equal(_X1, lineStringResult.Coordinates[0].X);
            Assert.Equal(_Y1, lineStringResult.Coordinates[0].Y);
            Assert.Equal(_X2, lineStringResult.Coordinates[1].X);
            Assert.Equal(_Y2, lineStringResult.Coordinates[1].Y);
            Assert.Equal(_X3, lineStringResult.Coordinates[2].X);
            Assert.Equal(_Y3, lineStringResult.Coordinates[2].Y);
            Assert.Equal(_SRID, lineStringResult.SRID);
        }