Làm thế nào để có được một hồ sơ độ cao cho một bản nhạc gps?


15

Tôi muốn có được cấu hình độ cao chính xác hợp lý cho bản nhạc được ghi bằng GPS (thường có dữ liệu độ cao rất không đáng tin cậy và đôi khi không có gì cả, tùy thuộc vào kiểu máy.)

Có ai có bất kỳ gợi ý về cách dễ nhất để làm điều này. Hai kỹ thuật tôi đang xem xét cho đến nay là:

  • Sử dụng API độ cao của Google

    API này tương đối dễ sử dụng, nhưng vẫn cần một vài bước không tầm thường do hạn chế sử dụng của nó: tối đa 512 mẫu được trả về mỗi yêu cầu và số lượng điểm dọc theo đường dẫn cũng bị giới hạn (theo độ dài URL).

    Tôi hy vọng bộ lọc đơn giản hóa nhãn dán có thể được pha chế để giảm theo dõi xuống một số điểm phù hợp (không có điểm nào ở gần nhau hơn 100m do độ phân giải của dữ liệu độ cao), nhưng vấn đề vẫn là cách lập bản đồ theo dõi đơn giản hóa này trở lại đường dẫn ban đầu, vì độ dài sẽ khác nhau.

    Hoặc, nếu điều này không phù hợp với tự động hóa, cách tiếp cận tốt nhất có thể là cho phép người dùng chọn các điểm cắt ngang trên bản đồ theo cách thủ công.

  • Tải xuống dữ liệu Nhiệm vụ Địa hình Radar Con thoi (SRTM) và thực hiện truy vấn cục bộ.

    Đây là điều mà tôi không có kinh nghiệm, vì vậy mọi đề xuất về mức độ khả thi này đều được chào đón. Làm thế nào lớn là tập dữ liệu? Phần mềm GIS nào là bắt buộc và phần mềm này có thể được viết theo kịch bản phù hợp không? Tôi không muốn phải viết một thuật toán lấy mẫu và nội suy, nghe có vẻ đau . Hiệu suất có khả năng của một cách tiếp cận như vậy là gì? (Tôi cần nó khá nhanh và chạy trên máy chủ web VPS bị giới hạn bộ nhớ ...)


Một số chi tiết khác để bổ sung câu trả lời của @ MerseyViking đang tải xuống dữ liệu từ http://srtm.csi.cgiar.org/SELMENT/inputCoord.asp :

Có 72 x 24 ô, mỗi ô khoảng 20mb tệp nén giải nén thành tệp TIF 72,1mb 16bit (6001x6001 pixel).

Đó là ~ 120 gb, nhiều hơn tôi có thể lưu trữ. Để nó bị nén và bỏ qua các đại dương sẽ giảm xuống còn 10gb, vẫn còn quá lớn. Tải dữ liệu theo yêu cầu sẽ giảm đáng kể dung lượng lưu trữ cần thiết, nhưng trang web nguồn chậm (tôi chỉ nhận được 10kb / giây) khiến việc đó trở nên không thực tế.


Vì vậy, bạn thực sự cần bảo hiểm trên toàn thế giới?
underdark

Không, tôi không cần đại dương và rất vui khi loại trừ các khu vực bên ngoài bộ dữ liệu SRTM (hoặc tương tự). Sẽ có những khối lớn của châu Phi, Trung Quốc và Nam Mỹ không cần phải được bảo hiểm, nhưng tôi không biết họ là gì trước, vì vậy trừ khi nhận được dữ liệu theo yêu cầu là đủ nhanh, tốt hơn là nên có tất cả cục bộ hoặc chỉ thuê ngoài tất cả các truy vấn cho bên thứ 3 (ví dụ: Google).
Tom

Những bài hát này dài bao nhiêu? Bạn cần loại độ phân giải nào cho các điểm theo dõi và độ cao?
Simbamangu

Các bài hát chủ yếu là từ chạy và đi xe đạp, vì vậy nói từ 5km đến 100km. Độ dốc thông thường nhỏ hơn 5-10%, vì vậy tôi nghĩ rằng bất cứ điều gì có độ phân giải thấp hơn nhiều so với tập dữ liệu SRTM sẽ không quá thú vị ... Ngoài việc hiển thị cấu hình độ cao, tôi cũng muốn tính toán độ cao tăng / mất, tối đa / độ cao tối thiểu, v.v.
Tom

Câu trả lời:




5

Có vẻ như bạn cần điều này như một giải pháp chung, tức là có sẵn tất cả dữ liệu độ cao của thế giới cho bất kỳ bản nhạc nào bạn muốn xử lý, do đó không muốn lưu trữ tất cả dữ liệu CGIAR cục bộ; gpsvisualizer.com được đề cập ở trên (@Llaves) có thể là lựa chọn tốt nhất của bạn.

Nếu bạn không cần độ phân giải cao, bộ dữ liệu GTOPO (lưới 1km) chỉ ~ 300MB cho toàn hành tinh; mặt khác, bộ dữ liệu ASTER GDEM (30m) và SRTM gốc (90m) có sẵn nhưng, như bạn chỉ ra, rất nhiều dữ liệu. (Kích thước của dữ liệu ASTER có thể được giảm sau khi tải xuống bằng cách xóa các tệp PDF đi kèm thường lớn hơn dữ liệu độ cao thực tế - bộ dữ liệu Châu Phi đã giảm 40% khi tôi làm điều này!).

