簡単な質問で申し訳ありませんが、私はPythonを初めて使用するので、同じ助けが必要です。
私のデータはポイント形式です:X、Y、Z。ここで、XとYは座標、zは値です。
私の問題は次のとおりです。各ピクセルの値がZの平均である0.5mx 0.5 m(または1 x 1 m)のラスター(TIFまたはASCII)を作成します。ピクセルにポイントがない場合-i値はNANである必要があります。
勉強して実装できるコードを手伝ってくれて本当にうれしいです。
助けてくれてありがとう、私は本当に必要です。
私はコードを研究して書き込もうとしました:
from osgeo import gdal, osr, ogr
import math, numpy
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.mlab as ml
import matplotlib.delaunay
tiff = 'test.tif'
gridSize = 0.5
# my area boundary
xmax, xmin = 640000.06, 636999.83
ymax, ymin = 6070000.3, 6066999.86
# number of row and columns
nx = int(math.ceil(abs(xmax - xmin)/gridSize))
ny = int(math.ceil(abs(ymax - ymin)/gridSize))
# Plot the points
plt.scatter(x,y,c=z)
plt.axis([xmin, xmax, ymin, ymax])
plt.colorbar()
plt.show()
# Generate a regular grid.
xi = np.linspace(xmin, xmax, nx)
yi = np.linspace(ymin, ymax, ny)
xi, yi = np.meshgrid(xi, yi)
この点から、どこにドロップするかを知るために、x、y、zポイントにインデックスを付ける方法を理解するのに問題があります。私の最初のアイデアは、メッシュグリッドにインデックスを付け、ポイントをマークすることです。その後、ピクセル内のポイントの平均をとることができます。空のピクセル(現在のポイントがない場合)はNANです。
しかし、それが私のデータを処理する正しい方法かどうかはわかりません。
その後、GDAL経由でTIFF形式で保存する次のコードを作成しました
target_ds = gdal.GetDriverByName('GTiff').Create(tiff, nx,ny, 1, gdal.GDT_Byte) #gdal.GDT_Int32
target_ds.SetGeoTransform((xmin, gridSize, 0,ymax, 0, -gridSize,))
if EPSG == None:
proj = osr.SpatialReference()
proj.ImportFromEPSG(EPSG)
# Make the target raster have the same projection as the source
target_ds.SetProjection(proj.ExportToWkt())
else:
# Source has no projection (needs GDAL >= 1.7.0 to work)
target_ds.SetProjection('LOCAL_CS["arbitrary"]')
target_ds.GetRasterBand(1).WriteArray(numpy.zeros((ny,nx)))
target_ds = None
本当にすべての助けに感謝します