はじめに
Smart Maps に取り組むことができるようになって、新たに点群を取り扱えるようになりました。Virtual Shizuoka の点群データ(静岡点群)を Cloud Optimized Point Cloud に変換して自家用オブジェクトストレージから提供する Tansei プロジェクトを進めています。
デモサイト
COPC のメタデータをスクリプトで取り出したい
現在、静岡点群の LAS ファイルを取り出しては PDAL で COPC に変換して自家用オブジェクトストレージにアップロードするバッチを長期運用で流しているところですが、低速なオブジェクトストレージから COPC の範囲情報を取り出すためには、メタデータの必要なところをスマートに取り出す必要があると思っています。
そのために、connormanning/copc を使ってみたいと思います。実装を除いてみたところ、スマートにデータを取り出すように作られているように見えたからです。
JavaScript のコマンドラインスクリプトを久しぶりに書くので、Deno で書いてみます。
コード
こんな感じかなと思います。
reentry.js
import { Copc } from 'npm:copc'
import proj4 from 'npm:proj4'
const url = 'https://x.optgeo.org/tansei/08nd7773.copc.laz'
const copc = await Copc.create(url)
console.log(proj4(copc.wkt).inverse(copc.header.min))
console.log(proj4(copc.wkt).inverse(copc.header.max))
実行
こんな感じで、うまくいきました。
$ deno run --allow-read --allow-sys --allow-net reentry.mjs
[ 138.38170965503224, 34.977754143479515, 18.09 ]
[ 138.3860944932108, 34.980462747653114, 52.18 ]