转载地址: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;

}
    }

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

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

    原文地址:http://blog.sina.com.cn/s/blog_663d9a1f01017cyz.html 1.动态投影(ArcMap) 所谓动态投影指,ArcMap中的Data 的空间参考或 ...

  2. 空间参考系统与WKT解析

    空间参考系统与WKT解析 1.为什么要空间参考系统? 空间参考系统,也称为坐标系统.在GIS中为地理数据定位的基准,假设给你一个坐标(442281.875,4422651.589).如果不给你空间参考 ...

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

    ARCGIS投影坐标转换步骤: 1.在ARCGIS中加入需要转换投影坐标的数据 2.打开“工具组”中的 “数据管理工具组”(Data Management Tools) 3.打开“数据管理工具组”中的 ...

  4. OSGEARTH三维地形开源项目

    第一章   OSGEarth介绍 第二章   OSGEarth编译环境配置 OSGEarth的编译环境配置随着版本的不同.运行平台的不同,也有很大的差异.本章主要以Windows XP SP3(x86 ...

  5. ArcGIS 开发的一些知识学习点

    由于文章太多,不便转载,现主要列举如下: ArcGIS Runtime支持的GP工具列表 ArcGIS Runtime支持的GP工具列表 目录(?)[-] Standard版本Standard 空间分 ...

  6. 聊聊GIS中的坐标系|再版 详细定义、计算及高程系统

    本篇讲坐标系统的详细定义,有关坐标系的变换公式,以及简单说说高程坐标系统. 本文约6000字,阅读时间建议45分钟.硬内容比较多,如有疏漏错误请指出,建议有兴趣的朋友进一步阅读. 作者:博客园/B站/ ...

  7. gdal库的三个使用心得

    作者:朱金灿 来源:http://blog.csdn.net/clever101 最近使用gdal库比较多,就谈谈gdal库的一些使用心得. 第一个是GDALOpen的访问权限参数会影响图像的创建金字 ...

  8. osgEarth学习笔记(转载)

    osgEarth学习笔记1.        通过earth文件创建图层时,可以指定多个影像数据源和多个高程数据源,数据源的顺序决定渲染顺序,在earth文件中处于最前的在渲染时处于最底层渲染:所以如果 ...

  9. ArcGIS 网络分析[1.1] 创建用于网络分析用的线类型shp文件[这个太基础了吧!]

    具体的准备,在上一篇就说过了,不再赘述. 阅读本篇前,需要的预备知识是:ArcGIS创建各种矢量数据的方法,了解地理坐标与投影坐标 本篇只创建单一的线数据,至于点数据,以后进行复杂的网络分析时再添加进 ...

随机推荐

  1. 移动端web开发

    meta基础知识点: 页面自动调整到设备宽度,并禁止用户缩放. <meta name="viewport" content="width=device-width, ...

  2. Linux笔记之——Linux关机命令详解(转)

    原文连接:http://www.jb51.net/os/RedHat/1334.html 在linux下一些常用的关机/重启命令有shutdown.halt.reboot.及init,它们都可以达到重 ...

  3. 用CSS3动画,让页面动起来

    以前就听说过有个库,叫animate.css,但是自己并没有在实际项目中使用过,这次正好要做个招聘页面,得以利用一下这个库,在经常会卡顿的UC浏览器中也能流畅执行. 扫描下面的二维码,可以看到在线的d ...

  4. SQL Server利用递归把所有【子部门员工】汇总到【一级根节点部门】

    前言 说起这个需求,有点反常规,左边是组织机构树,右边是组织机构对应的员工列表.点击左侧组织机构时传一个组织机构ID,然后查询该组织机构以及其所属的一级节点,如果有部门直属单击节点组织机构,则挂出来员 ...

  5. 给 C# 开发者的代码审查清单

    这是为C#开发者准备的通用性代码审查清单,可以当做开发过程中的参考.这是为了确保在编码过程中,大部分通用编码指导原则都能注意到.对于新手和缺乏经验(0到3年工作经验)的开发者,参考这份清单编码会很帮助 ...

  6. 五一干货来袭!开源Moon.Orm标准版发布!

    标准版源代码下载: 链接:http://pan.baidu.com/s/1i3xj0f7 因五一早过(现在中旬了),解压码获取请到: http://www.cnblogs.com/humble/p/3 ...

  7. 内置对象session ,cookic,Application,ViewState

    一.内置对象 (一)Response - 响应请求对象1.定义:Response对象用于动态响应客户端请示,控制发送给用户的信息,并将动态生成响应.Response对象只提供了一个数据集合cookie ...

  8. jsp原理

    在eclipse里jsp编译后的java和class文件的位置 eclipse版本不一样,位置也不一样第一种:1.java类编译后产生的.class文件在D:\workspace\test\WEB-I ...

  9. C#遍历文件夹下所有文件

    FolderForm.cs的代码如下: using System; using System.Collections.Generic; using System.Diagnostics; using ...

  10. C#操作Mongodb

    因为MongoDb 跨平台,可以免费使用,读写效率高,集群搭建简单,可以水平扩展等各种因素. 我决定研究一下Mongodb,在查看了相关文档后发现它对C#的支持不错,而且还有现成的C#的驱动, 新版的 ...