在 VS Code 中运行时 Python 跳过函数
Posted
技术标签:
【中文标题】在 VS Code 中运行时 Python 跳过函数【英文标题】:Python skipping functions when ran in VS Code 【发布时间】:2022-01-01 19:31:37 【问题描述】:我编写了以下 python 代码以将 XYZ 数据读取为 CSV,然后将网格转换为 GTiff 格式。
当我运行代码时,我没有收到任何错误。
但是,在尝试调试后,我添加了一些打印语句,并注意到这些函数实际上并没有被调用。
如何运行此脚本以完成所有操作?
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/......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/......tif', self.ds, options = option)
except Exception as e:
self.logException(e)
raise
【问题讨论】:
请不要通过破坏您的帖子为他人增加工作量。通过在 Stack Exchange 网络上发帖,您已在 CC BY-SA 4.0 license 下授予 Stack Exchange 分发该内容的不可撤销的权利(即无论您未来的选择如何)。根据 Stack Exchange 政策,帖子的非破坏版本是分发的版本。因此,任何破坏行为都将被撤销。如果您想了解更多关于删除帖子的信息,请参阅:How does deleting work? 【参考方案1】:您似乎没有在这段代码中执行任何操作,只是在其中定义类和函数,对吧?
【讨论】:
我不完全确定如何执行课程【参考方案2】:使用
if __name__ == "__main__":
app = gdal_toolbox(kwargs)
app.run()
或
if __name__ == "__main__":
gdal_toolbox(kwargs).run()
在脚本末尾使用这些代码。
解决办法是:
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)
【讨论】:
我得到了 gdal_toolbox 没有定义的错误,尽管它是类名 解决了!您现在可以检查....以上是关于在 VS Code 中运行时 Python 跳过函数的主要内容,如果未能解决你的问题,请参考以下文章
当 cobertura 测试在 maven-cobertura-plugin 中运行时如何配置?
Qt Designer的预览ui在python中运行时不一样