Matlab畫地圖

MATLAB自帶畫地圖功能,比如

geoshow('landareas.shp', 'FaceColor', [0.5 1.0 0.5]);

Matlab畫地圖_第1张图片

可是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黑科技)