目に見える空の割合を計算していますか?


14

誰でも、できるだけ簡単に、目に見える空の割合を計算する方法を説明できますか?

私は衛星調査を行い、建物の高さと建物間の距離を計算しました。

そのデータを使用して、立っている場所に応じて表示される空の割合を計算するにはどうすればよいですか?

回答:


12

通常、地面の場所に関するデータがあるため、それを使用する必要があります。地面が3Dの立体図形を決定します。この図を、ビューアーを中心とした単位球体に放射状に投影します。これにより、球体の領域に地面がマッピングされます。残りの領域の面積を計算します:それは空(ステラジアン単位)によって範囲を定められた立体角です。球の総面積(4 piに等しい)で割り、100を掛けて空の割合を求めます。

より鮮明な説明が必要な場合は、視聴者を小さな球状の泡の中心に置き、空の上にペイントするように依頼します。彼女が使用するペイントの量を、バブル全体をペイントするのに必要な量で割り、100を掛けます。

実際には、それほど単純ではない技術的な詳細がいくつかあります。

地面が三角形ネットワーク(TIN)として与えられている場合、球体への投影はかなり簡単です。なぜなら、球体に三角形を投影するコードを書くだけでよいからです。地面がグリッド付き標高モデル(DEM)として指定されている場合、各グリッドセルを3D四辺形と考えることができます。これを対角線に沿って2つの三角形に分割し、各三角形を球体にマッピングします。どちらの場合でも、球体に投影された三角形のコレクションが残っています。球体をマップに投影することにより(たとえば、ステレオ投影)、これらの三角形の多角形領域への集約は、(たとえば、平面スイープ法を使用した)平面計算ジオメトリの標準問題に減らすことができます。残りは簡単です(GISの場合)。

この画像は、ダウンタウンを見下ろしているビューアーを中心にしたノモニック投影でシミュレートされた高層ビルの小さな都市を示しています。GISは、これらの建物の側面と屋根を表すポリゴンを「結合」(結合)し、残っている(白い)スペースの面積を計算できます。直線的な建築線が曲線ではなく線分としてレンダリングされるため、ノモニック投影法が選択されました。

シミュレートされた建物

地上と建物だけがある場合、GISを使用してこの計算を行うことができます。ほとんどの場合、建物は長方形のコレクションとして利用できます。長方形の頂点には、ビューアーに対するユークリッド座標(x、y、z)があります。それらを球座標、つまり緯度と経度に変換します。変換された長方形のポリゴンを作成します。これをすべての建物のすべての部分のすべての長方形に対して実行し、「ポリゴンフィーチャレイヤー」を作成します。次に、GISで、(1)フィーチャの集合論的結合を計算し、(2)結果の面積を計算し、(3)これを地球の表面積の半分から減算します(残りの半分は地面用です)。 (4)地球の全面積で割る(100倍してパーセンテージを得る)。計算の労力はN * log(N)に比例します。Nは頂点の数です。精度は、GISが長方形をどれだけうまく表現しているかに依存します(長方形の側面をより間隔の狭い頂点のシーケンスに分割する必要がある場合があります)。精度の要件に応じて、モンテカルロベースのアプローチ(たとえば、別の応答で提唱されたレイトレーシング)数十万以上の頂点がある場合、つまり視聴者が数万の建物に完全に囲まれている(そしてその一部を見ることができる)場合:-)


私は衛星調査を行い、建物の高さと建物間の距離を計算しました。そのデータを使用して、立っている場所に応じて目に見える空の割合を計算しますか?可能であれば例を示して

@chris元の質問を編集しても構いません。質問のどの側面を修正したかを示すだけで、既存の回答やコメントのコンテキストを人々が理解できます。
whuber

投影後に重複するオクルーダーが重複してカウントされるのを防ぐために、ユニオンステップが必要であることをより明確にしたいですか?
ダンS.

@Dan「union」という単語は、ステップ1のオリジナルにあります:-)。
whuber

@whuberそうです。あなたの編集の前に私のコメントが入ったと思います。それか、昨日の深刻なカフェイン不足の結果です。
ダンS.

5

これは、GISではなくコンピュータグラフィックスの世界からの回答です。したがって、使用するツールの指示ではなく、アルゴリズムの説明です。

定義:光線は原点+方向です。原点から始まり、その方向に沿って無限に続く線です。

次の基本的な材料が必要です。

  • 特定の光線が地面に当たるかどうかをテストする機能。

  • 特定の光線が建物に当たるかどうかをテストする機能。

  • 3Dデカルト座標空間内のすべてのデータ(建物、地面を表す情報)。

レイテスト用に実装する正確な公式は、「地面」(完全な球体?地形?)と "建物"(押し出された長方形?完全な3Dモデル?)の表現方法によって異なります。単純なジオメトリの場合、それらは見つけやすく、実装も簡単です。(たとえば、「レイキューブの交差点」を検索します)。

いずれにせよ、そこからのポイントからの空の可視性の割合に関する答えは簡単です。クエリポイントからのランダムな方向で多くの光線を発射します。テストポイントから見える空の割合は、建物や地面に当たらない光線の数に等しくなります。

答えは正確ではありませんが、光線を追加するだけで任意のレベルの精度で計算できます。

上記のように、必ずしも非常に高速ではありません。しかし、適用できる十分に文書化された最適化の大部分があります。

