Làm thế nào để kết nối các đường trong một mạng?


15

Tôi có một shapefile của dòng và một đa giác khác. Khi hai hoặc nhiều dòng cắt nhau một đa giác, chúng sẽ được kết nối (ngắt), nhưng đôi khi trong quá trình số hóa thủ công, điều này không xảy ra. Tôi cần tìm và sửa tất cả các lỗi này. Tôi đã sử dụng v.cleantừ GRASS GIS và nó tự động chụp rất nhiều đỉnh, điều này rất tốt, nhưng một số dòng bị ngắt kết nối khác với dung sai tôi đưa ra và nếu tôi tăng dung sai quá nhiều thì nó bắt đầu tạo ra các loại lỗi khác.

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

Có ý kiến ​​gì không?


1
Không gian tham gia các điểm cuối đa tuyến đến đa giác và tóm tắt số lượng theo đa giác. Đối với mỗi đa giác chứa nhiều hơn một điểm cuối đã tham gia, hãy tạo một đa giác bao gồm các phân đoạn tỏa ra từ tâm của các điểm cuối đó đến chính các điểm cuối (một "ngôi sao"). Hợp nhất các ngôi sao với các polylines ban đầu. Làm sạch kết quả để loại bỏ bất kỳ giao điểm tự phát sinh. Mỗi bước trong số này được hỗ trợ (và có thể được tự động hóa) bởi các GIS có khả năng đầy đủ. Vì tôi không quen thuộc với các chi tiết của QGIS hoặc GRASS, tôi chỉ cung cấp giải pháp này dưới dạng nhận xét.
whuber

nhưng đôi khi tất cả các dòng kết thúc bên ngoài đa giác ...
vascobnunes

1
Những dòng này thể hiện điều gì? Nếu chúng là những dòng sông thì chúng được mã hóa với thông tin bổ sung như tên hoặc Dòng thứ tự? Là mạng được định hướng (chẳng hạn như mạng sông) như nói hai luồng thứ tự đầu tiên phải chảy thành luồng thứ hai. Tôi đoán tôi đang cố gắng nói rằng bạn có thể muốn đưa một số thông tin đằng sau quá trình chụp nhanh để khắc phục vấn đề với chụp nhanh tinh ranh với tăng khả năng tìm kiếm.
Hornbydd

1
Nhận xét của bạn dường như mâu thuẫn với câu hỏi. Câu hỏi dường như nói rằng bạn muốn chụp các đỉnh nằm trong một đa giác chung. Nếu một đỉnh nằm ngoài một đa giác, bạn không đưa ra bất kỳ tiêu chí nào về cách xử lý nó! Vì vậy, chính xác mối quan hệ giữa đa giác và polylines là gì?
whuber

1
Tôi đồng ý với whuber; có lẽ bạn nên làm rõ câu hỏi Âm thanh như bạn muốn các dòng 'trong' đa giác, cũng như 'đóng' nhưng loại trừ các dòng 'trong' nhưng được nối đúng cách?
Darren đối đầu

Câu trả lời:


7

Sự hiểu biết của tôi về vấn đề này như sau:

Nếu một điểm cuối đa tuyến cắt một đa giác thì đa tuyến cần được kết nối (bằng cách thêm hoặc điều chỉnh các đỉnh) với tất cả các điểm cuối đa tuyến bổ sung giao nhau với cùng một đa giác.

Một số điểm cuối đa tuyến không giao nhau với đa giác, là đường dưới, nhưng chúng nên được kết nối như trên.

