Eşzamanlı noktalar arasındaki mesafelerin ölçülmesi


9

GPS verileriyle çalışıyorum ve bu yüzden DATE / Time bilgilerine sahip UTM'ler var. 2 tür grubum var (geyik ve kurtlar). Geyikten zamana uyan kurtlara kadar bilgiye katılmak istiyorum. Bu nedenle, geyik 1'den konum 1, yaklaşık aynı zamanda kaydedilen tüm kurtlara 2007-03-26 14:33:49 idi . Yaklaşık olarak anahtar - bu, o zaman zarfında 30 dakikalık arabellekteki tüm kurt konumlarını aramak için bir zaman penceresine veya arabelleğe sahip olmam gerektiği anlamına gelir.

Bir pencere tamponu +/- X dakika ayarlayacak ve "toplu" işlemi mümkün olacak bir komut dosyası veya araç arıyorum. En az 30 geyik ve 30 kurt yaşıyorum - bu yüzden bir seferde eşleşen bir çifti yapmak yardımcı olmaz. Tarihi / saati eşleştirdikten sonra, geyik ve kurtun XY konumları ile zaman farkı arasındaki mesafeyi hesaplamak istiyorum. Gibi bir çıktı istiyorum:

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

MooseID, aynı süre boyunca birkaç FARKLI wolfID ile eşleşebilir. Herhangi bir öneriniz takdir edilecektir. Ben R için bir kod yazdım ama çalışmıyor benim sorum bakın: https://stackoverflow.com/q/15646365/675742 ve ben bir noktada ArcGIS içine veri getirmek zorunda kalacak, böylece R atlamak ve yapmak hepsi ArcGIS sonra BÜYÜK!


4
Bunu uzun zaman önce, koordinatları zaman artı yapay bir y değeri olan iki katman oluşturarak başarılı bir şekilde yaptım , bir veri kümesi için y = 0 ve diğer veri kümesi için y = biraz sabit. Bu noktada, sorunuzu cevaplamak için uzamsal birleşimleri, arabelleğe alma ve diğer uzamsal analiz biçimlerini kullanabilirsiniz, çünkü bu yapay koordinatlarda yakınlık zamanla yakınlık ile aynıdır.
whuber

Yanıtlar:


4

Bunun gibi veri setleri elbette çok fazla bilgi verebilir.

Bunu mekansal bir veritabanı ortamında, tercihen PostgreSQL / PostGIS'de yapardım.

Yapmak istediğiniz şey, hem uzamsal hem de zaman verilerine basit bir birleşme gibi görünüyor.

Sonra her şeyi tek bir sorguda yaparsınız. Zor kısmı, birleştirme zamanı için dizinleri optimize etmek olabilir. Sanırım veri setleri oldukça büyük.

Sorgu böyle bir şeye benzeyebilir (sözde kodu, özellikle de zaman bölümünü okuyun)

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;

iki not:
1) ST_DWithin'i, 10000 metreden daha yakın olan kurt-geyiği eşleştirmeyi kısıtlamak için kullandım. Bu, hesaplamayı azaltmanın ve olası her kombinasyonu hesaplamamanın bir yoludur.
2) DISTINCT ON kullandım. Her geyik zamanı kaydındaki her geyik-kurt kombinasyonu için, sadece en yakın zamanda olan mesafeyi almalısınız.

Ancak veri kümelerinizi test etmek için kurtların geyikleri avlama şekli hakkında ilginç bilgiler vermesi gereken birkaç ilginç sorgu görüyorum.

Örneğin, kurt ve geyik arasındaki mesafeyi mümkün olduğunca yakın olduklarında bulmak yerine, mekansal olarak mümkün olduğunca yakın olduklarını öğrenebilirsiniz. Bu sadece düzeni yeniden düzenliyor. Sonra, kurt geyiği takip ettiği durumlarda, kurtun zamanın ne kadar gerisinde olduğunu göreceksiniz. Tabii ki kaba değerler olacak çünkü kurtların sadece iz sürmekle kalmayıp aynı zamanda rüzgar sürüklenen kokusu ile gitmesi değil, bazı durumlarda kurtun ne kadar arkasında olduğunu ve bunun nasıl değiştiğini göreceksiniz. Kurt ve geyiğin hızı ile birlikte, neler olup bittiğine dair iyi bir desen verebilir.

Tabii ki başka bir basit sorgu almak hız :-)

Yani, tabloları bir postgis veritabanına koyun ve işi orada yapın.

ArcGIS 10 veya 10.1 kullanıyorsanız, verileri doğrudan veritabanından izleyebilirsiniz. Veya QGIS'ten. Bu daha olgun bir kombinasyon PostGIS-QGIS.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.