Esempio n. 1
0
        /// <summary>
        /// Creates map object from <see cref="CartoProject"/>
        /// </summary>
        /// <param name="project"></param>
        /// <param name="definitions"></param>
        /// <param name="env"></param>
        /// <param name="cartoTranslator"></param>
        /// <returns></returns>
        private static Map CreateMap(CartoProject project, List <CartoDefinition> definitions, Env env, ICartoTranslator cartoTranslator)
        {
            Map map = new Map(project.Name);

            map.Size         = new SizeF(700, 500);
            map.MinimumScale = ConvertUtility.ToScaleDenominator(project.MinZoom);
            map.MaximumScale = ConvertUtility.ToScaleDenominator(project.MaxZoom);

            // if (project.Bounds != null)
            //   map.WGS84Bounds = project.Bounds[0] + "," + project.Bounds[1] + "," + project.Bounds[2] + "," + project.Bounds[3];
            map.CRS = cartoTranslator.ToCoordinateSystem(string.IsNullOrEmpty(project.Srs) ? project.SrsName : project.Srs, !string.IsNullOrEmpty(project.SrsName));

            SetMapProperties(map, GetProperties(definitions, env, "Map"), cartoTranslator);
            SetFontSets(map, definitions, env, cartoTranslator);

            if (project.Center != null)
            {
                if (map.CoordinateSystem == null)
                {
                    CoordinateSystemFactory csFactory = new CoordinateSystemFactory();
                    map.CoordinateSystem = (CoordinateSystem)csFactory.CreateSphericalMercatorCoordinateSystem();
                }

                double cx = Convert.ToDouble(project.Center[0]);
                double cy = Convert.ToDouble(project.Center[1]);
                double cz = Convert.ToDouble(project.Center[2]);

                double scale = MapSurfer.Utilities.MapUtility.GetTileMapResolution(cz);
                GeoAPI.CoordinateSystems.Transformations.ICoordinateTransformation trans = CoordinateTransformationFactory.CreateCoordinateTransformation(GeographicCoordinateSystem.WGS84, map.CoordinateSystem);
                trans.MathTransform.Transform(ref cx, ref cy, ref cz);
                map.SetCenterAndZoom(cx, cy, scale);
            }

            return(map);
        }
        public AbstractWktCoordinateTransformation(string fromWkt, string toWkt)
        {
            this.FromWkt = fromWkt;
            this.ToWkt   = toWkt;
            this.FromCrs = CoordinateSystemWktReader.Parse(fromWkt, Encoding.ASCII) as ICoordinateSystem;
            this.ToCrs   = CoordinateSystemWktReader.Parse(toWkt, Encoding.ASCII) as ICoordinateSystem;
            var factory = new ProjNet.CoordinateSystems.Transformations.CoordinateTransformationFactory();

            this.InternalCoordinateTransformation = factory.CreateFromCoordinateSystems(this.FromCrs, this.ToCrs);
        }
Esempio n. 3
0
        private void Initialize()
        {
            GisSharpBlog.NetTopologySuite.Geometries.PrecisionModel precisionModel =
                new GisSharpBlog.NetTopologySuite.Geometries.PrecisionModel(GeoAPI.Geometries.PrecisionModels.Floating);

            SharpMap.CoordinateSystems.CoordinateSystem wgs84 = SharpMap.CoordinateSystems.GeographicCoordinateSystem.WGS84;

            GeoAPI.CoordinateSystems.ICoordinateSystemFactory cFac = new SharpMap.CoordinateSystems.CoordinateSystemFactory();
            //Create geographic coordinate system based on the WGS84 datum
            GeoAPI.CoordinateSystems.IEllipsoid ellipsoid = cFac.CreateFlattenedSphere("WGS 84",
                                                                                       6378137, 298.257223563, SharpMap.CoordinateSystems.LinearUnit.Metre);
            GeoAPI.CoordinateSystems.IHorizontalDatum datum = cFac.CreateHorizontalDatum("WGS_1984",
                                                                                         GeoAPI.CoordinateSystems.DatumType.HD_Geocentric, ellipsoid, null);
            GeoAPI.CoordinateSystems.IGeographicCoordinateSystem gcsWGS84 = cFac.CreateGeographicCoordinateSystem("WGS 84",
                                                                                                                  SharpMap.CoordinateSystems.AngularUnit.Degrees, datum, SharpMap.CoordinateSystems.PrimeMeridian.Greenwich,
                                                                                                                  new GeoAPI.CoordinateSystems.AxisInfo("Lon", GeoAPI.CoordinateSystems.AxisOrientationEnum.East),
                                                                                                                  new GeoAPI.CoordinateSystems.AxisInfo("Lat", GeoAPI.CoordinateSystems.AxisOrientationEnum.North));

            List <GeoAPI.CoordinateSystems.ProjectionParameter> parameters =
                new List <GeoAPI.CoordinateSystems.ProjectionParameter>();

            parameters.Add(new GeoAPI.CoordinateSystems.ProjectionParameter("latitude_of_origin", 0));
            parameters.Add(new GeoAPI.CoordinateSystems.ProjectionParameter("central_meridian", 117));
            parameters.Add(new GeoAPI.CoordinateSystems.ProjectionParameter("scale_factor", 0.9996));
            parameters.Add(new GeoAPI.CoordinateSystems.ProjectionParameter("false_easting", 500000));
            parameters.Add(new GeoAPI.CoordinateSystems.ProjectionParameter("false_northing", 10000000));
            GeoAPI.CoordinateSystems.IProjection projection = cFac.CreateProjection("Transverse Mercator", "Transverse Mercator", parameters);

            GeoAPI.CoordinateSystems.IProjectedCoordinateSystem utmWGS84 = cFac.CreateProjectedCoordinateSystem("WGS84 UTM Zone 50S",
                                                                                                                gcsWGS84, projection, SharpMap.CoordinateSystems.LinearUnit.Metre,
                                                                                                                new GeoAPI.CoordinateSystems.AxisInfo("East", GeoAPI.CoordinateSystems.AxisOrientationEnum.East),
                                                                                                                new GeoAPI.CoordinateSystems.AxisInfo("North", GeoAPI.CoordinateSystems.AxisOrientationEnum.North));

            int SRID_utm50 = Convert.ToInt32(utmWGS84.AuthorityCode);    //UTM50 SRID

            SharpMap.CoordinateSystems.Transformations.CoordinateTransformationFactory ctFact =
                new SharpMap.CoordinateSystems.Transformations.CoordinateTransformationFactory();

            _Transform    = ctFact.CreateFromCoordinateSystems(utmWGS84, wgs84);
            _UTM50Factory = new GisSharpBlog.NetTopologySuite.Geometries.GeometryFactory(precisionModel, SRID_utm50);
        }