private IProjectionCoordSystem GetPrjCoordSystemByProj4(Dictionary <string, string> nameValuePairs) { string coordType = nameValuePairs["proj"]; if (coordType == "latlong") { return(null); } List <NameMapItem> args = _prjStdsMapTableParser.GetPrjParameterItems(); if (args == null) { return(null); } ProjectionCoordSystem prj = new ProjectionCoordSystem(); prj.Name = _prjStdsMapTableParser.GetPrjNameItemByPrj4(coordType); List <NameValuePair> paras = new List <NameValuePair>(); foreach (NameMapItem arg in args) { if (nameValuePairs.ContainsKey(arg.Proj4Name)) { paras.Add(new NameValuePair(_prjStdsMapTableParser.GetPrjParamterItemByPrj4(arg.Proj4Name), double.Parse(nameValuePairs[arg.Proj4Name]))); } } prj.Parameters = paras.Count > 0 ? paras.ToArray() : null; return(prj); }
public object Clone() { ProjectionCoordSystem prj = new ProjectionCoordSystem(); if (_name != null) { prj._name = _name.Clone() as NameMapItem; } if (_parameters != null && _parameters.Length > 0) { prj._parameters = CloneParameters(); } if (_unit != null) { prj._unit = _unit.Clone() as AngularUnit; } return(prj); }
/* * PROJECTION["Mercator"], * PARAMETER["False_Easting",0.0], * PARAMETER["False_Northing",0.0], * PARAMETER["Central_Meridian",0.0], * PARAMETER["Standard_Parallel_1",0.0], * UNIT["Meter",1.0] */ protected override IProjectionCoordSystem ParseProjectionCoordSystem(WktItem wktItem) { if (wktItem == null)//Is Graphics Coordinate System { return(null); } string name = wktItem.Value.Split(',')[0].Replace("\"", string.Empty); NameMapItem prjName = GetPrjName(wktItem.GetWktItem("PROJECTION")); //5ms if (prjName == null) { throw new Exception("投影坐标系统\"" + name + "\"没有在系统中预先配置。"); } NameValuePair[] parameters = GetPrjParameters(wktItem.GetWktItems("PARAMETER")); AngularUnit unit = new AngularUnit(wktItem.GetWktItem("UNIT")); ProjectionCoordSystem prj = new ProjectionCoordSystem(prjName, parameters, unit); prj.NameDes = name; return(prj); }