Làm thế nào để xây dựng cơ sở dữ liệu địa lý của nhật ký GPS?


13

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]


Chúng tôi sử dụng FME safe.com/fme/fme-tĩ/fme-desktop/features và nó duy trì tất cả các thuộc tính bạn muốn vào Cơ sở dữ liệu Oracle
Mapperz

1
@Mapperz - FME có phương pháp cụ thể để lưu tệp GPX không? Tôi thực sự sau một giải pháp FOSS mặc dù.
Simbamangu

Câu trả lời:


6

ptrv / gpx2spatialite thực hiện điều này rất tốt, tiết kiệm dấu thời gian cho tất cả các điểm và lấy dữ liệu tốc độ và độ dài cho các bản nhạc. Nó cũng sẽ không nhập các bản nhạc trùng lặp, vì vậy bạn có thể cung cấp cho nó một đống lớn cho các tệp GPX và nó sẽ nghiền nát chúng một cách thích hợp.

Cập nhật : ví dụ sử dụng, theo yêu cầu:

Khởi tạo cơ sở dữ liệu mới:

gpx2spatialite_create_db db.sqlite

Thêm một tệp gpx duy nhất:

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

(Nếu người dùng tên người dùng không tồn tại trong cơ sở dữ liệu, sẽ truy vấn nếu bạn muốn tạo nó. Cơ sở dữ liệu được xây dựng với các tuyến đường / điểm tham chiếu / tuyến đường được gán cho một hoặc nhiều người dùng.)

Thêm tất cả các tệp gpx trong thư mục / :

gpx2spatialite -d db.sqlite -u user folder/

Cách sử dụng: đó là một cơ sở dữ liệu không gian, với bảng tracklines giữ bài hát như polylines, trên đoạn đường có chứa các điểm cá nhân (theo thời gian, độ cao, vv), và waypoints cho bất kỳ waypoints xác định. Ngoài ra còn có nhiều chỉ số, một số định nghĩa về thành phố thế giới và có thể cả thông tin về kiểu dáng SLD mà tôi chưa khám phá. Như một ví dụ tầm thường, đây là bản đồ về cách quê hương của tôi (Toronto) được xác định qua ~ 7 năm nhật ký theo dõi:

Nhật ký GPS Toronto

Bằng cách sử dụng các đường có độ trong suốt 75%, các tuyến đường thường xuyên di chuyển trở nên tối hơn.


Aha, đã nhận ra rằng easy_install gpx2spatialitethực sự sẽ cài đặt nó như một tập lệnh có thể truy cập từ dòng lệnh! Các usertùy chọn cũng đã gây nhầm lẫn, họ không giải thích nó trên trang chính, và spatialite là một hệ thống không truy cập hạn chế.
Simbamangu

Các usertùy chọn có ý nghĩa cho các dự án Drawinglife, vì nó cho phép nhiều người tham gia để thêm các bản nhạc của họ đến cơ sở dữ liệu tương tự. Cảm ơn những gợi ý về việc loại trừ việc gắn thẻ Thành phố và tìm ra lý do cho các sự cố. Nếu bạn có tệp GPX không có dấu thời gian, bạn có thể tổng hợp dữ liệu thời gian bằng tùy chọn faketime của GPSBabel .
kiểm tra

1
Cú pháp FYI, gpx2spatialite đã thay đổi. Lệnh nhập khẩu điển hình hiện naygpx2spatialite import -u user -s -d db.spatialite file1.gpx …
kiểm tra

3

Để biết thêm nhận xét của bạn - "FME có phương pháp cụ thể để lưu tệp GPX không?"

Có, bạn có toàn quyền kiểm soát các tuyến đường, điểm tham chiếu, tuyến đường và siêu dữ liệu nhập mô tả hình ảnh ở đây

FME là một công cụ rất đáng giá và mạnh mẽ để thao tác dữ liệu gis và dữ liệu phi không gian với nhau.

xem để biết thêm chi tiết http://evangelism.safe.com/fmeevangelist26/


2

Có một số ý tưởng ở đây để tạo chương trình của riêng bạn để trích xuất dữ liệu gpx bằng python hoặc perl. Từ đây, không quá nhiều để đưa dữ liệu vào cơ sở dữ liệu không gian. Bạn sẽ cần phải suy nghĩ về một lược đồ phù hợp để lưu trữ trong không gian - bạn muốn giữ những thuộc tính nào?).


1

Nếu bạn muốn đi theo lộ trình OGR, cách tiếp cận tốt nhất là xuất sang Shapefile trước, nó sẽ xuất nhiều shapefile đại diện cho phân biệt điểm tham chiếu / trackpoint / way / track và siêu dữ liệu liên quan, sau đó hợp nhất từng bộ tệp vào SQLite chính của bạn cơ sở dữ liệu.


-1

Hãy thử thêm

-lco GPS_USE_EXTENSIONS=YES

lệnh ogr2ogr của bạn


Tôi đã thử điều này trên một bảng mới - không ảnh hưởng đến các trường hoặc dữ liệu kết quả. Bạn đang mong đợi nó làm gì?
Simbamangu

Tôi đã mong đợi để có được các thuộc tính mở rộng. Đọc lại câu hỏi của bạn, tôi không nghĩ có cách nào để có được từng điểm theo dõi riêng lẻ ngoài việc xuất bản nhạc dưới dạng điểm.
Micha
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.