ฉันมีชุดรูปหลายเหลี่ยมแสดงพื้นที่ขนาดใหญ่พูดย่านที่อยู่อาศัยของเมือง ฉันต้องการระบุพื้นที่ทับซ้อนขนาดใหญ่ระหว่างพื้นที่เหล่านั้น
แต่มีปัญหา: บางครั้งรูปหลายเหลี่ยมเหล่านี้จะทับซ้อนกันตามเส้นรอบวงของพวกเขา (เพราะวาดด้วยความแม่นยำน้อย) สิ่งนี้จะสร้างการทับซ้อนที่ยาวและแคบซึ่งฉันไม่สนใจ
แต่ในบางครั้งจะมีการทับซ้อนกันของรูปหลายเหลี่ยมที่แข็งแกร่งซึ่งหมายถึงพื้นที่ขนาดใหญ่ที่รูปหลายเหลี่ยมของพื้นที่ใกล้เคียงซ้อนทับกัน ฉันต้องการเลือกเหล่านี้เท่านั้น
ดูภาพด้านล่างของแค่เหลื่อมกัน ลองนึกภาพฉันต้องการเลือกรูปหลายเหลี่ยมสีฟ้าที่มุมซ้ายล่าง
ฉันสามารถดูพื้นที่ได้ แต่บางครั้งพื้นที่แคบ ๆ ก็ยาวพอที่จะมีพื้นที่ใหญ่พอ ๆ กับรูปหลายเหลี่ยมสีฟ้า ฉันพยายามทำอัตราส่วนพื้นที่ / เส้นรอบวง แต่นั่นก็ให้ผลที่หลากหลายเช่นกัน
ฉันได้ลองใช้ST_MinimumClearance
แต่บางครั้งพื้นที่ขนาดใหญ่จะมีส่วนที่แคบติดอยู่หรือสองจุดยอดที่ใกล้เคียง
ความคิดของวิธีการอื่น ๆ ?
ในที่สุดสิ่งที่ดีที่สุดสำหรับฉันคือการใช้บัฟเฟอร์เชิงลบตามที่ @Cyril และ @FGreg แนะนำด้านล่าง
ฉันใช้สิ่งที่ชอบ:
ST_Area(ST_Buffer(geom, -10)) as neg_buffer_area
ในกรณีของฉันหน่วยเป็นเมตรดังนั้นบัฟเฟอร์ลบ 10 ม.
สำหรับรูปหลายเหลี่ยมแคบ ๆ พื้นที่นี้กลับเป็นศูนย์ (เช่นเรขาคณิตจะว่างเปล่า) จากนั้นฉันใช้คอลัมน์นี้เพื่อกรองรูปหลายเหลี่ยมแคบ ๆ