Использование Python с набором нерегулярных точек X, Y, Z для создания регулярной сетки, где каждый пиксель является минимальным значением точки
У меня есть набор нерегулярных точек со значениями X, Y и Z. Я хочу создать регулярную квадратную сетку (для экспорта в формате TIFF
или ASCII
) с разрешением 0,5 x 0,5 и расширением, равным boundery box моего набора данных [X_Min,Y_Min],[X_Max,Y_Min],[X_Max,Y_Max],[X_Min,Y_Max],[X_Min,Y_Min]
Извините, если я не могу опубликовать какой-либо код Python.
Заранее спасибо за всю помощь, предложения и ссылку, где решить эту проблему Задача
1 ответ:
Я предполагаю, что ваши точки доступны в массиве, подобном этому:
points = [(x1,y1,z1), (x2,y2,z2), ...]
Чтобы извлечь значения x и y, вы можете использовать трюк zip:
points_zipped = zip(*points) xvals = points_zipped[0] yvals = points_zipped[1]
Получение ограничивающего прямоугольника тогда просто:
xmin, ymin = min(xvals), min(yvals) xmax, ymax = max(xvals), max(yvals)
Для получения минимальных баллов я не смог придумать ничего более вдохновляющего, чем использование defaultdicts из модуля collections:
from collections import defaultdict minpoints = defaultdict(lambda: defaultdict(lambda : 0.)) # 0. or another suitable min value for p in points: minpoints[p[0]][p[1]] = min(p[2], minpoints[p[0]][p[1]])
Оттуда вы можете использовать интерполяцию scipy. Существует специальный рецепт для 2d-интерполяции неравномерно расположенных данные: http://www.scipy.org/Cookbook/Matplotlib/Gridding_irregularly_spaced_data