找回密码
 注册
Simdroid-非首页
查看: 188|回复: 11

[初级应用]在地图图片上加上经纬线

[复制链接]
发表于 2011-4-5 12:39:32 | 显示全部楼层 |阅读模式 来自 浙江杭州
本帖最后由 fnems 于 2011-4-5 12:42 编辑

本帖纯属娱乐,高手请跳过  ^_^

本帖效果图如下


代码如下


原始图片:


使用说明:
先导入图像,假设数据矩阵是trail
然后运行命令 img =  trail; 把trail拷贝到名字为img的变量中(m文件是对img变量进行操作,当然你也可以改成其他变量。只是一个命名问题)
运行m文件。

实际上原理很简单。
m文件中第一步是求得坐标变换矩阵,第二步是画网格。
u坐标是经纬坐标。虽然是球坐标,但是局部线性化还是可以看成笛卡尔坐标的。x坐标是图像坐标,注意是一个伪笛卡尔坐标,因为坐标原点在左上角,横向是x轴正方形,竖直向下是y轴。但不影响坐标变换。

求坐标变换矩阵的时候,我预先选取了三个点(分别是图上的曹光彪楼、六合塔和梅家坞三个点),x坐标sample里面是这三个点的图上坐标,u坐标sample里面是在googlEarth里面找到的经纬坐标。

得到变换阵之后画网格就很方便了。
粗线是每分一条,细线是每15秒一条。


PS:为了能够上传,我把图片的大小调整过了。
所以在运行m文件的时候,x sample里面的数据要重新设置一下。
用ginput得到图上坐标,然后修改x矩阵就可以了。

还有,经纬坐标,我是扔掉度,然后把剩下的分和秒都转化成秒得到的坐标。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×

评分

1

查看全部评分

发表于 2011-4-5 12:42:37 | 显示全部楼层 来自 陕西西安
Simdroid开发平台
谢谢了,去试试
回复 不支持

使用道具 举报

发表于 2011-4-6 09:31:43 | 显示全部楼层 来自 山东烟台
为什么不用mapping工具箱呢?
axesm可以设置地图投影坐标,plotm、geoshow、mapshow,很多很好用的函数,至于坐标轴转换,用projfwd、projinv
回复 不支持

使用道具 举报

发表于 2011-4-6 09:45:41 | 显示全部楼层 来自 山东烟台
本帖最后由 liuyalong008 于 2011-4-6 09:57 编辑


分享一个老帖
  1. worldmap([15 55],[70 140])%纬度经度范围显示
  2. %显示矢量数据
  3. geoshow('E:\data\vector\China.shp', 'FaceColor', [0.5 1.0 0.5]);
  4. setm(gca,'MLineLocation',5)%设置经度间隔为5
  5. setm(gca,'PLineLocation',10)%设置经度间隔为10
  6. setm(gca,'MLabelLocation',5)%设置经度标签为每隔5度
  7. setm(gca,'PLabelLocation',10)%设置纬度标签为每隔10度
复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×

评分

1

查看全部评分

回复 不支持

使用道具 举报

 楼主| 发表于 2011-4-6 12:12:27 | 显示全部楼层 来自 浙江杭州
本帖最后由 fnems 于 2011-4-6 12:27 编辑

3# liuyalong008

首先感谢liuyalong008 指出有这样的工具,之前还真不知道的。

当时觉得在图片上直接划线还是很方便的。另外区域很小,不必考虑投影方式,只要两个坐标之间的变换矩阵就可以了;

如果用这个工具,但不知道原始图片本身的坐标信息,比如图片边界坐标等等,恐怕自己也不会用。
上面例子代码里面,
  • worldmap([15 55],[70 140])%纬度经度范围显示
  • geoshow('E:\data\vector\China.shp', 'FaceColor', [0.5 1.0 0.5]);
第一行只产生一个网格;第二行的代码是把图片放进去。
但是图片怎样放是个问题,如何让图片放在正确的位置?
或者如果图片是斜着的,而网格是正着的?图片是“上南下北”的地图?


liuyalong008能否就上面的原始图片演示一下怎样画经纬网?非常感谢~!

评分

1

查看全部评分

回复 不支持

使用道具 举报

发表于 2011-4-6 13:25:23 | 显示全部楼层 来自 山东烟台
5# fnems
worldmap的意思是创建一个所在区域的地图坐标轴
如:worldmap  china
第二个是显示地理数据
不存在图片放置问题,但是一定要包含投影与地理信息的图片才行,如 地理矢量shp格式文件,geotiff文件,只要你的数据包含正确的地理信息,它一定会正确地叠加

