在Python中从外部文件调用函数

时间:2019-06-07 21:18:07

标签: python-3.x matplotlib-basemap calling-convention

我正在尝试从python中的其他文件调用函数。我正在尝试处理NetCDF格式的Goes 16中的卫星图像。我从文件中提取了不同的值,这些文件是保存在名为“ remap”的.py文件中的功能所必需的。我的主要代码如下:

from remap import remap
# Calculate the image extent required for the reprojection
H = nc.variables['goes_imager_projection'].perspective_point_height
x1 = nc.variables['x_image_bounds'][0] * H
x2 = nc.variables['x_image_bounds'][1] * H
y1 = nc.variables['y_image_bounds'][1] * H
y2 = nc.variables['y_image_bounds'][0] * H

# Projection Prameters 
lat_0 = nc.variables['goes_imager_projection'].latitude_of_projection_origin
lon_0 = nc.variables['goes_imager_projection'].longitude_of_projection_origin
a = nc.variables['goes_imager_projection'].semi_major_axis
b = nc.variables['goes_imager_projection'].semi_minor_axis
f = 1/nc.variables['goes_imager_projection'].inverse_flattening

# Call the reprojection funcion
grid = remap(path, extent, resolution, x1, y1, x2, y2)

在我称为“ remap”的.py文件中,该函数定义为:

# Define KM_PER_DEGREE
KM_PER_DEGREE = 111.32

# GOES-16 Spatial Reference System
sourcePrj = osr.SpatialReference()
sourcePrj.ImportFromProj4('+proj=geos +h=' + H + ' +a=' + a + ' +b=' + b + '  +f=' + f + 'lat_0=' + lat_0 + ' +lon_0=' + lon_0 + ' +sweep=x +no_defs')

# Lat/lon WSG84 Spatial Reference System
targetPrj = osr.SpatialReference()
targetPrj.ImportFromProj4('+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs')

def remap(path, extent, resolution, x1, y1, x2, y2):
... (and so on)

现在我有两个不同的问题:

(1)我的第一个问题是,我从系统收到一条错误消息: “ remap()接受4个位置参数,但给出了7个位置参数”,我不明白为什么会发生这种情况,因为我已经从名为“ remap”的第二个文件中的函数中定义了这7个参数。

(2)我的第二个问题是我不知道如何调用从NetCDF文件中提取的原始代码中的值,例如:“ lat_0,lon_0,a,b,f和H”在第二个文件中使用,从一开始就需要使用功能“ remap”。

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

第一个问题:

如何定义remap()中所需的路径,范围和分辨率?

第二个问题:

您不需要在重映射文件上调用这些参数,因为从主代码中您正在调用remap并使用这7个参数进行重新投影。