LoginSignup
0

posted at

updated at

Deno で COPC の範囲情報を取得する

はじめに

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 ]

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
0