QGISでの時間的最近傍分析

Nov 30 2020

QGISで時間的最近傍分析を行うにはどうすればよいですか?

それが正しい用語であるかどうかはわかりませんが、基本的に、5年間で約100,000件の住宅価格トランザクションを含むデータセットがあります。この間、新しい駅が建設されました。基本的な最近傍分析を実行する方法を知っていますが、トランザクション時に最近傍の駅を決定するために一時的なNNAを実行したいと思います。

回答

6 Babel Nov 30 2020 at 22:13

ここでこの答えからインスピレーションを得て https://gis.stackexchange.com/a/335914/88814、仮想レイヤーを作成できます。

残念ながら、Processing Toolbox / Vector analysis / Distance to nearest hub (line to hub)高度な設定、フィルター、条件などは許可されていません。

と呼ばれる2つのポイントレイヤーがあるとtransactionsstationsます。どちらにもタイムスタンプが含まれています。トランザクションが発生した日付は、time_of_transaction駅が開いた時刻timestamp_stationsです。

仮想レイヤーを作成し、次のクエリを貼り付けます。

SELECT trs.fid as id_transaction, st.fid as id_station,
       ROUND(MIN(ST_Distance(trs.geometry, st.geometry)),2) AS distance
FROM transactions AS trs, stations AS st
WHERE st.timestamp_stations < trs.time_of_transaction
GROUP BY trs.fid
ORDER BY distance DESC

これにより、トランザクションが発生したときに存在していた最寄りの駅とのトランザクションのリストが表示されます。クエリの結果は次のようになります。これは、一致する最寄りの列車の駅IDを持つtransaction_idのリストです。

次のスクリーンショットで確認できます。赤い点はトランザクション(家)、青い点は1つの駅です。結果を比較します。

赤い点11(下部)には、最も近い点として青い点18(左側の中央)があります-いくつかの青い点が近くにあります(3番のように)が、トランザクションよりも新しいため、まだありませんトランザクションが発生したときに存在します。

このトランザクションはすべての青い(駅)ドットに関連付けられた日付より前に行われたため、赤い点10(中央)はまったく表示されません。この時点では駅が存在しないため、最も近い駅はありません。

赤い点2(中央)には、最も近い青い点21がありませんが、ありません。11は遠くにありますが、古いものです。トランザクションの時点ですでに存在していたものです。

新しいテンポラルコントローラー(QGIS 3.14から利用可能-古いバージョンの場合はtimemanagerプラグインを使用)を使用して、アニメーションの時系列を生成して結果を確認できます-現在の時間枠でどの駅がこの時点で存在していたかを示すスクリーンショットを参照してください時間(時間設定はステーションレイヤーの時間タブに蓄積されます)。これにより、4か月のタイムスロット(トランザクションレイヤーの時間タブでイベント期間を4か月に設定)のトランザクションが表示されます。クエリによって生成された接続が、現時点で最も近い駅に実際に対応していることがはっきりとわかります。