본문 바로가기
GpsLog Manager (자전거 기록 관리)

GpsLog Manager - 라이딩 정보 그래프 구간 정보 확인

by 태디 2016. 4. 1.
728x90



라이딩 정보를 분석할 때 필요한 기능일 것 같아서 구현하였다. 


그래프의 특정 구간을 블럭을 지정하면 구간거리와 고도정보를 볼 수 있다. 지도상의 구간지정은 기존 루트에 색을 입혀서 


표현하는 방식이다. 고도는 구글에서 받아오는 것과 가민엣지가 측정한 데이터가 다를 수 있다. 지도 왼쪽위에 고도 정보는 


마우스로 클릭하면 출력되고 툴팁에 표시되는 정보는 가민엣지에서 생성된 데이터이다. 


보통 30~50km 정도를 라이딩 하면 GPX 파일안에 로그가 2,500 ~ 5,000건 정도가 쌓이는데 라이딩 속도와 거리에 따라 


로그 건수는 달라진다. 또 그 이상도 쌓일 수 있다. 



지도상에 루트를 그릴 때는 로그의 모든 데이터를 이용하지만 그래프를 그릴 때는 절반 정도를 이용하는데 이유는 그래프를

그릴 때 부하(프로그램 성능)가 걸릴 수 있기 때문이다. 



로컬PC에서 MS-SQL을 이용하여 DB 관리를 하면 성능상 문제가 없지만 현 프로그램은 MS-SQL의 라이트 버전인 

SQL SERVER COMPACT를 사용한다. 그래서 DB를 따로 설치할 필요가 없고 대부분의 윈도우 환경이면 사용이 가능하다.


그리고 자원(리소스)이 많이 들어가지 않는다는 장점이 있다. 

대중적으로 많이 쓰는 DB는 SqlLite인데 특히 이동형 스마트 기기 같은 모바일 분야에서 널리 쓴다. 현 프로그램도 SqlLite를 


고려해 봤지만 MSSQL이 많이 익숙하기 때문에 개발에 큰 차이가 없는 COMPACT버전을 사용하였다.  











그래프 항목에서 고도가 빠진경우는 지도에 구간거리만 표시된다. 

지도 위치(Map Position)는 구간거리를 중심으로 잡는다. 그래프에서 블록으로 지정한 구간이 짧으면 지도의 


줌 레벨이 올라간다. 길게 잡으면 반대로 지도에 보여지는 면이 많아진다.  












이전까지는 그래프에 위도와 경도 항목을 추가하여 보이지 않게 한 다음 그래프의 마우스 포인터에 위치한 위경도 값을 


DB에 있는 로그값과 비교 하여 해당 정보를 추출했지만 그래프 항목에 데이터가 많아질 수록 느려지는 단점이 있어서 


위경도 대신 순번을 가지고 DB 로그에서 직접 조회하는 방식으로 택했다. 이렇게 함으로써 또 얻게 되는 이득은 파싱할 


때 쓰는 코드를 그대로 이용하면 된다는 것이다. 파싱할 때 하는 계산을 중복 소스코드를 만들면서 할 필요가 없어졌다는 


뜻이다.












구간정보에 몇가지를 더 추가하였다. 기존에는 구간거리와 고도만 표시했는데 정보가 많이 부족하여 필요한 데이터를 


집어넣었다. 


우선 표고차는 전체거리일 때는 출발지점과 가장 높은 지점의 차를 산출 했고 구간거리에서는 처음지점과 마지막 지점의 고도차를 


적용했다. 구간거리 내리막 길의 경사도는 마이너스(-)로 표기된다.

경사도 구하는 공식 : http://philshop.co.kr/bbs/board.php?bo_table=technote&wr_id=3










구간 거리 지정은 블럭으로 지정하여 수치를 산정한다. 정보표시는 구간거리의 중간쯤에 표시하도록 했다.


이유는 시작점이나 마지막 지점에서 보여줄 경우 데이터 그리드 뷰 때문에 화면에서 가려질 수도 있기 때문이다.










불럭 지정한 구간거리가 짧은 경우 정보를 표시하지 않게 했다. 가령 수 미터만 지정해서 수치를 본다면


무의미 하기 때문이다. 그래서 픽셀(Pixel)위로 5 이하 일경우 무시하는 조건을 두었다. 









댓글