저장, 시각화 및 분석을 위해 GPS 트랙을 가장 잘 모델링하는 방법은 무엇입니까?


17

GPS 트랙 및 웨이 포인트 (대부분 속도, 등급 및 일부 간단한 통계와 같은 메트릭을 저장, 표시 및 계산)를 처리하는 소프트웨어를 작성하려고합니다.

트랙 포인트와 관련하여 가장 개념적으로 강력한 데이터 모델이 무엇인지 궁금합니다. 다음은 "후보자"입니다.

  1. 트랙을 일련의 트랙 포인트로 간주 :

    1.1. 지도 투영은 2D이므로 트랙은 "2D"로 간주됩니다. 트랙 포인트에는 고도가 있거나 없을 수 있고 타임 스탬프가 있거나 없을 수 있습니다. 고도 및 타임 스탬프는 "extras", "선택적"으로 간주됩니다. 지상 애플리케이션의 경우 고도는 위도 / 경도의 직접 함수입니다 (DEM을 통해 얻을 수 있음).

    1.2. 지리적 공간이 실제로 3D이고 수신기의 궤도가 3D이기 때문에 트랙은 "3D"로 간주됩니다 (2D 투영은 데이터 축소의 한 형태입니다). 타임 스탬프가 있거나 없을 수 있습니다 (트랙은 손으로 그릴 수 있음).

    1.3. 트랙은 "4D"(3 공간 + 시간)로 간주됩니다. 따라서 손으로 그린 ​​맵은 고도 및 타임 스탬프가 null있거나없는 특별한 경우 이지만 트랙 포인트 속성은 항상 "있음"입니다.

  2. 트랙은 스트림의 사전으로 간주되며 모든 스트림의 길이는 같습니다. 위도 목록, 경도 목록, 고도 목록, 타임 스탬프 등이 있습니다. 이렇게하면 각 속성의 통계를 쉽게 계산할 수 있으며 Trackpoint의 개념은 의미 상 "가상"이됩니다. 많은 시내의 단면.

내가 올바르게 이해하면 GPX 형식은 1.1을 채택하고 KML은 1.2를 채택합니다. (타임 스탬프를 지원하지 않음) Strava API는 2 (JSON 형식)를 채택하지만 결국 모델화, 계산 표시 및 숫자 처리가 아니라 직렬화 및 저장을위한 FILE 형식 일뿐입니다.

객체 지향적 의미에서 선호되는 형태가 있습니까? 그 이유는 무엇입니까? (강력한 타이핑과 현명한 모델링은 적어도 의미가없는 작업을 피할 수 있다고 생각합니다)

편집 : 몇 가지 "흥미로운"추가 질문 :

  • 손으로 그린 ​​트랙이 장치에 녹음 된 트랙 로그와 동일합니까? 서로 다른 데이터 유형이어야합니까?
  • KML이 널 고도를 0으로 저장하는 것이 "정확한"것으로 간주되어야합니까? 0은 표고입니다. 표고를 모르는 경우 숫자 0을 지정하지 않아야합니까?
  • 고도가 DEM 데이터 ( "오프라인") 또는 GPS 데이터 또는 기압 데이터 ( "필드")에서 추출 된 경우 고도가있는 트랙에서 중요합니까? 이것을 Track 객체에 표시해야합니까? 다른 트랙 포인트 속성에 저장 되었습니까? 무시 했습니까? 서로 다른 콜렉션 데이터 유형이어야합니까?
  • 맵 편집기에서 장치 녹음 트랙을 편집하거나 (포인트 추가, 이동 및 제거) 다른 날짜의 트랙을 결합하면 트랙 포인트의 타임 스탬프를 어떻게 처리해야합니까? 그것들이 null로 "재설정"되어야합니까? 이전 유형과 다른 유형의 객체 (트랙 포인트 모음)를 만들어야합니까?

3
3. 트랙은 x, y, z, m [] 및 시간 속성을 가진 포인트의 모음입니다. 캡처 된 각 포인트에 대해이 5 개의 값을 포함하는 CSV 파일은 강력한 데이터 모델에 충분합니다. 당신 같은 멋진 일을해야하는 경우 <>{}도움말을 당신이 당신의 데이터 정리 - 메타 데이터 - 당신은 잘못하고 있어요.
nagytech

