GPS 로그의 지리 데이터베이스를 구축하는 방법?


13

우리의 공중 야생 동물 조사에서 우리는 일반적으로 수십 개의 GPX 파일을 생성하고 일반적으로 GIS 응용 프로그램에 표시하기 위해 대부분 파일을 shapefile로 변환합니다. GPX 파일은 모든 (또는 거의 모든) GPS 데이터를 한 곳에 보관하는 훌륭한 방법입니다. 트랙 로그, 웨이 포인트 및 경로 정보를 편리한 형식으로 저장하는 XML 파일입니다. 그들은 Garmin의 오래된 트랙까지 여러 트랙을 저장합니다.

이 모든 트랙 데이터를 동일한 측량의 관측 데이터가있는 다른 테이블과 병행하여 공간 데이터베이스에 저장하고 싶습니다.

ogr2ogr을 사용하여 트랙을 공간 데이터베이스로 변환 할 수 있습니다.

ogr2ogr -append -f "SQLite" -dsco SPATIALITE=yes # add to table with Spatialite filetype
  -dsco INIT_WITH_EPSG=yes -t_srs epsg:4326 # using WGS84
  SURVEYDATA.sqlite GPXFILE.gpx tracks -nln tracktable; # adding tracks to 'tracktable'

그러나 이렇게하면 저장된 각 트랙을 한 줄로 가져 와서 각 트랙 포인트의 시간 / 위치 정보가 손실됩니다!

누구든지 그 정보를 보존 할 트랙 로그 데이터베이스를 만드는 영리한 방법을 알고 있습니까?

편집 :

트랙 로그는 단순한 선이 아니라 각각 고도 및 시간 속성이있는 순차 점의 모음입니다. 각 포인트는 트랙 세그먼트에 속하며,이 트랙 세그먼트는 주어진 트랙에 속하며 각 트랙 세그먼트 내의 포인트는 중단없이 취해져 링크 된 것으로 간주 될 수 있습니다. 예를 들면 다음과 같습니다.

<trk><name>ACTIVE LOG</name>
<trkseg>
<trkpt lat="-13.471403" lon="31.382982"><ele>467.818725585938</ele><time>2009-09-09T03:53:38Z</time></trkpt>
<trkpt lat="-13.471403" lon="31.382982"><ele>468.780029296875</ele><time>2009-09-09T03:53:50Z</time></trkpt>
<trkpt lat="-13.471403" lon="31.382982"><ele>465.896118164063</ele><time>2009-09-09T03:54:43Z</time></trkpt>
</trkseg>

따라서 트랙 로그를 저장하려면이 포인트 모음을 관련 데이터와 함께 저장해야합니다.

한 가지 해결책은 트랙 이름, 선분, 고도 및 시간에 대한 추가 열이있는 트랙을 포인트로로드하는 것입니다. 그래도 ogr이 트랙을 포인트로 변환하지는 않을 것이라고 생각합니다.

해결책

덕분에 지적하는 사람들 @scruss하는 gpx2spatialite 내가 함께 (OS X 10.9)를 설치 sudo easy_install gpx2spatialite. 이 도구 세트는 'drawinglife'프로젝트를 위해 설계되었으므로 대부분의 사람들에게는 필요하지 않은 '도시'정보가 있습니다. 메인 gpx2spatialite 페이지는별로 설명하지 않지만 drawinglife 위키 가 더 좋습니다. 여전히 중복 제거와 같은 문서화되지 않은 기능이 많이 있습니다!

트랙 세그먼트, 트랙, 트랙 포인트 및 웨이 포인트를 보유 할 GPX 파일 용 공간 데이터베이스를 만듭니다. 또한 다양한 트랙에 레이블을 지정하도록 설계된 '사용자'가 설정되었습니다 (sqlite는 사용자 액세스 시스템이 아니지만 그리기 생활을위한 것이기 때문에 이상하게 보입니다).

gpx2spatialite create_db MyGPXArchive.db

모든 하위 폴더를 포함하여 GPX 파일의 전체 폴더를로드하고 다음과 같이 중복 항목을 확인하고 제거하십시오.

gpx2spatialite -s -d MyGPXArchive.db -u SL25 Selous2013/ 

옵션 :

  • -s= 트랙 포인트가 도시 데이터베이스에 있는지 확인하지 않음 (많은 속도 향상)
  • -d MyGPXArchive.db = 사용할 데이터베이스;
  • -u SL25 = 사용자 SL25를 추가합니다 (수집 된 트랙 세트에 사용 된 레이블 만).
  • Selous2013 = 관심있는 트랙이있는 폴더 (하위 폴더 포함).

버그 :

  • 타임 스탬프 정보를 버리는 이전 Garmin에 트랙을 저장 한 경우 가져 오기가 중단됩니다 (GPSU와 같은 유틸리티를 사용하여 저장된 트랙을 제거). gpsbabel이 있으면 먼저 다음과 같이 파일을 필터링하십시오.

    gpsbabel -w -r -t -i gpx -f [INPUT.gpx] -x 트랙, 시작 = 20000101 -o gpx -F [OUTPUT.gpx]


