有許多的軟體可以繪製地圖,例如ArcGIS、QGIS等地理信息系統軟體,簡稱GIS軟體(Geographic Information System)但今天想利用SAS統計軟體介紹台灣地圖的繪製,程式參考SAS公司的部落格文章 ( 如何繪製地圖圖表 - SAS Taiwan )。

地理資訊中,包含經度,緯度,和海拔,以x、y、z坐標來標註。以及劃分疆界的地名,例如國名、縣市名、或鄉鎮市區名等。

image

我們可以從【政府資料開放平臺】的網站首頁,輸入【行政區界】,蒐尋台灣的地理資料,進入後,會有3種台灣的圖資可以下載,包括22縣市的圖資、368個鄉鎮市區的圖資,以及台北市12行政區的圖資。

image

下載檔案時,建議選擇SHP格式的圖資檔,SHP 是一種儲存地理圖資的檔案格式。

image

 

SHP格式的檔案是由數個檔案合成的,下載後,會收到一個.ZIP檔,解開後,裡面有幾個檔案,每個檔案會有不同的功用,但一定至少包含 3 個檔案: .shp (記錄地理圖資的點線面資訊), .shx (地理圖資的索引),.dbf (地理圖資的屬性資料)(參考政府資料開放平臺網站資訊)。

image

 

但台灣地資的地名是中文,以UTF-8編碼,UTF-8一直是全球資訊網的最主要的編碼形式,但SAS的中文編碼形式為Big5,因此若不轉碼,將出現亂碼。

在QGIS中,我們把副檔名為.shp的檔案點開,台灣本島會變得很小一張,因為台灣本島四週有很多離島,當離島離台灣很遠,特別是在太平洋上的東沙島與南沙島,本島的比例便會縮小。因此,可以考慮將東沙島與南沙島從圖資中刪除。如有需要,可上以斯帖統計的官網下載已整理好的檔案 。

 

現在要示範的是2021年的台灣標準化死亡率的地圖。

 

為什麼要採用標準化率化呢?當我們要比較不同族群的死亡率時,要在相同的人口結構下去比較,否則人口老化的地區,受到年齡的影響,死亡率相對較高。

 

這是已經事先畫好的縣市別標準化死亡率地圖,圖中,標準化死亡率最高的縣市是花連縣、台東縣及屏東縣等,原住民分佈較為集中的縣市。若我們細分到368個鄉鎮市區,發現死亡率較高的鄉鎮主要分佈在中央山脈,以及東部地區。兩種地圖的呈現是略有不同的。

 

image

 

標準化死亡率的資料來自衛福部統計處的110年死因統計,資料已寫入SAS程式中,可供大家練習。

 

以下是操作步驟:

 

首先,要將副檔名為: .shp的檔案匯入,例如程式中的city.shp。這個檔案,要與前面所介紹的幾個檔案放在解壓縮後的資料夾中,例如示範程式的G:\ESTAT\taiwan。匯入圖資的processoure是【mapimport】。再利用out指令存成SAS的地資資料檔d.map。

 

*1.匯入圖資shp檔;
proc mapimport datafile="E:\ESTAT\YOUTUBE\01大數據\04\地資\citytown\city.shp"  
          out=D.map;  
run;

 

日後您若要畫不同的地圖,例如,除了畫縣市地圖,還想再畫鄉鎮市區地圖,我們可以將區域別的名稱,以巨集的方式設定為參數。在這裡,%let是巨集的指令,宣告圖資檔中的縣市別名稱為參數ID,程式中,只要遇到區域別的名稱,就以參數ID代替。

%LET ID=COUNTYNAME;

 

再來,是將我們的統計資料寫入程式中並匯入到SAS。在這隻程式中,我們匯入的是各縣市的【110年標準化死亡率】。統計資料的區域別名稱必須與圖資檔上的名稱一致,資料寬度也要一致,在這裡,指定統計資料的寬度與圖資檔上的寬度一致,指令為length。

data rate; 
   length &ID $12.;
   input &ID $ sr/*標準化率*/;
datalines; 
新北市    384.7
臺北市    311.4
桃園市    397.9
臺中市    399.2
臺南市    418.3
高雄市    443.4
宜蘭縣    421.8
新竹縣    402.3
苗栗縣    458.3
彰化縣    404.3
南投縣    461.0
雲林縣    461.4
嘉義縣    459.4
屏東縣    512.1
臺東縣    551.5
花蓮縣    503.9
澎湖縣    414
基隆市    427.7
新竹市    369.1
嘉義市    388.1
金門縣    276.6
連江縣    320.7
;
proc print ;
run;

在畫圖之前,我們要先決定地圖上的統計資料要分為多少層,並以不同顏色代替每一個分層。第一行指令goptions reset=pattern是在清除先前的顏色設定,若您是第一次匯製地圖,這行指令可以略過。透過goptions colors可以設定顏色。在這行程式中,我們設定了5種顏色,每一種顏色皆以CX為開頭,CX在SAS中,指的是RGB的顏色定義方式,後面有6個英文字母與數字組合的編碼,稱為HEX編碼,從將RGB的顏色編碼轉換過來的。每2個字元代表一種顏色,依序是RBG的紅色、綠色與藍色。

*4.設定圖層顏色;
goptions reset=pattern;  *還原 pattern 設定;
goptions colors=(CXeff3ff CXbdd7e7 CX6baed6 CX3182bd CX08519c);  *blue;

 

RBG的顏色編碼方式是0-255的數字,數字愈大,顏色比重愈高,並透過【紅綠藍】三色的組合產生不同的顏色,因此會有三個數字。這在寫程式上不太方便,因此以十六進位網頁顏色碼-HEX代替RGB的顏色編碼。

 

大家如果對顏色編碼沒有太多概念,可以到COLOR BREWER網站挑選您要的顏色,並選擇HEX編碼即可。

 

接下來就可以開始畫地圖了,processure是gmap。首先要把存放死亡資料的檔案rate放在data=的後面,圖資檔d.map放在out=的後面。區域別的名稱以巨集參數 &ID代替。第三行程式的choro代表所畫的地圖為2D的,只包含經度與緯度的訊息。接下來要決定要如何將死亡率分層,在此,我們以SUM的方式,將不同縣市的標準化死亡率分為5層,因此levels後面的等號要寫5。

 

*5.畫地圖;
proc gmap data=rate map=D.map;
   id &ID;
   choro sr/statistic=sum levels=5 ;
   LABEL sr= '標準化率 (每十萬)';
run;

 

我們一般都是透過percentile去分層,將資料從小排到大,再看資料量要分成幾等份。SAS軟體是用sum統計量分層。而不同的分層方式的一致性如何?從表中可以看出,當我們依percentile將死亡率資料分成5等份時,sum統計量分層的上下界,就在percentile的每一個分層內。sum的最小值,也是percentile的最小值,sum的最大值,是該分層死亡率最高的縣市。

image

 

這是【縣市別地圖的繪圖結果】,不同顏色代表標準死亡率的大小,顏色愈深,死亡率愈高。

image

 

其他相關資料的連結,請至以斯帖統計的官網下載

 

arrow
arrow

    estat 發表在 痞客邦 留言(0) 人氣()