Implementierung des Programms zur Erfassung von Windfelddaten (Java+Python-Implementierung)

1. Definition der Datenquellenparameter

Schlüsselparametercode:

Paket com.grab.catchWindData.pram;

/**
 * @ClassName: DevPrams
 * @Description: TODO
 **/
öffentliche Klasse DevPrams {
    öffentlicher statischer String lev_0to0p1_m_below_ground ="lev_0-0.1_m_below_ground";
    öffentlicher statischer String lev_0p1to0p4_m_below_ground ="lev_0.1-0.4_m_below_ground";
    öffentlicher statischer String lev_0p33to1_sigma_layer ="lev_0.33-1_sigma_layer";
    öffentlicher statischer String lev_0p4to1_m_below_ground ="lev_0.4-1_m_below_ground";
    öffentlicher statischer String lev_0p44to0p72_sigma_layer ="lev_0.44-0.72_sigma_layer";
    öffentlicher statischer String sigmaLayerlev_0p44to1 ="lev_0.44-1_sigma_layer";
    öffentlicher statischer String mblev_0p0to0p4 ="lev_0.4_mb";
    öffentlicher statischer String sigmaLayerlev_0p72to0p94 ="lev_0.72-0.94_sigma_layer";
    öffentlicher statischer String sigmaLevellev_0p995="lev_0.995_sigma_level";
    öffentlicher statischer String lev_0C_isotherm ="lev_0C_isotherm";
    öffentlicher statischer String lev_1000_mb ="lev_1000_mb";
    öffentlicher statischer String lev_100_m_above_ground ="lev_100_m_above_ground";
    öffentlicher statischer String lev_100_mb ="lev_100_mb";
    öffentlicher statischer String lev_10_m_above_ground ="lev_10_m_above_ground";
    öffentlicher statischer String lev_10_m_above_mean_sea_level ="lev_10_m_above_mean_sea_level";
    öffentlicher statischer String lev_10_mb ="lev_10_mb";
    öffentlicher statischer String lev_1to2below_ground="lev_1-2_m_below_ground";
    öffentlicher statischer String lev_150_mb ="lev_150_mb";
    öffentlicher statischer String lev_15_mb ="lev_15_mb";
    öffentlicher statischer String lev_180to0_mb_above_ground ="lev_180-0_mb_above_ground";
    öffentlicher statischer String lev_1829_m_above_mean_sea_level ="lev_1829_m_above_mean_sea_level";
    öffentlicher statischer String lev_1_hybrid_level ="lev_1_hybrid_level";
    öffentlicher statischer String lev_1_mb ="lev_1_mb";
    öffentlicher statischer String lev_200_mb ="lev_200_mb";
    öffentlicher statischer String lev_20_m_above_ground ="lev_20_m_above_ground";
    öffentlicher statischer String lev_20_mb ="lev_20_mb";
    öffentlicher statischer String lev_250_mb ="lev_250_mb";
    öffentlicher statischer String lev_255to0_mb_above_ground ="lev_255-0_mb_above_ground";
    öffentlicher statischer String lev_2743_m_above_mean_sea_level ="lev_2743_m_above_mean_sea_level";
    öffentlicher statischer String lev_2_m_above_ground ="lev_2_m_above_ground";
    öffentlicher statischer String lev_2_mb ="lev_2_mb";
    öffentlicher statischer String lev_3000to0_m_above_ground ="lev_3000-0_m_above_ground";
    öffentlicher statischer String lev_300_mb ="lev_300_mb";
    öffentlicher statischer String lev_30to0_mb_above_ground ="lev_30-0_mb_above_ground";
    öffentlicher statischer String lev_30_m_above_ground ="lev_30_m_above_ground";
    öffentlicher statischer String lev_30_mb ="lev_30_mb";
    öffentlicher statischer String lev_350_mb ="lev_350_mb";
    öffentlicher statischer String lev_3658_m_above_mean_sea_level ="lev_3658_m_above_mean_sea_level";
    öffentlicher statischer String lev_3_mb ="lev_3_mb";
    öffentlicher statischer String lev_400_mb ="lev_400_mb";
    öffentlicher statischer String lev_40_m_above_ground ="lev_40_m_above_ground";
    öffentlicher statischer String lev_40_mb ="lev_40_mb";
    öffentlicher statischer String lev_450_mb ="lev_450_mb";
    öffentlicher statischer String lev_500_mb ="lev_500_mb";
    öffentlicher statischer String lev_50_m_above_ground ="lev_50_m_above_ground";
    öffentlicher statischer String lev_50_mb ="lev_50_mb";
    öffentlicher statischer String lev_550_mb ="lev_550_mb";
    öffentlicher statischer String lev_5_mb ="lev_5_mb";
    öffentlicher statischer String lev_6000to0_m_above_ground ="lev_6000-0_m_above_ground";
    öffentlicher statischer String lev_600_mb ="lev_600_mb";
    öffentlicher statischer String lev_650_mb ="lev_650_mb";
    öffentlicher statischer String lev_700_mb ="lev_700_mb";
    öffentlicher statischer String lev_70_mb ="lev_70_mb";
    öffentlicher statischer String lev_750_mb ="lev_750_mb";
    öffentlicher statischer String lev_7_mb ="lev_7_mb";
    öffentlicher statischer String lev_800_mb ="lev_800_mb";
    öffentlicher statischer String lev_80_m_above_ground ="lev_80_m_above_ground";
    öffentlicher statischer String lev_850_mb ="lev_850_mb";
    öffentlicher statischer String lev_900_mb ="lev_900_mb";
    öffentlicher statischer String lev_925_mb ="lev_925_mb";
    öffentlicher statischer String lev_950_mb ="lev_950_mb";
    öffentlicher statischer String lev_975_mb ="lev_975_mb";
    öffentlicher statischer String lev_boundary_layer_cloud_layer ="lev_boundary_layer_cloud_layer";
    öffentlicher statischer String lev_convective_cloud_bottom_level ="lev_convective_cloud_bottom_level";
    öffentlicher statischer String lev_convective_cloud_layer ="lev_convective_cloud_layer";
    öffentlicher statischer String lev_convective_cloud_top_level ="lev_convective_cloud_top_level";
    öffentlicher statischer String lev_entire_atmosphere ="lev_entire_atmosphere";
    öffentlicher statischer String lev_entire_atmosphere_single ="lev_entire_atmosphere_%5C%28considered_as_a_single_layer%5C%29";
    öffentlicher statischer String lev_high_cloud_bottom_level ="lev_high_cloud_bottom_level";
    öffentlicher statischer String lev_high_cloud_layer ="lev_high_cloud_layer";
    öffentlicher statischer String lev_high_cloud_top_level ="lev_high_cloud_top_level";
    öffentlicher statischer String lev_highest_tropospheric_freezing_level ="lev_highest_tropospheric_freezing_level";
    öffentlicher statischer String lev_low_cloud_bottom_level ="lev_low_cloud_bottom_level";
    öffentlicher statischer String lev_low_cloud_layer ="lev_low_cloud_layer";
    öffentlicher statischer String lev_low_cloud_top_level ="lev_low_cloud_top_level";
    öffentlicher statischer String lev_max_wind ="lev_max_wind";
    öffentlicher statischer String lev_mean_sea_level ="lev_mean_sea_level";
    öffentlicher statischer String lev_middle_cloud_bottom_level ="lev_middle_cloud_bottom_level";
    öffentlicher statischer String lev_middle_cloud_layer ="lev_middle_cloud_layer";
    öffentlicher statischer String lev_middle_cloud_top_level ="lev_middle_cloud_top_level";
    öffentlicher statischer String lev_planetary_boundary_layer ="lev_planetary_boundary_layer";
    public static String PVM ="lev_PV%5C%3D%5C-2e%5C-06_%5C%28Km%5C%5E2%2Fkg%2Fs%5C%29_surface";
    public static String PVADD ="lev_PV%5C%3D2e%5C-06_%5C%28Km%5C%5E2%2Fkg%2Fs%5C%29_surface";
    öffentlicher statischer String lev_surface ="lev_surface";
    öffentlicher statischer String lev_top_of_atmosphere ="lev_top_of_atmosphere";
    öffentlicher statischer String lev_tropopause ="lev_tropopause";
}

