Cho một địa hình, làm thế nào để vẽ đường dẫn dòng chảy?


23

Giả sử tôi có một địa hình, như thường lệ, địa hình có những rặng núi, những con lạch và tất cả các đặc điểm mà bạn có thể tìm thấy trên bản đồ đời thực. Nước chảy từ đỉnh núi xuống khu vực thấp hơn, con đường mà nước chảy được gọi là đường dẫn dòng chảy.

Địa hình được cho theo mạng không đều hình tam giác (TIN), mà mỗi điểm p (x, y) có giá trị az. Làm thế nào để sử dụng thông tin này để xây dựng đường dẫn dòng chảy? Vật lý đằng sau này là gì?

Từ những gì tôi biết, phương pháp gốc dốc nhất có thể được sử dụng để giải quyết vấn đề này . Tôi đang suy nghĩ về việc viết thuật toán dòng chảy của riêng tôi, vì vậy tôi quan tâm đến nền tảng lý thuyết hơn là sử dụng các công cụ hiện có.

Câu trả lời:


26

Có nhiều cách triển khai khác nhau, nhưng hầu hết các thủ tục sẽ bắt đầu từ lưới chứ không phải từ TIN.

Cách đơn giản nhất rất có thể là thủ tục D8: bạn tính toán hướng nước sẽ chảy. Có 8 khả năng, 8 ô nằm cạnh một ô lưới trung tâm. Trước tiên, bạn có thể tính toán các hướng này, hơn là cách các ô được kết nối và cuối cùng bạn có thể vẽ các đường). Một triển khai dễ dàng được tìm thấy trong SAGA, nó gần như đọc là mã giả: http://saga-gis.svn.sourceforge.net/viewvc/saga-gis/trunk/saga-gis/src/modules_terrain_analysis/terrain_analysis/terrain_analysis/terrain_analysis/terrain_analysis cpp? revision = 911 & view = markup

Mặc dù rất dễ dàng, nhưng điều này không thực tế lắm: bạn sẽ không có một luồng bắt đầu trong mọi ô. Các thuật toán nâng cao hơn trước tiên thường đóng các hố (đặc biệt là nếu bạn có DEM chi tiết), sau đó tính diện tích lưu vực trên mỗi ô, đó là số lượng ô đóng góp nước vào một ô cụ thể, sau đó sử dụng ngưỡng để xác định xem có luồng không là quà tặng.

SAGA GIS thực hiện rất nhiều phương pháp trong khu vực lưu vực này, bạn có thể tìm thấy mô tả về chúng trong hướng dẫn này http://sourceforge.net/sinstall/mirror_choices?projectname=saga-gis&filename=SAGA%20-%20Documentation/SAGA%20Document SagaManual.pdf

