Matlab 画地图之 m_map
2023-07-31
[摘要] 几个缺的图请移驾博客园:cnblogs.com/Gou-Hailong/p/13822460.html参考:气象家园:M-Map:找shp的网站:中国科学院资源环境数据平台:matlab利用m_map工具包画中国地图及散点云图:百度经验出图:快应用:shp文件下载:世界国家+中国大陆部分:国家基础地理数据:代码下载

几个缺的图请移驾博客园:cnblogs.com/Gou-Hailong/p/13822460.html

参考:
气象家园: https://mp.weixin.qq.com/s/JWi7VllWr93wDw6BStk8Dw
M-Map:https://www.eoas.ubc.ca/~rich/map.html
找shp的网站:https://gadm.org/download_country_v3.html
中国科学院资源环境数据平台:http://www.resdc.cn/Default.aspx
matlab利用m_map工具包画中国地图及散点云图:https://www.cnblogs.com/righdflf/p/11484189.html
百度经验出图:https://jingyan.baidu.com/article/870c6fc36fdacfb03ee4be58.html


快应用:
shp文件下载:
世界国家+中国大陆部分:https://download.csdn.net/download/Gou_Hailong/12744519
国家基础地理数据:https://download.csdn.net/download/tessykandy/9112343
代码下载:
求内切圆外接圆:https://download.csdn.net/download/Gou_Hailong/12744427
缩放矩阵或图像:https://download.csdn.net/download/Gou_Hailong/12744441
扣shp:https://download.csdn.net/download/Gou_Hailong/12744543

目前搞到的shape文件有:中国科学院资源环境数据、从CSDN上下载的、奇哥给的。

在这里插入图片描述
这个数据精度很高,比如,数据2的P2 长度为925,这个数据P2长度是4461;当然精度高同时画起来也超级慢,我的lj 电脑画个图就可以吃一碗泡面了。
它配套一个xls文件:里面存了省市代码。P2数据存在下面的问题:有的省名字缺失,P3数据有的也缺失,但是其对应的代码查询不到,所以不管了。下面补一下P2的省名字。
在这里插入图片描述
修正后的shp文件名为:sheng.shp。

下载链接:https://download.csdn.net/download/tessykandy/9112343
在这里插入图片描述

 

结果:
在这里插入图片描述
可以看到地级市只有内部线,想要使用,得和省界线配合使用

 

在这里插入图片描述

奇哥给的和上面那个是一样的,多了世界国家。下面将两个整合到一起。
在这里插入图片描述
代码用的是 3 中的功能1,然后将 改成 即可。调用:

 
 
文件名描述
bou1_4m中国国界
bou2_4m中国省界
bou3_4m中国地市级(只有内部线)
bou4_4m中国县级
hyd1_4m中国一级河流
hyd2_4m中国二级河流
hyd4_4m中国四级河流
hyd5_4m中国五级河流
rai_4m中国主要铁路
res1_4m省会标示
res2_4m地市级以上居民地
res4_4m县以上居民地级
roa_4m中国主要公路
世界国家世界国家
省界另一个省界(不用)
中国省级行政区划_shp.rar一般不用
县级_截止08年_shp.rar一般不用
sheng中国省界(精度高,慢)含修正后的
shi中国市界(精度高,慢)

常用数据路径汇总:

 

下面对中国行政单位划分做个总结:

https://www.cnblogs.com/Gou-Hailong/p/13545885.html
详细描述请移驾:https://jingyan.baidu.com/article/59a015e398ed3ff794886589.html
行政区划代码查询:https://xingzhengquhua.51240.com/

下载链接:https://www.eoas.ubc.ca/~rich/map.html
在这里插入图片描述

下好工具箱解压后,将文件夹放在一个不常动的地方,我放在了中,然后打开matlab,点击,将路径加进去就行了。测试是否成功的话,就在matlab命令空间敲括号里面可以是1-15,这实际上m_map中附带的一个函数,在文件,看看可不可以画出来图。

User Guide:https://www.eoas.ubc.ca/~rich/mapug.html#p2

 

可用的投影方式有:

参数中文描述
Stereographic保角,常用于极区
Orthographic既不是等面积也不是保角的,而是类似于地球的透视图在这里插入图片描述
Azimuthal Equal-area朗伯方位等面积投影在这里插入图片描述
Azimuthal Equidistant等距
Gnomonic点切投影,地图上所有的直线(不仅仅是那些通过中心的)都是大圆路线
Satellite地球的透视图,由卫星在特定的高度所看到。指定视点高度而不是为地图指定半径
Albers Equal-Area Conic等积阿波斯圆锥
Lambert Conformal Conic兰伯特等角圆锥在这里插入图片描述
Mercator墨卡托,正形切圆柱
Miller Cylindrical米勒圆柱在这里插入图片描述
Equidistant Cylindrical等距圆柱
Cylindrical Equal-Area等积圆柱
Oblique Mercator斜轴墨卡托在这里插入图片描述
Transverse Mercator横轴墨卡托
Sinusoidal伪圆柱投影
Gall-Peters纬线和子午线的平行线都呈现为直线,但垂直尺度被扭曲
Hammer-Aitoff具有弯曲子午线和平行线的等面积投影在这里插入图片描述
Mollweide外德投影,也称为椭圆或等积投影。在这个投影中,平行线是直的。在这里插入图片描述
Robinson洛滨孙,养眼在这里插入图片描述
UTMUTM投影在这里插入图片描述

