Mô phỏng việc mở rộng các tính năng đa giác


13

Tôi đã có những gì tôi hy vọng sẽ là một câu hỏi thú vị. Tôi đang thực hiện một nhiệm vụ cho một phần giới thiệu về khóa học GIS sử dụng một số dữ liệu tràn dầu vùng Vịnh để giới thiệu các phương pháp phân tích không gian dựa trên vectơ phổ biến (bộ đệm, lớp phủ, v.v.) Tôi đã có một lớp tính năng đa giác chứa các giới hạn của sự cố tràn dầu Deepwater Horizon vào một ngày nhất định và tôi đang mô phỏng sự mở rộng của nó với bộ đệm.

Nó thực hiện công việc để minh họa khái niệm này, nhưng chắc chắn không cung cấp kết quả thực tế. Nó khiến tôi suy nghĩ về việc làm thế nào điều này có thể được thực hiện theo cách cung cấp kết quả ít đồng nhất hơn, bắt chước / làm giả hiệu ứng của dòng điện dẫn dầu theo nhiều hướng khác nhau khi nó mở rộng.

Nói chung, tôi đang tìm kiếm một quy trình công việc sẽ thực hiện các tính năng đa giác đầu vào sau đây:

  • Tạo một tính năng đa giác mới lớn hơn bản gốc theo một khu vực được chỉ định (như 10 km vuông.) Hoặc có thể là một yếu tố được chỉ định (như 5%)
  • Tính năng đa giác mới sẽ có hình dạng tùy ý, với cảnh báo rằng ...
  • Tính năng đa giác mới sẽ chứa tính năng đa giác ban đầu (điểm này không phải là công cụ giải quyết, nhưng sẽ rất tuyệt nếu có)

Bất kỳ giải pháp trong thế giới thực nào cũng sẽ phải liên quan đến việc mô hình hóa các dòng hải lưu, động lực học chất lỏng và những thứ tương tự, vượt ra ngoài phạm vi của những gì tôi đang cố gắng thực hiện (mặc dù các giải pháp kết hợp điều này chắc chắn rất đáng hoan nghênh và sẽ rất thú vị), nhưng ý tưởng đã khơi gợi sự tò mò của tôi về vấn đề không gian tiềm ẩn và tôi tò mò không biết giải pháp nào hiện có. Tôi đã có một giải pháp trong đầu, nhưng tôi muốn nghe những giải pháp khác mà người khác có thể có.

Tôi đang làm việc trong thế giới ESRI, nhưng các giải pháp liên quan đến các gói / nền tảng khác chắc chắn rất đáng hoan nghênh (mặc dù tôi có thể không kiểm tra được chúng). Các thuật toán chung, mã giả và mã cũng tốt.


2
Có những giải pháp thú vị và sáng tạo, nhưng tôi lo ngại về tiền đề ngầm rằng một bài tập như vậy sẽ có liên quan gì đến sự cố tràn dầu. Lượng thông tin khoa học liên quan không nhiều hơn một nhà triết học đang nhìn chằm chằm vào rốn của mình. Chắc chắn, thật thú vị khi truyền bá đa giác xung quanh - Tôi nhớ đã nghe một đại diện ESRI mô tả việc này để mô phỏng lửa với ArcView 2 vào năm 96 - nhưng làm thế nào để bạn biện minh rằng quá trình này là bất cứ điều gì ngoài sự tùy tiện và có thể gây hiểu lầm?
whuber

1
@whuber - Tôi không khẳng định kết quả sẽ là bất cứ điều gì ngoài sự độc đoán. Có một kết quả tùy ý là điều tôi đang tích cực tìm kiếm trong câu hỏi. Bạn đúng rằng kết quả sẽ không giống với thế giới thực. Đó là một phần lý do tại sao tôi đặt tiêu đề cho câu hỏi như tôi đã làm (trái ngược với "Mô phỏng sự mở rộng của sự cố tràn dầu"). Tôi quan tâm đến khía cạnh phương pháp hình học / phương pháp tính toán, không phải là ứng dụng của nó trong bất kỳ lĩnh vực cụ thể nào. Phần tràn dầu chỉ đơn giản là động lực để suy nghĩ về một vấn đề không gian thú vị. Tôi sẽ thử và làm rõ điều này trong câu hỏi.
James M

Quên đề cập đến: có một câu hỏi trong bài tập yêu cầu học sinh suy nghĩ về lý do tại sao sử dụng công cụ đệm theo cách này là một lựa chọn tồi nếu bạn đang cố gắng phản ánh thực tế. Vì vậy, nếu bất cứ ai lo lắng rằng tôi đang cố gắng biến điều này thành hiện thực, đừng như vậy :)
James M

