特定の場所(ポイント-lat、lng)と方向(角度の間隔)から+確実に特定の深さ(たとえば100メートル)で見ることができる建物のセットを取得したいと思います。理想的には、出力として次のようなものを望みます。角度1から角度2まではユーザーが建物1を見ることができ、角度2から角度3までは建物2を見ることができます。
データ=シェープファイルで都市の建物を表すポリゴン。
入力:人の視覚的知覚を表す場所と方向(角度範囲)。
出力:
バージョン1-{BuildingID}のリスト
バージョン2(より良い)-{BuildingID、各建物の可視セグメントのセット(建物の正面)}
バージョン3(理想的な出力)-{buildingID、角度範囲のリスト}。(例:角度1から角度2まで、ユーザーは建物1を見ることができ、角度2から角度3までは建物2を見ることができます。)
使用できるツールボックス:PostGis、QGis、ruby、R
出力v1のソリューションの開始:
-与えられたポイントと方向(角度の内部)と特定の半径/深さ(たとえば100メートル)のユーザーの簡略化された視覚範囲を表す三角形の作成
-建物との交差(たとえばST_INTERSECTION )の計算)と視覚的範囲。しかし、建物は別の建物を隠すことができるので、視覚範囲と建物の間の純粋な交差は目に見える建物を追加しないかもしれません。この問題に取り組む必要があります。
更新:可能性のあるソリューション2-
与えられたポイントと方向(角度の内部)と特定の半径/深さ(例:100メートル)でユーザーの簡略化された視覚範囲を表す三角形を作成-異なる角度でn本の光線(LINE)を作成スコープを埋めます。
-すべての建物(POLYGONS)をSEGMENTS / LINESに変換します
-各レイが最も近いSEGMENTと関連するbuildingIDを見つけます。(ST_DISTANCE、ST_DWithin)
この段階では、光線と関連する建物IDのリストが必要です。
-次に、このリスト{角度の範囲、関連する建物ID}を集計できます。
より効率的な方法についてのアイデアはありますか?