동 시점 사이의 거리 측정


9

GPS 데이터로 작업 중이므로 날짜 / 시간 정보가있는 UTM이 있습니다. 나는 두 그룹의 종 (무스와 늑대)이 있습니다. 무스에서 늑대에 이르기까지 시간에 맞는 정보를 결합하고 싶습니다. 따라서 무스 1의 1 번 위치는 2007-03-26 14:33:49에 거의 동시에 기록 된 모든 늑대에게있었습니다 . 대략적으로 열쇠입니다-그것은 그 시간 주위에 30 분 안에있는 모든 늑대 위치를 찾기 위해 시간 창이나 버퍼가 있어야 함을 의미합니다.

창 버퍼 +/- X min을 설정하고 프로세스를 "일괄 처리"할 수있는 스크립트 또는 도구를 찾고 있습니다. 나는 최소한 30 마리의 늑대와 30 마리의 늑대를 가지고있어 한 번에 한 쌍씩 짝을 이루는 것은 도움이되지 않습니다. 날짜 / 시간이 일치하면 무스와 늑대의 XY 위치와 시간의 차이 사이의 거리를 계산하고 싶습니다. 다음과 같은 출력을 원합니다.

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

mooseID는 같은 기간 동안 여러 개의 다른 wolfID와 일치 할 수 있습니다. 모든 제안을 부탁드립니다. 나는 R에 대한 코드를 작성했지만 내 질문에 볼 작동하지 않습니다 : https://stackoverflow.com/q/15646365/675742을 하고 난 R을 건너 뛸 수 있습니다 그래서 만약 어떤 시점에서는 ArcGIS에 데이터를 가져올해야하고 할 것 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의보다 성숙한 조합입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.