ในการสำรวจสัตว์ป่าทางอากาศของเราโดยทั่วไปเราจะสร้างไฟล์ GPX หลายสิบไฟล์และโดยทั่วไปจะแปลงไฟล์เหล่านั้นให้เป็นไฟล์รูปร่างเพื่อแสดงในแอปพลิเคชัน GIS ไฟล์ GPX เป็นวิธีที่ยอดเยี่ยมในการเก็บรักษาข้อมูล GPS ของคุณทั้งหมด (หรือเกือบทั้งหมด) ไว้ในที่เดียว - เป็นไฟล์ xml ที่เก็บข้อมูล tracklog, waypoint & route ในรูปแบบเดียวที่สะดวก พวกเขาเก็บหลาย ๆ เพลงแม้กระทั่งเพลงเก่าที่บันทึกไว้จาก Garmin
ฉันต้องการจัดเก็บข้อมูลแทร็กทั้งหมดนี้ในฐานข้อมูลเชิงพื้นที่ควบคู่กับตารางอื่น ๆ ที่มีข้อมูลเชิงจุดจากแบบสำรวจเดียวกัน
ogr2ogr จะให้ฉันแปลง track เป็นฐานข้อมูล spatialite:
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'
อย่างไรก็ตามสิ่งนี้จะนำเข้าแต่ละแทร็คที่บันทึกไว้เป็นเส้น - ทำให้ข้อมูลเวลา / สถานที่หายไปสำหรับแต่ละจุดติดตาม!
ใครรู้วิธีที่ฉลาดในการสร้างฐานข้อมูล tracklog ที่จะเก็บข้อมูลนั้น
แก้ไข :
Tracklogs ไม่ได้เป็นเพียงแค่บรรทัด แต่เป็นคอลเลคชันของจุดต่อเนื่องแต่ละอันมีแอตทริบิวต์การยกระดับและเวลา แต่ละจุดเป็นของส่วนของแทร็กซึ่งเป็นของแทร็กที่กำหนดและคะแนนภายในแต่ละส่วนของแทร็กถูกนำมาใช้โดยไม่มีการหยุดชะงักและอาจสันนิษฐานว่าจะเชื่อมโยงกัน ตัวอย่างเช่น:
<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>
ดังนั้นเพื่อบันทึก tracklog คุณจำเป็นต้องบันทึกคะแนนสะสมด้วยข้อมูลที่เกี่ยวข้อง
ทางออกหนึ่งอาจจะโหลดแทร็กเหล่านี้เป็นจุดโดยมีคอลัมน์เพิ่มเติมสำหรับชื่อแทร็กเซ็กเมนต์การยกระดับและเวลา ฉันไม่คิดว่า ogr จะเปลี่ยนแทร็กเป็นคะแนนได้
วิธีการแก้
ขอขอบคุณที่ @scruss ที่ชี้ให้เห็นgpx2spatialiteซึ่งผมติดตั้ง (OS X 10.9) sudo easy_install gpx2spatialite
กับ ชุดเครื่องมือนี้ถูกออกแบบมาสำหรับโครงการ 'drawinglife' (และมีข้อมูล 'เมือง' บางส่วนที่อาจไม่จำเป็นสำหรับเราส่วนใหญ่) หน้าหลัก gpx2spatialite ไม่ได้อธิบายอะไรมาก แต่วิกิ drawinglifeนั้นดีกว่า ยังคงมีคุณสมบัติที่ไม่มีเอกสารจำนวนมาก - เช่นการลบรายการที่ซ้ำกัน!
สร้างฐานข้อมูลเชิงพื้นที่สำหรับไฟล์ GPX ซึ่งจะเก็บส่วนของแทร็กแทร็กจุดติดตามและจุดอ้างอิง นอกจากนี้ยังมีการตั้งค่า 'ผู้ใช้' (ซึ่งดูเหมือนว่าแปลกเนื่องจาก sqlite ไม่ใช่ระบบการเข้าถึงของผู้ใช้ แต่มีความหมายสำหรับ drawinglife) ที่ออกแบบมาเพื่อติดป้ายแทร็กต่าง ๆ :
gpx2spatialite create_db MyGPXArchive.db
โหลดโฟลเดอร์ทั้งหมดของไฟล์ GPX รวมถึงโฟลเดอร์ย่อยทั้งหมดตรวจสอบและลบรายการที่ซ้ำกันไปพร้อมกัน:
gpx2spatialite -s -d MyGPXArchive.db -u SL25 Selous2013/
ตัวเลือก:
-s
= ไม่ตรวจสอบว่า trackpoint อยู่ในฐานข้อมูลเมืองหรือไม่ (เร่งความเร็วได้มาก)-d MyGPXArchive.db
= ฐานข้อมูลที่จะใช้-u SL25
= เพิ่มผู้ใช้ SL25 (เพียงป้ายกำกับที่ฉันใช้สำหรับชุดของแทร็กที่รวบรวม);Selous2013
= โฟลเดอร์ (ที่มีโฟลเดอร์ย่อย) ที่มีแทร็กที่ฉันสนใจ
Bugs:
หากคุณบันทึกแทร็กใน Garmin รุ่นเก่าที่ทิ้งข้อมูลการประทับเวลามันจะทำให้การนำเข้าล้มเหลว หากคุณมีgpsbabelให้กรองไฟล์ก่อนด้วยบางสิ่งเช่น:
gpsbabel -w -r -t -i gpx -f [INPUT.gpx] -x track เริ่มต้น = 20000101 -o gpx -F [OUTPUT.gpx]