Python 将纬度和经度写入Geotiff文件

Python 将纬度和经度写入Geotiff文件,python,geolocation,tiff,gdal,Python,Geolocation,Tiff,Gdal,我基本上是想达到相反的目的 我在WGS84坐标系中有一组纬度和经度坐标(带值),我想通过gdal python绑定将其写入geotiff(或添加到gdal数据集) 例如,我的起始数据可能是: lat = np.array([45.345,56.267,23.425]) lon = np.array([134.689,128.774,111.956]) value = np.array([3.0,6.2,2.5]) 怎么可能做到这一点?谢谢 虽然这不在您的问题中,但您似乎需要将WGS84基准的横

我基本上是想达到相反的目的

我在WGS84坐标系中有一组纬度和经度坐标(带值),我想通过gdal python绑定将其写入geotiff(或添加到gdal数据集)

例如,我的起始数据可能是:

lat = np.array([45.345,56.267,23.425])
lon = np.array([134.689,128.774,111.956])
value = np.array([3.0,6.2,2.5])

怎么可能做到这一点?谢谢

虽然这不在您的问题中,但您似乎需要将WGS84基准的横向/纵向数据投影到UTM投影。这可以使用GDAL中的命令行,使用两个选项
-a_srs 4326-t_srs???
(目标SRID)。它也可以在Python内部使用GDAL的OGR模块完成

从点数据获取光栅有两种独立的方法。第一种方法是对数据中的值进行修改,以便这些值覆盖整个区域(有时仅覆盖凸面外壳)。有许多方法和工具可以在二维中插值。对于GDAL,一个ComandLine工具在这方面很有用,尽管我认为不可能从Python使用它。也许最简单的方法就是使用。一旦有了2D NumPy数组,就可以使用GDAL/Python了


将点转换为光栅的第二种方法是将点位置刻录为光栅上的像素。与第一种方法不同,只有点所在的位置具有值,而这些值不会在光栅中的任何其他位置进行插值。可以通过GDAL命令行工具将矢量栅格化或烧录到栅格中。它也可以在内部使用GDAL/Python完成。

可以从Python使用GDAL\u网格。我正在使用它。 您所需要做的就是构造命令,就像从命令行使用它一样,并将其放入subprocess.call(com,shell=True)中。您需要先导入子流程模块

这就是我使用它的方式:

pcall= "gdal_grid  --config 'NUM_THREADS=ALL_CPUS GDAL_CACHEMAX=2000'\
       -overwrite -a invdist:power=2.0:smoothing=2.0:radius1=360.0:radius2=360.0\
       -ot UInt16 -of GTiff -outsize %d %d -l %s -zfield 'Z' %s %s "%(npx, npy,\
       lname,ptshapefile,interprasterfile)

subprocess.call(pcall, shell= True)

gdal 1.10+提供了NUM_THREADS选项。

数据的位置是网格化的还是地图上的点位置?它们是地图上的随机点位置。我发现了一些代码,可以将lat/lon点转换为UTM投影点,然后再转换为像素,哪一个可能正在使用
gdal.ApplyGeoTransform
进行插值,以在给定单元格中指定每个点的值?@shootingstars您是否只需要一个光栅,在点存在的地方有几个像素,并且中间有空白?例如,光栅化点?这些数据代表什么?没错。一旦我将它们“光栅化”,或者以光栅像素为单位,我就可以使用我在第一篇评论中链接的反向插值方法。与仅使用gdal_网格实用程序相比,这是一种糟糕的处理方式吗?数据是沿着覆盖北大西洋大部分地区的船舶横断面进行的鲸鱼目击。@shotingstars好的,我很确定您希望对数据进行插值,而不是栅格化(这些是不同的)。请参阅更新的答案。