Pada survei satwa liar udara kami, kami biasanya menghasilkan lusinan file GPX, dan biasanya mengonversinya sebagian besar menjadi shapefile untuk ditampilkan dalam aplikasi GIS. File GPX adalah cara luar biasa untuk menyimpan semua (atau hampir semua) data GPS Anda di satu tempat - file xml yang menyimpan informasi tracklog, waypoint & rute dalam satu format yang nyaman. Mereka menyimpan banyak trek, bahkan trek lama yang disimpan dari Garmin.
Saya ingin menyimpan semua data trek ini dalam database spasial, secara paralel dengan tabel lain yang memiliki data pengamatan titik dari survei yang sama.
ogr2ogr akan membiarkan saya mengonversi trek ke basis data spasial:
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'
Namun, ini mengimpor setiap trek yang disimpan sebagai garis - kehilangan informasi waktu / lokasi untuk setiap titik trek!
Adakah yang tahu cara pintar membangun database tracklog yang akan menyimpan informasi itu?
EDIT :
Tracklog bukan hanya garis - itu adalah kumpulan titik sekuensial, masing-masing dengan atribut elevasi dan waktu. Setiap titik milik segmen trek, yang pada gilirannya milik trek yang diberikan, dan poin dalam setiap segmen trek diambil tanpa gangguan dan dapat diasumsikan terkait. Sebagai contoh:
<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>
Jadi, untuk menyimpan tracklog Anda perlu menyimpan kumpulan poin ini dengan data terkait.
Salah satu solusinya mungkin memuat trek ini sebagai titik, dengan kolom tambahan untuk nama trek, segmen, ketinggian dan waktu; Saya tidak berpikir ogr akan mengkonversi trek sebagai poin.
Larutan
Terima kasih kepada @scruss yang menunjukkan gpx2spatialite , yang saya instal (OS X 10.9) sudo easy_install gpx2spatialite
. Seperangkat alat ini dirancang untuk proyek 'drawinglife' (dan dengan demikian memiliki beberapa informasi 'kota' yang mungkin tidak perlu bagi kebanyakan dari kita); halaman utama gpx2spatialite tidak menjelaskan banyak hal, tetapi wiki drawinglife lebih baik. Namun, banyak fitur tidak berdokumen - seperti menghapus duplikat!
Buat basis data spasial untuk file GPX yang akan menampung segmen trek, trek, titik trek, dan titik arah. Ini juga memiliki pengaturan 'pengguna' (yang tampaknya aneh, karena sqlite bukan sistem akses pengguna, tetapi dimaksudkan untuk drawinglife) yang dirancang untuk melabeli berbagai trek:
gpx2spatialite create_db MyGPXArchive.db
Muat seluruh folder file GPX, termasuk semua subfolder, periksa dan hapus duplikat di sepanjang jalan:
gpx2spatialite -s -d MyGPXArchive.db -u SL25 Selous2013/
Pilihan:
-s
= jangan periksa apakah trackpoint ada di database kota (mempercepatnya BANYAK)-d MyGPXArchive.db
= database yang akan digunakan;-u SL25
= tambahkan pengguna SL25 (hanya label yang saya gunakan untuk kumpulan lagu yang dikumpulkan);Selous2013
= folder (dengan subfolder) yang memiliki trek yang saya minati.
Bug:
Jika Anda telah menyimpan trek pada Garmin lama yang membuang info cap waktu, itu akan merusak impor (menghapus trek yang disimpan menggunakan utilitas seperti GPSU). Jika Anda memiliki gpsbabel , filter dulu file tersebut dengan sesuatu seperti:
gpsbabel -w -r -t -i gpx -f [INPUT.gpx] -x track, start = 20000101 -o gpx -F [OUTPUT.gpx]