0

私は同じルートのいくつかのビデオ トラックを持っており、1 年を通してさまざまな機会に撮影されています。すべてのビデオ トラックには 1 Hz の GPS で GPS タグが付けられているため、すべてのショットの秒単位の GPS ポイントがあります。

私が達成したいのは、これらすべてのビデオ トラックを After Effects などに入れ、GPS 位置によって時間を再マッピングすることです。ルートに信号機やその他の障害物が含まれているため、トラックを時間で同期できません。

2 つのテーブルの作成から始めました。1 つはメインのビデオ トラックである summer と呼ばれ、もう 1 つは shot と呼ばれ、他のすべてのトラックを含みます。

夏の食卓はこんな感じ。

      Column   |          Type          |                             Modifiers                              | Storage | Description 
-----------+------------------------+--------------------------------------------------------------------+---------+-------------
 id        | integer                | not null default nextval('summer_id_seq'::regclass) | plain   | 
 timecode  | time without time zone | not null                                                           | plain   | 
 spring_id | integer                |                                                                    | plain   | 
 autumn_id | integer                |                                                                    | plain   | 
 winter_id | integer                |                                                                    | plain   | 
 point     | geometry(Point,4326)   | not null                                                           | main    | 

Indexes:
    "summer_pkey" PRIMARY KEY, btree (id)
    "summer_autumn_id" btree (autumn_id)
    "summer_point_id" gist (point)
    "summer_spring_id" btree (spring_id)
    "summer_winter_id" btree (winter_id)
Foreign-key constraints:
    "summer_autumn_id_fkey" FOREIGN KEY (autumn_id) REFERENCES shot(id) DEFERRABLE INITIALLY DEFERRED
    "summer_spring_id_fkey" FOREIGN KEY (spring_id) REFERENCES shot(id) DEFERRABLE INITIALLY DEFERRED
    "summer_winter_id_fkey" FOREIGN KEY (winter_id) REFERENCES shot(id) DEFERRABLE INITIALLY DEFERRED
Has OIDs: no

ショットテーブルは次のようになります。

  Column  |          Type          |                             Modifiers                             | Storage  | Description 
----------+------------------------+-------------------------------------------------------------------+----------+-------------
 id       | integer                | not null default nextval('shot_id_seq'::regclass) | plain    | 
 season   | character varying(255) | not null                                                          | extended | 
 timecode | time without time zone | not null                                                          | plain    | 
 point    | geometry(Point,4326)   | not null                                                          | main     | 

Indexes:
    "shot_pkey" PRIMARY KEY, btree (id)
    "shot_point_id" gist (point)
Referenced by:
    TABLE "summer" CONSTRAINT "summer_autumn_id_fkey" FOREIGN KEY (autumn_id) REFERENCES shot(id) DEFERRABLE INITIALLY DEFERRED
    TABLE "summer" CONSTRAINT "summer_spring_id_fkey" FOREIGN KEY (spring_id) REFERENCES shot(id) DEFERRABLE INITIALLY DEFERRED
    TABLE "summer" CONSTRAINT "summer_winter_id_fkey" FOREIGN KEY (winter_id) REFERENCES shot(id) DEFERRABLE INITIALLY DEFERRED
Has OIDs: no

したがって、基本的に私がやりたいことは、夏のテーブルのすべての行を実行し、異なるテイクごとに各行に最も近いポイントを見つけ、この情報で夏のテーブルを更新することです。

個人的にはうまくいかない理由がわからないクエリをまとめましたが、出力は奇妙で、After Effects での時間の再マッピングではまったく機能しません。

SELECT DISTINCT ON (summer.id)
   summer.id AS summer_id, shot.id AS autumn_id,
   ST_Distance_Sphere(summer.point, shot.point) AS distance
FROM shot.summer summer
   LEFT JOIN shot.shot.track
     ON ST_DFullyWithin (summer.point, shot.point, 0.001)
     AND shot.season='autumn'
ORDER BY summer.id ASC;

誰かが私を正しい方向に向けることができますか?

ありがとう!

4

1 に答える 1

1

私の側からの推測です(「出力がおかしい」について少し詳しく説明していただけますか?)

地理座標を使用している場合、半径 0.001 は非常に長い距離です (南北に約 100 m、北にどれだけ離れているかに応じて、東西はそれより少なくなります)。テーブル。私が理解している限りでは、「秋のポイント」ごとに 1 つの「夏のポイント」が必要です。最も近いポイントを選択する必要があります。また、データを同じ x 解像度と y 解像度を持つ投影法に再投影します (たとえば、東西の距離が大きすぎる場合を除き、utm)。南北距離がメートルの場合、0.001 度の数値差が生じますが、東西距離が ~55 メートルの場合、同じ数値差が生じます。つまり、計算では、東向きの 55 メートルの誤差は、北向きの 110 メートルの誤差と同じです...

これがあなたを正しい方向に向けたことを願っています。

于 2012-10-23T08:14:17.067 に答える