ArcGIS 地理坐标与投影坐标转换 [转]

转载地址:http://blog.163.com/lai_xiao_hui/blog/static/123037324201151443221942/

代码是将WGS84地理坐标转换为WGS84UTM投影坐标,如果要转换为西安80或北京54坐标,则参数是:

北京54坐标:

地理坐标枚举值为:esriSRGeoCSType.esriSRGeoCS_Beijing1954

投影坐标枚举值为:esriSRProjCSType.esriSRProjCS_Beijing1954GK_13……

西安80坐标:

地理坐标枚举值为:esriSRGeoCS3Type.esriSRGeoCS_Xian1980

投影坐标枚举值为:esriSRProjCS4Type.esriSRProjCS_Xian1980_3_Degree_GK_CM_102E……

public class WGS84UTM
    {
        /// <summary>
        /// 从地理坐标转换到投影坐标
        /// </summary>
        /// <param name="longitude">经度</param>
        /// <param name="latitude">纬度,南半球为负数</param>
        /// <param name="x">X</param>
        /// <param name="y">Y</param>
        /// <param name="zone">带区(1-60,从-180到+180,6度带)</param>
        public static void GeoToPrj(double longitude, double latitude, out double x, out double y, out int zone)
        {
            ISpatialReferenceFactory pSpatialReferenceFactory = new SpatialReferenceEnvironmentClass();
            IGeographicCoordinateSystem pGeoCoordSys = pSpatialReferenceFactory.CreateGeographicCoordinateSystem((int)esriSRGeoCSType.esriSRGeoCS_WGS1984);
            int startprjnum = 32601;
            if (latitude < 0) startprjnum = 32701;
            zone = (int)Math.Round(((longitude + 3) / 6)) + 30;
            int prjnum = startprjnum + zone - 1;
            IProjectedCoordinateSystem pPrjCoordSys = pSpatialReferenceFactory.CreateProjectedCoordinateSystem(prjnum);

IPoint pt = new PointClass();
            pt.PutCoords(longitude, latitude);
            IGeometry geo = (IGeometry)pt;
            geo.SpatialReference = pGeoCoordSys;
            geo.Project(pPrjCoordSys);
            x = pt.X;
            y = pt.Y;
            if (latitude < 0)
                y = 0 - y;
        }
        /// <summary>
        /// 从投影坐标转换到地理坐标
        /// </summary>
        /// <param name="x">X</param>
        /// <param name="y">Y,南半球为负数</param>
        /// <param name="zone">带区(1-60,从-180到+180,6度带)</param>
        /// <param name="longitude">经度</param>
        /// <param name="latitude">纬度</param>
        public static void PrjToGeo(double x, double y, int zone, out double longitude, out double latitude)
        {
            ISpatialReferenceFactory pSpatialReferenceFactory = new SpatialReferenceEnvironmentClass();
            IGeographicCoordinateSystem pGeoCoordSys = pSpatialReferenceFactory.CreateGeographicCoordinateSystem((int)esriSRGeoCSType.esriSRGeoCS_WGS1984);
            int startprjnum = 32601;
            bool South = false;
            if(y < 0) 
            {
                South = true;
                y = 0 - y;
            }
            if (South) startprjnum = 32701;
            int prjnum = startprjnum + zone - 1;
            IProjectedCoordinateSystem pPrjCoordSys = pSpatialReferenceFactory.CreateProjectedCoordinateSystem(prjnum);

IPoint pt = new PointClass();
            pt.PutCoords(x, y);
            IGeometry geo = pt as IGeometry;
            geo.SpatialReference = pPrjCoordSys;
            geo.Project(pGeoCoordSys);
            longitude = pt.X;
            latitude = pt.Y;
            if (South) latitude = 0 - latitude;

}
    }

时间: 2024-10-08 11:29:00

ArcGIS 地理坐标与投影坐标转换 [转]的相关文章

(转)ARCGIS中坐标转换及地理坐标、投影坐标的定义

原文地址:http://blog.sina.com.cn/s/blog_663d9a1f01017cyz.html 1.动态投影(ArcMap) 所谓动态投影指,ArcMap中的Data 的空间参考或是说坐标系统是默认为第一加载到当前工作区的那个文件的坐标系统,后加入的数据,如果和当前工作区坐标系统不相同,则ArcMap会自动做投影变换,把后加入的数据投影变换到当前坐标系统下显示!但此时数据文件所存储的数据并没有改变,只是显示形态上的变化!因此叫动态投影!表现这一点最明显的例子就是,在Expor

ArcGIS地理坐标系与投影坐标系

