/// <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); }
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); }