จะสร้างฐานข้อมูลทางภูมิศาสตร์ของบันทึก GPS ได้อย่างไร


13

ในการสำรวจสัตว์ป่าทางอากาศของเราโดยทั่วไปเราจะสร้างไฟล์ 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]


เราใช้ FME safe.com/fme/fme-technology/fme-desktop/featuresและจะเก็บข้อมูลที่เกี่ยวข้องทั้งหมดที่คุณต้องการลงในฐานข้อมูล Oracle
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

(หากผู้ใช้ชื่อผู้ใช้ไม่มีอยู่ในฐานข้อมูลจะทำการสืบค้นถ้าคุณต้องการสร้างฐานข้อมูลนั้นจะถูกสร้างขึ้นด้วยแทร็ค / จุดอ้างอิง / เส้นทางที่กำหนดให้กับผู้ใช้หนึ่งรายหรือมากกว่า)

เพิ่มไฟล์ gpx ทั้งหมดในโฟลเดอร์ / :

gpx2spatialite -d db.sqlite -u user folder/

การใช้งาน: มันเป็นฐานข้อมูลเชิงพื้นที่โดยมีตารางtracklinesถือแทร็กเป็น polylines, trackpointsที่มีจุดแต่ละจุด (พร้อมเวลาความสูง ฯลฯ ) และจุดอ้างอิงสำหรับจุดที่กำหนดไว้ นอกจากนี้ยังมีดัชนีจำนวนมากคำจำกัดความเมืองบางแห่งและข้อมูลสไตล์ SLD แบบฝังที่ฉันยังไม่ได้สำรวจ เป็นตัวอย่างของแผนที่เล็ก ๆ น้อย ๆ นี่คือแผนที่ของบ้านเกิดของฉัน (โตรอนโต) ที่ถูกกำหนดโดยผ่านบันทึกการติดตามประมาณ 7 ปี:

โตรอนโต GPS บันทึก

ด้วยการใช้เส้นที่ความโปร่งใส 75% เส้นทางที่เดินทางบ่อยที่สุดจะมืดกว่า


อ๊ะไม่ได้ตระหนักว่าeasy_install gpx2spatialiteจริง ๆ แล้วจะติดตั้งเป็นสคริปต์ที่สามารถเข้าถึงได้จากบรรทัดคำสั่ง! userตัวเลือกก็ยังสับสนพวกเขาไม่ได้อธิบายในหน้าหลักและ spatialite เป็นระบบที่ไม่สามารถเข้าถึง จำกัด
Simbamangu

userตัวเลือกที่เหมาะสมสำหรับโครงการ Drawinglife เนื่องจากจะช่วยให้ผู้เข้าร่วมหลายที่จะเพิ่มเพลงของพวกเขาไปยังฐานข้อมูลเดียวกัน ขอบคุณสำหรับคำแนะนำเกี่ยวกับการยกเว้นการติดแท็กเมืองและสำหรับการค้นหาสาเหตุของการขัดข้อง หากคุณมีไฟล์ GPX ที่ไม่มีการประทับเวลาคุณสามารถสังเคราะห์ข้อมูลเวลาโดยใช้ตัวเลือกfaketimeของ GPSBabel
scruss

1
FYI, ไวยากรณ์ gpx2spatialite มีการเปลี่ยนแปลง คำสั่งนำเข้าโดยทั่วไปอยู่ในขณะนี้gpx2spatialite import -u user -s -d db.spatialite file1.gpx …
scruss

3

หากต้องการแสดงความคิดเห็นเพิ่มเติม - "FME มีวิธีการเฉพาะสำหรับการบันทึกไฟล์ GPX หรือไม่"

ใช่คุณสามารถควบคุมเส้นทางเส้นทางจุดติดตามและข้อมูลเมตาได้อย่างสมบูรณ์ ป้อนคำอธิบายรูปภาพที่นี่

FME เป็นเครื่องมือที่มีค่าและทรงพลังมากในการจัดการข้อมูล gis และข้อมูลที่ไม่ใช่เชิงพื้นที่ด้วยกัน

ดูรายละเอียดเพิ่มเติมได้ที่ http://evangelism.safe.com/fmeevangelist26/


2

มีความคิดบางอย่างอยู่ที่นี่สำหรับการสร้างโปรแกรมของคุณเองเพื่อดึงข้อมูล GPX ในหลามหรือ Perl จากตรงนี้มันไม่ได้มีอะไรมากไปกว่าการใส่ข้อมูลลงในฐานข้อมูลเชิงพื้นที่ คุณจะต้องนึกถึงสคีมาที่เหมาะสมสำหรับการจัดเก็บในเชิงพื้นที่ - คุณลักษณะใดที่คุณต้องการเก็บไว้?)


1

หากคุณต้องการไปยังเส้นทาง OGR วิธีที่ดีที่สุดคือส่งออกไปยัง Shapefile ก่อนซึ่งจะส่งออกหลายรูปร่างที่เป็นตัวแทนของ waypoint / trackpoint / way / track distinction และ metadata ที่เกี่ยวข้องจากนั้นรวมไฟล์แต่ละชุดลงใน SQLite หลักของคุณ ฐานข้อมูล


-1

ลองเพิ่ม

-lco GPS_USE_EXTENSIONS=YES

ไปที่คำสั่ง ogr2ogr ของคุณ


ฉันลองสิ่งนี้ในตารางใหม่โดยไม่มีผลกับฟิลด์หรือข้อมูลที่ได้ คุณคาดหวังให้ทำอะไร?
Simbamangu

ฉันคาดหวังว่าจะได้รับคุณสมบัติเพิ่มเติม เมื่ออ่านคำถามของคุณฉันไม่คิดว่าจะมีจุดติดตามแต่ละจุดที่นอกเหนือจากการส่งออกเส้นทางเป็นคะแนนเอง
Micha
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.