Mengukur jarak antara titik simultan


9

Saya bekerja dengan data GPS dan jadi saya punya UTM dengan informasi DATE / Waktu. Saya memiliki 2 kelompok spesies (rusa besar dan serigala). Saya ingin bergabung dengan informasi dari rusa ke serigala yang cocok dengan waktu. Jadi, lokasi 1 dari moose 1 berada di 2007-03-26 14:33:49 untuk semua serigala yang direkam pada waktu yang hampir bersamaan. Kuncinya kira-kira - itu artinya saya harus memiliki jendela waktu atau buffer untuk mencari semua lokasi serigala yang berada dalam buffer 30 menit sekitar waktu itu.

Saya sedang mencari skrip atau alat yang akan mengatur buffer jendela +/- X min dan akan dapat "batch" proses. Ive setidaknya 30 rusa dan 30 serigala - melakukan pencocokan satu pasang pada satu waktu tidak membantu. Setelah saya mendapatkan tanggal / waktu yang cocok, saya kemudian ingin menghitung jarak antara lokasi XY rusa dan serigala dan perbedaan waktu. Saya ingin keluaran seperti:

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

MooseID dapat mencocokkan hingga beberapa Wolfolf BERBEDA untuk periode waktu yang sama. Setiap saran akan dihargai. Saya telah menulis kode untuk R tetapi tidak berfungsi lihat pertanyaan saya: https://stackoverflow.com/q/15646365/675742 dan saya harus membawa data ke ArcGIS di beberapa titik jadi jika saya bisa melewati R dan melakukan semuanya di ArcGIS lalu HEBAT!


4
Saya berhasil melakukan ini sejak lama dengan membuat dua layer yang koordinatnya waktu ditambah nilai buatan y , dengan y = 0 untuk satu dataset dan y = beberapa konstanta untuk dataset lainnya. Pada titik ini Anda dapat menggunakan gabungan spasial, buffering, dan bentuk analisis spasial lainnya untuk menjawab pertanyaan Anda, karena kedekatan dalam koordinat buatan ini sama dengan kedekatan waktu.
whuber

Jawaban:


4

Kumpulan data seperti ini tentu saja dapat memberikan banyak informasi.

Saya akan melakukan ini dalam lingkungan basis data spasial, lebih disukai PostgreSQL / PostGIS.

Apa yang ingin Anda lakukan sepertinya penggabungan sederhana pada data spasial dan waktu.

Kemudian Anda melakukan segalanya dalam satu permintaan. Bagian yang sulit mungkin untuk mengoptimalkan indeks untuk waktu bergabung. Saya kira set datanya cukup besar.

Kueri dapat terlihat seperti ini (baca sebagai kode pseudo, terutama bagian waktu)

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;

dua catatan:
1) Saya menggunakan ST_DWithin untuk membatasi memasangkan serigala-rusa yang lebih dekat dari 10.000 meter. Itu adalah cara untuk mengurangi perhitungan dan tidak menghitung setiap kombinasi yang mungkin.
2) Saya menggunakan DISTINCT ON. Untuk setiap kombinasi serigala-rusa pada setiap pendaftaran waktu rusa, Anda hanya akan mendapatkan jarak ketika mereka paling dekat dalam waktu.

Tapi saya melihat beberapa pertanyaan menarik lainnya untuk menguji set data Anda yang seharusnya memberikan informasi menarik tentang cara serigala memburu moose.

Misalnya Anda bisa, alih-alih menemukan jarak antara serigala dan rusa besar ketika mereka sedekat mungkin dalam waktu mencari tahu kapan mereka sedekat mungkin secara spasial. Itu hanya mengatur ulang pemesanan. Kemudian, dalam kasus ketika serigala mengikuti rusa besar, Anda akan melihat seberapa jauh waktu serigala tertinggal. Tentu saja itu akan menjadi nilai-nilai kasar karena saya kira serigala tidak hanya melacak tetapi juga pergi oleh aroma angin yang melayang tetapi dalam beberapa kasus Anda akan melihat seberapa jauh di belakang serigala itu, dan bagaimana itu berubah. Bersama dengan kecepatan serigala dan rusa besar, itu mungkin memberikan pola yang baik tentang apa yang sedang terjadi.

Kecepatan yang tentu saja Anda dapatkan dari permintaan sederhana lain :-)

Jadi, letakkan tabel Anda di database postgis dan lakukan pekerjaan di sana.

Jika Anda menggunakan ArcGIS 10 atau 10.1 Anda dapat menonton data langsung dari database. Atau dari QGIS. Itu adalah kombinasi PostGIS-QGIS yang lebih matang.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.