Trong R, bạn có thể trích xuất cấu hình độ cao từ bất kỳ bộ dữ liệu nào khá nhanh - mặc dù việc tải raster có thể chiếm phần lớn thời gian. Điều này sử dụng chức năng readGPX tùy chỉnh nhỏ và nhãn gps để xử lý dữ liệu GPX:

#Load elevation model and process track:
dem <- raster("E020N40.DEM")
track <- readGPXt("trackfile.gpx")
coordinates(track) <- ~Longitude+Latitude
proj4string(track) <- "+proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +no_defs"
#Overlay (extract) the elevation data for the track points:
track$profile <- extract(dem, track)
track <- as.data.frame(track)

'Theo dõi' hiện là bảng các điểm GPS có lat / lon, dữ liệu GPX tiêu chuẩn khác (tốc độ, độ cao gps, v.v.) và cột 'hồ sơ' biểu thị độ cao tại điểm đó.


4

Dữ liệu SRTM dễ dàng tải xuống cho một khu vực nhất định, trước đây tôi đã sử dụng trang web này . Các tệp không lớn và bạn có thể lấy chúng dưới dạng TIFF tham chiếu địa lý. Tải xuống toàn bộ thế giới có thể mất một lúc, nhưng một vài viên gạch có diện tích khá lớn. Vấn đề bạn có thể gặp phải là với độ phân giải ngang, khoảng 90 mét đối với hầu hết thế giới và lỗi dọc có thể khá lớn, với các gai và vùng thiếu dữ liệu.

Bộ dữ liệu ASTER GDEM là một khảo sát gần đây hơn, độ phân giải cao hơn ở độ phân giải ngang ~ 30m, nhưng chất lượng thường thấp hơn dữ liệu SRTM tương ứng.

Tôi không biết dữ liệu độ cao của Google ở ​​độ phân giải nào, nhưng tôi sẽ không ngạc nhiên nếu nó dựa trên SRTM, vì vậy sử dụng Google API có thể mang lại cho bạn kết quả tương tự như sử dụng quy trình cục bộ.

Theo câu trả lời của @underdark, nếu đây là một hệ thống dựa trên web đơn giản, GRASS GIS có lẽ là con đường để đi. Tôi đã sử dụng r.profile để thực hiện các âm mưu tương tác đơn giản với một số thành công nhưng tôi không chắc nó sử dụng phương pháp nội suy nào; nó có thể chỉ là hàng xóm gần nhất Chỉnh sửa : Nhìn vào mã nguồn , r.profilekhông sử dụng hàng xóm gần nhất, do đó bạn có thể nhận được một số đồ tạo tác bậc thang.

Một tùy chọn khác có thể là viết một tập lệnh Python, sử dụng GDALNumPy , có thể làm việc nhiều hơn một chút, nhưng sẽ tạo ra một giải pháp tùy chỉnh tốt.


3

Trước tiên, bạn nên xác định loại chính xác ngang / dọc mà bạn sẽ hài lòng.

Nhưng hãy nhìn điều này từ một quan điểm thực tế:

  • Mỗi ô SRTM3 có 1200x1200 ô , mỗi ô là một giá trị nguyên hai byte biểu thị độ cao tính bằng mét. Đó là khoảng 2,75 MB dữ liệu không nén thô.
  • Có 14042 gạch SRTM3. Đó là cca. 38 GB dữ liệu thô.
  • Bạn có thực sự cần phải bao gồm toàn bộ thế giới? Tôi tưởng tượng không có nhiều hứng thú để hiển thị cấu hình độ cao của tuyến đường GPS ở giữa sa mạc Sahara, sa mạc Gobi hoặc Siberia, do đó bạn không thể đảm bảo về mặt kinh tế nếu bạn bị hạn chế về tiền mặt (BTW: SRTM3 không bao gồm cả thế giới , vì vậy bạn không cần phải lo lắng về những nơi như Greenland và Nam Cực;)).
  • Với một số nén và mã hóa dữ liệu thông minh, bạn có thể giảm đáng kể kích thước tập dữ liệu. Giá trị độ cao là từ 0 đến 8848 nên hai bit còn lại không được sử dụng. Bạn cũng có thể mã hóa độ cao thông qua nén delta để giảm hơn nữa. Bạn cũng có thể từ bỏ một số độ chính xác theo chiều dọc (giả sử, 2m, sau đó giúp bạn tiết kiệm thêm một bit cho mỗi ô.
  • Tùy thuộc vào loại rãnh GPS nào sẽ được sử dụng cho (đi bộ, đi xe đạp, lái xe ...), bạn nên lưu trữ dữ liệu vào các ô nhỏ hơn (giả sử 0,25x0,25 độ) dưới dạng tệp trên đĩa hoặc hàng trong bảng cơ sở dữ liệu.
  • Sử dụng một số bộ nhớ cache thông minh cho các ô để bạn không cần tải lại những bộ thường được sử dụng.
  • Tính toán độ cao từ các ô là phần dễ dàng của toàn bộ doanh nghiệp này.
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.