簡體   English   中英

獲取光柵圖像中所有像素的像素坐標

[英]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))

這應該為您提供一個整齊的數據框,其中包含RowColumnXY Column

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM