讀取 json 檔


一個 .geojson 檔的資料結構圖示 請抓回 favourites.geojson。 這是一個 geojson 地理資料檔案格式。 除了用文字編輯器開啟查看之外, 也可用這個指令查看, 更清淅明瞭: jq . favourites.geojson 詳見 json 轉檔萬用瑞士刀 jq

因為瀏覽器環境下讀取在地資料檔很麻煩, 所以本篇採用 node.js 的 require('fs') 來讀資料; 在瀏覽器除錯環境裡面無法使用。 除了前兩句之外, 其他部分的語法適用於 node.js 跟瀏覽器除錯環境。

fs = require('fs')
gjf = JSON.parse(fs.readFileSync('favourites.geojson', 'utf8'))
fav = gjf.features
n = fav.length
fav[n-1]
fav[n-1]['properties']
fav[n-1].properties
fav[n-1]['geometry']
fav[n-1].geometry
fav[n-1]['geometry']['coordinates']
fav[n-1]['geometry']['coordinates'][0]
'type' in fav[n-1]['geometry']
'xyz' in fav[n-1]['geometry']
fav.map(function (d) { return d.geometry; } )
JSON.stringify(fav)

注意: fav2 = fav 只是敷衍了事的 shallow copy; 真正深層複製的 deep copy 要這樣做: fav2 = JSON.parse(JSON.stringify(fav)) (但僅適用於樹狀資料結構)

Q: 想要宣告兩個空的陣列變數, 應該這麼寫: var x=[], y=[]; 如果寫成這樣: var x=y=[]; 語法檢查正確; 但是執行時會出現什麼後果? (我自己的慘痛經驗!)

另一個 .geojson 檔的資料結構圖示 (作業一) 作業:

  1. 請從 fav 出發, 建立出如右圖的資料結構 fav3。
  2. 找出 bounding box (經度範圍及緯度範圍)
  3. 按照緯度, 由北到南排序。