Làm thế nào để tôi mô tả một mối quan hệ đặc biệt giữa các cạnh được kết nối?


11

Hãy xem xét tình huống đơn giản này trong đó ba cạnh kết nối tại một nút:

mối quan hệ cạnh

Tôi muốn viết một mô tả ngắn gọn và rõ ràng về mối quan hệ giữa A và B theo cách phân biệt nó với mối quan hệ giữa A và C. Một cái gì đó giống như khi đi ngang qua nút theo chiều kim đồng hồ, A có liền kề không? đến B, nhưng A không liền kề? đến C. Nhưng nó không thực sự phụ thuộc.

Nói theo một cách khác: hãy tưởng tượng bạn đang đứng trên nút và bạn đang hướng về phía A. Bạn bắt đầu xoay tròn theo chiều kim đồng hồ. Cạnh tiếp theo bạn sẽ đến là B, không phải C.

Có cách nào để mô tả mối quan hệ này giữa A và B một cách ngắn gọn, trang trọng hoặc chính xác hơn những gì tôi đã viết ở trên không?

Nó phải có hướng (một mối quan hệ kiểu này tồn tại theo chiều kim đồng hồ từ A và mối quan hệ khác tồn tại theo hướng ngược chiều kim đồng hồ). Và nó phải mở rộng đến các trường hợp có nhiều hơn ba cạnh được kết nối tại nút. Có lẽ nó có một cái gì đó để làm với định tuyến? (Tôi đang nghĩ về điều này trong bối cảnh mạng lưới đường bộ.)

Hai cách tiếp cận tôi đã thử nhưng chưa đi được xa:

  1. Tài liệu tham khảo cấu trúc liên kết giống như 9IM : Tôi đã xem DE-9IM và mặc dù tôi không phải là nhà toán học, tôi nghĩ tôi vẫn có thể nói từ các sơ đồ và thuật ngữ rằng nó không bao gồm loại mối quan hệ này. Tôi cũng không tìm thấy nó trong các mô tả cấu trúc liên kết tại trợ giúp ESRI hoặc trợ giúp của Oracle . (Có thể có một cái gì đó ở đó nhưng tôi chỉ không tìm thấy nó!)

  2. Các mặt : Tôi đã chơi xung quanh với thực tế là khuôn mặt ở phía bắc của A có thể cũng bị giới hạn bởi B, nhưng không phải C. Tuy nhiên, như bạn có thể thấy trong sơ đồ ở đây, điều đó không phải lúc nào cũng đúng. Hãy tưởng tượng sơ đồ của tôi là một trích xuất từ ​​một mạng lưới đường bộ trong đó A và C là những con đường huyết mạch và B là một con đường cụt ngắn.

Tôi nghi ngờ có thể không có một thuật ngữ nào cho những gì tôi đang cố nói; ở mức tối thiểu tôi muốn có thể mô tả một mối quan hệ như vậy một cách đơn giản hơn tôi đã làm ở trên. Đây là một câu hỏi độc lập với nền tảng. Ngay bây giờ, tôi chỉ đang tìm kiếm những từ thích hợp. Sau này tôi sẽ cố gắng thực hiện khái niệm trong python (pyqgis hoặc arcpy) trên một shapefile, vì vậy bất kỳ câu trả lời nào có điểm cuối đó trong tâm trí sẽ đặc biệt thú vị, nhưng không cần thiết.


Tại sao bạn không đính kèm vào mỗi nút danh sách các cạnh được kết nối với nó theo thứ tự?
Julien

1
Có vẻ như bạn đang tìm kiếm một DCEL . Lưu ý rằng khi bạn nhân đôi một đồ thị phẳng , các mặt sẽ trở thành các nút. Trong hình minh họa có các mảnh gồm ba mặt alpha , betagamma , với cạnh A tách beta khỏi gamma , cạnh B tách gamma khỏi alpha và cạnh C tách alpha khỏi beta . Đó là mang lại một đồ thị có chu kỳ, trong đó có tất cả các thông tin mà bạn đang tìm kiếm - và thực sự nó thực sự là kề trong đồ thị kép.
whuber

@julien, cảm ơn - đó là một ý tưởng thực hiện tốt; Tôi se thử no. Nhưng trước tiên ... tôi đang tìm một từ hoặc cụm từ để mô tả loại mối quan hệ này.
andytilia

