Matlab畫地圖
2015-11-07 00:41
323 查看
MATLAB自帶畫地圖功能,比如
geoshow('landareas.shp', 'FaceColor', [0.5 1.0 0.5]);
![](https://img-blog.csdn.net/20151107004232799?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
可是MATLAB卻沒有自帶畫中國地圖,因此可以在網上下載shp、shx、dbf等地圖數據文件。它有兩種,第一種,它是以線的數據結構來保存的;另一種是以多邊形來保存的。下面分別可以看到兩種數據結構。
Geometry: 'Line'
BoundingBox: [2x2 double]
Lon: [1x178 double]
Lat: [1x178 double]
FNODE_: 2
TNODE_: 7
LPOLY_: 2
RPOLY_: 3
LENGTH: 7.7430
BOU2_4M_: 1
BOU2_4M_ID: 23
GBCODE: 61030
其實都是大同小異,然而我比較喜歡用后來,因為之前需要判斷某個點在哪個省裏,這時候多邊形就方便多了。
下載了shp、shx、dbf等地圖數據文件後,可以用以下的命令來載入數據並繪圖
gx=shaperead('C:\Users\user\Documents\MATLAB\province\gx_city.shp','usegeocoords',true);%載入地圖數據
geoshow(gx,'FaceColor', [0.5 1.0 0.5],'EdgeColor','red');%把地圖畫出來
geoshow(lat,lon,'marker','.','markeredgecolor','Green','Displaytype','point');%在地圖上手動加幾個點
上面說到,我比較喜歡用多邊形結構的數據文件,因為可以方便判斷某個點在不在某些區域裏。可以用以下的命令來判斷點(x,y)是否在某個省內
inpolygon(x,y,gx(1).Lon,gx(1).Lat)%或者inpolygon(lat,lon,gx(1).Lat,gx(1).Lon)
BTW,geoshow可以畫三維圖的,有興趣可以去http://cn.mathworks.com/help/map/ref/geoshow.html?searchHighlight=geoshow看看。
~學習筆記~
geoshow('landareas.shp', 'FaceColor', [0.5 1.0 0.5]);
可是MATLAB卻沒有自帶畫中國地圖,因此可以在網上下載shp、shx、dbf等地圖數據文件。它有兩種,第一種,它是以線的數據結構來保存的;另一種是以多邊形來保存的。下面分別可以看到兩種數據結構。
Geometry: 'Line'
BoundingBox: [2x2 double]
Lon: [1x178 double]
Lat: [1x178 double]
FNODE_: 2
TNODE_: 7
LPOLY_: 2
RPOLY_: 3
LENGTH: 7.7430
BOU2_4M_: 1
BOU2_4M_ID: 23
GBCODE: 61030
Geometry: 'Polygon' BoundingBox: [2x2 double] Lon: [1x5785 double] Lat: [1x5785 double] AREA: 54.4470 PERIMETER: 68.4890 BOU2_4M_: 2 BOU2_4M_ID: 23 ADCODE93: 230000 ADCODE99: 230000 NAME: 'ºÚÁú½Ê¡'
其實都是大同小異,然而我比較喜歡用后來,因為之前需要判斷某個點在哪個省裏,這時候多邊形就方便多了。
下載了shp、shx、dbf等地圖數據文件後,可以用以下的命令來載入數據並繪圖
gx=shaperead('C:\Users\user\Documents\MATLAB\province\gx_city.shp','usegeocoords',true);%載入地圖數據
geoshow(gx,'FaceColor', [0.5 1.0 0.5],'EdgeColor','red');%把地圖畫出來
geoshow(lat,lon,'marker','.','markeredgecolor','Green','Displaytype','point');%在地圖上手動加幾個點
上面說到,我比較喜歡用多邊形結構的數據文件,因為可以方便判斷某個點在不在某些區域裏。可以用以下的命令來判斷點(x,y)是否在某個省內
inpolygon(x,y,gx(1).Lon,gx(1).Lat)%或者inpolygon(lat,lon,gx(1).Lat,gx(1).Lon)
BTW,geoshow可以畫三維圖的,有興趣可以去http://cn.mathworks.com/help/map/ref/geoshow.html?searchHighlight=geoshow看看。
~學習筆記~
相关文章推荐
- 【Matlab开发】matlab中norm范数以及向量点积、绘图设置相关
- Matlab “Out of memory”解决办法
- matlab与c/c++混合编程——c/c++调用matlab
- 数值分析 Gauss-Seidel迭代法求解线性方程组 MATLAB程序实现
- 数值分析 jacobi迭代法求解线性方程组 MATLAB程序实现
- 小记Matlab和C混合编程
- MATLAB产生各种分布的随机数
- 在外部调用Matlab引擎实现数学计算
- matlab快捷键大全
- 使用随机梯度算法对高斯核模型进行最小二乘学习法的MATLAB程序源码分析
- Matlab与C++混合编程,添加OpenCV库
- 分层K-Means+Matlab计算向量间距离
- 对给定音频文件“testshort.wav”,用matlab输出它的波形【学生创新实验室联合纳新测试题】
- MATCOM在VC++与MATLAB混合编程中的应用
- Matlab与C/C++混合编程接口及应用
- 浅谈手机sensor采集的raw图像
- matlab下配置lpsolve
- 关于MATLAB函数不可用问题。??? Undefined function or method 'minfo' for input arguments of type 'double'.
- MATLAB GUI中Edit Text的Callback函数何时执行
- 【Matlab】1. Matlab效率提升——调用C语言编写的函数 (mex,matlab C API)