我有一组具有 X、Y 和 Z 值的不规则点。我希望创建一个分辨率为 0.5 x 0.5 且扩展等于我的数据集边界框的常规方形网格(以TIFF
格式或格式导出)ASCII
[X_Min,Y_Min],[X_Max,Y_Min],[X_Max,Y_Max],[X_Min,Y_Max],[X_Min,Y_Min]
存在点的每个像素的值需要是像素中点的低值。
抱歉,如果我不能发布任何 Python 代码。
在此先感谢您提供的所有帮助、建议和解决此问题的链接
我假设您的点在这样的数组中可用:
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 更鼓舞人心的东西:
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 插值。有一个用于不规则间隔数据的二维插值的专用配方:http ://www.scipy.org/Cookbook/Matplotlib/Gridding_irregularly_spaced_data