feat:增加Music测试及太阳能计算

main
wangsir 6 months ago
parent 4295b1165d
commit 76c20fab24

Binary file not shown.

Binary file not shown.

@ -185,17 +185,6 @@
<version>1.5.6</version> <version>1.5.6</version>
</dependency> </dependency>
<dependency>
<groupId>com.cuit.mete</groupId>
<artifactId>geoserver</artifactId>
<version>3.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.cuit.gis</groupId>
<artifactId>metegis</artifactId>
<version>2.0-SNAPSHOT</version>
</dependency>
<!-- OpenCV --> <!-- OpenCV -->
<dependency> <dependency>
@ -240,6 +229,23 @@
<artifactId>commons-compress</artifactId> <artifactId>commons-compress</artifactId>
<version>1.27.1</version> <version>1.27.1</version>
</dependency> </dependency>
<dependency>
<groupId>com.cuit.gis</groupId>
<artifactId>metegis</artifactId>
<version>3.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.cuit.mete</groupId>
<artifactId>musicutil</artifactId>
<version>2.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.cuit.mete</groupId>
<artifactId>geoserver</artifactId>
<version>3.0-SNAPSHOT</version>
</dependency>
<!-- &lt;!&ndash; https://mvnrepository.com/artifact/com.github.junrar/junrar &ndash;&gt;--> <!-- &lt;!&ndash; https://mvnrepository.com/artifact/com.github.junrar/junrar &ndash;&gt;-->
<!-- <dependency>--> <!-- <dependency>-->

