ทำไม GRASS จึงกำจัดรูปหลายเหลี่ยมเมื่อใช้ v.generalize


9

ฉันกำลังเผชิญกับภาวะที่กลืนไม่เข้าคายไม่ออกในขณะที่พยายามใช้ v.generalize เพื่อลดความซับซ้อนของรูปหลายเหลี่ยมที่มีขนาดและโครงสร้างคล้ายกับเขตปกครองหรือรัฐของสหรัฐอเมริกา บ่อยครั้งที่ฉันสูญเสียรูปหลายเหลี่ยมจากชุดข้อมูลหลังจากใช้วิธีการทำให้เรียบง่ายหรือเรียบเนียนบนพวกเขา สิ่งที่ฉันมีปัญหาคือดูเหมือนจะไม่มีรูปแบบที่สอดคล้องกับพฤติกรรมนี้ ในบางกรณีชุดคำสั่งเดียวกันที่ใช้กับชุดข้อมูลที่แตกต่างกันทำให้เกิดผลลัพธ์ที่แตกต่างกันโดยสิ้นเชิง เป็นผลให้ฉันไม่สามารถพัฒนาเวิร์กโฟลว์ที่ทำซ้ำได้และไม่เต็มใจที่จะเริ่มต้นค้นหาเครื่องมือการทำให้เข้าใจง่ายอื่น ๆ ที่รักษา topololgy นี่คือตัวอย่าง:

# 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

ขั้นตอน v.generalize แต่ละขั้นตอนส่งผลให้รูปหลายเหลี่ยมบางส่วนหายไป ฉันต้องการที่จะเข้าใจว่าทำไมสิ่งนี้เกิดขึ้น มันเป็นเพราะคุณสมบัติถูกโหลดลงในหน่วยความจำไม่เพียงพอ? พารามิเตอร์ของฉัน "รัดกุม" เพียงพอที่จะทำให้คุณสมบัติถูกแยกออกหรือไม่ (โปรดทราบว่าฉันสูญเสียคุณสมบัติที่มีขนาดใหญ่มาก) มีปัญหากับทอปอโลยีของคุณสมบัติที่ถูกทิ้งซึ่งทำให้พวกเขาถูกลบหรือไม่? ที่เกี่ยวข้องกับคำถามสุดท้ายนั้นฉันคิดว่า build.polylines และการดำเนินการที่สะอาดที่ฉันทำในตอนแรกควรดูแลสิ่งนี้ แต่ฉันไม่แน่ใจทั้งหมดและฉันไม่สามารถหาคำแนะนำที่ดีที่อยู่นี้ได้ ยังมี .... บ้าง?

ขอบคุณข้อมูลเชิงลึกที่ผู้คนสามารถให้ได้โดยเฉพาะอย่างยิ่งจากประสบการณ์ส่วนตัวด้วยเครื่องมือ v.generalize

โรเจอร์


ดูเหมือนว่าข้อมูลของคุณอาจอยู่ใน lat lon ซึ่งจะเพียงพอที่จะสูญเสียข้อมูลด้วยเกณฑ์. 005 ของคุณ คุณสามารถตรวจสอบว่าคุณใช้ระนาบ c หรือไม่?
Brad Nesom

จริง ๆ แล้วฉันสงสัยเกี่ยวกับเรื่องนั้นและปฏิเสธที่จะคาดการณ์อัลเบอร์เท่ากับพื้นที่ก่อนที่จะทำงานข้างต้น นี่คือพารามิเตอร์การฉาย: USER: 10,0002 (+ proj = aea + lat_1 = 20 + lat_2 = -23 + lat_0 = 0 + lon_0 = 25 + x_0 = 0 + y_0 = 0 + ellps = WGS84 + หน่วย = m + no_defs) . ยังคงมีปัญหาเดียวกัน
lagerratrobe

ฉันสงสัยว่าทำไมคุณแปลงรูปหลายเหลี่ยมเป็นโพลีน มีเหตุผลที่เฉพาะเจาะจงหรือไม่ว่าทำไมคุณไม่เพียงทำให้รูปหลายเหลี่ยมลดความซับซ้อนโดยตรง?
underdark

ตกลงฉันดึงส่วน v.build.polylines ออกมาดังนั้น "county_clean" จึงเป็นชั้นรูปหลายเหลี่ยม ยังคงสูญเสียพื้นที่จำนวนมาก ฉันคิดว่าในตอนแรกว่ามันอาจทำให้การทำให้เข้าใจง่ายขึ้น แต่เนื่องจาก "bpol" ใน v.clean ก็ทำลายรูปหลายเหลี่ยมด้วยเช่นกันบางทีมันอาจไม่สำคัญ
lagerratrobe

1
แค่คำถามโง่ ๆ คุณแน่ใจว่าคุณได้สูญเสียข้อมูลโดยใช้v.generalizeและไม่v.clean ?
simo

คำตอบ:


4

คำตอบจากทีมพัฒนา GRASS

"การหายตัวไปของรูปหลายเหลี่ยม [ใน v 6.4.1] เกิดขึ้นเนื่องจากขอบเขตที่ราบเรียบซึ่งมีการละเมิดโทโพโลยีเวกเตอร์ถูกลบหลังจากนั้นขอบเขตทั้งหมดที่ไม่ถูกต้องทอพอโลยีขอบเขตอยู่ใน [6.4.2] เรียบเท่านั้น / ทำให้ง่ายขึ้น ละเมิดเวกเตอร์ทอพอโลยี "

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.