Trong các cuộc khảo sát động vật hoang dã trên không của chúng tôi, chúng tôi thường tạo ra hàng tá tệp GPX và thường chuyển đổi hầu hết chúng thành các shapefile để hiển thị trong một ứng dụng GIS. Các tệp GPX là một cách tuyệt vời để giữ tất cả (hoặc gần như tất cả) dữ liệu GPS của bạn ở một nơi - chúng là các tệp xml lưu trữ thông tin tracklog, điểm tham chiếu & tuyến đường theo một định dạng thuận tiện. Họ lưu trữ nhiều bản nhạc, thậm chí các bản nhạc đã lưu cũ từ một chiếc Garmin.
Tôi muốn lưu trữ tất cả dữ liệu theo dõi này trong cơ sở dữ liệu không gian, song song với các bảng khác có dữ liệu quan sát điểm từ cùng một khảo sát.
ogr2ogr sẽ cho phép tôi chuyển đổi bản nhạc sang cơ sở dữ liệu không gian:
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'
Tuy nhiên, điều này nhập từng bản nhạc được lưu dưới dạng một dòng - mất thông tin thời gian / vị trí cho từng điểm theo dõi!
Bất cứ ai cũng biết về bất kỳ cách thông minh nào để xây dựng cơ sở dữ liệu tracklog sẽ lưu giữ thông tin đó?
CHỈNH SỬA :
Tracklog không chỉ là một dòng - chúng là tập hợp các điểm liên tiếp, mỗi điểm có thuộc tính độ cao và thời gian. Mỗi điểm thuộc về một đoạn đường, lần lượt thuộc về một rãnh nhất định và các điểm trong mỗi đoạn đường được lấy mà không bị gián đoạn và có thể được coi là được liên kết. Ví dụ:
<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>
Do đó, để lưu tracklog, bạn cần lưu tập hợp điểm này với dữ liệu liên quan của chúng.
Một giải pháp có thể là tải các bản nhạc này dưới dạng điểm, với các cột bổ sung cho tên bản nhạc, phân khúc, độ cao và thời gian; Tôi không nghĩ rằng ogr sẽ chuyển đổi các bài hát như điểm, mặc dù.
Giải pháp
Cảm ơn @scruss đã chỉ ra gpx2spatialite mà tôi đã cài đặt (OS X 10.9) sudo easy_install gpx2spatialite
. Bộ công cụ này được thiết kế cho dự án 'vẽ cuộc sống' (và do đó có một số thông tin 'thành phố' có lẽ không cần thiết đối với hầu hết chúng ta); trang gpx2spatialite chính không giải thích nhiều, nhưng wiki cuộc sống vẽ tốt hơn. Tuy nhiên, rất nhiều tính năng không có giấy tờ - như loại bỏ trùng lặp!
Tạo một cơ sở dữ liệu không gian cho các tệp GPX sẽ giữ các phân đoạn theo dõi, rãnh, điểm theo dõi và điểm tham chiếu. Nó cũng có 'người dùng được thiết lập (có vẻ kỳ lạ, vì sqlite không phải là hệ thống truy cập người dùng, nhưng có nghĩa là để vẽ cuộc sống) được thiết kế để gắn nhãn các bản nhạc khác nhau:
gpx2spatialite create_db MyGPXArchive.db
Tải toàn bộ thư mục tệp GPX, bao gồm tất cả các thư mục con, kiểm tra và xóa các bản sao trên đường đi:
gpx2spatialite -s -d MyGPXArchive.db -u SL25 Selous2013/
Tùy chọn:
-s
= không kiểm tra xem các điểm theo dõi có trong cơ sở dữ liệu thành phố không (tăng tốc rất nhiều)-d MyGPXArchive.db
= cơ sở dữ liệu để sử dụng;-u SL25
= thêm người dùng SL25 (chỉ là nhãn tôi đã sử dụng cho tập hợp các bản nhạc được thu thập);Selous2013
= thư mục (có thư mục con) có các bản nhạc tôi quan tâm.
Lỗi:
Nếu bạn đã lưu các bản nhạc trên một chiếc Garmin cũ hơn mà loại bỏ thông tin về dấu thời gian, nó sẽ bị lỗi khi nhập (loại bỏ các bản nhạc đã lưu bằng tiện ích như GPSU). Nếu bạn có nhãn gps , hãy lọc tệp trước bằng một cái gì đó như:
gpsbabel -w -r -t -i gpx -f [INPUT.gpx] -x track, start = 20000101 -o gpx -F [OUTPUT.gpx]