ae 地理坐标与投影坐标转换 [转]
转载地址: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 地理坐标与投影坐标转换 [转]的更多相关文章
- (转)ARCGIS中坐标转换及地理坐标、投影坐标的定义
原文地址:http://blog.sina.com.cn/s/blog_663d9a1f01017cyz.html 1.动态投影(ArcMap) 所谓动态投影指,ArcMap中的Data 的空间参考或 ...
- 空间参考系统与WKT解析
空间参考系统与WKT解析 1.为什么要空间参考系统? 空间参考系统,也称为坐标系统.在GIS中为地理数据定位的基准,假设给你一个坐标(442281.875,4422651.589).如果不给你空间参考 ...
- [原][GIS]ARCGIS投影坐标系转换
ARCGIS投影坐标转换步骤: 1.在ARCGIS中加入需要转换投影坐标的数据 2.打开“工具组”中的 “数据管理工具组”(Data Management Tools) 3.打开“数据管理工具组”中的 ...
- OSGEARTH三维地形开源项目
第一章 OSGEarth介绍 第二章 OSGEarth编译环境配置 OSGEarth的编译环境配置随着版本的不同.运行平台的不同,也有很大的差异.本章主要以Windows XP SP3(x86 ...
- ArcGIS 开发的一些知识学习点
由于文章太多,不便转载,现主要列举如下: ArcGIS Runtime支持的GP工具列表 ArcGIS Runtime支持的GP工具列表 目录(?)[-] Standard版本Standard 空间分 ...
- 聊聊GIS中的坐标系|再版 详细定义、计算及高程系统
本篇讲坐标系统的详细定义,有关坐标系的变换公式,以及简单说说高程坐标系统. 本文约6000字,阅读时间建议45分钟.硬内容比较多,如有疏漏错误请指出,建议有兴趣的朋友进一步阅读. 作者:博客园/B站/ ...
- gdal库的三个使用心得
作者:朱金灿 来源:http://blog.csdn.net/clever101 最近使用gdal库比较多,就谈谈gdal库的一些使用心得. 第一个是GDALOpen的访问权限参数会影响图像的创建金字 ...
- osgEarth学习笔记(转载)
osgEarth学习笔记1. 通过earth文件创建图层时,可以指定多个影像数据源和多个高程数据源,数据源的顺序决定渲染顺序,在earth文件中处于最前的在渲染时处于最底层渲染:所以如果 ...
- ArcGIS 网络分析[1.1] 创建用于网络分析用的线类型shp文件[这个太基础了吧!]
具体的准备,在上一篇就说过了,不再赘述. 阅读本篇前,需要的预备知识是:ArcGIS创建各种矢量数据的方法,了解地理坐标与投影坐标 本篇只创建单一的线数据,至于点数据,以后进行复杂的网络分析时再添加进 ...
随机推荐
- 【Win 10应用开发】实现全屏播放的方法
有人会问,以前的MediaElement控件不是有现成的一排操作按钮吗?而且可以直接进入全屏播放.是的,我们知道,以往的Store App都是在全屏模式下运行的,只要MediaElement控件填满整 ...
- ASP.NET MVC5 网站开发实践(二) Member区域 - 添加文章
上次把架构做好了,这次做添加文章.添加文章涉及附件的上传管理及富文本编辑器的使用,早添加文章时一并实现. 要点: 富文本编辑器采用KindEditor.功能很强大,国人开发,LGPL开源,自己人的好东 ...
- 深入理解javascript中的焦点管理
× 目录 [1]焦点元素 [2]获得焦点 [3]失去焦点[4]焦点事件 前面的话 焦点作为javascript中的一个重要功能,基本上和页面交互都离不开焦点.但却少有人对焦点管理系统地做总结归纳.本文 ...
- 深入理解DOM事件类型系列第二篇——键盘事件
× 目录 [1]类型 [2]顺序 [3]按键信息[4]应用 前面的话 鼠标和键盘是电脑端主要的输入设备,上篇介绍了鼠标事件,本文将详细介绍键盘事件 类型 键盘事件用来描述键盘行为,主要有keydown ...
- YII 的源码分析(三)
前面已经看完了启动一个yii程序所要经过的流程,以及渲染一个页面是怎么完成的.今天要分析的是yii是如何处理用户请求的.也就是控制和动作部分. 还是以helloworld为例演示这一过程.我们在地址栏 ...
- 基于表的数据字典构造MySQL建表语句
表的数据字典格式如下: 如果手动写MySQL建表语句,确认麻烦,还不能保证书写一定正确. 写了个Perl脚本,可快速构造MySQL脚本语句. 脚本如下: #!/usr/bin/perl use str ...
- ios多线程-GCD基本用法
ios中多线程有三种,NSTread, NSOperation,GCD 这篇就讲讲GCD的基本用法 平时比较多使用和看到的是: dispatch_async(dispatch_get_global_q ...
- 【JUC】JDK1.8源码分析之CountDownLatch(五)
一.前言 分析完了CyclicBarrier后,下面分析CountDownLatch,CountDownLatch用于同步一个或多个任务,强制他们等待由其他任务执行的一组操作完成.CountDownL ...
- VS Code - Debugger for Chrome调试JavaScript的两种方式
VS Code - Debugger for Chrome调试JavaScript的两种方式 最近由于出差的缘故,博客写的不是很多,一直想写一篇VS Code - Debugger for Chrom ...
- Linux(Centos)快速搭建SVN
前言 项目中源码或者文档需要进行管理与版本记录,历数此类工具VSS.CVS.SVN.GIT等等,有非常多的版本控制系统.SVN现在还是很常见,把笔记总结搬上博客,SVN这个再不放以后估计只能写GIT的 ...