@whuber, cảm ơn vì tiền boa. Tôi chưa gặp DCEL trước đây. Có vẻ như B là nửa cạnh "tiếp theo" của nửa phía bắc, nửa cạnh phía tây của A. H'm: sau đó nếu tôi muốn đi ngược chiều kim đồng hồ, thì tôi xem xét nửa cạnh phía nam của A. Và "hướng tây" được ngụ ý bởi nút chung. Tôi tự hỏi nếu nó sẽ hoạt động khi B không phải là một ranh giới mặt (tức là đường cụt). Tôi sẽ xem xét thêm.
andytilia

@julien, tôi đang đọc bình luận của bạn một lần nữa. Tôi có thể thấy bây giờ bạn cũng cho tôi đề xuất phrasing. :-) Có lẽ tôi có thể sử dụng "sắp xếp theo hướng" để mô tả mối quan hệ. Phải chơi xung quanh với nó một chút.
andytilia

Câu trả lời:


1

Tôi biết rằng tôi đến bữa tiệc muộn một chút, nhưng đây là một điều khá thú vị và tôi hy vọng rằng câu trả lời của tôi có thể được sử dụng.

Những gì bạn đang hỏi về một mối quan hệ định tính; các anh chị bỏ qua mối quan hệ định lượng. Lý luận định tính xuất hiện khá thường xuyên trong khoa học không gian địa lý. Các truy vấn mẫu bao gồm: Những bưu kiện nào liền kề với cái này? Những đặc điểm nào nằm trong sự chồng chéo của khu vực A và khu vực B? Vùng nào lõm? Con đường nào bên trái? Các mối quan hệ: liền kề, bên trong, lõm và trái của. Các truy vấn định tính thường bị bỏ qua hoặc bị đánh giá thấp khi so sánh với các câu hỏi định lượng như lớn hơn, ngắn hơn hoặc lớn hơn về số lượng.

Một mối quan hệ định tính có hai đầu vào được gọi là quan hệ nhị phân. Có hai ký hiệu phổ biến cho việc này: - isLeftOf (A, B) Đây là ký hiệu tiền tố. - A isLeftOf B Đây là ký hiệu infix.

Trong các ví dụ trên cũng có một mối quan hệ đơn phương: isConcave. Mối quan hệ này liên quan đến một khu vực với chính nó và sẽ trả về giá trị boolean.

Tất cả các vị từ không gian của Egenhofer trong mô hình 9 giao (được tham chiếu trong 9EIM) là quan hệ nhị phân giữa hai vùng. Bạn cũng có thể quan tâm đến RCC của Randell, Cui và Cohn (http://en.wikipedia.org/wiki/Region_connection_calculus). Các mối quan hệ định tính (tôpô) được đưa ra trong lĩnh vực nghiên cứu này liên quan đến các khu vực với các khu vực, và các công trình sau này liên quan đến các khu vực và các dòng với các dòng. Tuy nhiên, đây không hoàn toàn là những gì bạn đang tìm kiếm.

OK, xin lỗi vì sự lạc đề, nhưng hy vọng điều đó sẽ giúp với khía cạnh thuật ngữ của câu hỏi của bạn.

@whuber đã đi đúng hướng khi đề xuất danh sách cạnh được kết nối gấp đôi (DCEL). Đây là họ hàng gần của các bản đồ tổ hợp, thường được sử dụng dưới vỏ bọc trong các hệ thống CAD và các cạnh có cánh. Khái niệm cạnh có cánh (http://en.wikipedia.org/wiki/Winged_edge) là cách tiêu chuẩn văn bản nổi tiếng định nghĩa một lỗ hổng trong đa giác (http://en.wikipedia.org/wiki/Well- Unknown lòng #Geometric_objects). Lưu ý trên đa giác rằng thứ tự của các điểm bên ngoài là ngược chiều kim đồng hồ và theo chiều kim đồng hồ cho các điểm bên trong. Một người cổ tích nhỏ đi dọc theo ranh giới theo thứ tự này sẽ luôn nhìn thấy bên trong khu vực bên trái cô.

Với các bản đồ tổ hợp và DCEL, điểm quan trọng là các đối tượng này được xác định trên một bề mặt có thể định hướng. Chúng ta không cần phải đi sâu vào các thủ tục toán học - ý tưởng khá đơn giản: nếu bạn có thể xác định hướng trên bề mặt, như bạn có thể với bất kỳ hệ quy chiếu không gian nào trong GIS, thì bạn có một bề mặt có thể định hướng. Vì vậy, nếu bạn có thể xác định hướng, thì bạn có thể xác định thứ tự hướng xung quanh bất kỳ điểm nào trên bề mặt. Với thứ tự định hướng, bạn có thể định nghĩa isLeftOf (A, B), isRot quốcAdjighborTo (A, B), v.v.

Xác định thứ tự xung quanh một đỉnh trong một biểu đồ được nhúng trên một bề mặt đòi hỏi hai phép gán: 1) gán nhãn cho các điểm cuối cạnh và 2) gán một quy ước cho thứ tự xung quanh một đỉnh. Nếu thứ tự phần tử trong một mảng (ví dụ [A, B, C] trong ảnh của bạn) theo chiều kim đồng hồ, thì chúng ta có thể biết cạnh nào ở bên trái của B.