2. Schreiben Sie die Timing-Aufgabe für das Crawling-Programm

@Value("${grab.pythonPath}")
    String pythonPath;
    statisches String-Flag="";
    @Scheduled(cron="0 0/2 * * * ?")
    void get00(){
        Datum date = neues Date();
        Log.info("Zeitgesteuerte Aufgabe ausgeführt" + DateUtil.format(date, DateUtil.DATE_TIME_PATTERN));
        Log.info("flag======::::::::::::::::"+flag);
        String [] levParams={DevPrams.lev_10_m_above_ground};
        String [] varParams={VarParams.TMAX,VarParams.TMIN,VarParams.UGRD,VarParams.VGRD};
// Kern core = new Core(0,"00", "70", "140", "0", "55");
// core.startRun(levParams, varParams);
        String[] params={"18",12",06",00"};
        int canDoPython=0;
        List<String> allList=new ArrayList<String>();
        for (int i=0;i<params.length;i++ ){
            String flagData=getDateFlag(date,params[i]);
            if(flag.equals(flagData)){
                weitermachen;
            }
            Kernkern = neuer Kern(0,params[i],"70",140",0",55");

            List<String> list = core.startRun(levParams, varParams);
            if(list!=null&&!list.isEmpty()){
                allList.addAll(list);
                this.flag=flagData;
                canDoPython++;
            }else if (params[i].equals("00")&&(list==null||list.isEmpty())){
                Kern coretemp = neuer Kern(1,"18", "70", "140", "0", "55");
                list = coretemp.startRun(levParams, varParams);
                allList.addAll(list);
                canDoPython++;
                this.flag=getDateFlag(DateUtil.addDateDays(date,-1),"18");
            }
        }

        if(canDoPython>0){
            HashSet<String> set =new HashSet<>(allList);
            for(String s: set) {
                versuchen {
                    PythonGet.getStartPython(pythonPath,s);
                } Catch (Ausnahme e) {
                    e.printStackTrace();
                }
// System.out.println("Einmal abgeschlossen");
            }
        }
    }

3. Schreiben Sie Python-Skripte, die in JSON-Skripte konvertiert werden

4. Crawlen Sie Dateien und konvertieren Sie Ergebnisdateien

Beispiel für konvertierte JSON-Ergebnisse:

 

 

 5. Front-End-Visualisierung

 Wenn es für Sie hilfreich ist, liken Sie es bitte und belohnen Sie die Unterstützung.

Technische Zusammenarbeit und Austausch qq: 2401315930

 

 

Supongo que te gusta

Origin blog.csdn.net/weixin_42496466/article/details/130099116
Recomendado
Clasificación