Làm thế nào để đo khoảng cách giữa các điểm dựa trên độ cao?


10

Tôi cần có khả năng đo khoảng cách giữa các điểm, tuy nhiên khoảng cách cần phải được tính trong mối quan hệ với độ cao. Các điểm là nhà của những người kể chuyện từ thế kỷ 19 và những nơi được đề cập trong câu chuyện của họ. Khoảng cách do đó phải là "khoảng cách đi bộ". Một con đường dọc theo một thung lũng có thể sẽ ngắn hơn một con đường trên một ngọn núi mặc dù khoảng cách thẳng thực tế ngắn hơn. Kèm theo là một ảnh chụp màn hình minh họa suy nghĩ của tôi. Trong ảnh, đường dẫn A và C do đó sẽ được tính ngắn hơn đường dẫn B.Điểm và độ cao

Các điểm là từ một tệp CSV nhưng tôi cũng có một lớp raster với dữ liệu độ cao.


1
Tôi nghĩ sẽ tốt hơn nếu tính thời gian đi bộ . Vận tốc đi bộ phụ thuộc vào độ dốc, và đi lên mất nhiều thời gian hơn xuống dưới.
AndreJ

1
Khoảng cách "3D" so với khoảng cách bản đồ phẳng? Sự khác biệt có lẽ nhỏ hơn bạn nghĩ. Peter Guth, người đàn ông đằng sau MICRODEM cho biết "Khoảng cách hoặc diện tích sẽ được tăng lên bởi độ dốc của góc dốc và cho đến khi bạn đạt được độ dốc rất lớn, thì cơ bản là 1."
nhopton

Câu trả lời:


6

Đạt được mục tiêu này phần nào là một nhiệm vụ cơ bản trong GIS, tuy nhiên phương pháp trong QGIS có thể không tầm thường. Cơ hội tốt nhất của bạn là sử dụng r.walkchức năng của GRASS , tạo ra bề mặt chi phí bất đẳng hướng (dem + dốc + các yếu tố khác).

Đầu tiên, bạn phải tạo một bề mặt ma sát làm đầu vào r.walk. Trong trường hợp của bạn, nó có thể là một raster có giá trị đơn (1.0) phù hợp với phạm vi DEM của bạn. Bạn có thể tạo nó với r.mapcalculatorcông thức: A*0+1trong đó A là DEM của bạn.

Tiếp theo, bạn phải chọn một tập hợp các điểm bắt đầu từ CSV của bạn. Đây là những điểm, bề mặt chi phí tích lũy sẽ được tính từ. Bạn phải tạo ra một bề mặt chi phí riêng từ mọi điểm bắt đầu. Có thể là thông minh khi xác định các điểm kết thúc được liên kết với mọi điểm bắt đầu trong bước này (trong các lớp riêng lẻ ngoài khóa học). Sau đó, bạn có thể chạy r.walkvới các đầu vào được tạo. Điểm bắt đầu có thể ở một lớp duy nhất, bạn có thể lặp qua chúng bằng mũi tên màu xanh lá cây trong hộp thoại.

Bây giờ trong trường hợp lý tưởng, bạn có bề mặt chi phí và điểm kết thúc cho mọi bề mặt chi phí. Về lý thuyết, bạn có thể tìm thấy các đường dẫn có chi phí thấp nhất r.drain, nhưng đối với tôi, nó đã bị lỗi (python không thể nhập thư viện QgisRaster). Nếu bạn chạy trong cùng một vấn đề, bạn có thể sử dụng thuật toán "Đường dẫn chi phí thấp nhất" của SAGA. Nó sẽ tạo một điểm và một lớp đường cho mọi điểm kết thúc với bề mặt chi phí (sử dụng lại nút lặp). Sau khi bạn có tất cả các dòng, bạn có thể hợp nhất chúng thành một shapefile duy nhất với công cụ "Hợp nhất các lớp hình dạng" của SAGA.

Phương pháp này có thể rất chậm với việc tăng điểm, vì vậy nếu bạn có nhiều điểm trong số đó, bạn có thể thử tự động hóa phương thức với python. Sẽ còn rất nhiều thời gian để tính toán (đặc biệt là các bề mặt chi phí), nhưng bạn không phải tạo ra hàng tấn các lớp điểm kết thúc bằng tay.


Cảm ơn vì điều này, có lẽ tôi sẽ phải bắt đầu học cách sử dụng GRASS. Tôi cũng nghĩ rằng tôi có thể có vấn đề, trong hình minh họa tôi đã đăng tôi sẽ giả sử nhiều ngọn núi không thể vượt qua được, vì vậy tôi sẽ phải thêm một cái gì đó như "nếu ngọn núi cao hơn x, hãy đi xung quanh nó" ... Nhưng cảm ơn vì Trả lời, điều này có thể sẽ giúp tôi bắt đầu.
đau khổ

Đó là một điều kiện dễ dàng trong r.walk. Bạn có thể sử dụng bản đồ ma sát để thiết lập các ô không thể vượt qua. Phân loại lại DEM của bạn r.reclassvới các quy tắc như 1 thru 2000 = 1 2000 thru * = 9999trong tệp quy tắc (nếu ngưỡng của bạn là 2000m). Bằng cách này, thuật toán sẽ không vượt qua các ô có giá trị ma sát cao, sẽ tốn ít chi phí hơn khi đi xung quanh nó.
Gabor Farkas

Cảm ơn rất nhiều cho việc này! Tôi thực sự không có nhiều kiến ​​thức về GRASS nhưng đây là điểm khởi đầu thực sự tuyệt vời.
mạnh mẽ vào

Không có gì. Thành thật mà nói, tôi vẫn ngạc nhiên về nhiệm vụ của bạn. Đây là một trong những ví dụ tốt nhất, làm thế nào GIS có thể được áp dụng trên quy mô rộng nhất của các ngành.
Gabor Farkas
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.