ハンズオン準備の第4回です。準備の全体の趣旨は第1回をご覧ください。今回は、地球地図スリランカのデータを GeoJSON Text Sequence に変換します。
実装
地球地図データアーカイブのオンラインデータからワンパスで GeoJSON Test Sequence に変換するためのコードは既にプロトタイプを書いていたので、これをベースに次のコードを作成して実装終了です。
const config = require('config')
const shapefile = require('shapefile')
const fetch = require('node-fetch')
const main = async function(url, cc, layer) {
const shp = await fetch(`${url}/${layer}_${cc}.shp`)
const dbf = await fetch(`${url}/${layer}_${cc}.dbf`)
shapefile.open(shp.body, dbf.body, {encoding: 'utf-8'})
.then(source => source.read()
.then(function dump(result) {
if (result.done) return
console.log(JSON.stringify(result.value))
return source.read().then(dump)
}))
.catch(error => console.error(error.stack))
}
for(const layer of config.get('layers')) {
main(config.get('url'), config.get('cc'), layer)
}
データ
結果データおよびコードは GitHub に置いています。なお、データの利用条件についてもREADME.mdにメモしています。
次回
OSM の 6-46-30 のデータと、今回の地球地図スリランカのデータを、tippecanoe の入力データに変換します。国連ベクトルタイルツールキットの方法では、ここでいわゆるベクトルタイルスキーマを作り込んでいくことになります。作業レポジトリはspinel-produceになるでしょう。