Я работаю с данными 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 может совпадать с несколькими РАЗЛИЧНЫМИ wolfID за один и тот же период времени. Мы ценим любые предложения. Я написал код для R, но он не работает, см. Мой вопрос: https://stackoverflow.com/q/15646365/675742, и в какой-то момент мне придется перенести данные в ArcGIS, так что если я смогу пропустить R и сделать все это в ArcGIS, то БОЛЬШОЕ!
Ответы:
Подобные наборы данных, конечно, могут дать очень много информации.
Я хотел бы сделать это в среде пространственной базы данных, предпочтительно PostgreSQL / PostGIS.
То, что вы хотите сделать, похоже на простое объединение как пространственных, так и временных данных.
Затем вы делаете все в одном запросе. Сложнее всего было бы оптимизировать индексы для времени объединения. Я думаю, наборы данных довольно большие.
Запрос может выглядеть примерно так (читается как псевдокод, особенно часть времени))
две заметки:
1) Я использовал ST_DWithin, чтобы ограничить спаривание волчьих лосей ближе 10000 метров. Это способ уменьшить расчет и не рассчитывать каждую возможную комбинацию.
2) Я использовал DISTINCT ON. Для каждой комбинации лося-волка при каждой регистрации лося вы должны получать только расстояние, когда они были наиболее близки по времени.
Но я вижу несколько других интересных запросов для проверки вашего набора данных, которые должны дать интересную информацию о том, как волки охотятся на лося.
Например, вы можете вместо того, чтобы находить расстояние между волком и лосем, когда они находятся как можно ближе во времени, выяснить, когда они находятся как можно ближе к пространству. Это просто переставляет порядок. Затем, в случаях, когда волк следует за лосем, вы увидите, насколько далеко позади волк. Конечно, это будут грубые значения, так как я предполагаю, что волки не только следуют, но и следуют запаху ветра, но в некоторых случаях вы увидите, как далеко позади волка, и как это меняется. Вместе со скоростью волка и лося, это может дать хорошую картину того, что происходит.
Скорость вы, конечно, получаете от другого простого запроса :-)
Итак, поместите ваши таблицы в базу данных postgis и сделайте всю работу там.
Если вы используете ArcGIS 10 или 10.1, вы можете просматривать данные непосредственно из базы данных. Или из QGIS. Это более зрелая комбинация PostGIS-QGIS.
источник