您的位置:首页 > 编程语言 > MATLAB

Matlab畫地圖

2015-11-07 00:41 323 查看
MATLAB自帶畫地圖功能,比如

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看看。

~學習筆記~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: