arcengine坐标转换[转]
现在好多人在使用ArcObject的时候都可能需要作经纬度和平面坐标的相互转换。由于经纬度是球面坐标,平面坐标是X-Y的笛卡尔坐标系统,所以这是一个看起来比较难的问题。
好多人一上来就搬出地图学、地图投影学或者测绘学中的投影公式(如高斯投影 或 墨卡托投影),又是基准坐标又是角度的搞的人头都大了。
实际上要想实现这个功能非常easy。 ARC Engine中的IPoint就可以进行投影和反投影运算了。
投影过程(C#):
/// flatref 投影的坐标系统,这里的54013是世界投影 ,世界投影所有经纬度都可以转换为平面坐标,但是由于投影面积大失真也会比较大(相当于把整个地球劈成一片片的,然后拉伸最后贴到平面上,失真当然大了)。当然也可以选择精度更高的平面如:esriSRProjCS_Beijing1954GK_23N 对应数值21483 仅仅把北京附近的地球平面拉伸铺在平面上,由于投影面积变小,所以投影经度提高。但是由于面积变小,所以有些经度纬度不能转换,比如所美国的精度纬度用北京投影就投不了。
flatref = pfactory.CreateProjectedCoordinateSystem(54013);
//没什么说的,标准大地经纬度,可以将X-Y逆投影为经度和纬度
earthref = pfactory.CreateGeographicCoordinateSystem((int)esriSRGeoCSType.esriSRGeoCS_NAD1983);
/// 将经纬度点转换为平面坐标。
private IPoint GetProject(double x, double y)
{
IPoint pt = new PointClass();
pt.PutCoords(x, y);
IGeometry geo = (IGeometry)pt;
geo.SpatialReference = earthref;
geo.Project(flatref);
return pt;
}
/// 将平面坐标转换为经纬度。
private IPoint GetGeo(double x, double y)
{
IPoint pt = new PointClass();
pt.PutCoords(x, y);
IGeometry geo = (IGeometry)pt;
geo.SpatialReference = flatref;
geo.Project(earthref);
double xx = pt.X;
return pt;
}
实际上IPoint的投影和任何地图都没什么大关系,完全可以不用地图,直接调用IPoint进行投影的转换
转载于:https://www.cnblogs.com/xiexiaokui/archive/2008/01/03/1024651.html
arcengine坐标转换[转]相关推荐
- ArcEngine中多边形内外环的处理(转)
ArcEngine中多边形内外环的处理 原创 2012年09月06日 22:49:11 标签: object / null / 数据库 3462 Polylgon对象是由一个或多个Ring对象的有序集 ...
- java arcengine_在Java程序中调用ArcEngine
ArcEngine一般在C#中用的比较多,不过esri也是为Java提供了AE的类库的,不过文档确实没做的C#那么好.下面我记录一下如何在项目中配置使用AE的环境. 第一步:将arcobject.ja ...
- ArcEngine中的缩放地图
在ArcEngine地图操作中,缩放地图的功能经常用到,这里做一个小结. 缩放地图一般可分为以下几种情况: 1.缩放地图:与放大地图相对,一般是手动绘制区域或固定比例缩放,可调用命令或Expand函数 ...
- ArcEngine的ToolbarControl解析
转自Love Lyre原文 ArcEngine的ToolbarControl解析 ToolbarControlClass有三个主要的接口: IToolbarControl, IToolbarContr ...
- arcgis 投影变换与坐标转换研究
arcgis 投影变换与坐标转换研究 1 ArcGIS中的投影方法 投影的方法可以使带某种坐标信息数据源进行向另一坐标系统做转换,并对源数据中的X和Y值进行修改.我们生产实践中一个典型的例子是利用该方 ...
- ArcEngine开发中“错误类型****未定义构造函数”
问题 在ArcEngine开发的时候,在编译时,发现出现这样的错误,出错的地方在实例化一个对象的时候. 比如: ISpatialReference a = new UnknownCoordinateS ...
- 在ArcEngine下实现图层属性过滤的两种方法
转自chanyinhelv原文 在ArcEngine下实现图层属性过滤的两种方法 有时候,我们要对图层上的地物进行有选择性的显示,以此来满足实际的功能要求. 按下面介绍的方法可轻松实现图层属性过滤显示 ...
- 火星坐标、百度坐标、WGS84坐标转换代码(JS、python版)
火星坐标.百度坐标.WGS84坐标转换代码(JS.python版) 一.JS版本源码 github:https://github.com/wandergis/coordTransform /*** C ...
- 墨卡托坐标转换成经纬度
为什么80%的码农都做不了架构师?>>> /*** 墨卡托坐标转换成经纬度* @param {Object} mx* @param {Object} my*/ function ...
最新文章
- 大型网站架构演变和知识体系
- ALV标准过滤功能失效
- Redis-学习笔记02【Redis命令操作】
- php 微信实时更新,微信小程序修改data使页面数据实时更新的代码示例
- 计算机无法进系统咋办,详解电脑无法进入系统怎么办
- win10蓝屏提示重新启动_Win10系统开机提示Winload.efi丢失的蓝屏问题怎么解决?
- 如何用计算机设置闹铃,在win10系统下怎样设置电脑闹钟铃声?
- java Apache poi 操作word生成word目录(根据word模板生成word文件)
- php获取steam装备信息,api – 获取某人的Steam库存
- mysql jail_FreeNAS:如何在Jail里面安装软件?
- php获取两个时间戳之间相隔多少天多少小时多少分多少秒
- cBridge 2.0: 基于Celer状态守卫者网络的通用跨链平台
- 计算机网络重要知识点总结(期末复习笔记)
- MACD、SAR、KDJ、DBCD
- 【Java 8系列】Java开发者的判空利器 -- Optional
- vue使用luckySheet前端excel的在线表格,导入显示以及导出excel文件
- #自学C语言# C语言小白在线求教大神点播orz
- 阿里超大数据中心“异地双活”实践
- 字体爬虫解密抓取学习
- Ubuntu 18下C/C++ IDE之CodeLite安装