Câu trả lời này được xây dựng trên một số đã được đưa ra, nhưng không đầy đủ vì tôi không biết về tất cả các lệnh của QGIS - có lẽ ai đó có thể thêm vào điều này?

  1. Đối với mỗi đa tuyến, trích xuất tọa độ điểm cuối ( Vector> Công cụ hình học> Trích xuất các nút sau đó dọn dẹp) và tính toán xem chúng có nằm trong đa giác hay không ( Vector> Công cụ nghiên cứu> Chọn theo Vị trí ).

  2. Đối với các điểm cuối đa giác nằm trong đa giác, hãy mở rộng điểm cuối của đa giác đó đến trung tâm của đa giác (Trích xuất trung tâm đa giác bằng Vector> Công cụ hình học> Đa giác , không chắc chắn về sửa đổi dòng, mặc dù bạn có thể làm việc với các đỉnh đa tuyến làm điểm và thêm các đỉnh bổ sung với cách đánh số thích hợp trước khi xây dựng lại đa tuyến đã sửa đổi bằng cách sử dụng plugin Điểm đến đường dẫn)

    Bạn đề cập rằng có thể có các tình huống trong đó một số hoặc tất cả các dòng đã được kết nối chính xác, trong các tình huống này (có thể được xác định bằng các điểm cuối đa tuyến trùng khớp), bạn có thể chọn sử dụng vị trí điểm cuối trùng khớp thay vì trung tâm đa giác làm điểm để mở rộng bất kỳ polylines không liên kết bổ sung nào cho đa giác đó.

  3. Đối với các điểm cuối đa tuyến nằm ngoài một đa giác, hãy mở rộng điểm cuối của đa giác đó đến trung tâm của đa giác gần nhất. Một lần nữa, tôi không chắc chắn về việc tính toán đa giác gần nhất, mặc dù mô-đun GRASS v.distance có vẻ như để thực hiện thủ thuật.


đó là một lý do tốt cho giải pháp vấn đề. Tôi cũng đã nhận được một cái gì đó như thế với câu trả lời từ alexgleith. Nhưng tôi đã bị mắc kẹt trong hoạt động để "kéo dài phần cuối của đa tuyến đến trung tâm của đa giác gần nhất". Câu hỏi bây giờ là làm thế nào để tôi làm điều đó? Nếu tôi sử dụng v.clean.snap cho các tâm của đa giác, nó sẽ vẫn di chuyển bất kỳ đỉnh nào không phải là điểm cuối ...
vascobnunes

Một cách tiếp cận sẽ là chuyển đổi các polylines thành các điểm như được mô tả và nếu cần thêm một điểm bổ sung ở đầu hoặc cuối của một đường nhất định như được chỉ định bởi vị trí của điểm bắt đầu hoặc điểm kết thúc hiện có. Vị trí của điểm được thêm vào sẽ là tâm của đa giác và điểm sẽ được quy cho số thứ tự đỉnh là -1 hoặc 1000000 để đặt nó ở đầu hoặc cuối của đa giác. Điều này sau đó sẽ cho phép các polylines được xây dựng lại bằng công cụ Points to Path
Andy Harfoot

2

Tôi nghĩ rằng tôi có thể làm điều đó với một số thuật toán tùy chỉnh ... Lưu ý chắc chắn cách bạn muốn thực hiện nó, nhưng tôi nghĩ nó sẽ hoạt động.

Đối với mỗi dòng, đối với mỗi điểm cuối, hãy thực hiện một điểm trong đa giác cho đỉnh tại điểm cuối và liên kết nó với đa giác.

Sau đó, đối với mỗi đa giác, nếu có nhiều điểm cuối của một dòng được liên kết, tôi có thể hợp nhất (di chuyển) tất cả chúng sang tọa độ trung bình hoặc có thể là tâm của đa giác.

Điều đó khá đơn giản. Nhưng không có sẵn trong các nhà khai thác tiêu chuẩn. Tôi nghĩ rằng nó có thể được thực hiện trong ArcGIS với thời gian mã hóa một ngày.

