hello,最近yogurt给大家的更新很频繁哦~~今天要分享的内容是紧接着前面两篇的内容做的扩展~~

我们不仅要求取某地区在地球椭球体这个三维空间中的面积,还要与该地区投影到二维空间后平面多边形的面积进行对比。怎么求取二维平面多边形的面积,大家可以看看我之前写过的《求解多边形面积2S= Σ【Xi (Yi+1-Yi-1)】,(i属于1~n),公式解析及编程实现》http://www.cnblogs.com/to-sunshine/p/7642222.html。至于怎么进行兰伯特投影墨卡托投影,大家可以参考我之前写过的《.gen地图文件的投影编程实现(以墨卡托投影和兰伯特投影为例)》http://www.cnblogs.com/to-sunshine/p/6048438.html。

============================yogurt小课堂开课了===========================

下面yogurt要跟大家分享这次需要用到的知识点:

地球椭球体表面上的梯形面积:

取长度很小很小的一个长和一个宽,组成的梯形是非常小的,近似可以看作矩形。那么 S = 长 X 宽 ,如下图:

(图来自我老师的PPT)

我们知道 AB = CD ,是南北方向上的边长,假设与任意一条经线平行。由上节的知识,我们不难知道: AB = CD = M X dφ (dφ是AD所在纬线与BC所在纬线的纬度间隔,很小);

同样,由于纬度间隔非常小,可以近似看作 BC ≈ AD ,是东西方向上的边长,假设与任意一条纬线平行。由上节的知识,我们也不难知道: BC ≈ AD = r X dλ (dλ是AB所在经线与CD所在经线的经度间隔,很小),而 r = N X cosφ(φ看作AD所在纬线或者BC所在纬线的纬度,由于间隔很小,所以只要所有梯形统一用上边的或者统一都用下边的纬度即可)。因此,BC = AD = N X cosφ X dλ 。

综上,便能够得到地球椭球体上梯形的面积 dS = (M X dφ) X (N X cosφ X dλ)= M N cosφ dλ dφ ,那么 S = 

对于每一个小梯形,用前后两个点的平均纬度作为 φ2,以该区域的最低纬度作为 φ1,dφ = φ2 - φ1 ;前后两个点的经度对应 λ1、λ2,再利用积分的原理就可以计算得到椭球体上的某区域的面积啦!

=================================下课了================================

假设我们拿到的数据是某区域墨卡托投影后的二维平面上一系列的区域边界点数据,那么我接下来的步骤将分为六步:1、计算二维平面上的墨卡托投影后的平面面积 S1  -->  2、墨卡托投影反算,得到每个点在地球椭球体上对应的经纬度坐标  -->  3、计算地球椭球体上该区域的面积 S2 --> 4、把该区域进行兰伯特投影得到二维平面上又一系列的区域边界点数据  -->  5、计算二维平面上的兰伯特投影后的平面面积 S3 -->  6、对比三种面积的区别。

1、计算二维平面上的墨卡托投影后的平面面积 S1

程序如下:

2、墨卡托投影反算,得到每个点在地球椭球体上对应的经纬度坐标

先利用墨卡托投影反解公式,计算B、L,其中对于求解 L 需要用到 K ,K 的值由公式求出;对于求解 B,则需要设定一个初始值,然后进行迭代求解,直到前后两次计算出的 B 之差小于0.00000000001,则认为后一次计算的 B 的值为最终解。

程序如下:

在ArcGIS中查看墨卡托反算前后的数据,对比显示如下:

反算前                                    反算后

3、计算地球椭球体上该区域的面积 S2

因为ds足够小,所以把梯形近似看做一个矩形来计算,矩形的长为东西方向的弧长,宽为南北方向的弧长。根据弧长计算公式:弧长=半径*弧度,涉及到子午圈曲率半径M和主法截面曲率半径N的计算公式。通过查阅资料,可知:

南北方向上的弧长d=M*d;东西方向上的弧长d=N*d

对于每一个小梯形,用前后两个点的平均纬度作为 φ2,以该区域的最低纬度作为 φ1,前后两个点的经度对应 λ1、λ2,再利用积分的原理来计算得到椭球体上的该区域面积。

程序如下:

先声明和赋值程序中将会用到的基本数据长半轴a、第一偏心率e、基准纬度(江苏省最低纬度)B;并通过指向矢量文件的指针获得前后两点的纬度B1、B2和经度L1、L2。用TB来代替2-1,用AB来代替(1+2)/2:

计算小梯形的面积积分公式所需要用到的参数K、A、B、C、D,带入公式进行计算面积:

4、把该区域进行兰伯特投影得到二维平面上又一系列的区域边界点数据

这里参考《.gen地图文件的投影编程实现(以墨卡托投影和兰伯特投影为例)》http://www.cnblogs.com/to-sunshine/p/6048438.html。

5、计算二维平面上的兰伯特投影后的平面面积 S3

方法同第一步,只是带入的数据不同。

6、对比三种面积的区别

整个程序主函数如下:

运行后结果如下:

可见,进行Albers等积投影之后,矢量面的面积变化误差相比之整体面积来说较小,所以视为等积投影是成功的。

转载于:https://www.cnblogs.com/to-sunshine/p/7655432.html

