Tại sao GRASS loại bỏ đa giác khi sử dụng v.generalize?


9

Tôi đang phải đối mặt với một vấn đề nan giải trong khi cố gắng sử dụng v.generalize để đơn giản hóa các đa giác có kích thước và cấu trúc tương tự như các Quận hoặc Hoa Kỳ. Thông thường, tôi mất đa giác từ tập dữ liệu sau khi chạy phương thức đơn giản hóa hoặc làm mịn trên chúng. Điều gây phiền toái cho tôi là dường như không có bất kỳ khuôn mẫu nhất quán nào cho hành vi này. Trong một số trường hợp, cùng một bộ lệnh được áp dụng cho các tập dữ liệu khác nhau gây ra kết quả hoàn toàn khác nhau. Kết quả là, tôi không thể phát triển một quy trình công việc lặp lại và miễn cưỡng bắt đầu tìm kiếm các công cụ đơn giản hóa khác bảo tồn topololgy. Đây là một ví dụ:

# LOAD AND CLEAN
v.in.ogr dsn=counties.shp output=county
v.build.polylines input=county output=county_polylines
v.clean input=county_polylines output=county_clean tool=bpol,rmdupl type=boundary

# SMOOTH AND GENERALIZE
v.generalize input=county_clean output=county_smooth method=sliding_averaging look_ahead=7 slide=1
v.generalize input=county_smooth output=county_general method=douglas threshold=.005

Mỗi bước v.generalize dẫn đến một số đa giác biến mất. Tôi muốn hiểu tại sao điều này xảy ra. Có phải do các tính năng được tải vào bộ nhớ không đủ? Các thông số của tôi có "chặt chẽ" đủ để khiến các tính năng bị loại trừ vì chúng đã đáp ứng một số loại tiêu chí hình học không? (Lưu ý rằng tôi đang mất một số tính năng rất lớn.) Có vấn đề với cấu trúc liên kết của các tính năng bị mất khiến chúng bị xóa không? Liên quan đến câu hỏi cuối cùng đó, tôi cho rằng build.polylines và các thao tác sạch mà tôi thực hiện ban đầu nên quan tâm đến vấn đề này, nhưng tôi không hoàn toàn chắc chắn và dường như tôi không thể tìm thấy hướng dẫn tốt giải quyết vấn đề này. Có ai không

Đánh giá cao bất kỳ hiểu biết nào mọi người có thể cung cấp, đặc biệt là những người dựa trên kinh nghiệm cá nhân với công cụ v.generalize.

Roger


có vẻ như dữ liệu của bạn có thể ở lat lon. sẽ đủ để mất dữ liệu với ngưỡng 0,005 của bạn. bạn có thể xác minh bạn đang sử dụng một cs phẳng không?
Brad Nesom

Tôi thực sự đã tự hỏi về điều đó và đã bị từ chối cho phép chiếu Albers Equal Area trước khi chạy phần trên. Dưới đây là các tham số chiếu: USER: 100002 (+ proj = aea + lat_1 = 20 + lat_2 = -23 + lat_0 = 0 + lon_0 = 25 + x_0 = 0 + y_0 = 0 + ellps = WGS84 + đơn vị = m + no_defs) . Vẫn có cùng một vấn đề.
lagerratcoat

Tôi đang tự hỏi tại sao bạn chuyển đổi đa giác thành polylines. Có một lý do cụ thể tại sao bạn không chỉ đơn giản hóa các đa giác trực tiếp?
underdark

Ok, tôi đã rút ra một phần v.build.polylines, vì vậy "County_clean" bây giờ là một lớp đa giác. Vẫn mất một loạt các khu vực. Ban đầu tôi đã nghĩ rằng nó có thể làm cho việc đơn giản hóa dễ dàng hơn, nhưng vì "bpol" trong v.clean cũng đang phá vỡ các đa giác, có lẽ nó không thành vấn đề.
lagerratcoat

1
chỉ là một câu hỏi ngu ngốc Bạn có chắc chắn rằng bạn mất dữ liệu bằng cách sử dụng v.generalize chứ không phải v.clean ?
simo

Câu trả lời:


4

Trả lời từ nhóm phát triển GRASS.

"Sự biến mất của đa giác [trong phiên bản 6.4.1] đã xảy ra do các ranh giới được làm mịn đã vi phạm cấu trúc liên kết vectơ đã bị xóa, sau đó tất cả các ranh giới không chính xác về mặt tôpô. vi phạm cấu trúc liên kết vector. "

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.