Nó được viết cho một phiên bản cũ hơn của SAGA GIS, nhưng mô tả về các thuật toán vẫn khá chính xác và tôi sẽ sao chép nó ở đây để tham khảo nhanh (đây là khoảng trang 120), vì nó là nguồn mở, bạn có thể kiểm tra chi tiết thực hiện bằng cách nhìn vào mã.

  • Xác định 8 (D8): Cổ điển. Dòng chảy đi từ trung tâm của một tế bào đến trung tâm của một (và chỉ một) của các tế bào xung quanh. Do đó, hướng dòng chảy bị giới hạn ở bội số 45o, đây là lý do chính cho hầu hết các nhược điểm của phương pháp. (O'Callaghan & Mark 1984).
  • Rho8: Tương tự như trên nhưng với một thành phần ngẫu nhiên sẽ cải thiện nó. Hướng dòng chảy được xác định bởi một đối số ngẫu nhiên phụ thuộc vào sự khác biệt giữa khía cạnh và hướng của hai ô lân cận liền kề. Không hữu ích lắm. . . (Fairfield & Leymarie 1991).
  • Vô cực xác định (D∞): Dòng chảy đi từ một ô đến hai ô liền kề xung quanh, do đó xem xét một luồng hai chiều và khắc phục nhược điểm của phương pháp D8. (Tarboton 1998).
  • Braunschweiger Digitales Savingmodell: Một thuật toán đa hướng khác. Dòng chảy được phân chia giữa các ô xung quanh có hướng gần nhất với khía cạnh của ô trung tâm và hai ô liền kề của nó. (Bauer, Bork & Rohdenburg 1985).
  • FD8 (được tìm thấy trong SAGA đơn giản là Nhiều hướng dòng chảy): Thuật toán định tuyến luồng hai chiều có nguồn gốc D8. (Quinn et al 1991).
  • Thuật toán định tuyến động học (KRA). Một thuật toán theo dõi dòng chảy một chiều. Flow hoạt động giống như một quả bóng lăn xuống DEM, mà không giới hạn vị trí của nó ở trung tâm của các tế bào. (Lea 1992).
  • Mạng mô hình độ cao số (DEMON): Mạng phức tạp nhất. Một thuật toán theo dõi dòng chảy hai chiều. Khá tốn thời gian. (Costa-Cabral & Burgess 1994).

Thậm chí nhiều mô hình đã được thêm vào gần đây:

  • Hướng đa luồng hình tam giác- Seibert, J. / McGlynn, B. (2007): 'Thuật toán đa hướng dòng chảy hình tam giác mới để tính toán các khu vực tăng áp từ các mô hình độ cao kỹ thuật số có lưới', Water Resources Research, Vol. 43, W04501. Điều này có thể thú vị với bạn vì nó cũng có thể hoạt động trực tiếp trên TIN
  • Phương pháp khối lượng dòng chảy (MFM) cho tính toán tích lũy dòng chảy dựa trên DEM theo đề xuất của Gruber và Peckham (2008). Gruber, S., Peckham, S. (2008): Các thông số và đối tượng bề mặt đất trong thủy văn. In: Hengl, T. và Reuter, HI [Eds.]: Hình học địa lý: Khái niệm, phần mềm, ứng dụng. Những phát triển trong Khoa học đất, Elsevier, Bd.33, S.293-308.
  • Thuật toán bên: http://watershed.montana.edu/Hydrology/Home_files/2010WR009296.pdf và mã của anh ấy cũng có trên trang web của anh ấy: http://thomasgrabs.com/side-alerskym/

5

Một cách tiếp cận ban đầu là một phương pháp được đề xuất trong bài viết này :

Fisher, P., J. Wood và T. Cheng (2004). Helvellyn ở đâu? Độ mờ của hình thái cảnh quan đa tầng. Giao dịch của Viện Địa lý Anh 29, 106-128.

Nó đề xuất một phương pháp dựa trên biểu diễn mờ và đa tỷ lệ. Tôi không chắc nhưng phương pháp này có thể là phương thức được triển khai trong LandSerf .

nhập mô tả hình ảnh ở đây


Liên kết giấy ở trên không còn truy cập được nữa
Graviton

@Graviton: Liên kết đã được sửa!
julien

4

Nếu bạn có quyền truy cập vào Phân tích không gian trong ArcGIS, thì bạn có một loạt các công cụ để tính toán đường dẫn luồng. Một quy trình công việc đầy đủ được cung cấp trong tham chiếu ESRI, nhưng quy trình công việc điển hình bao gồm:

  1. Chuyển đổi TIN của bạn thành một raster độ cao.
  2. Tính hướng dòng chảy.
  3. Đổ đầy bồn nhỏ.
  4. Tính tích lũy dòng chảy
  5. Sử dụng một ngưỡng, chỉ chọn các ô có lưu lượng nhất định.
  6. Sử dụng công cụ Stream to Feature để xuất các luồng thành một shapefile vector.

Tất nhiên, có rất nhiều bài báo học thuật mô tả các phương pháp khác nhau, nhưng phương pháp này dễ dàng cho tất cả những ai có quyền truy cập vào Phân tích không gian.


Tôi sẽ phải viết mã từ đầu, vì vậy tôi không thể sử dụng gói phần mềm này.
Graviton

Chà, đây có vẻ là thủ tục được sử dụng bởi hầu hết các gói GIS. TerraFlow là một tùy chọn mã nguồn mở, nhưng tôi chưa bao giờ sử dụng nó. Bạn dự định sử dụng gì để xử lý TIN?
Patrick

1
Tôi đang suy nghĩ về việc viết thuật toán dòng chảy của riêng mình, đó là lý do tại sao các gói phần mềm bạn đề cập không áp dụng cho tôi
Graviton

2
Đuợc. Khi bạn nói "Tôi chưa rõ về cách thực hiện điều này", tôi cho rằng bạn muốn có lời khuyên thiết thực về cách thực hiện việc này. Có lẽ quy trình công việc được sử dụng bởi các gói phần mềm này có thể cung cấp một hướng dẫn về cấu trúc tổng thể của thuật toán của bạn. Từ đó tôi đề nghị bạn tham khảo tài liệu học thuật về các chi tiết cụ thể. Ví dụ, Tarboton, 1997 đã được tham chiếu nhiều lần trong quá trình tìm kiếm thuật toán hướng dòng chảy của tôi.
Patrick

3

Trong các mô hình độ cao kỹ thuật số dựa trên lưới, việc xác định độ tin cậy của các đường dốc được cung cấp theo phương pháp D8-LTD:

Untilini, S. và G. Moretti (2009), Xác định đường dẫn dòng chảy bề mặt từ dữ liệu độ cao có lưới, Water Resour. Res., 45 (3), W03417, đổi: 10.1029 / 2008WR007099.

Untilini, S., G. Moretti, M. Franchini, B. Aldighieri và B. Testa (2003), các phương pháp dựa trên đường dẫn để xác định hướng thoát nước không phân tán trong các mô hình độ cao kỹ thuật số dựa trên lưới, Water Resour. Res., 39 (6), 1144, đổi: 10.1029 / 2002WR001639.

Trong các mô hình độ cao kỹ thuật số dựa trên đường viền, các đường dốc có thể được xác định tự động bằng cách giải quyết các cấu trúc địa hình phức tạp bằng mô hình (phức tạp) được mô tả trong bài viết sau:

Moretti, G. và S. Dessertini (2008), Tự động phân định các lưu vực thoát nước từ dữ liệu độ cao đường viền bằng kỹ thuật xây dựng bộ xương, Water Resour. Res., 44 (5), W05403, đổi: 10.1029 / 2007WR006309.


1

Có vẻ như đây sẽ là công việc để viết một công cụ từ đầu. ESRI đã ở đó trong nhiều thập kỷ và họ vẫn không có quyền.

AutoCAD (Civil 3D) có thể thực hiện điều này bằng TIN. Tôi không biết những gì đang diễn ra đằng sau hậu trường nhưng trong ArcGIS xác định mạng luồng được xử lý thông qua phân tích raster.

Tóm lại, một raster DEM đầu vào (trong đó mỗi ô có các giá trị X, Y, Z) được sử dụng làm đầu vào và thuật toán tính toán trích dẫn "dòng tích lũy (như trọng lượng tích lũy) của tất cả các ô chảy vào từng ô dốc xuống trong raster đầu vào. " Sản phẩm là một raster trong đó mỗi ô có giá trị tích lũy dòng chảy. Để xác định mạng luồng, sau đó bạn cách ly các ô có lưu lượng cao là các khu vực của "dòng chảy tập trung". Có những cân nhắc khác như hệ số trọng lượng tùy chọn, DEM đầu vào chính xác thủy văn, v.v.

Tôi sẽ chỉ đưa ra một vài ý tưởng: Về mặt "cơ học" của thuật toán như vậy, tôi cho rằng nó có thể khá đơn giản; đệ quy và cho mỗi ô, xác định vị trí và độ cao của tất cả các ô xung quanh và dựa trên độ cao của nó cộng với số lượng ô di chuyển vào trong đó. Đối với TIN, bạn có thể xây dựng một đường thẳng từ hai điểm trên mỗi tam giác (đỉnh cao nhất và thấp nhất) sau đó nối tất cả các điểm này lại với nhau thành một mạng.


1
Biến chứng phát sinh trong việc đối phó với bồn rửa và khu vực bằng phẳng. Như một ví dụ cực đoan, hãy xem xét một DEM đại diện cho một hồ trên núi, để hầu hết các DEM hoàn toàn bằng phẳng. Chính xác làm thế nào một tuyến thực hiện đệ quy tất cả dòng chảy vào hồ đến điểm chảy ra của nó?
whuber
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.