经纬度和平面坐标相互转换


/// <summary>
/// 将经纬度点转换为平面坐标。
/// </summary>
/// <param name="map"></param>
/// <param name="x"></param>
/// <param name="y"></param>
/// <returns></returns>
public static IPoint GetProject(IMap map, double x, double y)
{
try
{
IMap pMap = map;
IPoint pt = new PointClass();
ISpatialReferenceFactory pfactory = new SpatialReferenceEnvironmentClass();
ISpatialReference flatref = pMap.SpatialReference;
ISpatialReference earthref = pfactory.CreateGeographicCoordinateSystem((int)esriSRGeoCSType.esriSRGeoCS_Beijing1954);
pt.PutCoords(x, y);
IGeometry geo = (IGeometry)pt;
geo.SpatialReference = earthref;
geo.Project(flatref);
return pt;
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
}
/// <summary>
/// 将经纬度点转换为平面坐标点。
/// </summary>
/// <param name="map"></param>
/// <param name="point"></param>
/// <returns></returns>
public static IPoint GetProject(IMap map, IPoint point)
{
double x = point.X;
double y = point.Y;
try
{
IMap pMap = map;
IPoint pt = new PointClass();
ISpatialReferenceFactory pfactory = new SpatialReferenceEnvironmentClass();
ISpatialReference flatref = pMap.SpatialReference;
ISpatialReference earthref = pfactory.CreateGeographicCoordinateSystem((int)esriSRGeoCSType.esriSRGeoCS_Beijing1954);
pt.PutCoords(x, y);
IGeometry geo = (IGeometry)pt;
geo.SpatialReference = earthref;
geo.Project(flatref);
return pt;
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
}

/// <summary>
/// 将平面坐标转换为经纬度。
/// </summary>
/// <param name="map"></param>
/// <param name="x"></param>
/// <param name="y"></param>
/// <returns></returns>
public static IPoint GetGeo(IMap map, double x, double y)
{
try
{
IMap pMap = map;
IPoint pt = new PointClass();
ISpatialReferenceFactory pfactory = new SpatialReferenceEnvironmentClass();
ISpatialReference flatref = pMap.SpatialReference;
ISpatialReference earthref = pfactory.CreateGeographicCoordinateSystem((int)esriSRGeoCSType.esriSRGeoCS_Beijing1954);
pt.PutCoords(x, y);
IGeometry geo = (IGeometry)pt;
geo.SpatialReference = flatref;
geo.Project(earthref);
double xx = pt.X;
return pt;
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
}
/// <summary>
/// 将平面坐标点转换为经纬度点。
/// </summary>
/// <param name="map"></param>
/// <param name="point"></param>
/// <returns></returns>
public static IPoint GetGeo(IMap map, IPoint point)
{
double x = point.X;
double y = point.Y;
try
{
IMap pMap = map;
IPoint pt = new PointClass();
ISpatialReferenceFactory pfactory = new SpatialReferenceEnvironmentClass();
ISpatialReference flatref = pMap.SpatialReference;
ISpatialReference earthref = pfactory.CreateGeographicCoordinateSystem((int)esriSRGeoCSType.esriSRGeoCS_Beijing1954);
pt.PutCoords(x, y);
IGeometry geo = (IGeometry)pt;
geo.SpatialReference = flatref;
geo.Project(earthref);
double xx = pt.X;
return pt;
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
}


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM