1
對不起,這個簡單的問題,但我是新的Python,我需要相同的幫助。Python:網格點X,Y和Z爲了提取統計屬性
我的數據是點格式:X,Y,Z。 X和Y是座標,z是數值。
我的問題是:創建一個0.5米乘0.5米(或1乘1米)的柵格(以TIF或ASCII),其中每個像素的值是Z的平均值。如果我沒有指向像素 - 我的值需要是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,爲了ž點,知道他們在哪裏下降。我的第一個想法是給一個索引網格並標記點。之後,我可以爲像素內的點取平均值。像素爲空(其中不存在點)是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
真的感謝所有幫助
親愛的揚菲利普, 感謝您的回覆。我可以問一個關於學習的例子,並提高我在Python中真正的基礎知識。 謝謝,如果你可以,我不想濫用你的時間 –
如果這個答案幫助你解決你的問題,你可能會考慮給予至少一個upvote :) –
我會做! :d –