Tôi có nên chia MultiPolygons thành Đa giác không?


8

Trong hệ thống tôi đang triển khai, tôi có một bảng T1 với hình học liên quan. Hầu hết các hình học là một tập hợp n đa giác, với 10 <n <100. Hiện tại trong bảng T1 tôi có một cột hình học loại MultiPolygon, có chỉ số GiST.

Vì bảng T1 sẽ lớn, tôi sợ rằng sẽ tốt hơn nếu tạo mối quan hệ một-nhiều với bảng thứ hai T2, có một cột Kiểu đa giác và chia mỗi MultiPolygon thành nhiều Đa giác.

Nhưng tôi phải thực hiện các tìm kiếm trên bảng T1, do đó với cách tiếp cận thứ hai, nhược điểm là tôi có một phép nối bổ sung để xử lý. Hơn nữa, việc chèn hình học cho một bản ghi của bảng T1 sẽ phức tạp hơn.

Tôi tự hỏi liệu có ai có bất kỳ kinh nghiệm nào về vấn đề như vậy không và liệu người đó có thể làm sáng tỏ.

Câu trả lời:


1

Tôi muốn nói rằng đừng lo lắng về kích thước của bảng T1 của bạn; các chỉ mục (và tất nhiên kích hoạt) là những gì ảnh hưởng đến hiệu suất cho hầu hết các phần.

Ngoài việc có ít hơn một lần tham gia, việc dịch WKB sang bản trình bày PostGIS / GEOS nội bộ mà tôi tưởng tượng sẽ tối ưu hơn một chút so với thực hiện cho nhiều đa giác riêng lẻ.

Nhu cầu duy nhất để có một bảng hình học riêng sẽ là nếu một đa giác được liên kết với nhiều hơn một bản ghi. Đa dữ liệu nên được coi là một thực thể duy nhất cho mục đích thiết kế cơ sở dữ liệu và chỉ khi mối quan hệ phức tạp hơn, bạn mới nên xem xét một bảng riêng biệt. Và sẽ có một tiết kiệm không gian vật lý nhẹ với ít bảng hơn.

Hãy thử nó với cả hai thiết lập và chạy truy vấn trong pgadmin, cung cấp cho bạn thời gian cho từng phần của truy vấn.


4
@MerseyViking. Chỉ số sẽ làm cho một công việc tốt hơn nhiều nếu đa bội được chia thành đa giác. Trong trường hợp đa đường, chỉ mục được xây dựng trên tổng phạm vi bbox của đa đường. Các hộp nhỏ hơn trong chỉ mục chỉ số hiệu quả hơn.
Nicklas Avén

@Nicklas đồng ý BBOX sẽ lớn hơn với đa giác. +1
Mapperz

Được rồi cảm ơn. Nhưng điều tôi không thể hiểu là khi nào nên sử dụng loại MultiPolygon nếu một chỉ mục luôn hoạt động tốt hơn cho Đa giác.
user3125

2
Quyết định của đa giác so với đa giác phức tạp hơn thế. Có nhiều điều để xem xét. Nhiều đa giác có thể cho một thiết kế cơ sở dữ liệu "tốt hơn". Tùy thuộc vào cách đa giác và đa giác có liên quan đến không gian và quá trình xử lý, phân tích bạn muốn làm, mức tăng trong việc chia đa giác có thể lớn hoặc không có gì. Đa giác cũng là một loại hình học phổ biến như là kết quả của quá trình xử lý. Ví dụ: nếu bạn sử dụng ST_Difference trên đa giác và đường giao nhau, bạn sẽ nhận lại được đa giác.
Nicklas Avén

1
@MerseyViking, tôi thấy quan điểm của bạn nhưng vì anh ta có từ 10 đến 100 đa giác trong mỗi đa giác nên có khả năng lớn việc chia chúng thành đa giác sẽ giúp tăng cường tuyệt vời. Và việc tham gia vào các trường số nguyên được lập chỉ mục sẽ không tốn nhiều tiền.
Nicklas Avén
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.