BIMGISPython開発
国土数値情報を使ってCADデータを作成する その3【Python】【DXF】【GeoJSON】
2024.10.21
2024.04.03
こんにちは。IU BIM STUDIO原田です。
今回はArchicadに入力した情報を活用する方法を考えていきます。
PowreBIでデータを可視化する方法を紹介しますが、今回はまずPowerQueryを使ってデータを整理するところから始めます。
PowerBIとはマイクロソフトが開発しているBIツールです。
BIツールとはBusiness Intelligenceの略でビジネスにおいてデータ分析や可視化などに使い、データに基づいた意思決定(Data Driven Decision Making)を支援するためのツールです。
こちらから無料でダウンロードして使うことが可能です。
https://powerbi.microsoft.com/ja-jp/downloads/
準備が終わったら早速始めましょう。
データは前回作成したものを使用します。
前回Pythonで情報を一括入力しましたが、別に手入力したものでも構いません。
では始めましょう。
Archicadでゾーンに入力した情報を表示するための一覧表を作成します。
この一覧表をExcelファイルで保存しましょう。
ではPowerBIを起動しましょう。
PowerBIで使うためのデータを取り込む作業をします。
メニューから「データを取得」を選択します。
データの種類を選択するダイアログが表示されるので、今回はExcelブックを選択します。
そうするとワークシートを選択するダイアログが表示されますので、取り込みたいワークシートを選択します。今回は1つしかないので「面積表」シートにチェックを入れます。
チェックを入れたら「データの変換」ボタンを押します。
データを取り込むと画像のような画面が表示されます。
これからPowerQueryでの作業に入ります。
PowerQueryはデータ分析などの際にデータの加工・整形に使うツールで、PowerBIだけでなくExcelからでも使うことが可能です。これを使うことにより、データを加工する一連の作業を自動ですることができ、同じ形式のデータを毎回手作業で加工する手間が省けます。
それではデータを加工していきます。
まず、現在1行目はゾーン情報ではなく、見出しになっていますので正しく見出し行として扱うように変換します。メニューから「1行目をヘッダーとして使用」をクリックします。
そうすると、1行目が削除され列の見出しに名前が入力されます。
延床面積を出すために延床面積対象外のゾーンを計算から外すための処理をします。メニューから列の追加>条件列を選択します。条件列はある条件に従ってデータを加工した列を追加することができます。
延床面積対象プロパティの値が「延床面積対象」の時にはゾーンの面積をそのまま入力し、それ以外の場合には0になるように設定し新しい列を作成します。
画像のように新しい列が追加されています。
列名の左のアイコンはデータ型を表しています。延床面積対象面積は10進数に変えておきましょう。データ型が正しく設定されていないと計算が正しくされない場合があります。
次に容積対象面積の計算をしていきたいのですが、容積の緩和には上限があるものがあります。
上限は延床面積によって決まるので延床面積が知りたいですよね。
延床面積の計算をしていきます。
メニューの列の追加>カスタム列を使うと、Excelの関数のようなものを書くことでデータに処理をすることができます。PowerQueryの場合はM言語というものを使います。
詳しい書き方等はこちらを参考にしてください。
https://learn.microsoft.com/ja-jp/powerquery-m/
カスタム列の式の部分でList.Sum関数を使うと列の数値の合計を計算することができます。
括弧の中の「変更された型2」というのは前のステップ(処理)の結果になります。
どうやらPowerQueryは処理した結果を変数に入れそれをまた使うという感じのようですね。処理した値を使う場合は前のステップから使わないとうまくいかないことがあります。
[ ]に囲まれている部分が列名です。
あと、延床面積を列として作るのが正解かはわからないですね…
別テーブルで作った方が良いのかもしれませんが、今回はこの方法としました。
延床面積も10進数にしておきます。
では延床面積を使って容積緩和の上限面積を計算します。
カスタム列を選択し、次のような式を書きます。
if [容積対象] = "容積対象外" then 0 else
if [容積対象] = "共同住宅・老人ホーム等の共用部" then 0 else
if [容積対象] = "地階の住宅・老人ホーム等" then [延床面積] / 3 else
if [容積対象] = "エレベーターの昇降路" then 0 else
if [容積対象] = "自動車車庫など" then [延床面積] / 5 else
if [容積対象] = "備蓄倉庫" then [延床面積] / 50 else
if [容積対象] = "自家発電設備" then [延床面積] / 50 else
if [容積対象] = "貯水槽" then [延床面積] / 100 else
if [容積対象] = "宅配ボックス" then [延床面積] / 100 else
[延床面積対象面積]
容積対象プロパティの値によって上限が変わるようにしたいので、共同住宅の共用部など容積対象外のものは0、自動車車庫は延床面積の1/5までなど場合分けをしていきます。
最後に容積対象のゾーンは延床面積に算入する値を入れます。
これも忘れずに10進数にしておきましょう。
それでは容積対象面積の値を計算していきます。
容積対象面積はゾーンの面積と先ほど作った容積緩和上限面積の小さい方を容積対象面積として設定します。
条件列を作成し、ゾーン面積が容積緩和の上限を超えているときは上限面積、それ以外の場合はゾーンの面積とします。
データの整形が終わったらメニューの閉じて適用を押します。
PowerBIの画面右側に作成した列が表示されていたらOKです。
私もPowerQueryについてそこまで詳しくないため、もっと良い方法はあるかもしれません。
長くなるので今回はここまでにします。
最後までお読みいただきありがとうございました。
次回はPowerBIを使っていきます。
BIMGISPython開発
2024.10.21
GISPython開発
2024.09.30
GISPython開発
2024.09.03
ARCHICADBIM
2024.08.01
ARCHICADBIM
2024.07.04
ARCHICADBIM開発
2024.06.14