(20190504-2)matlab绘制中国/世界地图(海岸线,国界,省界)——mapshow/geoshow

参考:

【1】https://blog.csdn.net/zzx2016zzx/article/details/82908239

【2】https://jingyan.baidu.com/article/1e5468f94f59a5484961b738.html

【3】https://jingyan.baidu.com/article/a17d5285c8d0cb8098c8f28a.html

【4】https://jingyan.baidu.com/article/870c6fc36fdacfb03ee4be58.html

【5】https://blog.csdn.net/rumswell/article/details/14644231

【6】https://blog.csdn.net/rumswell/article/details/15027347

%======================

%======
figure(1)
a = worldmap('China');%描绘出中国地图的轮廓,其中的China是描绘中国地图;
worldmap([10,55],[70,140]); 
%要是换做其他地图,就可以换成‘World’,或者'North Pole', 'South Pole', 'Pacific'

%======
%读取中国大陆的架构
% figure(2)
% landareas = shaperead('landareas.shp','UseGeoCoords', true);  
% geoshow (landareas, 'FaceColor', [1 1 .5],'lon',[70,140],'lat',[0,60]);  

%======
%画出大陆的海岸线
% figure(3)
load coast  
plotm(lat, long) 

%======
%设置经纬度的间隔
setm(gca,'MLineLocation',5)%设置经度间隔为5
setm(gca,'PLineLocation',10)%设置纬度间隔为10

%设置经纬度标签的间隔
setm(gca,'MLabelLocation',10)%设置经度标签为每隔5度
setm(gca,'PLabelLocation',5)%设置纬度标签为每隔10度
grid on

%给大陆加上颜色
% land = shaperead('landareas', 'UseGeoCoords', true);  
% geoshow(a, land, 'FaceColor', [0.5 0.7 0.5])

%========

显示不带投影的地图数据


%=========
close all; 
clear ;
clc;
figure(2) 
fnshp_L='bou2_4l.shp';
fnshp_P='bou2_4p.shp';

LatLonLim=[70,15;140,55];%读取指定经度纬度的范围
readL=shaperead(fnshp_L,'BoundingBox',LatLonLim,'UseGeoCoords', true);%只读一部分数据
readP=shaperead(fnshp_P,'BoundingBox',LatLonLim,'UseGeoCoords', true);%只读一部分数据
    
mapshow(readL,'Color','k');
title('ChinaMap')


%=========





%============

figure(3) 
%==============
fnshp_L='bou2_4l.shp';
fnshp_P='bou2_4p.shp';
readL=shaperead(fnshp_L);
readP=shaperead(fnshp_P);

%==============
% a = worldmap('China');%描绘出中国地图的轮廓,其中的China是描绘中国地图;
worldmap([15,55],[70,140]); %指定经纬度范围
geoshow(fnshp_L,'Color','k');

%=============绘制海岸线
load coast  
plotm(lat, long,'Color','k') ;% plotm(lat, long) %海岸线默认颜色为蓝色
hold on;

%==============
%设置经纬度的间隔
setm(gca,'MLineLocation',5)%设置经度间隔为5
setm(gca,'PLineLocation',10)%设置纬度间隔为10
%设置经纬度标签的间隔
setm(gca,'MLabelLocation',10)%设置经度标签为每隔5度
setm(gca,'PLabelLocation',5)%设置纬度标签为每隔10度
title('China','FontSize',14,'FontWeight','Bold')

 

%==================【20200511】=======

不需要读取shpfile文件,利用matlab自带的海岸线绘制

继续补充绘制世界地图的方法:【参考https://jingyan.baidu.com/article/1e5468f94f59a5484961b738.html

close all; clear; clc
load coast;
%绘制全球海岸线
plot(long,lat,'color',[0,0,0],'LineWidth',1);hold on;
axis equal;axis tight;grid on;
set(gca,'fontname','Time New Romans','fontsize',15,...
 'tickdir','out','ticklength',[0.02,0.02],...
 'gridlinestyle','-.','linewidth',0.1,...
'xtick',[-180:60:180],'ytick',[-90:30:90],...
 'yticklabel',{' ','60S','30S','0','30N','60N'});
xlabel('Longitude');
ylabel('Latitude');

自定义绘制指定范围地图(如绘制中国及周边海岸线):

close all; clear; clc
load coast;
%绘制中国岸线
plot(long,lat,'color',[0,0,0],'LineWidth',1);hold on;
axis equal;axis tight;grid on;
set(gca,'fontname','Time New Romans','fontsize',10,...
 'tickdir','out','ticklength',[0.02,0.02],...
 'gridlinestyle','-.','linewidth',0.1,...
'xtick',[70:20:140],'ytick',[0:10:60],...
'xticklabel',{'70E ','90E','110E','130E'},...
 'yticklabel',{'0 ','10N','20N','30N','40N','50N','60N'});
xlabel('Longitude');
ylabel('Latitude');
%设置只显示中国范围
xlim([70 140]);
ylim([0 60]);

绘制地图主要是为了叠加显示自己的数据:举个例子

