闻心阁

一蓑烟雨看苍生,半壶浊酒笑红尘

正轴等角割圆锥投影源程序的设计(MFC)

2011-04-15 约 1 分钟读完 搬砖秘籍

又进行了一次地图学实习,这次的实习题目是“正轴等角割圆锥投影源程序的设计”说句实话这个题目的前几问都是初高中的东西,只是让你用程序来实习便是(所以编程仅仅是个工具!)。不过最后一问关于坐标的转换问题,还是很有挑战性的,感觉不错,所以今天就共享一下,也晒晒我的一点体会,高手请直接忽视,菜鸟可以参考一下,或许能够对你有所启发。

题目描述:

圆锥投影,特别是正轴等角割圆锥投影,在我国以及一些中等纬度的国家应用得非常广泛。例如,编制中华人民共和国地图(南海诸岛作插图)以及各省(区)地图都是采用这种投影。新中国成立之前,我国地形图也是采用该投影作为数学基础的。可见,等角割圆锥投影可适用编制我国不同比例尺、不同类型的地图。

利用的公式:

(本人技术有限,公式无法显示,就用图片了......)
投影

制图区域:

河北省

纬度范围:北纬36° 到北纬43°

经度范围:东经112°到东经120°

制图区域中央经线:λ0=116000′

标准纬线:Ф1=37030′,Ф2=41000′

主比例尺:1:500万

经纬网密度:△Ф=△λ=10

题目要求:

1、编写正轴等角圆锥投影的源程序。在编制源程序时,采用通用程序为好,为此地球椭球的数据可采用IAG-1975椭球:a=6378140m,b=6356755m。

2、输出成果要求完整、整齐,有条件时可采用汉字化、表格化。输出成果包括:

  • U1,U2;
  • 投影常数:α
  • 积分常数:K
  • 长度比为最小的纬线纬度:φ0
  • 纬度:φ
  • 经度:λ
  • 直角坐标:X,Y
3、绘制该地图的经纬线网格。

下面是我的解决方案

(***这里是关键***)

STEP 1 用函数封装

这里所说的就是利用函数的思想来求解题目二中要求的各个参数,比如求K,我可以写一个GetK(参数1,参数2······);然后在主程序调用的时候直接传入参数即可解决,至于这个函数是怎么实现的,表问我,这是初中知识,如果不明白可以看下文的源程序!

STEP 2 MFC对话框设计

通过STEP 1是解决了算法的问题,但是我可以不喜欢一个黑乎乎的控制台界面,所以这里就设计了一个MFC界面,当然喜欢控制台的人可以跳过这步。界面如图

界面

STEP 3 绘图

绘图是个很关键的步骤,能够求出每个点的坐标并不是什么难事,但是要在界面里给用户反映出来就麻烦了(至少我这么认为),这里我对坐标原点进行了一定的迁移,画出的图更好看一些,具体实现请见源程序,效果如图效果

不足之处:

当然程序还是很不完善的,这里我列举两个:
1.窗口不能重绘

2.绘制的图片不能保存

当然这仅仅是很少的一部分不足,至于第一个原因,是我不爱动弹,最近事情比较多也就没有写,至于第二个原因,现在正在想办法解决,也欢迎高手给点指导。

需要源程序的,请点击这里,希望能够给你们参考,如果无法下载,请留下你的邮箱。希望跟大家多多交流,欢迎留言!谢谢。