地理坐标:为球面坐标. 参考平面地是 椭球面,坐标单位:经纬度 大地坐标:为平面坐标.参考平面地是 水平面,坐标单位:米.千米等 地理坐标转换到大地坐标的过程可理解为投影.(投影:将不规则的地球曲面转换为平面) 在ArcGIS中预定义了两套坐标系:地理坐标系(Geographic coordinate system)投影坐标系(Projected coordinate system) 1.首先理解地理坐标系(Geographic coordinate system),Geographic coo

ArcGis地理坐标系转投影坐标系的问题的思考与处理

作者又不知道标题该咋写了,凑合看吧. 国庆前帮人处理了这样一个问题:Shapefile数据,既有PCS信息,也有GCS信息,加载到ArcMap后,ArcMap呈懵逼状态,缩放功能完蛋.求助者希望对数据进行投影,由CGCS2000的GCS坐标系投影到CGCS2000_3_Degree_GK_CM_111E的PCS坐标系,尝试使用ArcToolbox的工具进行投影失败.相关背景知识:1.ArcGis中的GCS.PCS.VCS坐标系(地理.投影.垂直)好些人举例剥桔子,其实俺认为橙子或者柚子更靠谱,皮

ArcGIS 对图片投影 校准矢量化

1对图片投影 把影像打开先,工具箱-Data Management Tools-projections and transformations-define Projection 选择投影的时候 用 SELECT -projected coordinate systems - gauss kruger- xian1980或者一般设置为beijing54(UTM——WGS1984——WGS1984 UTM Zone 48N prj) - 最后根据你的影像选择就是了,比如你的影像是38度带的 3度分

[原][GIS]ARCGIS投影坐标系转换

ARCGIS投影坐标转换步骤: 1.在ARCGIS中加入需要转换投影坐标的数据 2.打开“工具组”中的 “数据管理工具组”(Data Management Tools) 3.打开“数据管理工具组”中的“投影变换工具组” 4.使用“投影变化工具组”下的“创建自定义地理(坐标)变换”工具 5.这个工具会默认读取“输入地理坐标系”,在下面“输出地理坐标系”中选择WGS_1984_Web_Mercator_Auxiliary_Sphere 6.点击“确定”输出WGS1984的投影坐标系数据 原文地址:h

使用ArcGIS实现WGS84经纬度坐标到北京54高斯投影坐标的转换

[摘 要] 本文针对从事测绘工作者普遍遇到的坐标转换问题,简要介绍ArcGIS实现WGS84经纬度坐标到北京54高斯投影坐标转换原理和步骤. [关键词] ArcGIS 坐标转换 投影变换 1 坐标转换简介 坐标系统之间的坐标转换既包括不同的参心坐标之间的转换,或者不同的地心坐标系之间的转换,也包括参心坐标系与地心坐标系之间的转换以及相同坐标系的 直角坐标与大地坐标之间的坐标转换,还有大地坐标与高斯平面坐标之间的转换.在两个空间角直坐标系中,假设其分别为O--XYZ和O--XYZ,如果两个 坐标系

OSGEARTH三维地形开源项目

第一章   OSGEarth介绍 第二章   OSGEarth编译环境配置 OSGEarth的编译环境配置随着版本的不同.运行平台的不同,也有很大的差异.本章主要以Windows XP SP3(x86)为平台,Visual Studio 2010 为编译环境来介绍OSGEarth2.0的变异环境配置. 第一节  OSGEarth V2.0相关资源 OSGEarth的相关资源可以通过其官方网站(http://www.osgearth.org/wiki/Downloads)获取(所有资源文件均在关盘

ArcEngine 坐标系变换

arcgis中对于坐标的管理有三个: 1.数据文件本身的坐标系,体现在数据坐标x,y上. 2.空间参考文件,一般是和数据配套存在的.详细定义数据的地理坐标.投影坐标等,主要是在arcgis相关软件加载数据的时候使用. 3.arcgis等软件显示时的坐标,是在加载数据的时候动态投影变换得到的.在软件中的一些操作都是以此为基础的.(对于toolbox中的工具是否使用此坐标,现在我还不知道) 对于坐标的变换: IGeometry接口提供了SpatialReference属性和Project方法来直接变

DirectX11笔记4:光照

按照书中的光照模型,光的类型分为3种:漫反射光,环境光,镜面光. 光源类型也是三种:平行光,点光,聚光灯. 其它需要的数据:材质,法线方向(光照角度). 现在,先以平行光源为例,因为它最简单,不需要去计算距离,角度对于光线的影响: 先定义光源: //这里所有的定义只与光的颜色有关,就是定义光的颜色 DirLight.Ambient = XMFLOAT4(0.2f, 0.2f, 0.2f, 1.0f);//环境光 DirLight.Diffuse = XMFLOAT4(0.5f, 0.5f, 0.