I have written the following python code to read in XYZ data as CSV and then grid to a GTiff format.
When I run the code I am getting no errors.
However, after trying to debug, I added some print statements and noticed that the functions aren't actually being called.
How can I run this script so that it all completes?
import sys
from botocore.exceptions import ClientError
import pandas as pd
import numpy as np
import rasterio
from datetime import datetime
from osgeo import gdal
class gdal_toolbox:
## CONSTANTS ##
## API handling Globals ##
gdal_types = [ 'GDT_Unknown','GDT_Byte','GDT_UInt16','GDT_Int16',\
'GDT_UInt32','GDT_Int32','GDT_Float32','GDT_Float64',\
'GDT_CInt16','GDT_CInt32','GDT_CFloat32','GDT_CFloat64',\
'GDT_TypeCount' ]
jobDict = {}
xyz_dict = {}
layerJson = {}
msk = {}
def __init__( self, kwargs ):
self.jobDict = kwargs
if self.jobDict['no_data'] is None:
self.jobDict['no_data'] = -11000
else:
self.jobDict['no_data'] = int(self.jobDict['no_data'])
if self.jobDict['gridAlgorithm'] is None:
self.jobDict['gridAlgorithm'] = 'nearest:radius1=2.25:radius2=2.25:nodata=' str(self.jobDict['no_data'])
def normalizeToCsv( self ):
MAX_POINTS = 64000000
try:
# Read in ungridded data
self.df = pd.read_csv('C:/Users/Public/FLX_2020_10_AgitationTrial_OSGB_Average_1m_20201023_clip.xyz', sep='\s |,|:|\t',header=None, engine='python')
cnt = self.df.shape[0]
if(cnt > MAX_POINTS):
raise ValueError('Maximum number of points (' str(cnt) ' > ' str(MAX_POINTS) ') in datasource exceeded')
# convert to named x,y,z columns
print(str(datetime.now()) ' normalizeToCsv: to_csv (start)')
self.ds = self.df.to_csv(self.csv_buf,sep=',',header=['x','y','z'],index=None)
self.csv_buf.seek(0)
print(str(datetime.now()) ' normalizeToCsv: to_csv (end)')
dfsize = sys.getsizeof(self.df)
print('df (1) size : ' str(dfsize))
#return df
except Exception as e:
self.logException(e)
raise
def csvToTiff(self):
try:
x = self.xyz_dict['xAxis'] / self.xyz_dict['xCellSize']
y = self.xyz_dict['yAxis'] / self.xyz_dict['yCellSize']
no_data = str(self.jobDict['no_data'])
if self.jobDict['srs'] is not None:
srs = self.jobDict['srs']
elif self.jobDict['wkt'] is not None:
srs = rasterio.crs.CRS.from_wkt(self.jobDict['wkt'])
option = gdal.GridOptions(format = 'GTIFF', outputType = gdal.GDT_Float32, width = x, height = y, \
outputBounds = [self.xyz_dict['minX'], self.xyz_dict['minY'], self.xyz_dict['maxX'], self.xyz_dict['maxY']], \
outputSRS = srs, algorithm=self.jobDict['gridAlgorithm'])
self.ds_tif = gdal.Grid('C:/Users/Public/flx_grid_gdal.tif', self.ds, options = option)
except Exception as e:
self.logException(e)
raise
CodePudding user response:
Use
if __name__ == "__main__":
app = gdal_toolbox(kwargs)
app.run()
or
if __name__ == "__main__":
gdal_toolbox(kwargs).run()
Use thease codes at the end of your script.
And the solution is :
class gdal_toolbox:
## CONSTANTS ##
def __init__( self, kwargs ):
print(kwargs)
def normalizeToCsv( self ):
MAX_POINTS = 64000000
print(MAX_POINTS)
def csvToTiff(self):
print("Its the secoend function")
if __name__ == "__main__":
kwargs="Its the keyword arguments"
gdal_toolbox(kwargs)
CodePudding user response:
It seems like you are not executing anything in this piece of code, just defining class and functions within it, right?