Тут рішення, яке не потребує python.
Додайте новий віртуальний шар із запитом:
WITH r AS (
SELECT
Basins800.rowid AS idGray,
area(Basins800.geometry) AS areaGray,
area(Intersection(Basins800.geometry, Severity.geometry)) AS aeraInter,
Basins800.geometry AS geomGray
FROM Basins800, Severity
)
SELECT *, areaInterSum/areaGray AS overlap , geomGray
FROM (
SELECT
idGray,
areaGray,
sum(areaInter) AS areaInterSum,
geomGray
FROM r
GROUP BY idGray)
WHERE areaInterSum/areaGray > 0.9
З:
Basins800 як ваш шар, який потрібно фільтрувати із сірими багатокутниками
Важкість: ваш червоний шар перекривається.
В результаті вийде новий шар, у якому лише всі сірі плоскігони> 90% перекриваються червоними багатокутниками, з новим полем, що містить відсотки перекриття.
Сподіваюся, це працює. Я можу додати більше деталей запиту, якщо це потрібно.
Примітка: Ваші дані містять дуже малі багатокутники (що надходять від вашої растрової обробки та відповідають растровому пікселю (на малюнку ми можемо побачити 4 полігони, але є ще 25 малих полігонів). Це робить запит дуже повільним для виконання (функція перетину) генерує одну функцію для кожної пари функцій з двох шарів).