Cảm ơn. Tôi lo ngại rằng các sinh viên ấn tượng, khi nhìn thấy một minh họa đồ họa tuyệt vời về việc mở rộng đa giác cùng với một số đề cập đến "sự cố tràn dầu", có thể chấp nhận một cách không chính thức cái trước đây như một đại diện thực tế của cái sau.
whuber

Câu trả lời:


7

Ê

Ở đây tôi nghĩ là một cách thú vị để làm điều đó trong PostGIS. Điều này tôi nghĩ có thể được mở rộng để việc mở rộng tuân theo một số dòng dõi đại diện cho hiện tại. Nhưng bây giờ nó chỉ mở rộng theo một hướng.

Nó lặp lại 50 lần và với mỗi lần lặp sẽ lấy đa giác từ lần lặp cuối cùng, di chuyển nó, đệm nó (đơn giản hóa nó để làm cho mọi thứ chạy trơn tru hơn) và kết hợp nó với lồi. Tôi nghĩ rằng lồi đã cho một kết quả đẹp hơn so với kết hợp nó.

Vì vậy, kết quả là 50 đa giác ngày càng lớn hơn. Mỗi đa giác lớn hơn hoàn toàn chồng lên tất cả các đa giác nhỏ hơn.

Để xem kết quả, bạn có thể dùng thử tại http://postgisonline.org/map.php

Chỉ cần sao chép mã sql bên dưới và nhấp vào "map1"

VỚI RECURSIVE t (the_geom, n) AS (CHỌN 'POLYGON ((10 10,8 13, 10 15, 12 14, 15 15, 16 12, 15 10, 10 10))' :: hình học AS the_geom, 1 là n UNION ALL CHỌN ST_Convexhull (ST_Collect (ST_Simplify (ST_Buffer (ST_Transscale (the_geom, 1.3, 2.7,1,1), 1), 0.1), the_geom)), n + 1 là n TỪ WHERE n <50) ;

Nếu bạn muốn chỉ nhìn thấy đa giác từ lần lặp 30: bạn có thể thêm
giới hạn 1 bù 30
giữa t và dấu chấm phẩy ở cuối

việc tạo ra 50 đa giác đó sử dụng khoảng 50 ms để có thể mở rộng mô hình mà không phải chờ đợi quá nhiều.

Trân trọng Nicklas

Cái này thậm chí còn đẹp hơn tôi nghĩ:

