2009-03-12 42 views
5

Tôi hiện đang làm việc trên dự án trực quan hóa dữ liệu. Mục tiêu của tôi là tạo đường đồng mức, nói cách khác là dòng iso, từ dữ liệu bị lỗi. Dữ liệu có thể là nhiệt độ, dữ liệu thời tiết hoặc bất kỳ loại nào các thông số môi trường khác nhưng chỉ có điều kiện là phải có khoảng cách đều đặn. Tôi tìm kiếm trên internet, tuy nhiên tôi không thể tìm thấy một thuật toán tốt, mã giả hoặc mã nguồn để sản xuất các đường đồng mức từ lưới. Không ai biết thư viện, mã nguồn hoặc thuật toán để tạo đường đồng mức từ dữ liệu bị lỗi? nó sẽ là tốt nếu đề xuất của bạn có hiệu suất thời gian chạy tốt, tôi không muốn chờ đợi người dùng của mình rất nhiều :)Tạo đường đồng mức từ dữ liệu được khoảng cách đều nhau

Chỉnh sửa: cảm ơn vì phản ứng nhưng cô lập có một số ràng buộc như họ không nên cắt nhau tạo ra các đường cong bezier không hoàn thành mục tiêu của tôi.

+0

Xem câu trả lời của tôi tại http://stackoverflow.com/questions/3180401/net-open-source-contour-plotting/13296170 – ProfNimrod

Trả lời

1

có một số đường hợp lý tốt có sẵn trong GNUplot - nếu bạn có thể sử dụng mã GPL có thể hữu ích.

4

Xem câu hỏi này: How to approximate a vector contour from an elevation raster?

Gần như trùng lặp, nhưng sử dụng thuật ngữ khá khác. Bạn sẽ thấy rằng đồ họa và đồ họa máy tính giải quyết nhiều vấn đề tương tự, nhưng sử dụng các thuật ngữ khác nhau cho chúng.

+0

Đó là bản sao. "dữ liệu bị chặn" <=> "dữ liệu raster", "dữ liệu" <=> "độ cao", v.v. –

0

Khi liên kết từ Paul Tomblin gợi ý, các đường cong Bezier (là một tập con của các dòng chữ B) là một giải pháp chín muồi cho vấn đề của bạn. Nếu hiệu suất thời gian chạy là một vấn đề, các đường cong Bezier có lợi ích bổ sung là có thể xây dựng thông qua thuật toán de Casteljau rất nhanh, thay vì vẽ chúng theo các phương trình tham số. Về cơ hội bạn đang làm việc với DirectX, nó có một chức năng thư viện cho de Casteljau, nhưng nó không phải là khó khăn để nấu một mình bằng cách sử dụng 1001 trang web mô tả nó.

0

Nếu dữ liệu của bạn được đặt định kỳ, điều này có thể được thực hiện khá dễ dàng (giả sử tôi hiểu vấn đề của bạn một cách chính xác). Trước tiên, bạn cần xác định khoảng thời gian bạn muốn các đường nét của mình. Tiếp theo tạo lưới mà bạn sẽ sử dụng để lưu trữ thông tin đường bao (tôi giả sử chỉ đơn giản là bật/tắt hoặc độ cao ở loại đường bao này của dữ liệu), mà nên là một khoảng nhỏ hơn so với dữ liệu nguồn. Bây giờ, thủ thuật ở đây là để bù đắp 2 lưới bằng 1/2 một khoảng thời gian (sẽ không thực sự hiển thị trong mã như thế này, nhưng khái niệm mà tôi đang xử lý ở đây) và so sánh 4 tọa độ xung quanh điểm hiện tại trong lưới dữ liệu đường bao mà bạn đang tính toán. Nếu bất kỳ 4 điểm nào trong một khoảng thời gian khác nhau, thì 'pixel' đó trong lưới đường bao phải được đặt thành true (hoặc giá trị của phạm vi đường bao bị vượt qua).

Với phương pháp này, sẽ xảy ra sự cố khi khoảng thời gian quá dài sẽ khiến nhiều đường bao chồng lên nhau.

Các vấn đề liên quan