我正在使用来自 unidata 的 NetCDF 4 java 库来读取 GRIB 文件。GRIB 文件结构如下所示:
dimensions:
x = 401;
y = 301;
time = 1;
variables:
int LambertConformal_Projection;
:grid_mapping_name = "lambert_conformal_conic";
:latitude_of_projection_origin = 46.12000274658203; // double
:longitude_of_central_meridian = 14.815000534057617; // double
:standard_parallel = 46.12000274658203; // double
:earth_radius = 6367470.0; // double
:_CoordinateTransformType = "Projection";
:_CoordinateAxisTypes = "GeoX GeoY";
float VAR219-0-219-170_surface(time=1, y=301, x=401);
:long_name = "Unknown Parameter 219-0-219-170 @ Ground or water surface";
:units = "";
:missing_value = NaNf; // float
:grid_mapping = "LambertConformal_Projection";
:coordinates = "reftime time y x ";
:Grib_Variable_Id = "VAR_219-0-219-170_L1";
:Grib1_Center = 219; // int
:Grib1_Subcenter = 0; // int
:Grib1_TableVersion = 219; // int
:Grib1_Parameter = 170; // int
:Grib1_Level_Type = 1; // int
:Grib1_Level_Desc = "Ground or water surface";
float x(x=401);
:standard_name = "projection_x_coordinate";
:units = "km";
:_CoordinateAxisType = "GeoX";
float y(y=301);
:standard_name = "projection_y_coordinate";
:units = "km";
:_CoordinateAxisType = "GeoY";
double reftime;
:units = "Minute since 2016-02-18T12:00:00Z";
:standard_name = "forecast_reference_time";
:long_name = "GRIB reference time";
:calendar = "proleptic_gregorian";
:_CoordinateAxisType = "RunTime";
double time(time=1);
:units = "Minute since 2016-02-18T12:00:00Z";
:standard_name = "time";
:long_name = "GRIB forecast or observation time";
:calendar = "proleptic_gregorian";
:_CoordinateAxisType = "Time";
// global attributes:
:Originating_or_generating_Center = "Ljubljana";
:Originating_or_generating_Subcenter = "0";
:GRIB_table_version = "0,219";
:file_format = "GRIB-1";
:Conventions = "CF-1.6";
:history = "Read using CDM IOSP GribCollection v3";
:featureType = "GRID";
:_CoordSysBuilder = "ucar.nc2.dataset.conv.CF1Convention";
}
我想编写将 x 和 y 转换为 lat/lng 小数点的程序。我是平面/地球映射的新手。