![](/img/trans.png)
[英]Get pixel coordinates in raster from polygon boundary in coordinate reference system
[英]get pixel coordinates of all pixels in a raster image
我有一個具有RGB波段的形狀為9000x10000的光柵圖像。 我使用下面的代碼來獲取圖像中所有像素的XY坐標。 但這很慢。 有更快的方法嗎?
filename='file.dat'
inDs = gdal.Open(filename)
outDs = gdal.Translate('{}.xyz'.format(filename), inDs, format='XYZ', creationOptions=["ADD_HEADER_LINE=YES"])
我想將XY坐標和像素值保存在數據框中。
如果您的柵格文件具有GeoTransform
屬性,則可以嘗試以下操作:
import gdal
import pandas as pd
def ix2xy(r,c,gt):
'''Gets x,y from row and column'''
x = gt[0] + r * gt[1]
y = gt[3] + c * gt[5]
return(x,y)
這個小函數從GeoTransform
屬性獲取X / Y坐標,該屬性是一個具有(xorigin, xres, 0, yorigin, 0, yres)
的元組。
ds = gdal.Open('file.dat')
gt = ds.GetGeoTransform()
df = pd.DataFrame.from_records(itertools.product(range(ds.RasterYSize),range(ds.RasterXSize)),columns=['Row','Column'])
ds = None
df['X'], df['Y'] = zip(*df.apply(lambda x: ix2xy(x['Column'],x['Row'],gt),axis=1))
這應該為您提供一個整齊的數據框,其中包含Row
, Column
, X
和Y
Column
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.