matlab画中国地图
1、下载 arc_map.zip, 内有/shape_files/china.shp 文件,地址如下:
venus.unive.it/matdid.php?utente=smagrini&base=ec++urbana+e+regionale+-+aa+2008-
2009%2Fprimo+modulo%2Flaboratorio+matlab&cmd=dir
2、
代码:
figure;
info = shapeinfo('china.shp')
S = shaperead('china.shp');
mapshow(S);
文件中可能还有更多地理,统计信息。只是地图政治不正确,没有宝岛。南沙在。
如何在MATLAB中绘制中国地图了呢?下面介绍两种方法。
第一种方法是利用MATLAB自带的map工具箱。直接在命令窗口输入
>>geoshow('***.shp')
就可以显示出中国地图了。***.shp是地图数据文件。geoshow命令的用法可以在 MATLAB的帮助菜单里搜索到,因为我
对map工具箱的用法还不是很了解,也就不多讲了。大家可以在网上搜索下相关的用法。我国的地图数据可以从国家基础地理信息系统的网站上下载,网址是v/。
用这种方法绘制的地图如下图。在绘制中我添加了一级河流的数据。还可以添加省界,地区界等数据。这些数据均可以从国家基础地理信息系统的网站上下载到。
第二种方法是利用m_map工具箱。该工具箱需要自己下载安装,下载的地址是s.ubc.ca/~rich/map.html。
m_map是一个功能很强大的工具箱,它提供多种投影方式,而且用法也很简单,容易上手,更重要的是,利用它可以很方便地绘制自己的数据。有兴趣的读者可以参阅它的使用说明。就在上述的网址上就
有。但是m_map提供的边界数据使用起来很不方便,数据是按照国家单个给出的,如果想画出世界各国的边界,就需要把每个国家的数据都下载下来,很麻烦。
网上有如何利用m_map来绘制行政边界的说明,例如下面的这个地址的作者就提供了一个具体的操作方法:将下载的.shp文件通过mapinfo转换成.dxf文件,利用已编译好的fortran程序,读取经纬度信息,输出.dat文件。导入 matlab空间
(hi.baidu/blucas/blog/item/2f34c1fd48417087b901a014.html)。
如何通过mapinfo软件来转化.shp文件我没有尝试过,因为还要学习mapinfo的使用,对多数人来说,这也是很不方便的。其实我们可以利用功能强大的MATLAB来直接读取.shp文件的内容,命令就是shaperead。只要我们下载到了数据,就可以直接利用MATLAB来画图了。下面给出提取边界信息的简单程序。程序的后面三段即为m_map工具箱的命令。
>>a=shaperead('bou1_4l.shp');%读取shp文件的内容
>>bou1_4lx=[a(:).X];%提取经度信息
>>bou1_4ly= [a(:).Y];%提取纬度信息
matlab 下载
>>m_proj('Lambert Conformal Conic','lon',[70,140],'lat',[0,60])%选择投影方式
>>m_plot(bou1_4lx,bou1_4ly)%绘图
>>m_grid%添加坐标
绘制的结果如下,与上图类似,也画出了一级河流,区别是使用的Lambert投影。
画世界地图的程序:
h=worldmap('World');
setm(h,'Origin',[0 180 0])
land=shaperead('landareas','UseGeoCoords',true);
geoshow(h,land,'FaceColor',[0.5 0.7 0.5])
lakes=shaperead('worldlakes','UseGeoCoords',true);
geoshow(lakes,'FaceColor','blue')
rivers=shaperead('worldrivers','UseGeoCoords',true);
geoshow(rivers,'Color','blue')
cities=shaperead('worldcities','UseGeoCoords',true);
geoshow(cities,'Marker','.','Color','red')