我开始使用地理信息系统,需要您的一些建议。我需要将tif(光栅)转换为3D矩阵,例如,熊猫中的前一个矩阵:
M = [[1, 1]
[2, 4]
[3, 1]]
探索python软件包后,我发现可以使用rasterio来做到这一点。我使用以下代码:
new_dataset = rasterio.open('test5.tif', 'w', driver='GTiff', height = arr.shape[0], width = arr.shape[1], count=1,
dtype=str(arr.dtype),
crs='+proj=utm +zone=19 +ellps=GRS80 +datum=NAD83 +units=m +no_defs',
transform=transform)
)
new_dataset.write(arr, 1)
new_dataset.close()
遵循此post。因此,对于这种微小的输入,它似乎可以正常工作,并产生以下tif:
当我尝试从las / LIDAR表格加载真实矩阵时,其尺寸为:(32019,5)和一个头部:
x y z Classification ReturnNumber
0 506535.92650 4.762852e+06 4.98525 1 2
1 506534.48700 4.762853e+06 0.00000 2 1
2 506542.35150 4.762849e+06 0.04950 1 1
3 506544.38850 4.762848e+06 0.00000 2 1
4 506543.54475 4.762848e+06 0.00000 2 1
我得到这个:
但是,对于同一张图片,白盒工具会生成此图片
使用此代码:
import os
import whitebox
wbt = whitebox.WhiteboxTools()
wbt.work_dir = os.path.dirname(os.path.abspath(__file__)) + "/data/"
wbt.lidar_idw_interpolation(
i="input.las",
output="output.tif",
parameter="elevation",
returns="all",
resolution=1.0,
weight=1.0,
radius=2.5
)
白盒工具的输出是正确的,并且比较两个图像似乎是第一个像负面效果一样尊重白盒的输出。我的代码有什么问题吗?
关于如何根据其他密度矩阵更改像素(2D)颜色的任何建议?
谢谢!
答案 0 :(得分:0)
您显然没有(x,y)
个点的数据,这些点在图片上保持黑色。另一方面,白盒会对这些缺失点进行某种插值。
您可能想找到这些点,并从现有邻居中插入缺失的z
值。对于您的数据,可能会有一些特殊的插值方法,但是如果我是您,我会一次又一次地应用高斯滤波器,将有效数据复制到经过滤波的数据上,以保留已知的良好像素(不会发生任何变化)- -这应该以合理的近似值填充黑点。