1
나는 좋은 오래된 CSV에 동의하며 GPS가 기록하는 모든 것을 나타냅니다. 그러나 GPX 형식은 GPS 장치에서 일반적입니다. GPS와 KML 모두 XML 데이터 형식이므로이 링크는 가치가 있습니다. stackoverflow.com/questions/1820129/…
Pete

@Pete의 링크 된 게시물에서 XML은 '위대한'반면 모든 것이 관련이 없습니다. 무엇이든, 오버 헤드는 아무것도 처리하지 않고 데이터 저장 및 전송 방법을 부풀려줍니다. 물론, 당신이 mom-n-pop 작업이라면 이러한 문제에 직면하기에 충분한 데이터를 가질 수 없으며 숫자 크 런칭이 강렬하지 않을 것입니다. 어느 쪽이든, 당신은 XML을 멀리하여 금속 가까이에서 작업을 유지할 자원이 없습니다.
nagytech 2016 년

1
이 질문은 실제 구현보다 MODELING 및 데이터 디자인 (개념적 본질 표현)과 훨씬 관련이 있습니다. 주석은 파일 형식에 중점을두고 있습니다. 파일 형식은 데이터 자체의 특성보다 구현 매체에 더 의존하기 때문에 내가 생각한 것과는 거리가 멀습니다.
heltonbiker 2016 년

1
OO 용어로 포인트 (lat, lng, ele, time, speed, bearing 등)를 보유 할 수있는 Line 클래스를 사용했습니다. 그리고 거기에서 손으로 그린 ​​또는 의도 된 "트랙"을 나타내는 경로와 시간 / 속도 데이터가있는 실제 트랙을 나타내는 트랙. 개념적으로 나는 그것들이 다르다고 생각합니다 (손수레 제작자가 직접 제작하거나 실제 트랙과 비교하여 제공함). 이 용어는 의미론 일 뿐이지 만 실제 유형을 사용하는 것이 도움이되었습니다 (단, "트랙"으로 모두 뭉치기보다는). 또한 직렬화 형식에 관해서는 GeoJSON : en.wikipedia.org/wiki/GeoJSON을 고려할 것 입니다.
Charlie Collins

답변:


4

나는 이것에 접근하는 많은 방법이 많기 때문에이 질문에 실제로 대답 할 수 있다고 생각하지 않는다.

그러나 이러한 생각은 관련이있을 수 있습니다.

데이터 스토리지는 상대적으로 중요하지 않습니다. 사용하는 메커니즘, 데이터베이스, JSON, KML 등은 여전히 ​​"플랫 스토리지"입니다.

중요한 것은 사용하는 소프트웨어와 모델링을 수행 할 수 있도록 소프트웨어에서 데이터를 표현하는 방법입니다.

속도는 거리 x 시간 또는 GPS 장치의 출력으로 데이터를 제공하는 두 가지 방법으로 제공됩니다. 따라서 정보 항목 이외의 시간은 관련이 없습니다.

또한 트랙 시작 부분의 오프셋을 사용하여 시간을 고려할 수도 있습니다. 속도와 거리가 있다면 포인트에서 시간을 계산할 수 있습니다. (두 지점 사이의 거리는 여러 가지 다른 방법 으로 결정할 수 있습니다 )

고도는 공간 모델의 일부로 간주되어야하며, 트랙 자체에 대한 흥미로운 정보의 전체 호스트를 결정하는 데 적합합니다. 예를 들어, 등급을 계산하면 트랙을 따라 속도 변화를 이해할 수 있습니다. 등급이 없으면 가속기에서 발을 제거하여 속도가 느려지거나 속도가 상승했을 수 있습니다.

트랙과 손으로 그린 ​​트랙을 병합 할 때 시간은 거의 관련이 없습니다. 시간을 결정하기 위해 임의의 속도를 적용 할 수 있습니다 (예 : 주어진 속도로 트랙을 통과하는 시간). 며칠 간격으로 트랙을 병합하는 경우 데이터가 의미가 없으므로 시간 필드를 재설정해야합니다. 트랙 시작에서 오프셋을 사용하여 가능할 수도 있습니다.