FME safe.com/fme/fme-technology/fme-desktop/features를 사용 하며 Oracle Database에 대한 모든 속성을 유지합니다
Mapperz

1
@Mapperz-FME에 GPX 파일 저장을위한 특정 방법이 있습니까? 그래도 FOSS 솔루션을 따르고 있습니다.
Simbamangu

답변:


6

ptrv / gpx2spatialite 는 모든 포인트에 대한 타임 스탬프를 저장하고 트랙에 대한 속도 및 길이 데이터를 도출 함으로써이 기능을 현저히 향상시킵니다. 또한 중복 트랙을 가져 오지 않으므로 GPX 파일에 큰 파일을 공급할 수 있으며 적절하게 뭉개지게됩니다.

업데이트 : 요청 된 사용 예 :

새 데이터베이스를 초기화하십시오.

gpx2spatialite_create_db db.sqlite

단일 gpx 파일을 추가하십시오.

gpx2spatialite -d db.sqlite -u user file.gpx

(사용자 이름 사용자 가 데이터베이스에 존재하지 않으면 사용자 이름 을 생성 할 것인지 쿼리합니다. 데이터베이스는 하나 이상의 사용자에게 할당 된 트랙 / 웨이 포인트 / 라우트로 구축됩니다.)

folder / 에 모든 gpx 파일을 추가하십시오 .

gpx2spatialite -d db.sqlite -u user folder/

용도 :이 테이블과, 공간 데이터베이스의 tracklines는 폴리 라인으로서 트랙 들고 트랙 포인트 (시간, 고도 등으로) 각각의 포인트를 포함하고, 경유지 정의 된 경유지를 들어. 수많은 인덱스, 일부 세계 도시 정의 및 아직 탐색하지 않은 SLD 스타일 정보가 포함되어있을 수도 있습니다. 간단한 예를 들어, 다음은 ~ 7 년 동안의 추적 로그를 통해 고향 (토론토)을 정의하는 방법에 대한 맵입니다.

토론토 GPS 기록

투명도가 75 % 인 선을 사용하면 가장 자주 이동하는 경로가 더 어두워집니다.


Aha easy_install gpx2spatialite는 실제로 명령 행에서 액세스 할 수 있는 스크립트 로 설치 한다는 것을 인식하지 못했습니다 ! 이 user옵션은 또한 혼란스럽고 메인 페이지에서 설명하지 않으며 공간적 접근은 제한되지 않은 시스템입니다.
Simbamangu

user옵션은 여러 참가자가 트랙을 동일한 데이터베이스에 추가 할 수 있도록 Drawinglife 프로젝트에 적합합니다. 도시 태그를 제외하고 충돌의 원인을 찾은 것에 대한 힌트를 주셔서 감사합니다. 타임 스탬프가없는 GPX 파일이있는 경우 GPSBabel의 위조 시간 옵션을 사용하여 시간 데이터를 합성 할 수 있습니다 .
scruss

1
참고로, gpx2spatialite 구문이 변경되었습니다. 일반적인 수입 명령은 지금gpx2spatialite import -u user -s -d db.spatialite file1.gpx …
scruss

3

귀하의 의견을 더욱더- "FME는 GPX 파일을 저장하는 특정 방법이 있습니까?"

예, 경로, 웨이 포인트, 트랙 및 메타 데이터를 완벽하게 제어 할 수 있습니다 여기에 이미지 설명을 입력하십시오

FME는 gis 데이터와 비 공간 데이터를 함께 조작 할 수있는 매우 가치 있고 강력한 도구입니다.

자세한 내용은 http://evangelism.safe.com/fmeevangelist26/ 를 참조하십시오


2

파이썬이나 펄에서 gpx 데이터를 추출하는 자신의 프로그램을 만들기위한 아이디어가 있습니다 . 여기에서 데이터를 공간 데이터베이스에 넣는 것은 그리 쉬운 일이 아닙니다. 공간적 속성으로 저장하기에 적합한 스키마를 고려해야합니다. 어떤 속성을 유지 하시겠습니까?).


1

OGR 경로로 이동하려면 가장 좋은 방법은 Shapefile로 먼저 내보내는 방법으로, 웨이 포인트 / 트랙 포인트 / 웨이 / 트랙 구별 및 관련 메타 데이터를 나타내는 여러 셰이프 파일을 내 보낸 다음 각 파일 세트를 기본 SQLite에 병합합니다. 데이터 베이스.


-1

추가해보십시오

-lco GPS_USE_EXTENSIONS=YES

ogr2ogr 명령으로


결과 테이블이나 데이터에 영향을 미치지 않으면 서 새 테이블에서 시도했습니다. 무엇을 기대하고 있습니까?
Simbamangu

확장 된 속성을 기대하고있었습니다. 귀하의 질문을 다시 읽은 결과, 트랙을 포인트 자체로 내보내는 것 이외의 각 개별 트랙 포인트 시간을 얻는 방법은 없다고 생각합니다.
Micha
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.