61.QGIS圖形scale功能_以台灣人口age index分布為例

台灣人口結構資料繪製age index分布圖

age index必須使用三級人口資料,可參考第四章的人口資料處理,處理台灣113年以鄉為基礎的人口資料。首先1.在政府開放平台下載台灣鄉鎮位置的shp檔,導入QGIS。2.從內政部全球人口資訊網下載第四項歷年來人口資料中以鄉為單位的三級人口統計,選擇ods檔下載,同時因為資料龐大必須先花許久時間,重新整理資料如下:整理重建資料需要花一至二日,同時資料鄉鎮code必須符合shp檔的鄉鎮code碼,將來才能join資料;內政部資料各單位也許code碼不一致必須留意,如桃園市的桃園區code碼68000000要改成68000010。同時code碼欄位的資料屬性格是必須改成文字格式,否則台灣離島的編碼為通用格式或數值格式編碼前為090—-,前面的數值0會消失,改為文字格式就會存在,資料才能與shp檔案連結。

上述資料區分男女,必須以鄉為單位合併,轉成下述資料:

再將資料利用Excel公式計算young, middle,old,and population安排成下列資料

上述資料基本以改造完成,但是內政部人口資料中桃園區的code是68000000是錯誤的,必須改為680000010,否則無法連結。

繪圖步驟如下

1.將鄉鎮位置圖導入QGIS兩次:屬性表打開,每一個鄉有一轉專屬的towncode,必須與資料中鄉鎮的code一致,底層建立鄉鎮簍空資料,上層建立scale圖層:

2.導入重建ods表格;打開ods表格

3.將shp檔與113年資料ods檔joined:連結成後一定要重新輸出為shp檔命名為joined圖層,將鄉鎮位置的shp檔連結資料中的5個欄位,young,middle,old,population,ageindex。就是欄位,field66,field67,field68,field69,field70。

4.在joined圖層點兩下進入styling利用fill Geometry Generator 中編輯scale功能,將每一鄉鎮範圍的polygon,以ageindex的數值大小縮放鄉鎮polygon大小:ageindex除以1500,可以試探除以1000或1500或5000等,看polygon呈現的效果如何決定哪一數值最佳;

5.從標籤修改,使得ageindex數值大於1000,則呈現地名:

6.scale的關鍵在選擇generate geometry的編輯使用使用了collect_geometries(,

array_foreach( generate_series( 0, num_geometries( $geometry ) )

scale( $geometry , “ageindex” /1500 , “ageindex” /1500 ) ) )

7.在google搜尋gadm,搜尋台灣,gadm41_TWN.gpkg,選ADM_ADM1,即台灣最外層輪廓polygon。再將其reprojcted,為epsg:3826,同時style,選inverse_polygon:

Create a Cartogram in QGIS using the Scale Function and the Geometry Generator

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *