Пример #1
0
        public void ConvertAPointUsingNetTopologySuiteTransformGeometry()
        {
            //SETUP
            var factory = NetTopologySuite.Geometries.GeometryFactory.Default;
            var pointNatGrid = new NetTopologySuite.Geometries.Point(532248.29992272425, 181560.30052819476);

            //ATTEMPT
            var transform = new DotSpatialMathTransform(
                _britishNationalGridOsgb36, _wgs84);
            var result = GeometryTransform.TransformGeometry(
                factory, pointNatGrid, transform);

            //VERIFY            
            Assert.AreEqual("Point", result.GeometryType);
            Assert.AreEqual(1, result.Coordinates.Length);
            Assert.AreEqual(-0.095399303,result.Coordinate.X,  0.001);
            Assert.AreEqual(51.517489, result.Coordinates[0].Y, 0.001);
        }
        public void GeometryTransformTest()
        {

            #region Init ICoordinateTransformation

            // RGF93_Lambert_93
            const string coordSysRGF93_Lambert_93 = "PROJCS[\"RGF93_Lambert_93\",GEOGCS[\"GCS_RGF_1993\",DATUM[\"D_RGF_1993\",SPHEROID[\"GRS_1980\",6378137.0,298.257222101]],PRIMEM[\"Greenwich\",0.0],UNIT[\"Degree\",0.0174532925199433]],PROJECTION[\"Lambert_Conformal_Conic\"],PARAMETER[\"False_Easting\",700000.0],PARAMETER[\"False_Northing\",6600000.0],PARAMETER[\"Central_Meridian\",3.0],PARAMETER[\"Standard_Parallel_1\",44.0],PARAMETER[\"Standard_Parallel_2\",49.0],PARAMETER[\"Latitude_Of_Origin\",46.5],UNIT[\"Meter\",1.0]]";

            // SRID 4326
            const string coordSys4326 = "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\"]]";

            var csSource = ProjNet.Converters.WellKnownText.CoordinateSystemWktReader.Parse(coordSysRGF93_Lambert_93) as GeoAPI.CoordinateSystems.ICoordinateSystem;
            var csTarget = ProjNet.Converters.WellKnownText.CoordinateSystemWktReader.Parse(coordSys4326) as GeoAPI.CoordinateSystems.ICoordinateSystem;

            var transform = new ProjNet.CoordinateSystems.Transformations.CoordinateTransformationFactory().CreateFromCoordinateSystems(csSource, csTarget);

            var piSource = ProjectionInfo.FromEsriString(coordSysRGF93_Lambert_93);
            var piTarget = ProjectionInfo.FromEsriString(coordSys4326);
            var dsTransform = new DotSpatialMathTransform(piSource, piTarget);

            #endregion Init ICoordinateTransformation

            using (var shapeDataReader = new ShapefileDataReader(@"..\..\..\NetTopologySuite.Samples.Shapefiles\DEPARTEMENT.SHP", GeometryFactory.Default))
            {
                while (shapeDataReader.Read())
                {
                    var outGeomDotSpatial =
                        CoordinateSystems.Transformations.GeometryTransform.TransformGeometry(GeometryFactory.Default,
                                                                                              shapeDataReader.Geometry,
                                                                                              dsTransform);
                    Assert.IsFalse(outGeomDotSpatial.IsEmpty);
                    Console.WriteLine(outGeomDotSpatial.AsText());
                    var outGeomProjNet =
                        CoordinateSystems.Transformations.GeometryTransform.TransformGeometry(GeometryFactory.Default,
                                                                                              shapeDataReader.Geometry,
                                                                                              transform.MathTransform);
                    Assert.IsFalse(outGeomProjNet.IsEmpty);
                    Console.WriteLine(outGeomProjNet.AsText());

                    var hd = Algorithm.Distance.DiscreteHausdorffDistance.Distance(outGeomProjNet, outGeomDotSpatial);
                    Console.WriteLine(string.Format("\nHaussdorffDistance: {0}", hd));
                    Console.WriteLine();
                }
            }

        }
 public DagiShapeFileReader()
 {
     var etrs89utmprojection = ProjectionInfo.FromEsriString(_etrs89utm32wkt);
     var wgs84projection = ProjectionInfo.FromEsriString(_wgs84wkt);
     _transform = new DotSpatialMathTransform(etrs89utmprojection, wgs84projection);
 }