@ -0,0 +1,174 @@
package com.cuit.solarenergy.service;
import com.cuit.gis.analysis.SAEnvironment;
import com.cuit.gis.analysis.solarradiation.RasterSolarRadiationOperation;
import com.cuit.gis.analysis.solarradiation.SolarRadiationSpatialAnalysis;
import com.cuit.gis.exception.GeoTiffException;
import com.cuit.gis.exception.SAException;
import com.cuit.gis.projections.CoordinateUtil;
import com.cuit.gis.raster.GeoTiff;
import com.cuit.gis.raster.GridCoverageUtil;
import lombok.extern.slf4j.Slf4j;
import org.geotools.coverage.grid.GridCoverage2D;
import org.opengis.referencing.FactoryException;
import org.opengis.referencing.crs.CoordinateReferenceSystem;
import org.springframework.stereotype.Service;
import java.io.File;
import java.io.IOException;
import java.util.Calendar;
import java.util.UUID;
/**
* @author cuitg -- ZengwuWang
* @date 20241126 20:14
*/
@Slf4j
@Service
public class SolarenergyService {
/**
*
* w / m-2
* LOCALTIME_DIRECT_SOLARRADIATION
* w / m-2
* LOCALTIME_DIFFUSE_SOLARRADIATION
* w / m-2
* LOCALTIME_REFLECTED_SOLARRADIATION
* w / m-2
* LOCALTIME_TOTAL_SOLARRADIATION
* MJ / m-2
* DAY_DIRECT_SOLARRADIATION_AMOUNT
* MJ / m-2
* DAY_DIFFUSE_SOLARRADIATION_AMOUNT
* MJ / m-2
* DAY_REFLECTED_SOLARRADIATION_AMOUNT
* MJ / m-2
* DAY_TOTAL_SOLARRADIATION_AMOUNT
* MJ / m-2
* MONTH_DIRECT_SOLARRADIATION_AMOUNT
* MJ / m-2
* MONTH_DIFFUSE_SOLARRADIATION_AMOUNT
* MJ / m-2
* MONTH_REFLECTED_SOLARRADIATION_AMOUNT
* MJ / m-2
* MONTH_TOTAL_SOLARRADIATION_AMOUNT
* MJ / m-2
* YEAR_DIRECT_SOLARRADIATION_AMOUNT
* MJ / m-2
* YEAR_DIFFUSE_SOLARRADIATION_AMOUNT
* MJ / m-2
* YEAR_REFLECTED_SOLARRADIATION_AMOUNT
* MJ / m-2
* YEAR_TOTAL_SOLARRADIATION_AMOUNT
*
* SUNRISETIME
*
* SUNSETTIME
*
* DAY_SUNSHINE_DURATION
*
* MONTH_SUNSHINE_DURATION
*
* YEAR_SUNSHINE_DURATION
*
* DAY_POSSIBLE_SUNSHINE_DURATION
*
* MONTH_POSSIBLE_SUNSHINE_DURATION
*
* YEAR_POSSIBLE_SUNSHINE_DURATION
* @param calendar
* @param cloudcoverof10parts
*/
public String calSolarRadiation(RasterSolarRadiationOperation.SolarEadiationAnalysisType type, Calendar calendar, double cloudcoverof10parts, int cellSize) {
String workSpacePath = System.getProperty("user.dir");
String path = workSpacePath + File.separator + "data" + File.separator;
CoordinateReferenceSystem crs = null;
try {
crs = CoordinateUtil.getCoordinateReferenceSystem("EPSG:3857");
} catch (FactoryException e) {
log.error("坐标系处理时出错!" + e.getMessage());
throw new RuntimeException(e);
}
SAEnvironment envi = new SAEnvironment(cellSize, crs); // DefaultGeographicCRS.WGS84
SolarRadiationSpatialAnalysis solarRadiationSpatialAnalysis = new SolarRadiationSpatialAnalysis(envi);
String name = type.name();
String outFileName = path + "out" + File.separator + name + "_" + UUID.randomUUID().toString().replace("-", "") + ".tif";
String slopfile = path + "slope3857.tif";
String aspectfile = path + "aspect3857.tif";
try {
GeoTiff slopTiff = new GeoTiff(slopfile);
GridCoverage2D slopCoverage = slopTiff.getCoverage();
GeoTiff aspectTiff = new GeoTiff(aspectfile);
GridCoverage2D aspectCoverage = aspectTiff.getCoverage();
/*
w / m-2
LOCALTIME_DIRECT_SOLARRADIATION
w / m-2
LOCALTIME_DIFFUSE_SOLARRADIATION
w / m-2
LOCALTIME_REFLECTED_SOLARRADIATION
w / m-2
LOCALTIME_TOTAL_SOLARRADIATION
MJ / m-2
DAY_DIRECT_SOLARRADIATION_AMOUNT
MJ / m-2
DAY_DIFFUSE_SOLARRADIATION_AMOUNT
MJ / m-2
DAY_REFLECTED_SOLARRADIATION_AMOUNT
MJ / m-2
DAY_TOTAL_SOLARRADIATION_AMOUNT
MJ / m-2
MONTH_DIRECT_SOLARRADIATION_AMOUNT
MJ / m-2
MONTH_DIFFUSE_SOLARRADIATION_AMOUNT
MJ / m-2
MONTH_REFLECTED_SOLARRADIATION_AMOUNT
MJ / m-2
MONTH_TOTAL_SOLARRADIATION_AMOUNT
MJ / m-2
YEAR_DIRECT_SOLARRADIATION_AMOUNT
MJ / m-2
YEAR_DIFFUSE_SOLARRADIATION_AMOUNT
MJ / m-2
YEAR_REFLECTED_SOLARRADIATION_AMOUNT
MJ / m-2
YEAR_TOTAL_SOLARRADIATION_AMOUNT
SUNRISETIME
SUNSETTIME
DAY_SUNSHINE_DURATION
MONTH_SUNSHINE_DURATION
YEAR_SUNSHINE_DURATION
DAY_POSSIBLE_SUNSHINE_DURATION
MONTH_POSSIBLE_SUNSHINE_DURATION
YEAR_POSSIBLE_SUNSHINE_DURATION
*/
//RasterSolarRadiationOperation.SolarEadiationAnalysisType type = RasterSolarRadiationOperation.SolarEadiationAnalysisType.MONTH_TOTAL_SOLARRADIATION_AMOUNT;
// RasterSolarRadiationOperation.SolarEadiationAnalysisType type = RasterSolarRadiationOperation.SolarEadiationAnalysisType.SUNRISETIME;
GridCoverage2D solarRadiationCoverage2D = solarRadiationSpatialAnalysis.calculateSolarRadiation(slopCoverage, aspectCoverage, type, calendar, cloudcoverof10parts);
GridCoverageUtil.writeGeoTiff(solarRadiationCoverage2D, outFileName);
return outFileName;
// } catch (FactoryException e) {
// throw new RuntimeException(e);
} catch (GeoTiffException e) {
throw new RuntimeException(e);
} catch (IOException e) {
throw new RuntimeException(e);
} catch (SAException e) {
throw new RuntimeException(e);
} catch (FactoryException e) {
throw new RuntimeException(e);
}
}
}

