src/main/java/com/lf/server/controller/data/PublishController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/lf/server/entity/all/StaticData.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/lf/server/service/data/RasterService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/lf/server/controller/data/PublishController.java
@@ -294,6 +294,22 @@ } @SysLog() @ApiOperation(value = "查询坐标转换") @ApiImplicitParams({ @ApiImplicitParam(name = "x", value = "X坐标", dataType = "double", paramType = "query", example = "40476573.02"), @ApiImplicitParam(name = "y", value = "Y坐标", dataType = "double", paramType = "query", example = "3391108.90"), @ApiImplicitParam(name = "epsg", value = "EPSG编码", dataType = "int", paramType = "query", example = "4528") }) @GetMapping(value = "/selectCsTransform") public Object selectCsTransform(double x, double y, int epsg) { try { return rasterService.csTransform(x, y, epsg); } catch (Exception ex) { return null; } } @SysLog() @ApiOperation(value = "插入发布数据") @ApiImplicitParams({ @ApiImplicitParam(name = "entity", value = "实体类", dataType = "PubEntity", paramType = "body") src/main/java/com/lf/server/entity/all/StaticData.java
@@ -156,6 +156,8 @@ public final static String COMPOUNDCURVE = "COMPOUNDCURVE"; public final static String CGCS2000 = "CGCS2000"; public static final String NO_FILE = JSON.toJSONString(new ResponseMsg<String>(HttpStatus.NOT_FOUND, "文件找不到")); /** src/main/java/com/lf/server/service/data/RasterService.java
@@ -1,11 +1,15 @@ package com.lf.server.service.data; import com.lf.server.entity.all.StaticData; import com.lf.server.helper.StringHelper; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.gdal.gdal.Dataset; import org.gdal.gdal.gdal; import org.gdal.gdalconst.gdalconst; import org.gdal.ogr.Geometry; import org.gdal.ogr.ogr; import org.gdal.osr.SpatialReference; import org.springframework.stereotype.Service; import java.io.File; @@ -17,7 +21,25 @@ */ @Service public class RasterService { private SpatialReference sr4326; private SpatialReference sr4490; private final static Log log = LogFactory.getLog(RasterService.class); /** * 初始化空间参考 */ public void initSr() { if (null == sr4326) { sr4326 = new SpatialReference(); sr4326.ImportFromEPSG(StaticData.I4326); } if (null == sr4490) { sr4490 = new SpatialReference(); sr4490.ImportFromEPSG(StaticData.I4490); } } /** * 获取栅格数据的EPSG编码 @@ -55,4 +77,27 @@ } } } /** * 查询坐标转换 */ public Object csTransform(double x, double y, int epsg) { this.initSr(); SpatialReference srs = new SpatialReference(); srs.ImportFromEPSG(epsg); Geometry point = new Geometry(ogr.wkbPoint); point.AddPoint(x, y, 0); point.AssignSpatialReference(srs); if (srs.GetName().contains(StaticData.CGCS2000)) { point.TransformTo(sr4490); } else { point.TransformTo(sr4326); } point.SwapXY(); return new double[]{point.GetX(), point.GetY()}; } }