From 068597b414cf2609207ea5284d780dfa03166323 Mon Sep 17 00:00:00 2001 From: igor Date: Mon, 8 Sep 2025 07:28:49 +0500 Subject: [PATCH] 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; } }