Làm thế nào để đơn giản hóa một cấu trúc liên kết bảo quản mạng?


9

Tôi có một Shapefile (bao gồm các con đường lớn ở châu Âu) với khoảng 250.000 Phân đoạn mà tôi phải đơn giản hóa để trải thảm. Nhưng tôi dường như không thể tìm ra cách để làm điều đó đúng.

Đây là những gì nó trông giống như:

http://i.stack.imgur.com/qJ2OJ.png

và đây là những gì nó sẽ trông giống như:

http://i.stack.imgur.com/FN4Z6.png

Tôi bằng cách nào đó phải xóa mọi Điểm của Đường được kết nối với ít hơn 3 Đường (không phải là giao điểm) trong khi duy trì các kết nối tôpô giữa các điểm còn lại. Nếu ai có ý tưởng, nó sẽ được đánh giá rất cao!

Trân trọng

EDIT: Tôi đã cố gắng thực hiện ý tưởng của @dkastl và quản lý để chỉ nhận các nút không cần thiết (các nút chỉ có 2 chuỗi liên kết liền kề) từ mạng của tôi với mã bên dưới (thế hệ mạng được lấy từ blog của underdark http://underdark.wordpress.com / 2011/02/07 / a-Beginners-guide-to-pgrouting / ):

SELECT * FROM
   (SELECT tmp.id as gid, node.the_geom FROM 
     (SELECT id, count(*) FROM network 
     JOIN node 
     ON (start_id = id OR end_id = id) AND (end_id = id OR start_id = id)
     GROUP BY id ORDER BY id) as tmp
   JOIN node ON (tmp.id = node.id)
   WHERE tmp.count = 2) as unn_node;

Vì vậy, tất cả những gì tôi phải làm là hợp nhất các dòng. Tuy nhiên, tôi không có manh mối như thế nào. Tôi tưởng tượng nó phải là một vòng lặp mà với mỗi hàng kết quả của truy vấn trên sẽ có các dòng liền kề và hợp nhất chúng. Sau đó, nó sẽ xây dựng lại mạng hoàn toàn và lặp lại quy trình cho đến khi truy vấn trên trả về kết quả trống.


1
Tại sao bạn phải làm điều này cho pgRouting? Nếu bạn đã có ID nguồn / ID đích được chỉ định, bạn có thể tạo một hình học mới với các dòng chỉ có chứa ID nguồn và ID đích. Điều đó sẽ trông giống như hình ảnh thứ hai của bạn.
dkastl

Vấn đề là các dòng được phân đoạn (nếu bạn nhìn vào hình ảnh đầu tiên tôi đã đăng, mỗi điểm bạn thấy bắt đầu / kết thúc một phân đoạn mới), cách tiếp cận của bạn đơn giản hóa hình học (tốt) nhưng không phải là cấu trúc liên kết.
chriserik

1
Tôi không nghĩ rõ ràng từ hình ảnh của bạn rằng mỗi điểm bắt đầu một hình học linestring mới. Bạn đã chạy hàm gán_vertex_id của pgRouting để điền vào các cột nguồn / đích chưa? Trong trường hợp đó, sau này bạn có thể thực hiện một số truy vấn để xác định ID nguồn / ID đích chỉ tồn tại hai lần, điều đó có nghĩa là bạn sẽ có thể hợp nhất hai phân đoạn dòng tại thời điểm này. Trong trường hợp ID nguồn / ID mục tiêu tồn tại nhiều hơn hai lần thì nó phải là một giao điểm.
dkastl

@dkastl: Một ý kiến ​​rất hay! Tôi cập nhật câu hỏi của tôi cho thấy tôi đã đi được bao xa với nó.
chriserik

Câu trả lời:


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.