评分

1

查看全部评分

回复 不支持

使用道具 举报

 楼主| 发表于 2011-4-6 14:29:27 | 显示全部楼层 来自 浙江杭州
本帖最后由 fnems 于 2011-4-6 14:30 编辑

6# liuyalong008

liuyalong008 是说geoshow加载的图像不能是一般的图片是吧,
只能用在含有坐标信息的矢量图上?
就是说这个工具箱不能用来在jpg、bmp这些位图图像上画网格了?

(暗地里膨胀一下,自己的代码还是有点用处的,嘿嘿)
回复 不支持

使用道具 举报

发表于 2011-4-6 14:41:16 | 显示全部楼层 来自 山东烟台
7# fnems
你在JPG,BMP上画,你觉得准吗?你区域大的话,可能会导致误差很大
你是按什么划线画上去的?有依据么?
回复 不支持

使用道具 举报

 楼主| 发表于 2011-4-6 15:31:01 | 显示全部楼层 来自 浙江杭州
本帖最后由 fnems 于 2011-4-6 15:45 编辑

8# liuyalong008

我在jpg上画图的假设是:
球面二维流形局部近似成平面,
jpg图像是真实近似平面线性变换得到的,
jpg图中一些关键点,比如山峰等,的标注是准确的;另外在googleEarth上得到的真实坐标也是准确的。

上面假设成立的情况下经纬网划线是准确的。
我在同一个二维平面流行上建立两个笛卡尔标架,并通过三个或三个以上样本点得到两个标架下的变换矩阵。
如果地图本身不准,那么要求经纬网的准确也是没有意义的。

如果真要上升到讨论误差的层面,“你区域大的话,可能会导致误差大”,这里是否包括jpg图不精确带来的误差? 还是只有局部平面化的误差?  liuyalong008 能告诉我,区域是[120deg3' ,  120deg8' ]E,  [30deg11' ,   30deg16']N 范围内,我这样做的误差在什么数量级吗?

我能找到的只有这张jpg,本来也只是想在原有图片的基础上能够建立一个大概的坐标概念。发这个娱乐贴,也是先有jpg图,然后划线。我的目的不在于建立局部的精确网格。
mapping工具箱可以认为是准确的,但是如果用这个工具箱做出局部地图,需要收集太多的信息。可以认为是性价比太低。

不同的工具有不同的适用范围。
回复 不支持

使用道具 举报

发表于 2011-4-6 16:00:12 | 显示全部楼层 来自 山东烟台
9# fnems

我觉得你这样反而麻烦,但如果你只有JPG格式的图片,估计你只能这样了
当然也可以同过几何配准使得任何图片都具有投影经纬度信息,一个具有地理信息的图像数据可视化就比较简单了
回复 不支持

使用道具 举报

 楼主| 发表于 2011-4-6 16:17:49 | 显示全部楼层 来自 浙江杭州
10# liuyalong008

确实比较麻烦,而且在8楼提到的不准确的问题确实存在。倒不是因为投影方式,这么小的区域将球面平面化是没有问题的。
但JPG图像不准的误差就很大。这个帖子发出来之后下面实际用的时候我采了5个点,最小二乘算出来变换阵然后画出网格,再看其他的点,发现大概有二十几秒的误差。

我自己是机械专业的,不是学测绘或者类似专业的,那方面的理论也不怎么懂。出于应用的目的,如果要再做得准一点,只能去找GoogleEarth截图了,呵呵

另外还在考虑怎么把地形加进去。就是获得等高线图,这样对毅行活动帮助更大一些。
回复 不支持

使用道具 举报

发表于 2011-4-6 19:28:05 | 显示全部楼层 来自 山东烟台
11# fnems

粗略应用可以,但是如果要精确肯定不行,我计算了一下,20秒在赤道大概能差600多米,应该算误差比较大了,你可以在googleearth上直接划线然后保存成kml,用matlab把kml保存成shp格式文件,或者提取其中的经纬度,就可以用geoshow显示。
你要叠加高程  那就更要用地理信息了,最简单,必须要有x,y,z,xy则为经纬度
回复 不支持

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Simapps系列直播

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-10-4 23:34 , Processed in 0.060928 second(s), 21 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表