/// <summary> /// 获取投影坐标系的描述信息 /// Get the description information of the projected coordinate system /// </summary> private String GetEarthPrjStr(PrjCoordSys crtPrj) { StringBuilder prjStrBuilder = new StringBuilder(); try { PrjParameter crtPrjParm = crtPrj.PrjParameter; prjStrBuilder.AppendLine(m_type + crtPrj.Name); prjStrBuilder.AppendLine(m_name + crtPrj.Projection.Name); prjStrBuilder.AppendLine(m_longitude + crtPrjParm.CentralMeridian.ToString("0.000000")); prjStrBuilder.AppendLine(m_latitude + crtPrjParm.CentralParallel.ToString()); prjStrBuilder.AppendLine(m_firparallel + crtPrjParm.StandardParallel1.ToString()); prjStrBuilder.AppendLine(m_secparallel + crtPrjParm.StandardParallel2.ToString()); prjStrBuilder.AppendLine(m_offsetX + crtPrjParm.FalseEasting.ToString(".0000")); prjStrBuilder.AppendLine(m_offsetY + crtPrjParm.FalseNorthing.ToString(".0000")); prjStrBuilder.AppendLine(m_scalefactor + crtPrjParm.ScaleFactor.ToString()); prjStrBuilder.AppendLine(m_azimuth + crtPrjParm.Azimuth.ToString(".0000")); prjStrBuilder.AppendLine(m_firlongitude + crtPrjParm.FirstPointLongitude.ToString()); prjStrBuilder.AppendLine(m_seclongitude + crtPrjParm.SecondPointLongitude.ToString()); prjStrBuilder.AppendLine(m_geocoordsys + crtPrj.GeoCoordSys.Name); prjStrBuilder.AppendLine(m_geodatum + crtPrj.GeoCoordSys.GeoDatum.Name); prjStrBuilder.AppendLine(m_datumspheroid + crtPrj.GeoCoordSys.GeoDatum.GeoSpheroid.Name); prjStrBuilder.AppendLine(m_majorradius + crtPrj.GeoCoordSys.GeoDatum.GeoSpheroid.Axis.ToString(".00")); prjStrBuilder.AppendLine(m_flattening + crtPrj.GeoCoordSys.GeoDatum.GeoSpheroid.Flatten.ToString()); prjStrBuilder.AppendLine(m_centralmeridian + crtPrj.GeoCoordSys.GeoPrimeMeridian.LongitudeValue.ToString("0.000000")); } catch (Exception ex) { Trace.WriteLine(ex.Message); } return(prjStrBuilder.ToString()); }
/// <summary> /// 拷贝构造函数。 /// </summary> /// <param name="prjParameter">地图投影参数对象。</param> /// <exception cref="ArgumentNullException">地图投影参数对象为 null 时抛出异常。</exception> public PrjParameter(PrjParameter prjParameter) { if (prjParameter == null) throw new ArgumentNullException(); this.Azimuth = prjParameter.Azimuth; this.CentralMeridian = prjParameter.CentralMeridian; this.CentralParallel = prjParameter.CentralParallel; this.FalseEasting = prjParameter.FalseEasting; this.FalseNorthing = prjParameter.FalseNorthing; this.FirstPointLongitude = prjParameter.FirstPointLongitude; this.FirstStandardParallel = prjParameter.FirstStandardParallel; this.ScaleFactor = prjParameter.ScaleFactor; this.SecondPointLongitude = prjParameter.SecondPointLongitude; this.SecondStandardParallel = prjParameter.SecondStandardParallel; }
// 按照不同的投影类型,初始化投影坐标系 // Initialize the projection coordinates by the different projection type. private PrjCoordSys GetTargetPrjCoordSys(int type) { PrjCoordSys targetPrjCoordSys = null; PrjParameter parameter = null; Projection projection = null; switch (type) { case 1: { targetPrjCoordSys = new PrjCoordSys(PrjCoordSysType.UserDefined); projection = new Projection(ProjectionType.GaussKruger); targetPrjCoordSys.Projection = projection; parameter = new PrjParameter(); parameter.CentralMeridian = 110; parameter.StandardParallel1 = 20; parameter.StandardParallel2 = 40; targetPrjCoordSys.PrjParameter = parameter; } break; case 2: { targetPrjCoordSys = new PrjCoordSys(PrjCoordSysType.UserDefined); projection = new Projection(ProjectionType.TransverseMercator); targetPrjCoordSys.Projection = projection; parameter = new PrjParameter(); parameter.CentralMeridian = 110; parameter.StandardParallel1 = 0; targetPrjCoordSys.PrjParameter = parameter; } break; case 3: { targetPrjCoordSys = new PrjCoordSys(PrjCoordSysType.UserDefined); projection = new Projection(ProjectionType.LambertConformalConic); targetPrjCoordSys.Projection = projection; parameter = new PrjParameter(); parameter.CentralMeridian = 110; parameter.StandardParallel1 = 30; targetPrjCoordSys.PrjParameter = parameter; } break; default: break; } return(targetPrjCoordSys); }