@ -52,7 +52,7 @@ mygeoserverconfig:
geoserverapiurl: http://1.92.75.33:8082/geoserver/ geoserverapiurl: http://1.92.75.33:8082/geoserver/
username: admin #adminuser username: admin #adminuser
password: geoserver #Wzw@Geoserver password: geoserver #Wzw@Geoserver
workspaces: cztl workspaces: nctyn
geoserverpath: /opt/geoserver/data_dir/data geoserverpath: /opt/geoserver/data_dir/data
## 删除GeoServer配置 ## 删除GeoServer配置

@ -1,13 +1,83 @@
package com.cuit.solarenergy; package com.cuit.solarenergy;
import com.cuit.gis.analysis.solarradiation.RasterSolarRadiationOperation;
import com.cuit.mete.musicutil.MusicQueryParameters;
import com.cuit.mete.musicutil.SurfEleInterface;
import com.cuit.mete.musicutil.exception.*;
import com.cuit.solarenergy.service.SolarenergyService;
import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.context.SpringBootTest;
import java.io.FileNotFoundException;
import java.util.Calendar;
@SpringBootTest @SpringBootTest
@Slf4j
class SolarenergyApplicationTests { class SolarenergyApplicationTests {
@Autowired
SolarenergyService solarenergyService;
@Test @Test
void contextLoads() { void contextLoads() {
} }
@Test
public void cal(){
String s = solarenergyService.calSolarRadiation(RasterSolarRadiationOperation.SolarEadiationAnalysisType.DAY_TOTAL_SOLARRADIATION_AMOUNT, Calendar.getInstance(), 0, 2000);
System.out.println(s);
}
@Test
public void testMusic() throws FileNotFoundException, MusicConfigException {
try {
//1、接口实例化
SurfEleInterface surfEleInterface = new SurfEleInterface();
surfEleInterface.setUserConfig("10.96.90.120","80","BCCD_BFNA_NCGFZX", "NCgongfu123!");
log.debug("1---接口初始化成功");
//2、接口参数实例化
//需要传数据数据代码
MusicQueryParameters musicQueryParameters = new MusicQueryParameters("SURF","RADI_CHN_MUL_HOR");
log.debug("2---接口查询参数");
//3、设置查询时间可设置时间段
musicQueryParameters.setTimes("20241126080000");
//可设置站号
//设置经纬度范围
//可设置站事情
musicQueryParameters.setAdminCodes("510000");
log.debug("3---设置时间及区号");
//开始查询
String dataByMusic = surfEleInterface.queryDataByMusic(musicQueryParameters);
log.debug("4---查询结束");
log.debug("查询结果长度:" + dataByMusic.length());
} catch (FileNotFoundException e) {
//配置文件没有找到
log.error("Error1:" + e.getMessage());
} catch (MusicConfigException e) {
//无效的配置文件
log.error("Error2:" + e.getMessage());
} catch (InvalidInterfaceParametersException e) {
//无效的接口参数据错误
log.error("Error3:" + e.getMessage());
} catch (InterfaceParameterMismatchException e) {
//查询接口参数据错误
log.error("Error4:" + e.getMessage());
} catch (MusicInterfaceException e) {
//接口调用异常;
log.error("Error7:" + e.getMessage());
} catch (MusicInterfaceReturnException e) {
//接口调用返异常;
log.error("Error5:接口ID为" + e.getInterfaceID());
log.error("Error5:接口参数为" + e.getParaMap());
log.error("Error5:MUSIC返回错误" + e.getErrMsg());
log.error("Error5:错误代码" + e.getErrcode());
log.error("Error5:错误信息" + e.getMessage());
log.error("Error5:错误处理建议" + e.getErrTips());
} catch (DataSetElementsInvalidExecption e) {
log.error("Error6:要素代码不正确" + e.getMessage());
}
}
} }

Loading…
Cancel
Save