public GeoPoint(SpatialRectCoordinate XYZ, double a, double f) { try { //读取空间直角坐标值,如果未赋值则产生异常 double X = XYZ.X; double Y = XYZ.Y; double Z = XYZ.Z; ellipsoid = new ReferenceEllipsoid(a, f); spatialCoord = XYZ; double B, L, H; Geodetic.XYZ_BLH(X, Y, Z, out B, out L, out H, ellipsoid.a, ellipsoid.f); geodeticCoord = new GeodeticCoordinate(B, L, H); double x, y; Geodetic.BL_xy(geodeticCoord.B, geodeticCoord.L, out x, out y, ellipsoid.a, ellipsoid.f); gaussCoord = new GaussCoordinate(x, y); if (!dHlIsNull) { gaussCoord.h = H - dH; } dimension = 3; } catch { } }
public GeoPoint(GeodeticCoordinate BLH, double a, double f) { try { //获取大地坐标,如果赋的值是空对象则会产生异常 double B = BLH.B; double L = BLH.L; geodeticCoord = BLH; ellipsoid = new ReferenceEllipsoid(a, f); double x, y; Geodetic.BL_xy(B, L, out x, out y, ellipsoid.a, ellipsoid.f); gaussCoord = new GaussCoordinate(x, y); dimension = 2; try { //获取大地高,如果没有大地高,则产生异常,只取二维坐标 double H = BLH.H; double X, Y, Z; Geodetic.BLH_XYZ(B, L, H, out X, out Y, out Z, ellipsoid.a, ellipsoid.f); spatialCoord = new SpatialRectCoordinate(X, Y, Z); dimension = 3; } catch { } } catch { } }
public GeoPoint(double B, double L, double a, double f) { ellipsoid = new ReferenceEllipsoid(a, f); geodeticCoord = new GeodeticCoordinate(B, L); double x, y; Geodetic.BL_xy(B, L, out x, out y, ellipsoid.a, ellipsoid.f); gaussCoord = new GaussCoordinate(x, y); dimension = 2; }