표고를 알 수없는 경우 알 수 없으므로 0이 아니어야합니다. 음수 표고도 유효한 표고이므로 음수가 아니어야합니다. (해수면 이하의 계곡, 광산 구덩이 등)

그렇습니다, DEMS는 유효합니다, 그렇습니다 당신은 그들에게서 추출 할 수 있습니다. 충분히 정확할까요? 정확성이 문제가되지 않는 한 그렇지 않을 수도 있습니다. GPS 또는 기압 제공 고도가 가장 좋습니다.

따라서 가까운 답을 얻으려고 노력하십시오.

당신이 원하는 평면 형식으로 데이터를 저장하지만, 내가 추천 할 것입니다, 포스트 그레스PostGIS와는 그것을 멋지게 3D를 처리, 좋은 옵션입니다. 그런 다음 PostGIS의 광범위한 공간 함수를 사용하여 데이터를 조작 / 모델링 할 수 있습니다.

개발 한 특정 형식의 사용자 정의 프로그램을 사용하는 경우 배열 대신 객체 지향 접근 방식을 사용하십시오. 배열을 사용하면 데이터베이스를 사용할 수도 있습니다.


1
귀하의 시간과 관심에 감사드립니다. 귀하의 답변이 매우 흥미로 웠습니다. 그러나 한가지로, 나는 "속도"는 정식 변수이지만 시간은 그렇지 않다는 것에 동의하지 않는다. 여러 가지 이유가 있지만 주로 속도가 시간에 따른 거리의 미분이기 때문입니다. 세그먼트 시간 동안 세그먼트 거리를 도출하면 항상 좋은 속도와 특히 좋은 평균 속도 (인스턴트 속도보다 유용하다는 것을 알 수 있음)를 얻습니다. 반면에 속도를 적분하면 적은 수의 샘플 후에 적분 오차로 인해 잘못된 결과가 발생합니다.
heltonbiker

2
예, 그 점을 인정할 수 있습니다. 그러나 GPS 트랙을 사용하면 위치 오류가 발생할 수 있습니다. 그것은 당신이 얻을 수있는 정확성의 문제입니다. 동의합니다. 시간은 매우 정확하지만 GPS 위치 오류로 인해 오류를 사용할 수 있습니다. 트랙 포인트에서 1 초 간격은 1 초이지만 GPS 내부에서는 알고리즘이 추정 된 위치에 도달하기 위해 보간 될 수 있습니다. 데이터의 입도는 선택된 분석 방법에 큰 영향을 미칠 것입니다
Mark Cupitt

아주 잘 넣었습니다. 그래서 나는 이미 "순간 속도"를 플로팅하는 것을 포기했습니다. 일종의 "순간 평균 속도"로갑니다. 마지막 N 분의 속도 " 그것은 매우 멋지게 꾸며졌으며 여행에 따른 적절한 속도 변화를 제공합니다. 그러나 적절한 계산은 까다로울 수 있으며 대부분 계산 집약적입니다.
heltonbiker

0

다른 답변에서 이미 언급했듯이 다양한 접근법이 있습니다. "개념적으로 견고한 데이터 모델"을 요청한 이후, 많은 연구 끝에 "움직이는 객체"개념에 대해 서로 다른 두 가지 접근 방식을 제공하는 두 가지 훌륭한 지식을 발견했으며, 중복되는 부분이 많았습니다 (좋은 의미).

  1. Springer Verlag가 출판 한 Gennady와 Natalia Andrienko의 저서 (예를 들어 , 같은 출판사의 다른 사람들 중에서도 뛰어난 Visual Analytics of Movement )가 있습니다. 추천.
  2. ISO / OGC (ISO 191xx 규범), 특히 ISO 19107 (공간 스키마), 19108 (시간 스키마), 19111 (좌표 별 공간 참조), 19141 (이동 특징) 및 19148 (선형 참조) 의 추상 사양 (개념적 스키마)
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.