liblas 概要

ライセンスBSD
URLhttp://liblas.org/wiki

LASファイルアクセスライブラリです。
LASファイルとはあまりなじみのないファイルフォーマットですが、
航空機レーザスキャナ(LIDAR)データ専用の点群データフォーマットです。

LASファイル概要

LASファイルは点群データだけをサポートするLIDAR専用フォーマットです。
各点はそれぞれの座標値のほかにLIDARデータ特有の属性(反射強度、リターン値、スキャン角度、他)を持ちます。

LASファイルは現在最新のフォーマットは1.2ですが、2009年3月時点でのliblas最新バージョン1.0.1では
1.0と1.1のファイルフォーマットをサポートしています。

大まかな構造としては、
先頭に固定長ヘッダがあり、それに続いて可変長ヘッダ、点群データというように記録されています。
可変長ヘッダの先頭には、ver. 1.0ファイルであれば0xAABBが記録されており、54バイトのヘッダに続いて
任意のデータが埋め込まれているようです。
GeoTIFF的地理参照情報があれば、この可変長レコードのひとつとして書き込まれるようです。

各点のレコードフォーマットはGPS時間無しと有りの2種類あるそうです。
この違いはおそらくライブラリ内で吸収してくれています。

LASファイルのサンプルは、
http://www.cs.unc.edu/~isenburg/lastools/
にあります。

コンパイル

GeoTIFF的地理参照情報を読み書きするためにlibgeotiffに依存しますが、無くても何とかなるようです。
どうやらデータの範囲を得るのとproj4スタイルでの投影情報書き込みに使用されているようです。
libgeotiffサポートを有効にする場合は、間接的にlibtiffにも依存します。
また、付属ツールのうちの一つlas2ogrはgdalに依存します。

VC用のMakeファイルはありません。
VC版のライブラリを作る場合は、VC2008などでsrc以下のソースファイルとinclude以下のヘッダファイルをプロジェクトに追加すればコンパイルはできます。
ただし、DLLにした場合はliblasのクラス群は使えません
この場合はliblasのC APIを使う必要があります。
libgeotiffサポートを有効にする場合は、プリプロセッサの定義でHAVE_LIBGEOTIFFを定義し、
libgeotiffのインポートライブラリをプロジェクトに追加します。
libgeotiffはスタティックライブラリを使用する必要があります

また、msysでのコンパイルは、筆者の環境ではうまくいきませんでした。

使用法概要

本体はC++で書かれていますが、C言語用APIもエクスポートされているので、どちらでも利用できます。
C言語用APIを使うならliblas.hをインクルード、C++ならliblas.hppほか必要な.hppファイルをインクルードして使うようです。

lasファイルはLIDARのデータだけあって、サイズが大きなファイルになりやすいので、
liblasではファイル内の任意の点へのランダムアクセスが可能になっています。
C++であれば、LasReaderクラスには[]演算子がオーバーロードされており、
ファイル内の任意の点へ配列を参照するようにアクセスすることができます。

liblasのページにチュートリアルがあります。

アーカイブ