Một lưu ý khác, trong hình ảnh bạn đã đăng, một trong các dòng nằm ngoài đa giác ... Bạn có thể xử lý việc này theo cách đơn giản hơn bằng cách tìm đỉnh gần nhất với mỗi đỉnh cuối, đảm bảo rằng sự gần gũi là tương hỗ (tôi nghĩ đó là cần thiết, để bạn có các đỉnh chỉ chụp theo một cách), sau đó bạn có thể di chuyển chúng đến vị trí trung bình của các đỉnh.


1

Vấn đề thú vị! Tôi không thể nghĩ ra một cách để tự động thực hiện việc chụp nhanh, nhưng đây là một bước trong việc xác định các khu vực ít nhất là xem xét để điều chỉnh thủ công:

  • Thêm một cột mới vào lớp dòng của bạn và đặt nó bằng '1' cho tất cả các tính năng.
  • Trong Vector> Tham gia thuộc tính theo vị trí, đặt lớp Target của bạn thành lớp đa giác của bạn và lớp dòng là lớp tham gia. Sau đó chọn "Tóm tắt các tính năng giao nhau" và nhấp vào "Tổng". Đưa ra một vị trí cho tệp đầu ra và "OK."
  • Tệp đa giác kết quả sẽ là lớp đa giác ban đầu của bạn, nhưng với một số trường bổ sung. Trường SUM là những gì bạn muốn; khi là 2, điều đó có nghĩa là sau đó bạn có thể phóng to nó và tự chụp các tính năng.

Tùy thuộc vào tình huống (số tính năng, số trong tình huống này so với các tính năng không, v.v.), điều này có thể giúp bạn tiết kiệm thời gian.

EDIT: Bạn cũng có thể muốn sử dụng các đa giác có tổng bằng 2 để tạo một tập hợp con của các lớp dòng của bạn, sau đó chạy dọn dẹp trên những lớp có dung sai lớn hơn để không thay đổi các tính năng khác.


Tôi đã làm một cái gì đó như thế rồi. Tôi thậm chí đã sử dụng v.net để lấy các nút cho các dòng và thực hiện lựa chọn không gian của các đa giác khớp với các nút. Tôi tìm thấy rất nhiều lỗi để sửa lỗi này, nhưng tôi vẫn có 3 vấn đề lớn: 1) có hàng ngàn lỗi để sửa thủ công, mất một thời gian loong; 2) Tôi không nhận được tất cả các lỗi gây ra trong một số trường hợp các dòng hoặc các nút thậm chí không 'chạm' vào các đa giác; 3) tôi nhận được lỗi không phải là lỗi, vì khi hai dòng kết nối đúng, chúng cũng được chọn.
vascobnunes

0

một khi bạn có các điểm cuối, tôi sẽ thực hiện sơ đồ nhện lấy đa giác trung tâm làm phương tiện và điểm cuối của các đường gần đó làm mục tiêu. Bạn thực hiện phân tích sơ đồ nhện và kết quả là bạn sẽ có một phân đoạn cho mỗi đa tuyến.

Điều này sẽ làm việc ngay cả đối với những người kết thúc bên ngoài đa giác. Làm thế nào để làm điều đó trong QGIS tôi không biết, xin lỗi, nhưng tôi sẽ làm điều này trong các sản phẩm của ESRI mà tôi biết rõ. Đó là những gì tôi hiểu khi whuber, trong lần trả lời đầu tiên, đề nghị xây dựng một "ngôi sao".

Tôi khá chắc chắn rằng có những người ở đây biết cách thực hiện phân tích như vậy trong QGIS


4
Chào mừng bạn đến với Sàn giao dịch GIS! Tôi nhận thấy rằng câu trả lời của bạn đã thu hút một số downvote và nghi ngờ đó là bởi vì bạn đã đề xuất một giải pháp thay thế cho công nghệ mà người hỏi đang sử dụng (GRASS / QGIS). Đề nghị của tôi sẽ là thả nổi các đề xuất như nhận xét thay vì câu trả lời và nếu người hỏi có vẻ quan tâm thì hãy chuyển thông tin đến câu trả lời.
PolyGeo
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.