У меня есть геопанда, GeoDataFrame
содержащая сотни стройныхPolygon
и MultiPolygon
геометрических фигур . Полигоны перекрываются во многих местах. Я хотел бы сделать новую геометрию, которая содержит подсчет того, сколько из них перекрывается. Что-то вроде этого:
У кого-нибудь есть идеи, как к этому подойти? Я даже не вижу пути внутрь.
В конце концов, мне особенно хотелось бы иметь возможность взвешивать полигоны, чтобы некоторые полигоны могли стоить 2 самостоятельно. Делать это с shapely
Z-полем может быть неплохо.
Кроме того: я не особо привязан к какой-либо из этих библиотек, это именно то, где я оказался. Координаты в этих геометриях на самом деле являются пиксельными координатами - я спотыкаюсь о том, чтобы сделать растр для наложения на другое изображение. Я бы предпочел сохранить как можно меньшую площадь, так как я хотел бы иметь возможность развертывать эти компоненты на облачных серверах и т. Д., Где я не смогу устанавливать случайные компоненты.
Ответы:
Может быть не по теме, потому что это решение postgresql / postgis:
В postgres / postgis это простой O (N ^ 2) запрос, который может / может быть принят в геопанду.
и определяет 5 прямоугольников:
Запрос на пересечение с самой таблицей:
показывает, какие области пересекаются друг с другом:
Используя эту основу, вы можете агрегировать количество для каждого объекта ID через группу по clausel:
Результат показывает нужный шаблон.
источник