(複数のポイントと同じ建物のデータセット全体の空の可視性を計算するために、このアプローチは、単純な空間インデックスの追加後に再投影ベースのアプローチを水面から吹き飛ばすことを期待します。)


主な問題は、光線の数の平方根でのみ精度が向上することです。たとえば、空の割合が50%の場合、5%の精度を得るには100本の光線が必要です(つまり、実際に95%が+ -10%以内に到達する自信があることを意味します)。 %、(3桁)など
whuber

@whuber私は同意しますが、(1)説明された質問に対して、1桁または2桁を超える精度は愚か者の使いであり、(2)適応サンプリングは「十分に文書化された最適化の巨大なボディ」に分類されます過去;)。しかし、それが「最良の」アプローチであるかどうかは確かに非常に状況的です。
ダンS.

@Dan OK、適応サンプリングは良いアイデアです。しかし、実際にはどのように実行しますか?DEMと、たとえば近くに数十の建物があるとします。アルゴリズムは正確にどのように機能しますか?空の範囲を直接計算するよりも単純または正確な効果的なアルゴリズムを想像するのは困難です。
whuber

@whuberいくつかの部分で返信します... 1つ目:適応サンプリングは、情報を提供する可能性が高い場所に光線をバイアスし、統合するときにバイアスを考慮します。シンプルで効果的なアプローチは、均一な初期サンプリングを実行してから、十分に不均一な半空間を再帰的に再分割および再サンプリングすることです。最終回答=サンプルの加重平均(重量=サーチスペースを含むサンプルの面積)。
ダンS.

精度について:適応サンプリングとは、精度を推論するのが難しいことを意味します。初期の均一サンプルから得られるのと同じベースライン精度に加えて、シーンジオメトリの適応手法と高周波フィーチャのスケールに大きく依存する追加の精度が得られます。ただし、「実世界」の状況では、ソースデータのエラーよりも非常に迅速にエラーに収束できると考えています。
ダンS.

3

スカイビューファクター(SVF)は、2次元表示から見た特定の観測ポイント上の可視空(Ω)の部分によって定義されます(図aを参照)。このアルゴリズムは、指定された半径R(b)へのn(ここでは8つが示されている)方向の地平線γiの垂直仰角を計算します。

スカイビューファクターの定義 スカイビューファクターは、既存の視覚化手法の欠点、たとえば、分析的な陰影シェーディングでの指向性照明の問題を克服するために提案されています。

見える空の部分を表現するための最も便利な尺度は立体角Ωです。これは、オブザーバーから見たオブジェクトの大きさの尺度です。オブジェクトの立体角は、観測点を中心とした単一球へのオブジェクトの投影の面積Aに比例します。

SVFの範囲は0〜1です。1に近い値は、半球のほぼ全体が見えることを意味します。これは、露出フィーチャ(平面とピーク)の場合です。一方、0に近い値は、空がほとんど見えない場所。SVFは物理量です(垂直方向の誇張によって標高データを操作しない場合)。

@mic_cordが指摘したように、Remote Sens。2011、3(2)、398-415でSVFを使用したデータ視覚化に関する論文が公開されています。doi:10.3390 / rs3020398

SVF(など)を計算するための無料のツールは、http://iaps.zrc-sazu.si/en/rvt#vで入手でき ます。


+1イラストと参考文献は、これに明確さと権限を追加します。最初の投稿はこちらです。当サイトへようこそ!
whuber

2

Ecotect(現在はAutoDesk ツール)を使用すると、これを行うことができます。より一般的には、これは昼光照明の分野で頻繁に検討されており、この分野のツールはGISよりも使いやすいかもしれません。(私はこれを実行して日射量を計算できるGISプラグインを聞いたことがありますが、それを見つけることができませんでした)。


ESRIのソーラーアナリスト?(投影された空のグリッドを作成してから、グリッドを要約することにより機能します。)
whuber

1
私は植物にのみ適しだと思ったし、建物のovershadowing考慮していない、などesri.com/software/arcgis/extensions/spatialanalyst/solar.html:例えば建物のヘルプファイルは、それが地形を考慮することに言及はなく、助け。 arcgis.com/en/arcgisdesktop/10.0/help/index.html#/...
djq

建物(少なくとも張り出しのない建物)は、簡単にグリッドに焼き付けることができます。小さなセルサイズが必要なため、これはおそらく効率的な方法ではありません(Solar Analystには独自の制限があります...)。私はちょうどあなたがそれを考えていたかもしれないと思った。
whuber

@whuber私は壁の太陽への露出についてもっと考えていました(たとえば、どの地域が南に面しているか)。計算はグリッドセル領域のみを考慮し、「壁」は考慮しないと仮定しました(ボクセルではなくピクセルがそれを記述する別の方法かもしれません)。
djq

2

GRASS GISバージョン7(実際には安定していない)では、コマンドがありr.skyview(コマンドに基づいてr.horizo​​n安定GRASSのV.6でもご覧になれますが、)。

テレインフィーチャの高さ(建物の高さなど)に対応するピクセル値で、テレインモデルを表すラスターイメージを読み取り、ピクセルごとに「スカイビューファクター」を計算します。

まず、データ(不明な形式)をラスターデータセットに変換する必要があります。

見る:

http://grass.osgeo.org/grass70/manuals/addons/r.skyview.html

http://www.mdpi.com/2072-4292/3/2/398

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.