У меня есть тысячи полигонов, хранящихся в формате таблицы (с учетом их четырех угловых координат), которые представляют собой небольшие области земли. Кроме того, каждый многоугольник имеет значение данных. Файл выглядит следующим образом:
lat1, lat2, lat3, lat4, lon1, lon2, lon3, lon4, data
57.27, 57.72, 57.68, 58.1, 151.58, 152.06, 150.27, 150.72, 13.45
56.96, 57.41, 57.36, 57.79, 151.24, 151.72, 149.95, 150.39, 56.24
57.33, 57.75, 57.69, 58.1, 150.06, 150.51, 148.82, 149.23, 24.52
56.65, 57.09, 57.05, 57.47, 150.91, 151.38, 149.63, 150.06, 38.24
57.01, 57.44, 57.38, 57.78, 149.74, 150.18, 148.5, 148.91, 84.25
...
Многие из многоугольников пересекаются или перекрываются. Теперь я хотел бы создать матрицу * m от -90 ° до 90 ° широты и от -180 ° до 180 ° по горизонтали с шагом, например, 0,25 ° x0,25 ° для хранения средних значений (по площади) значение всех полигонов, попадающих в каждый пиксель.
Итак, один пиксель в регулярной сетке должен получить среднее значение одного или нескольких полигонов (или нет, если полигон не перекрывается с пикселем). Каждый многоугольник должен способствовать этому среднему значению в зависимости от его доли области в этом пикселе.
В основном регулярная сетка и многоугольники выглядят следующим образом:
Если вы посмотрите на пиксель 2, вы увидите, что внутри этого пикселя находятся два полигона. Таким образом, я должен принять среднее значение данных обоих полигонов с учетом их площадных дробей. Затем результат должен быть сохранен в обычном ячеистом пикселе.
Я посмотрел вокруг сети и не нашел удовлетворительного подхода к этому пока. Поскольку я использую Python/Numpy для ежедневной работы, я хотел бы придерживаться этого. Это возможно? Пакет shapely выглядит многообещающим, но я не знаю, с чего начать... Портирование всего на базу данных postgis - это ужасное усилие, и я предполагаю, что на моем пути будет немало препятствий.