From 29fa1e58603dd46c914673ecad798a05d1194891 Mon Sep 17 00:00:00 2001 From: igor Date: Mon, 14 Jul 2025 21:08:37 +0500 Subject: [PATCH 1/3] New server nomads.ncep.noaa.gov --- org_ccalm_weather.yml | 12 ++++++------ src/main/java/org/ccalm/weather/AirTemperature.java | 10 +++++++--- src/main/java/org/ccalm/weather/Precipitation.java | 3 ++- src/main/java/org/ccalm/weather/SoilTmperature.java | 5 +++-- 4 files changed, 18 insertions(+), 12 deletions(-) diff --git a/org_ccalm_weather.yml b/org_ccalm_weather.yml index d157b18..0e24c06 100644 --- a/org_ccalm_weather.yml +++ b/org_ccalm_weather.yml @@ -22,16 +22,16 @@ custom: data_dir: /data/ db_all: #url: jdbc:postgresql://92.46.48.43:5444/weather?ApplicationName=kz_mcp_weather&sslmode=require - url: jdbc:postgresql://192.168.0.90:5432/weather?ApplicationName=kz_mcp_weather&sslmode=require - #url: jdbc:postgresql://127.0.0.1:5432/weather?ApplicationName=kz_mcp_weather&sslmode=require + #url: jdbc:postgresql://192.168.0.90:5432/weather?ApplicationName=kz_mcp_weather&sslmode=require + url: jdbc:postgresql://127.0.0.1:5432/weather?ApplicationName=kz_mcp_weather&sslmode=require login: postgres - password: PasSecrKey1 + password: 309A86FF65A78FB428F4E38DFE35F730 db_ru: #url: jdbc:postgresql://92.46.48.43:5444/weather_ru?ApplicationName=kz_mcp_weather&sslmode=require - url: jdbc:postgresql://192.168.0.90:5432/weather_ru?ApplicationName=kz_mcp_weather&sslmode=require - #url: jdbc:postgresql://127.0.0.1:5432/weather_ru?ApplicationName=kz_mcp_weather&sslmode=require + #url: jdbc:postgresql://192.168.0.90:5432/weather_ru?ApplicationName=kz_mcp_weather&sslmode=require + url: jdbc:postgresql://127.0.0.1:5432/weather_ru?ApplicationName=kz_mcp_weather&sslmode=require login: postgres - password: PasSecrKey1 + password: 309A86FF65A78FB428F4E38DFE35F730 springdoc: diff --git a/src/main/java/org/ccalm/weather/AirTemperature.java b/src/main/java/org/ccalm/weather/AirTemperature.java index 80a3402..877f2e7 100644 --- a/src/main/java/org/ccalm/weather/AirTemperature.java +++ b/src/main/java/org/ccalm/weather/AirTemperature.java @@ -91,7 +91,10 @@ public class AirTemperature implements ServletContextAware { */ @RequestMapping(value = "/geodatalist/AirTemperature",method = RequestMethod.GET,produces = "text/html;charset=UTF-8") @ResponseBody - public Object ajaxTamer(/*@RequestParam(required=true,name="forecast") String forecast,*/@RequestParam(required=false,name="date") String date) { + public Object ajaxTamer( + /*@RequestParam(required=true,name="forecast") String forecast,*/ + @RequestParam(required=false,name="date") String date + ) { String forecast = "000"; String result=""; @@ -142,8 +145,9 @@ public class AirTemperature implements ServletContextAware { String measurement = "TMP:2 m above ground"; //Build URL to download - String URL = "https://www.ftp.ncep.noaa.gov/data/nccf/com/gfs/prod/gfs."+date+"/"+time+"/atmos/gfs.t"+time+"z.pgrb2.0p25.f"+forecast; - + //String URL = "https://www.ftp.ncep.noaa.gov/data/nccf/com/gfs/prod/gfs."+date+"/"+time+"/atmos/gfs.t"+time+"z.pgrb2.0p25.f"+forecast; + String URL = "https://nomads.ncep.noaa.gov/pub/data/nccf/com/gfs/prod/gfs."+date+"/"+time+"/atmos/gfs.t"+time+"z.pgrb2.0p25.f"+forecast; + File f1 = new File(data_dir+"temp"+File.separator+"air_text.idx"); if(f1.exists()) { if (!f1.delete()) { diff --git a/src/main/java/org/ccalm/weather/Precipitation.java b/src/main/java/org/ccalm/weather/Precipitation.java index d44cc44..40656cb 100644 --- a/src/main/java/org/ccalm/weather/Precipitation.java +++ b/src/main/java/org/ccalm/weather/Precipitation.java @@ -159,7 +159,8 @@ public class Precipitation implements ServletContextAware { String measurement = "APCP:surface:0-1 day acc fcst"; //Build URL to download - String URL = "https://www.ftp.ncep.noaa.gov/data/nccf/com/gfs/prod/gfs."+date+"/"+time+"/atmos/gfs.t"+time+"z.pgrb2.0p25.f"+forecast; + //String URL = "https://www.ftp.ncep.noaa.gov/data/nccf/com/gfs/prod/gfs."+date+"/"+time+"/atmos/gfs.t"+time+"z.pgrb2.0p25.f"+forecast; + String URL = "https://nomads.ncep.noaa.gov/pub/data/nccf/com/gfs/prod/gfs."+date+"/"+time+"/atmos/gfs.t"+time+"z.pgrb2.0p25.f"+forecast; File f1 = new File(data_dir+"temp"+File.separator+"pre_text.idx"); if(f1.exists()) { diff --git a/src/main/java/org/ccalm/weather/SoilTmperature.java b/src/main/java/org/ccalm/weather/SoilTmperature.java index 7fedfca..682bca5 100644 --- a/src/main/java/org/ccalm/weather/SoilTmperature.java +++ b/src/main/java/org/ccalm/weather/SoilTmperature.java @@ -101,7 +101,7 @@ public class SoilTmperature implements ServletContextAware { }*/ //--------------------------------------------------------------------------- /** - * Example: http://127.0.0.1:8081/geodatalist/DownloadSoil?forecast=000 + * Example: https://127.0.0.1:8083/geodatalist/DownloadSoil?forecast=000 * @param response * @param forecast * @param date @@ -165,7 +165,8 @@ public class SoilTmperature implements ServletContextAware { //String measurement = "TSOIL:0.1-0.4 m below ground"; //Build URL to download - String URL = "https://www.ftp.ncep.noaa.gov/data/nccf/com/gfs/prod/gfs."+date+"/"+time+"/atmos/gfs.t"+time+"z.pgrb2.0p25.f"+forecast; + //String URL = "https://www.ftp.ncep.noaa.gov/data/nccf/com/gfs/prod/gfs."+date+"/"+time+"/atmos/gfs.t"+time+"z.pgrb2.0p25.f"+forecast; + String URL = "https://nomads.ncep.noaa.gov/pub/data/nccf/com/gfs/prod/gfs."+date+"/"+time+"/atmos/gfs.t"+time+"z.pgrb2.0p25.f"+forecast; File f1 = new File(data_dir+"temp"+File.separator+"text.idx"); if(f1.exists()) { From 068597b414cf2609207ea5284d780dfa03166323 Mon Sep 17 00:00:00 2001 From: igor Date: Mon, 8 Sep 2025 07:28:49 +0500 Subject: [PATCH 2/3] New SMAP format --- org_ccalm_weather.yml | 2 +- .../org/ccalm/weather/AirTemperature.java | 2 +- .../java/org/ccalm/weather/GeoTIFFList.java | 50 +++++++++++++++++-- 3 files changed, 48 insertions(+), 6 deletions(-) diff --git a/org_ccalm_weather.yml b/org_ccalm_weather.yml index 0e24c06..3484da5 100644 --- a/org_ccalm_weather.yml +++ b/org_ccalm_weather.yml @@ -1,5 +1,5 @@ server: - port: 8083 + port: 8085 ssl: key-store: classpath:keystore.jks key-store-password: QyKtWPZB diff --git a/src/main/java/org/ccalm/weather/AirTemperature.java b/src/main/java/org/ccalm/weather/AirTemperature.java index 877f2e7..b13ad6b 100644 --- a/src/main/java/org/ccalm/weather/AirTemperature.java +++ b/src/main/java/org/ccalm/weather/AirTemperature.java @@ -165,7 +165,7 @@ public class AirTemperature implements ServletContextAware { if(wd.download(URL+".idx", data_dir+"temp"+File.separator+"air_text.idx", "0", "")) { result+="Download "+URL+".idx"+" to "+data_dir+"temp"+File.separator+"air_text.idx"+"
"; - + String strPos1=""; String strPos2=""; //Read file and find required line. diff --git a/src/main/java/org/ccalm/weather/GeoTIFFList.java b/src/main/java/org/ccalm/weather/GeoTIFFList.java index 27a5a11..0e26dc5 100644 --- a/src/main/java/org/ccalm/weather/GeoTIFFList.java +++ b/src/main/java/org/ccalm/weather/GeoTIFFList.java @@ -2,13 +2,13 @@ package org.ccalm.weather; import java.io.File; import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Calendar; -import java.util.List; +import java.util.*; +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; import java.util.concurrent.TimeUnit; import java.util.stream.IntStream; + import org.springframework.http.CacheControl; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.CrossOrigin; @@ -64,6 +64,7 @@ public class GeoTIFFList { String NDWIPath="/opt/tomcat/geoserver/ROOT/data/GeoTIFF/NDWI"; String NDSIPath="/opt/tomcat/geoserver/ROOT/data/GeoTIFF/NDSI"; String SMAPPath="/opt/tomcat/geoserver/ROOT/data/GeoTIFF/SMAP"; + String SMAPPath2="/opt/geodata/SMAP"; String osName=System.getProperty("os.name"); if(osName.indexOf("Windows")>=0){ NDVIPath="O:\\temp\\CCALM\\NDVI"; @@ -227,6 +228,47 @@ public class GeoTIFFList { } } + if (fn.equals("smap_list2")) { + List dateList = new ArrayList<>(); + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + + File root = new File(SMAPPath2); + File[] yearDirs = root.listFiles(File::isDirectory); + if (yearDirs != null) { + for (File yearDir : yearDirs) { + File[] files = yearDir.listFiles((dir, name) -> name.toLowerCase().endsWith(".tiff")); + if (files != null) { + for (File file : files) { + String fileName = file.getName(); // "2025-01-30.tiff" + String datePart = fileName.substring(0, fileName.indexOf('.')); // "2025-01-30" + try { + LocalDate date = LocalDate.parse(datePart, formatter); + dateList.add(date); + } catch (Exception e) { + // если имя файла не в формате даты — пропускаем + } + } + } + } + } + + // Убираем дубликаты и сортируем + TreeSet uniqueSorted = new TreeSet<>(dateList); + + if (!uniqueSorted.isEmpty()) { + StringBuilder sb = new StringBuilder("["); + for (LocalDate date : uniqueSorted) { + String strDate = date.format(formatter); + sb.append("{\"date\":\"").append(strDate).append("\"},"); + } + sb.setLength(sb.length() - 1); // убрать последнюю запятую + sb.append("]"); + result = sb.toString(); + } else { + result = "[]"; + } + } + return result; } } From 17d0649ceeae11e0cb518e7a82600b609f1ca494 Mon Sep 17 00:00:00 2001 From: igor Date: Mon, 15 Sep 2025 07:25:08 +0500 Subject: [PATCH 3/3] log --- pom.xml | 15 +++++--- src/main/resources/logback-spring.xml | 55 +++++++++++++++++++++------ 2 files changed, 53 insertions(+), 17 deletions(-) diff --git a/pom.xml b/pom.xml index 9b0bb68..0ae75ab 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ org.springframework.boot spring-boot-starter-parent - 3.4.2 + 3.5.5 org.ccalm @@ -40,11 +40,7 @@ spring-boot-starter-test test - - net.logstash.logback - logstash-logback-encoder - 6.6 - + + + + ${LOGS}/${appName}.log - - {"timestamp":"%d{yyyy-MM-dd'T'HH:mm:ss.SSS'Z'}","thread":"[%thread]","level":"%level","logger":"%logger{36}","marker":"%X{marker}","message":"%msg"}%n + + + + timestamp + level + message + exception + [ignore] + [ignore] + [ignore] + [ignore] + [ignore] + + + + yyyy-MM-dd'T'HH:mm:ss.SSS'Z' + UTC + + + true + + + false + false + + + + 1 + 1024 + 20 + $$FastClassByCGLIB$$ + $$EnhancerBySpringCGLIB$$ + - + ${LOGS}/${appName}.%d{yyyy-MM-dd}.%i.log + 100MB 30 - - 100MB - + 3GB - %d{yyyy-MM-dd'T'HH:mm:ss.SSS'Z'} | %level | %logger{36} | %X{marker} | %msg%n + + %d{yyyy-MM-dd'T'HH:mm:ss.SSS'Z'} | %level | %logger{36} | %marker | %msg%n + - - + - + \ No newline at end of file