VỚI RECURSIVE t (the_geom, n) AS (CHỌN 'POLYGON ((10 10,8 13, 10 15, 12 14, 15 15, 16 12, 15 10, 10 10))' :: hình học AS the_geom, 1 là n UNION ALL SELECT st_convexhull (ST_collect (ST_Simplify (ST_Buffer (ST_Transscale (the_geom, 1.1 * n, 15,1,1), 0,2 * n), 0,1), the_geom)), n + 1 như n CHỌN the_geom TỪ

mô phỏng mở rộng rẽ phải


Đó là một giải pháp gọn gàng và một lời nhắc nhở khác mà tôi cần tìm thời gian để bắt đầu tìm hiểu về GIS trong bối cảnh cơ sở dữ liệu không gian. Đó là một ví dụ tốt về lý do tại sao một trang web như thế này hoạt động. Tôi không chỉ tìm thấy một giải pháp hoàn toàn khác với những gì tôi đã nghĩ, mà tôi còn tìm thấy một tài nguyên mới như một phần thưởng.
James M

Vâng, có rất nhiều posibilites với sql không gian. Truy vấn trên khó đọc hơn bình thường một chút vì phần đệ quy. Có rất nhiều nguồn tuyệt vời để giúp bắt đầu.
Nicklas Avén

3

Sự cẩn thận của whuber rất quan trọng, và miễn là bạn làm điều này chỉ nhằm mục đích minh họa và không muốn kéo vào chơi động lực học chất lỏng, điều này có thể nhưng làm phức tạp vấn đề.

Điều đó nói rằng, tôi nghĩ đó là một câu hỏi thú vị, và có thể là niềm vui cho các sinh viên. Một cách khác để xem xét vấn đề là nghĩ về nó như một hiện tượng dựa trên raster, với mật độ dầu được đo trong mỗi tế bào. Từ đó, bạn có thể sử dụng một mô hình có tính đến ansiotropy, chẳng hạn như r.spread( tài liệu ) để mô hình hóa tốc độ tăng trưởng, có lẽ bao gồm cả dòng điện giả để 'điều khiển' sự lây lan. Bạn cũng có thể làm điều gì đó tương tự với các loại hoạt động tiêu cự khác nhau trong ArcGIS, sử dụng các hình dạng không đều để khắc phục các vấn đề của bộ đệm tuyến tính.


2

Tôi nghĩ rằng tôi muốn có các tính năng vectơ đại diện cho dòng điện và sử dụng chúng làm vectơ điều khiển trong hoạt động cong vênh. Chìa khóa sẽ được nhân rộng các vectơ một cách chính xác để bắt chước sự lây lan của một ngày.

Tôi đồng ý với Andy W rằng việc thả ranh giới vào các điểm có thể là điều kiện tiên quyết. Bạn cũng có thể cần tăng mật độ số điểm để có kết quả chính xác.

Không chắc chắn làm thế nào bạn cong vênh trong thế giới ESRI tôi sợ. Tôi biết tiện ích mở rộng Data Interop sẽ làm điều đó, nhưng tôi cho rằng cũng phải có một phương thức tích hợp sẵn hoặc một tiện ích mở rộng dành riêng cho loại điều này.


1

Tôi sẽ không ngạc nhiên nếu ai đó thực sự đã thực hiện các mô phỏng tương tự, nhưng đây là cách tôi nghĩ rằng tôi sẽ tiếp cận dự án (không có bất kỳ kiến ​​thức nào trước đây về các quá trình Đại dương sẽ khuếch tán sự cố tràn dầu).

Nếu bạn muốn làm việc nghiêm túc với đa giác, tôi sẽ cắt ranh giới của bạn thành một số điểm được xác định trước. Sử dụng các điểm đó, tôi sẽ giới thiệu các mô phỏng của bạn, với các yếu tố ngẫu nhiên liên quan đến hướng mở rộng và khoảng cách mở rộng (trong giới hạn hợp lý được xác định trước), lặp lại các bước đó nhiều lần nếu cần. Sau đó, tạo lại vỏ lồi của tất cả các điểm dựa trên các vị trí mới (nếu bạn muốn điều này luôn bao gồm đa giác trước đó, bạn sẽ phải hạn chế mở rộng ra bên ngoài). Đối với một khóa học giới thiệu về GIS, có lẽ tôi sẽ chỉ hình dung ra một số lần lặp khác nhau có thể có với các yếu tố ngẫu nhiên đó.

Cũng cách tiếp cận khác nhau, tôi nghĩ rằng hình dung dầu như các tác nhân trong một mô phỏng có thể là khá mát mẻ. Ví dụ, đối với mỗi thùng dầu thô tràn ra, tạo ra một tác nhân mới, sau đó thêm các yếu tố ngẫu nhiên giống như tôi đã nói trước đây. Bạn có thể hình dung sự mở rộng của các tác nhân trên khắp Vịnh trong thời gian, hoặc hình dung mật độ dầu theo thời gian.

Nghe có vẻ như một dự án thực sự tuyệt vời, và đăng ảnh khi bạn hoàn thành.


0

Chỉ để minh họa sự đa dạng của kết quả mà một câu hỏi như thế này có thể tạo ra, tôi sẽ giải quyết vấn đề tôi đã động não khi tôi đăng câu hỏi. Tôi hy vọng sẽ có cơ hội thực hiện nó trong vài ngày tới và sẽ đăng nó khi tôi làm.

  1. Rasterize đa giác thành một raster nhị phân.
  2. Tạo một raster lớn hơn kết quả của 1 với các giá trị 0 và 1 được đặt ngẫu nhiên. Phân phối của các giá trị 0 và 1 sẽ khớp với số lượng mà đa giác cần mở rộng. Vì vậy, nếu đa giác cần mở rộng 5 km vuông. để đạt được mục tiêu của nó, sẽ có 5 km vuông. trị giá 1 ô.
  3. Kết quả liên minh của (1) và (2).
  4. Xóa tất cả các ô khỏi kết quả của (3) không liền kề với đa giác rasterized ban đầu.
  5. Đưa kết quả của (4) vào (2) thay cho đa giác rasterized ban đầu và lặp lại cho đến khi số lượng (1) ô khớp với vùng đích.

Đây có thể không phải là cách hiệu quả nhất để làm điều đó, nhưng nó nên hoạt động. Ý tưởng này dựa trên một bài tập mô hình tăng trưởng đô thị mà một lớp học năm cuối thực hiện. Raster ngẫu nhiên của họ được tạo ra dựa trên sự phù hợp cho sự tăng trưởng và họ không có giới hạn khu vực, nhưng phần tăng trưởng ngẫu nhiên về cơ bản là giống nhau.

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.