注:本人自己翻译,有的没见过,可能不准,图片来源于上述链接。

通常,全世界的地图都是墨卡托(Mercator),尽管米勒圆柱投影通常看起来更好,因为它没有强调极地区域。 另一个选择是Hammer-Aitoff或Mollweide(使子午线在两极附近弯曲在一起)。 两者都是等面积的。 将这些投影用于在中点附近没有赤道的地图可能不是一个好主意。 Robinson投影不是等面积或等角投影,而是国家地理杂志的选择(无论如何),并且也出现在IPCC报告中。
如果您要绘制的东西的北/南范围较大,但不是很宽(例如北美洲和南美洲,或者北大西洋和南大西洋),那么正弦或Mollweide投影将看起来非常不错。 另一个选择是“横轴墨卡托”,尽管通常只用于非常大比例尺的地图(即,覆盖很小面积的地图)。
对于一个半球或其他半球内较小的区域(例如,澳大利亚,美国,地中海,北大西洋),您可能会选择圆锥投影。 两种可用的圆锥投影之间的差异非常细微,如果您对投影不太了解,那么使用哪种圆锥投影可能不会有太大的区别。
如果您要画的区域变得更小,则使用哪种投影都无关紧要。 我认为在很多情况下有用的一种投影是斜墨卡托,因为您可以将其沿着长(但窄)的沿海地区对齐。 如果沿着经度/纬度线的地图限制正常,请使用横轴墨卡托或圆锥投影。 如果要以米为单位建立网格,则UTM投影也很有用,因为投影坐标(即“东和北”)以米为单位。
极地地区传统上是使用Stereographic投影来绘制地图的,因为每个人似乎都认为具有“靶心”式的纬线模式看起来不错(经度线在极点汇聚在一起的事实也使它们成为极地科学家几乎不可抗拒的目的地 和探险者)。

全代码:https://blog.csdn.net/Gou_Hailong/article/details/108209764

调用实例:

 

函数全代码请移驾:https://blog.csdn.net/Gou_Hailong/article/details/108209395
在这里插入图片描述

先搞个简单的:河南省的
1.第一步,把河南省的shp提取出来,注意看其范围

 

在这里插入图片描述
可以看到,其大致范围是。


2.从 tif 里面将该大致范围搞出来,并提取shp边界,之后用搞出逻辑矩阵

 

3.把边界外的数据搞成

 

4.画图

 

在这里插入图片描述


PS:出逻辑矩阵的时候超级慢,这还是一个简单的边界,目前只能这么搞了,还没有其他方法。
跑全中国的跑十几分钟还跑步不来。我丢,中国大陆矩阵大小,本来以为是三百多万,从开始跑,跑到跑了177万,我觉得明天早上应该就跑完了,有点期待夹杂着莫名的兴奋。到了跑到了270万,我想着在有俩小时估计就跑完了,但是10点之后,我发现还没跑完,跑到了310万。我去,不是308万吗,又仔细数了数零,发现是3080万,当场哭晕,那不得10天吗,就没管它,它自己在那跑,到跑到390万停,结果如下图:
在这里插入图片描述
算是把雄鸡鸡冠画出来了吧。。


突然想到一个新方法,中国边界内的最大内接圆一定在中国里面,中国边界的最小外接圆一定在中国外边,所以最后只需判断中间夹的那个小圆环就好了。
在这里插入图片描述
这是裁北京市的图,小圆太小,大圆太大,效果还是不太理想,求重心求得精确一点就好了。

在这里插入图片描述
改进了求重心的算法,效果如上图(右)还可以。
这个功能的算法,目前来说,我是没招了,全代码链接如下:

https://blog.csdn.net/Gou_Hailong/article/details/108209764


但是,对于中国大陆来说,两个圆还是有点少:
在这里插入图片描述
上图虽简单,但上面花了我好几个小时,搞出来了这7个圆的信息

RXY信息
11.8078757181888981.338997219786234e+0230.905277734156662内部不要
31.3340892765447901.044958332073500e+0243.506944350416660外部不要
13.5539685510576421.338997219786233e+0222.504166656650000内部不要
11.5869025941032401.044958332073500e+0253.999999864000000内部不要
9.3332106353152171.086963887461033e+0233.005555503533330内部要
4.0403508566719641.254986109011167e+0245.607222119793335内部要
8.59719019087790887.69361105233668037.206111042286665内部要

在这里插入图片描述
我梦寐以求的小公鸡,快点出来吧,这是用mapshow(shp)画出来的。 还在苦逼等待程序运行中…(真累,明天换个活,先歇歇。)
经历了大约两天时间,终于跑完了,加上那七个圆,算法运行时间大大减少了,之前的话少说也得10天,现在大约两天跑好了,电脑烫的厉害。下面看下结果:

 

在这里插入图片描述
这张图片具有重大的“历史纪念”意义,希望CSDN不要和谐掉。。


平台注册入口