Trong ví dụ của bạn, mỗi phần tử liền kề với các phần tử khác. Thực tế đó cũng có thể nhìn thấy trong mảng vì mảng thực sự đại diện cho một hoán vị, nghĩa là thứ tự quan trọng, nhưng phần tử nào trước tiên thì không. Vậy [A, B, C] tương đương với [C, A, B]. Nói cách khác, mảng bao bọc xung quanh làm cho phần tử cuối cùng liền kề với phần tử đầu tiên.


Cảm ơn! Tôi thích thuật ngữ Lốc xoáy Liền kề liền kề. Nó chỉ cần được mở rộng, như bạn nói, với quy ước đặt hàng xung quanh một đỉnh. Trong trường hợp của tôi, tôi cần xác định trường hợp quy ước đó theo từng trường hợp. Vì vậy, tôi sẽ làm việc với việc mã hóa một cái gì đó như isRot quốcAdjighborTo (A, B, Direction) bằng cách sử dụng hoán vị như bạn đề xuất. Hoặc về mặt trường hợp ở trên, A A có chiều quay theo chiều kim đồng hồ liền kề với B và A không liền kề theo chiều kim đồng hồ với C tựa.
andytilia

Nhân tiện, tôi chưa nhìn vào Tính toán kết nối khu vực. Mặc dù nó không hoàn toàn giải quyết vấn đề này (như bạn đã đề cập), nhưng dù sao thì nó cũng thú vị. Bạn có thể chỉ cho tôi những tác phẩm sau này về các tác phẩm mà bạn có trong tâm trí của Randell, Cui và Cohn không? (hm: các ký tự RC & C đã tạo ra một khung gọi là RCC)
andytilia

4

Khi bạn nhìn vào các biểu đồ cấu trúc liên kết và kết nối mà bạn nhận được từ các nhà cung cấp như Teleatlas, Navteq, ESRI, v.v., bạn sẽ bắt đầu thấy một mô hình (tất nhiên mọi người đều có cách làm "đặc biệt" của riêng họ).

Cá nhân , mặc dù 1) Cấu trúc liên kết không gian địa lý2) Đồ thị định tuyến chỉ là đồ thị và có thể được khái quát hóa để được biểu diễn trong cùng một cấu trúc dữ liệu, tôi cố gắng tránh điều đó càng nhiều càng tốt.

Tôi cố gắng tạo ra sự khác biệt trong đầu.

  • Khi tôi nói "Cấu trúc không gian địa lý" (1) Tôi có nghĩa là một cấu trúc biểu đồ để biểu thị các mối quan hệ hình học của các tính năng (ví dụ: phần bên trái của cạnh A, mặt nào được tạo bởi các cạnh [A, B, C], phần được chứa bởi mặt B, v.v.)
  • Khi tôi nói "Đồ thị định tuyến" (2), ý tôi là cấu trúc biểu đồ để giải quyết các vấn đề định tuyến (ví dụ: đường dẫn ngắn nhất để đi từ A-> B với [X] hạn chế / điều kiện)

Chúng chỉ là đồ thị, và chúng thuộc về bề rộng của khoa học , nhưng có một lợi thế rõ ràng là không khái quát như điều tương tự. Chúng phục vụ các mục đích khác nhau, và việc tối ưu hóa và áp dụng các hoạt động dễ dàng hơn nhiều khi chúng được chuyên biệt hóa cho mục đích cụ thể đó.

ESRI làm điều này. Chúng có cấu trúc biểu đồ cho cấu trúc liên kết không gian địa lý (TopologyGraph)cấu trúc biểu đồ khác cho các vấn đề định tuyến (bộ dữ liệu mạng). Heck, họ thậm chí còn có Cấu trúc đồ thị cũ hơn - Mạng hình học - phục vụ tốt cho các vấn đề về dòng chảy trong các mạng tiện ích.