close all; clear; clc
load coast;
%绘制全球海岸线
plot(long,lat,'color',[0,0,0],'LineWidth',1);hold on;
axis equal;axis tight;grid on;
set(gca,'fontname','Time New Romans','fontsize',15,...
 'tickdir','out','ticklength',[0.02,0.02],...
 'gridlinestyle','-.','linewidth',0.1,...
'xtick',[-180:60:180],'ytick',[-90:30:90],...
 'yticklabel',{' ','60S','30S','0','30N','60N'});
xlabel('Longitude');
ylabel('Latitude');


%在地图上叠加自己的数据
plot(long(100:1000),lat(200:1100),'color','red','LineWidth',2);

 

%=======20201217更新=====

参考【matlab绘制世界地图代码

绘制世界地图:

wd = worldmap('World'); setm(wd, 'Origin', [0 180 0]);                           %[0 90 0]就是中国在中间,[0 180 0]就是太平洋在中间

% Worldmap with land areas, major lakes and rivers, and cities and
    % populated places
    wd = worldmap('World');
    setm(wd, 'Origin', [0 180 0]);%太平洋在中间
%     setm(wd, 'Origin', [0 90 0]);%中国大陆在中间
    setm(gca,'MLabelParallel','south');
    land = shaperead('landareas', 'UseGeoCoords', true);
    geoshow(wd, 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');

 

 

 

%===========20210410更新==============

绘制南海九段线【转自:https://mp.weixin.qq.com/s/fpFbD5ulQ2RIMQymI16FXA

 

%==================

shp文件可以网上自行下载,或联系本文作者。

博文引用部分网上内容(附有链接),如有侵权,请联系作者删除,尊重知识原创。

知识分享带来进步,如果觉得有用,博文下方点个赞~

 

 

 

 

  • 54
    点赞
  • 270
    收藏
    觉得还不错? 一键收藏
  • 82
    评论
### 回答1: 要加载省界,可以使用GeoJSON格式的文件将省界数据添加到Cesium中。以下是一个简单的例子: ```javascript // 创建Cesium Viewer var viewer = new Cesium.Viewer('cesiumContainer'); // 加载省界数据 var promise = Cesium.GeoJsonDataSource.load('path/to/province.json'); promise.then(function(dataSource) { // 添加省界数据到场景中 viewer.dataSources.add(dataSource); // 设置相机视角以适应整个省界 viewer.zoomTo(dataSource); }).otherwise(function(error) { // 如果加载失败,输出错误信息 console.log(error); }); ``` 其中,`path/to/province.json`应该替换成你自己的省界数据文件路径。此外,你也可以根据需要对省界数据进行样式和标注等自定义设置。 ### 回答2: Cesium是一个开源的3D地球显示引擎,它允许开发者在网页上构建交互式的虚拟地球场景。在Cesium中加载省界需要以下几个步骤。 首先,我们需要获得省界的地理数据。省界通常以矢量数据的形式存储,比如GeoJSON或者Shapefile格式。可以从各种数据提供商或者地理信息系统中获取这些数据。 接下来,我们使用JavaScript编写代码来加载和显示省界数据。在Cesium中,我们可以使用Entity或者Primitive对象来表示和渲染地理实体。 为了加载省界数据,我们需要先创建一个Cesium Viewer对象,它代表了地球场景的显示窗口。然后,我们可以使用Cesium的load方法来异步加载省界数据文件。 一旦数据加载完成,我们可以使用解析的省界数据来创建一个Entity对象。Entity对象可以设置一些属性,比如位置、颜色和样式,用来表示省界的外观特征。 最后,我们将Entity对象添加到Viewer对象中,以便在地球场景中显示省界。可以设置一些相机参数,如视角和缩放级别,以便在加载省界时定位和呈现其外观。 通过这些步骤,我们可以在Cesium中成功加载省界数据,并在虚拟地球场景中显示出来。这样用户就可以通过鼠标交互来浏览和探索加载的省界,以及与其它地理数据进行交互。 ### 回答3: Cesium是一款基于WebGL的三维地球可视化引擎,它可以加载各种地理数据并进行可视化展示。如果想要加载省界数据,首先需要获取省界的地理数据。 一种获取省界数据的方法是通过开放平台或政府机构提供的接口或数据集,获取到省界的地理坐标点集合。接下来,可以使用Cesium提供的GeoJsonDataSource类来加载这些地理数据。GeoJsonDataSource可以将GeoJSON格式的数据转换为Cesium可识别的格式。 加载省界数据的过程如下:首先创建一个GeoJsonDataSource实例,然后使用load方法加载省界的地理数据文件。Cesium支持的地理数据文件格式有GeoJSON、KML、TopoJSON等。加载成功后,可以通过cesiumViewer对象的dataSources属性获得加载的数据集并添加到地球场景中。 在加载省界数据后,可以对数据进行可视化的操作。比如,可以根据省界的不同属性值设置不同的样式,如颜色、边框线宽等,从而区分不同的省界。此外,还可以根据数据集的经纬度坐标计算省界的面积、中心点等信息,并在地球场景中进行显示。 需要注意的是,加载省界数据可能会涉及到大量的数据处理和渲染操作,因此在使用Cesium加载省界数据时需考虑性能和效率的问题,例如采用分块加载数据或使用时空索引等技术来提高加载和渲染速度。 总之,通过Cesium加载省界数据可以利用其强大的三维可视化功能,实现对省级行政区划的显示和分析。
评论 82
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值