LoginSignup
2
1

More than 1 year has passed since last update.

長崎点群をクラウド最適化すれば、147GB

Last updated at Posted at 2023-03-21

概要

惑星間ファイルシステム(IPFS)に置かれたファイルのサイズを測る、という話です。

背景

オープンナガサキから公開された三次元点群データをクラウド最適化ポイントクラウド形式に変換して惑星間ファイルシステムに置くということを国連オープンGISイニシアティブスマートマップ作業部会の活動である「Smart Maps Bazaar」として行なっています。

ファイルサイズを測るというタスクを通じて、Smart Maps Bazaarによるファイルアクセスの方法を説明してみます。goによるIPFS実装であるkuborubyが導入された環境での作業になります。

結論から先に

  1. クラウド最適化した長崎点群のサイズは約147GBでした。
  2. 詳細値は size_all.csvに、各ファイルのサイズは size.csvにおいています。
  3. このエントリでご案内する成果の全てはoptgeo/free-nagasaki-statsに置いてあります。

ステップ1: 長崎点群(クラウド最適化版)のCIDリストをとる

長崎点群(クラウド最適化版)のCIDリストは https://raw.githubusercontent.com/optgeo/free-nagasaki/main/convert/dst/list.csv にご用意しています。

これをcurlで取ってきてパーズしながらipfsコマンドでアクセスしていくというやり方をこれから使っていきます。

ステップ2: Smart Maps Bazaar にコネクトする

長崎点群のCIDが分かれば、原理的にはipfsコマンドでファイルにアクセスできることになりますが、実際には、そのCIDオブジェクトを持っているノードに実際に接続するのに時間がかかってしまいます。

そこで出てくるのが Smart Maps Bazaar です。

Smart Maps Bazaar は、次のことを目指したIPFSノードです。

  1. 地理空間情報を共有したいIPFSノードが接続するノードとなる、
  2. 惑星間ファイルシステムに格納された地理空間情報をウェブに取り出すためのゲートウェイとして働く

ホスト名としては smb.optgeo.org という名前を持っています。

Smart Maps Bazaarノードに自分のノードを接続するためには、次のようにすることができます。

curl --silent https://unopengis.github.io/smb/connect.sh | sh

ステップ3: ファイルサイズを調べる

目的とするファイルのCIDが分かり、Smart Maps Bazaarノードに接続することができたので、あとは次のコマンドを使えばファイルサイズが取得できます。

ipfs files stat --size /ipfs/#{cid}

自動処理

実際には、次のRakefileとsize.rbを使って自動処理をしました。

task :default do
  sh <<-EOS
curl --silent https://raw.githubusercontent.com/optgeo/free-nagasaki/main/convert/dst/list.csv |
ruby size.rb
  EOS
end
require 'filesize'

w = File.open('size.csv', 'w')
w_all = File.open('size_all.csv', 'w')
size_all = 0
while gets
  (fn, cid) = $_.strip.split(',')
  size = `ipfs files stat --size /ipfs/#{cid}`.to_i
  size_all += size
  human = Filesize.from("#{size} B").pretty
  w.print [fn, cid, size, human].join(','), "\n"
  print [fn, cid, size, human].join(','), "\n"
end
w_all.print [size_all, Filesize.from("#{size_all} B").pretty].join(','), "\n"
print [size_all, Filesize.from("#{size_all} B").pretty].join(','), "\n"
w.close
w_all.close

終わりに

ここまでお読みくださり、ありがとうございます。
クラウド最適化した長崎点群のカタログサイトをfree-nagasaki-collectionに作っています。

また、長崎点群のうt長崎港まわりについてまとめて見ることができるようリンクを作ってみました。下図のような表示が可能です。
 2023-03-18 18.30.14.jpg

2
1
0

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
  3. You can use dark theme
What you can do with signing up
2
1