Có thể cho rằng, trong thế giới PostgreSQL / PostGIS, chúng ta cũng bắt gặp điều này. Có một cấu trúc dữ liệu để định tuyến và một cấu trúc khác cho cấu trúc liên kết không gian địa lý .

Trong câu hỏi của bạn, bạn đang nói về đồ thị và điều hướng chúng theo chiều kim đồng hồ và ngược chiều kim đồng hồ, cũng như khuôn mặt, điều khiến tôi biết rằng bạn muốn có một cấu trúc chuyên biệt cho (1).

Đối với "không gian địa lý Topology", tôi nghĩ một cách tốt đẹp của đại diện cho loại Topology là cách các Hydrographic Office Anh làm trong họ S57 Topology Mô tả đầy đủ bằng Topology .

Cấu trúc liên kết đầy đủ UKHO

Rất giống với những gì tất cả các triển khai chính làm.

Bây giờ, nếu những gì bạn đang tìm kiếm là định tuyến, thì biểu đồ sẽ trở nên khác biệt dựa trên việc bạn cần kết nối một hướng hay hai hướng. Cuối cùng, nó sôi sùng sục xuống:

  • các nút TỪ được kết nối với các nút TO tạo Edges
  • Các cạnh có các thuộc tính cho bên trái và bên phải (ví dụ: phạm vi địa chỉ).
  • Các nút (tức là các nút nơi các cạnh kết nối) có thể có một tập hợp các hạn chế. Vì vậy, về cơ bản, bạn sẽ có một mục nhập chính để thể hiện chính giao diện đó và các mục riêng lẻ với các mục TỪĐẾN để thể hiện các hạn chế dòng chảy.

Chúc may mắn, và cho chúng tôi biết dự án của bạn như thế nào.


Rất cám ơn đã phân biệt rõ ràng giữa hai loại biểu đồ. Bạn có nghĩ rằng đó là một sự khác biệt hợp lý để nói rằng Đồ thị định tuyến thường chứa một số thông tin trên các cạnh và / hoặc nút, trong khi cấu trúc liên kết không gian địa lý không bao giờ cần phân bổ cho các cạnh và nút (nó chỉ dựa trên mối quan hệ không gian giữa các đối tượng)? Tôi đoán vấn đề của tôi phù hợp vững chắc trong lĩnh vực Cấu trúc không gian địa lý: mối quan hệ giữa Edges A và B tồn tại bất kể sự quy kết nào trên các cạnh. Nhưng tôi vẫn còn thiếu một cách ngắn gọn để đặt tên cho mối quan hệ này ...
andytilia

Tôi nghĩ rằng quá mạnh mẽ để tuyên bố rằng "Cấu trúc liên kết không gian địa lý không bao giờ cần sự ghi nhận trên các cạnh và nút", nó thực sự dựa trên từng trường hợp cụ thể. Tôi đã thấy các biểu đồ tô pô có chứa thuộc tính được chia sẻ giữa các tính năng có nút đó. Ví dụ là giá trị Z hoặc Nhiệt độ. Tôi sẽ nói chỉ cần gọi nó là nút và phân biệt nút được kết nối khi cần thiết, nhưng tất nhiên, tôi không có đủ bối cảnh của vấn đề chung mà bạn đang cố gắng giải quyết.
Ragi Yaser Burhum

À, đúng rồi, cảm ơn: một biểu đồ phẳng của hai con đường cắt nhau tại một cây cầu. Có thể có một nút có bốn cạnh, nhưng không phải tất cả các cạnh đều kết nối với nhau. Vì vậy, nút cần chứa thông tin về các mức vượt, để phân biệt tình huống đó với giao cắt ở cấp.
andytilia

1
Chính xác :). Đó là lý do tại sao tôi đề cập đến mối nối. Tôi đã suy nghĩ về trường hợp đó. Một cách để làm điều đó là biểu diễn đường giao nhau dưới dạng "nút chính" với các mục TỪ-ĐẾN. Tình huống cầu vượt / đường chui xảy ra mọi lúc. Thậm chí tệ nhất là những trường hợp như Cầu Bay hoặc ở Chicago nơi bạn có các cạnh khớp với không gian 2D (chúng nằm trên nhau một cách hiệu quả) với một bộ cạnh chảy theo một chiều, trong khi bộ kia chảy theo cách khác.
Ragi Yaser Burhum
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.