Có nhiều cách để giải quyết vấn đề này, nhưng một số ít nổi bật là chung chung và hiệu quả. Để hiểu điều này, hãy liệt kê một vài vấn đề có thể phải giải quyết:
Có thể có những khoảng trống giữa các cực rất lớn, thuật toán có thể xem các khoảng trống là sự phá vỡ thực tế trong hệ thống truyền tải.
Có thể có một số đoạn đường ngắn, rất quan trọng để kết nối các con đường vào mạng, tuy nhiên không có bất kỳ cực nào gần chúng. Các phân đoạn này sẽ không được chọn bởi sự gần gũi với các cực nhưng là một phần cần thiết của giải pháp.
Có thể có cực không thể truy cập bằng đường bộ từ điểm trung tâm. Các cực này có thể là một phần của các mạng truyền dẫn khác có nguồn gốc từ các điểm trung tâm khác.
Tôi cũng chấp nhận lập trường rằng vì bạn đã có một mạng lưới đa tuyến (các con đường), sẽ có lợi khi khai thác nó hơn là kết nối các điểm cực với một đa tuyến hoàn toàn mới, có khả năng không song song với đường rất tốt.
Những cân nhắc này cho thấy rằng các thành phần của một giải pháp tốt sẽ bao gồm một vài bước chính:
Tính khoảng cách đường từ điểm trung tâm đến tất cả các cực.
Xác định các cực có khoảng cách tối đa cục bộ dọc theo đoạn đường cụ thể của chúng : nghĩa là không có hàng xóm nào trong cùng đoạn có khoảng cách lớn hơn.
Hình thành các đường dẫn ngắn nhất trở lại từ các cực đại cục bộ này đến điểm trung tâm.
Sự kết hợp của những con đường ngắn nhất này sẽ tìm ra mạng truyền dẫn. (Thật vậy, bước 2 không thực sự cần thiết, nhưng nó sẽ làm giảm đáng kể tính toán liên quan đến bước 3.)
Bước 1 và 3 có thể được thực hiện bằng cách sử dụng một đại diện mạng (trong Phân tích mạng) hoặc đại diện raster (trong Phân tích không gian, sử dụng phép tính CostDistance hoặc FlowAccumulation). Bước 2 là một bản tóm tắt cơ sở dữ liệu đơn giản: sau bước 1, mỗi cực sẽ có đoạn đường và khoảng cách làm thuộc tính. Tìm khoảng cách tối đa theo đoạn đường và chọn các cực đạt được các khoảng cách tối đa đó.
Có một số tình huống có thể xảy ra:
Một số cực có thể không gần đường. Không có gì trong báo cáo vấn đề cho chúng ta biết những gì nên làm về những điều này. Chúng có thể được xử lý tự động bằng các tính toán raster (lưới chi phí phù hợp sẽ gán trở kháng cao cho các ô không phải đường, nhưng không phải là trở kháng vô hạn, cho phép các cực bị cô lập kết nối với các đường gần nhất, nhưng không phải với nhau), không may). Ít nhất, sau khi có được giải pháp ở bước 3, bạn có thể chọn tất cả các cực không có trên mạng đó và xem xét cách xử lý chúng (có thể bằng cách tạo thủ công các kết nối cho chúng hoặc có thể bằng giải pháp cây bao trùm tối thiểu Euclide).
Nếu một số đoạn đường hình thành các vòng lặp, bạn nên bỏ qua bước 2, nếu không các phần của các vòng lặp đó có thể bị mất.
Các đường chính có thể không thực sự tạo thành một mạng được kết nối. Có thể có những khoảng trống nhỏ giữa các đoạn đường (đôi khi chỉ có kích thước milimet) phân tách một mạng có vẻ như được kết nối trực quan. Đây là một vấn đề về chất lượng dữ liệu sẽ gây khó khăn cho bất kỳ giải pháp nào, ngoại trừ một số giải pháp dựa trên raster.
Tại một thời điểm tôi đã đề cập đến FlowAccumulation trong việc vượt qua. Điều này có thể làm mọi người ngạc nhiên: vấn đề này có liên quan gì đến các dòng suối và lưu vực sông? Nhìn chằm chằm vào hình ảnh một lúc. Hãy tưởng tượng điểm gốc là điểm thấp trên một phong cảnh và những con đường có cột điện thoại là dấu vết của dòng chảy chảy về điểm thấp đó. Nếu chúng ta có thể tạo ra một bề mặt mà những con đường thực sự làcác dòng suối, sau đó chúng ta có thể để một "cơn mưa" nhỏ rơi ở vị trí của mỗi cực và dòng chảy xuống dốc. Các điểm bị ướt là giải pháp chúng tôi tìm kiếm: chúng kết nối các cực hiệu quả vào một mạng theo các con đường. Một tính toán CostDistance thích hợp - với trở kháng khác không thấp dọc theo các con đường và trở kháng cực kỳ cao nhưng không vô hạn trên đường - sẽ tạo ra chính xác loại bề mặt đó. Một cách khác để tạo bề mặt đó là từ lưới khoảng cách Euclide cho các con đường. Đó là hoàn hảo, ngoại trừ những con đường là đẳng cấp. Họ phải bị nghiêng; để làm điều này, hãy thêm bội số cực nhỏ của các khoảng cách dọc theo đường vào lưới khoảng cách Euclide. (Khoảng cách đường vẫn yêu cầu tính toán CostDistance, rất tốn kém, nhưng lần này chỉ cần thực hiện cho các ô đường, chứ không phải là tất cả các ô lưới, sẽ tăng tốc theo đơn đặt hàng cường độ. Điều đó cho phép chúng tôi sử dụng lưới có độ phân giải cực cao nếu muốn, do đó tránh được các lỗi phân tách có thể xảy ra với lưới thô.)