从 SSMI/S 海冰浓度数据中查找纬度的 xy 值

Finding the xy values from lat lon from SSMI/S sea ice concentration data

提问人:13johs 提问时间:11/15/2023 最后编辑:Trenton McKinney13johs 更新时间:11/15/2023 访问量:65

问:

我想找到在一系列纬度和纬度坐标处存在的相应冰浓度值(例如 lon=-74.7732772827148 和 lat=-69.3250350952148)。但是,我使用的数据集 (https://cds.climate.copernicus.eu/cdsapp#!/dataset/satellite-sea-ice-concentration?tab=form) 具有以下一些属性:

double xc(xc) ;
                xc:units = "km" ;
                xc:long_name = "x coordinate of projection (eastings)" ;
                xc:standard_name = "projection_x_coordinate" ;
        double yc(yc) ;
                yc:units = "km" ;
                yc:long_name = "y coordinate of projection (northings)" ;
                yc:standard_name = "projection_y_coordinate" ;
        float lat(yc, xc) ;
                lat:units = "degrees_north" ;
                lat:long_name = "latitude coordinate" ;
                lat:standard_name = "latitude" ;
        float lon(yc, xc) ;
                lon:units = "degrees_east" ;
                lon:long_name = "longitude coordinate" ;
                lon:standard_name = "longitude" ;
        int ice_conc(time, yc, xc) ;
                ice_conc:_FillValue = -32767 ;
                ice_conc:long_name = "fully filtered concentration of sea ice using atmospheric correction of brightness temperatures and open water filters" ;
                ice_conc:standard_name = "sea_ice_area_fraction" ;
                ice_conc:units = "%" ;
                ice_conc:valid_min = 0 ;
                ice_conc:valid_max = 10000 ;
                ice_conc:grid_mapping = "Lambert_Azimuthal_Grid" ;
                ice_conc:coordinates = "time lat lon" ;
                ice_conc:ancillary_variables = "total_standard_error status_flag" ;
                ice_conc:scale_factor = 0.01 ;
                ice_conc:comment = "this field is the primary sea ice concentration estimate for this climate data record" 

如果 lat 和 lon 都是 x 和 y 的函数,我如何找到相应的 x 和 y?

我尝试使用 pyproj 更改投影,但它无法正确投影。例如,下面是:

lambert_aea1 = {'proj': 'laea',
          'lat_0':-90, 
          'lon_0':0, 
          'ellps': 'WGS84',
          'datum': 'WGS84'}
    
    inProj = Proj(init = 'epsg:4326') 
    outProj1 = Proj(lambert_aea1)
    
    x1,y1 = np.array(transform(inProj,outProj1,lat_63_1[j],lon_63_1[j]))

结果是 x1 =-1586154.039780751 和 y1=598565.7767689897

但 x 和 y 值在 -5387.5 和 5387.5 的范围内

有没有另一种方法可以直接获取值而不是更改投影?

蟒蛇 numpy netcdf pyproj

评论

1赞 Nick ODell 11/15/2023
请包含您用于更改投影的代码。
0赞 Nick ODell 11/15/2023
您是否尝试过将文档中列出的 Proj-4 字符串与 pyproj 一起使用?osisaf-hl.met.no/sites/osisaf-hl.met.no/files/user_manuals/......
0赞 13johs 11/15/2023
@NickODell我已经尝试过了,但它似乎错误地更改了投影。我可能遗漏了什么吗?
0赞 Nick ODell 11/15/2023
您输入了哪些纬度/纬度值来获得这些 x/y 值?
0赞 13johs 11/15/2023
@NickODell lon= -74.7732772827148 和 lat= -69.3250350952148

答:

0赞 snowman2 11/15/2023 #1

如果查看文件中 x 和 y 的元数据,则单位为千米。对于大多数投影,单位要么是米,要么是英尺。

如果将 x 和 y 乘以 1,000 并比较结果,则它在预期的范围内。