椭球体上某区域面积的求算,及该区域兰伯特投影与墨卡托投影到二维平面后面积对比...相关推荐

  1. 基于数字地球对于椭球体的数学原理

    基于数字地球对于椭球体的数学原理 第一章 对于地球椭球体的数学原理 文章目录 基于数字地球对于椭球体的数学原理 前言 一.正球体与微分元 1.球坐标中各矢量 二.球体坐标系下的体积微元 1.体积微元计 ...

  2. matlab求椭圆的弧长,用MATLAB实现求椭球上任意两点的最短弧长

    基于法向矢量导向的求椭球上两点的最短弧长 问题分析 求椭球上任意两点间的最短弧长用数学来推算解析解的话十分复杂,因此考虑通过使用计算机来近似求解.问题的难点在于怎样让每一步都是处在最优的状态,以及怎样 ...

  3. GIS的基本概念二:大地水准面、旋转椭球体(椭球体)、大地基准面

    上一章粗略整理了一下坐标系的概念,基本理解如何用坐标来表示地理空间.面对现实的地球,还是有一个疑问.众所周知,我们的地球表面是一个凹凸不平的表面,对于地球测量而言,地表是一个无法用数学公式进行表达的曲 ...

  4. GIS大地水准面,大地体,旋转椭球体,参考椭球体,大地基准面

    目录 1.上图(先看完概念介绍,再看这张图地球逼近模拟图) 2.大地水准面 3.大地体(是对地球形体的一级逼近) 4.旋转椭球体(是对地球形体的二级逼近) 5.参考椭球体(对地球形体的三级逼近) 6. ...

  5. SuperMap iDesktop不同椭球体投影坐标系的转换

    作者:Neshoir SuperMap iDesktop不同椭球体投影坐标系的转换   我们都知道测绘局的历史存量矢量数据的坐标系有多种,有北京54坐标系的数据.有西安80坐标系的数据.有CGCS20 ...

  6. osgEarth的Rex引擎原理分析(三十五)osgEarth地球椭球体ellipsoid 大地基准面datum 地图投影Projection详解

    目标:(二十九)中的问题83 地球椭球体的中心为地心,形状为椭球体 大地基准面是适应某一区域的椭球体,球体中心不一定在地心 地图投影是球面和平面映射关系的方法 Horizontal Datum A d ...

  7. c++读出像素矩阵_Python传numpy矩阵调c++(求3D图像连通区域)

    Python有很多种调c++的方法,有的复杂有的简单,有时使用的时候反而不知道到底该用哪一种比较好,其实没有最好的方法,只有适合不适合自己.本文从我所遇到的问题说起,然后讲述另一种比较简单的pytho ...

  8. arcpy投影(三)——定义投影、地理变换关系自定义和投影变换Project_managemen(含基准面/椭球体转换参数使用方法,arcpro/arcmap)

    arcpy投影这一个专题从文件位置.文件含义.空间参照获取.转换关系查询.投影定义.自定义转换关系.投影变换这几个角度上系统的进行了介绍,整理出了: arcpy投影(一)--prj.gtf文件定义.路 ...

  9. 已知正方形面积求边长c语言,正方形知道面积怎么求边长.

    2019-10-09阅读(206) 长方形的周长=(长+宽)×2正方形的周长=边长×4长方形的面积=长×宽正方形的面积=边长×边长三角形的面积=底×高÷2平行四边形的面积=底×高梯形的面积=(上底+下 ...

  10. Proj.NET-地球椭球体、大地基准面及地图投影

    地球椭球体(Ellipsoid) 众所周知我们的地球表面是一个凸凹不平的表面,而对于地球测量而言,地表是一个无法用数学公式表达的曲面,这样的曲面不能作为测量和制图的基准面.假想一个扁率极小的椭圆,绕大 ...

最新文章

  1. css变成块级元素_探讨行内元素转换为块级元素_html/css_WEB-ITnose
  2. PostGresSQL简介与Windows上的安装教程
  3. 据说一般人轻易做不了技术支撑…
  4. 你们好好的学,回头教教我~
  5. Linux 管理登陆的用户/查看/剔除
  6. python——import导入模
  7. 里面不仅有强悍的zhajinhuaplayer
  8. 将自己的dcm数据制作成LUNA16数据集提供数据样式。
  9. 模糊:让你的代码远离偷窥之眼
  10. html中让图片放大的代码,HTML5图片预览 放大(示例代码)
  11. 基于vlmcsd搭建KMS服务器
  12. AMiner会议论文推荐第三十五期
  13. android wifi 移植记录
  14. 笔记本性能参数有哪些
  15. NPM problem: npm ERR! extraneous
  16. oracle查询同一天生日的,遇到和你同一天生日的人概率有多大?
  17. 2013年最忧伤的句子
  18. Nova Suspend 和 Pause
  19. 指令集创始人潘爱民博士荣获CSDN“2021年度IT领军人物”
  20. android studio 导入类快捷键,关于ide:在Android Studio中自动导入所有内容的快捷方式是什么?...

热门文章

  1. VB.Net程序设计:分页控件
  2. 看了星球大战--西斯的复仇
  3. VirtualBox安装增强功能时报错:未能加载虚拟光盘VBoxGuestAdditions.iso 到虚拟电脑
  4. Python定时爬取微博热搜+pyecharts动态图展示
  5. 电信提供的路由器无法进入配置地址或者配置后找不到自己WIFI的解决方法
  6. Chapter第六章
  7. 目前国内汉语自动分词系统的研究现状
  8. 水滴IP教你如何查询QQ好友的IP地址
  9. kido机器人没反应_QQ机器人常见故障排除方法
  10. html面试要带电脑吗,前端面试巧妙回答浏览器兼容问题