Вимірювання відстаней між одночасними точками


9

Я працюю з даними GPS, тому у мене є UTM з інформацією про дату / час. У мене є 2 групи видів (лоси та вовки). Я хочу приєднати інформацію від лосів до вовків, які відповідають часу. Так, місце розташування 1 від лося 1 було в 2007-03-26 14:33:49 для всіх вовків, які були зафіксовані приблизно в один і той же час. Приблизно це важливо - це означає, що мені доведеться мати вікно часу або буфер, щоб шукати всі місця вовків, які знаходилися протягом 30 хвилин в буфері.

Я шукаю сценарій або інструмент, який встановить буфер вікон +/- X хв і зможе "пакетно" обробити процес. Я маю щонайменше 30 лосів і 30 вовків - тож робити відповідність однієї пари за один раз не корисно. Після того, як у мене збігаються дата / час, я хочу обчислити відстань між місцями XY лося та вовка та різницею у часі. Я хотів би отримати такий результат:

individualmooseID | mooseDate | mooseX | mooseY | individualwolfID | wolfDate | wolfX | wolfY | Distance(m) | TimeDiff (min)

MooseID може збігатися до декількох РІЗНИХ вовчих ID за той самий проміжок часу. Будь-які пропозиції будуть вдячні. Я написав код для R, але він не працює. Дивіться моє запитання: https://stackoverflow.com/q/15646365/675742, і мені доведеться внести дані в ArcGIS в якийсь момент, тому якщо я можу пропустити R і зробити це все в ArcGIS тоді ВЕЛИКО!


4
Я успішно це зробив давно, створивши два шари, координати яких були часом плюс штучне значення y , y = 0 для одного набору даних, а y = деяка константа для іншого набору даних. На даний момент ви можете використовувати просторові з'єднання, буферизацію та інші форми просторового аналізу, щоб відповісти на ваше запитання, оскільки близькість у цих штучних координатах така ж, як і близькість у часі.
whuber

Відповіді:


4

Такі набори даних, безумовно, можуть давати дуже багато інформації.

Я б робив це в середовищі просторової бази даних, бажано PostgreSQL / PostGIS.

Те, що ви хочете зробити, схоже на просте приєднання як до просторових, так і часових даних.

Тоді ви робите все за один запит. Складною частиною може бути оптимізація індексів за час приєднання. Я думаю, набір даних досить великий.

Запит може виглядати приблизно так (читайте його як псевдокод, особливо часову частину))

SELECT DISTINCT ON (moose_id, wolf_id, moose_time) 
moose_id, moose_geom, moose_time, wolf_id, wolf_geom, wolf_time,
ST_Distance(moose_geom, wolf_geom) as dist, moose_time-wolf_time as time_diff
FROM
moose_table as mt inner join wolf_table as wt 
on 
ST_DWithin(moose_geom, wolf_geom,10000) 
AND moose_time > ( wolf_time-30) 
AND moose_time < (wolf_time + 30) 
ORDER BY abs(time_diff), moose_id, wolf_id, moose_time;

дві примітки:
1) Я використовував ST_DWithin, щоб обмежитися сполученням вовчих мусів, що ближче 10000 метрів. Це спосіб зменшити обчислення, а не обчислити кожну можливу комбінацію.
2) Я використовував DISTINCT ON. Для кожної комбінації лось-вовк на кожній реєстрації лося слід отримувати лише відстань, коли вони були найбільш близькими за часом.

Але я бачу кілька інших цікавих запитів, які потрібно перевірити на вашому наборі даних, які мають дати цікаву інформацію про те, як вовки полюють на лосів.

Наприклад, ви можете, замість того, щоб знайти відстань між вовком і лосями, коли вони максимально близькі за часом, дізнатися, коли вони максимально близькі між собою. Це просто перестановка замовлення. Тоді, у випадках, коли вовк слідкує за лосом, ви побачите, як відстає вовк у часі. Звичайно, це будуть приблизні значення, оскільки я гадаю, що вовки не тільки відстежують, але й ходять запахом вітру, але в деяких випадках ви побачите, як далеко відстає вовк, і як це змінюється. Разом зі швидкістю вовка та лося це може дати хороший зразок того, що відбувається.

Швидкість, яку ви, звичайно, отримуєте з іншого простого запиту :-)

Отже, помістіть вам таблиці в базу даних postgis і зробіть там роботу.

Якщо ви використовуєте ArcGIS 10 або 10.1, ви можете переглядати дані безпосередньо з бази даних. Або від QGIS. Це більш зріла комбінація PostGIS-QGIS.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.