From 3417cf014a65765e02696c1d121ce58b2b4a8aed Mon Sep 17 00:00:00 2001 From: 13693261870 <252740454@qq.com> Date: 星期二, 08 四月 2025 15:55:36 +0800 Subject: [PATCH] 修改pom.xml --- src/main/java/com/se/simu/config/InitConfig.java | 184 ++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 184 insertions(+), 0 deletions(-) diff --git a/src/main/java/com/se/simu/config/InitConfig.java b/src/main/java/com/se/simu/config/InitConfig.java new file mode 100644 index 0000000..3299969 --- /dev/null +++ b/src/main/java/com/se/simu/config/InitConfig.java @@ -0,0 +1,184 @@ +package com.se.simu.config; + +import com.se.simu.helper.CaffeineHelper; +import com.se.simu.helper.GdalHelper; +import com.se.simu.helper.WebHelper; +import lombok.extern.slf4j.Slf4j; +import org.gdal.gdal.Band; +import org.gdal.gdal.Dataset; +import org.gdal.gdal.Driver; +import org.gdal.gdal.gdal; +import org.gdal.gdalconst.gdalconstConstants; +import org.gdal.ogr.*; +import org.gdal.osr.SpatialReference; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.boot.ApplicationArguments; +import org.springframework.boot.ApplicationRunner; +import org.springframework.core.env.Environment; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.util.HashMap; +import java.util.Map; + +@Slf4j +@Component +@SuppressWarnings("ALL") +public class InitConfig implements ApplicationRunner { + @Resource + Environment env; + + @Value("${server.port}") + String serverPort; + + @Value("${config.cacheTime}") + Integer cacheTime; + + @Value("${server.servlet.context-path}") + String contextPath; + + @Override + public void run(ApplicationArguments args) { + // noinspection AlibabaRemoveCommentedCode + try { + log.info("***************** 鍒濆鍖� GDAL *****************" + "\n"); + GdalHelper.init(env.getProperty("config.gdalPath")); + CaffeineHelper.init(cacheTime); + + String path = null != contextPath && contextPath.length() > 1 ? contextPath : ""; + log.info("API鏂囨。:http://localhost:" + serverPort + path + "/doc.html"); + log.info("API鏂囨。:http://{}:{}{}/doc.html", WebHelper.getHostIp(), serverPort, path); + + log.info("***************** 绯荤粺鍚姩瀹屾瘯 *****************" + "\n"); + + //log.info("***************** 璇诲彇tif鏂囦欢 *****************" + "\n"); + // 璇诲彇tif鏂囦欢 + //readTif("D:\\soft\\env\\tif\\srtm_12_03.tif"); + //log.info("***************** 璇诲彇tif鏂囦欢瀹屾瘯 *****************" + "\n"); + + //log.info("***************** 璇诲彇shp鏂囦欢 *****************" + "\n"); + // 璇诲彇shp鏂囦欢 + //readShp("D:\\soft\\env\\闆ㄩ噺绔欑偣鏁版嵁\\闆ㄩ噺绔欑偣_84\\闆ㄩ噺绔欑偣_84.shp"); + //log.info("***************** 璇诲彇shp鏂囦欢瀹屾瘯 *****************" + "\n"); + + + } catch (Exception ex) { + log.error(ex.getMessage(), ex); + } + } + + + + /** + * 璇诲彇tif鏂囦欢 + * + * @param fileName + */ + public static void readTif(String fileName) { + // 璇诲彇褰卞儚鏁版嵁 + Dataset dataset = gdal.Open(fileName, gdalconstConstants.GA_ReadOnly); + if (dataset == null) { + System.out.println("read fail!"); + return; + } + + // providing various methods for a format specific driver. + Driver driver = dataset.GetDriver(); + System.out.println("driver name: " + driver.getLongName()); + + // 璇诲彇褰卞儚淇℃伅 + int xSize = dataset.getRasterXSize(); + int ySzie = dataset.getRasterYSize(); + int rasterCount = dataset.getRasterCount(); + System.out.println("dataset xSize: " + xSize + ", ySzie = " + ySzie + ", rasterCount = " + rasterCount); + + Band band = dataset.GetRasterBand(1); + // the data type of the band. + int type = band.GetRasterDataType(); + System.out.println("data type = " + type + ", " + (type == gdalconstConstants.GDT_Byte)); + + // Frees the native resource associated to a Dataset object and close the file. + dataset.delete(); + + gdal.GDALDestroyDriverManager(); + } + + /** + * 璇诲彇 Shapefile 鏂囦欢骞舵墦鍗板睘鎬у拰鍑犱綍鏁版嵁 + * + * @param shapefilePath SHP 鏂囦欢璺緞 + */ + + public void readShp(String strVectorFile) { + + // 娉ㄥ唽鎵�鏈夌殑椹卞姩 + ogr.RegisterAll(); + // 涓轰簡鏀寔涓枃璺緞锛岃娣诲姞涓嬮潰杩欏彞浠g爜 + gdal.SetConfigOption("GDAL_FILENAME_IS_UTF8", "YES"); + // 涓轰簡浣垮睘鎬ц〃瀛楁鏀寔涓枃锛岃娣诲姞涓嬮潰杩欏彞 + gdal.SetConfigOption("SHAPE_ENCODING", "CP936"); + // 璇诲彇鏁版嵁锛岃繖閲屼互ESRI鐨剆hp鏂囦欢涓轰緥 + String strDriverName = "ESRI Shapefile"; + // 鍒涘缓涓�涓枃浠讹紝鏍规嵁strDriverName鎵╁睍鍚嶈嚜鍔ㄥ垽鏂┍鍔ㄧ被鍨� + + org.gdal.ogr.Driver oDriver = ogr.GetDriverByName(strDriverName); + + if (oDriver == null) { + System.out.println(strDriverName + " 椹卞姩涓嶅彲鐢紒\n"); + return; + } + DataSource dataSource = oDriver.Open(strVectorFile); + //Layer layer = dataSource.GetLayer("test"); + Layer layer = dataSource.GetLayer(0); + + for (int i = 0; i < dataSource.GetLayerCount(); i++) { + Layer layerIdx = dataSource.GetLayer(i); + System.out.println("鍥惧眰鍚嶇О锛�<==>" + layerIdx.GetName()); + } + + String layerName = layer.GetName(); + System.out.println("鍥惧眰鍚嶇О锛�" + layerName); + SpatialReference spatialReference = layer.GetSpatialRef(); + //System.out.println(spatialReference); + System.out.println("绌洪棿鍙傝�冨潗鏍囩郴锛�" + spatialReference.GetAttrValue("AUTHORITY", 0) + + spatialReference.GetAttrValue("AUTHORITY", 1)); + + double[] layerExtent = layer.GetExtent(); + + System.out.println("鍥惧眰鑼冨洿锛歮inx:" + layerExtent[0] + ",maxx:" + layerExtent[1] + ",miny:" + layerExtent[2] + ",maxy:" + layerExtent[3]); + + + FeatureDefn featureDefn = layer.GetLayerDefn(); + + int fieldCount = featureDefn.GetFieldCount(); + + Map<String, String> fieldMap = new HashMap<String, String>(); + for (int i = 0; i < fieldCount; i++) { + FieldDefn fieldDefn = featureDefn.GetFieldDefn(i); + // 寰楀埌灞炴�у瓧娈电被鍨� + int fieldType = fieldDefn.GetFieldType(); + String fieldTypeName = fieldDefn.GetFieldTypeName(fieldType); + // 寰楀埌灞炴�у瓧娈靛悕绉� + String fieldName = fieldDefn.GetName(); + fieldMap.put(fieldTypeName, fieldName); + } + System.out.println(); + System.out.println("fileMap:"); + System.out.println(fieldMap); + + System.out.println(layer.GetFeature(1).GetGeometryRef().ExportToJson()); + System.out.println(layer.GetFeature(2).GetGeometryRef().ExportToJson()); + System.out.println(layer.GetFeature(3).GetGeometryRef().ExportToJson()); + + for (int i = 0; i < 12; i++) { + Feature feature = layer.GetFeature(i); + Object[] arr = fieldMap.values().toArray(); + for (int k = 0; k < arr.length; k++) { + String fvalue = feature.GetFieldAsString(arr[k].toString()); + System.out.println(" 灞炴�у悕绉�:" + arr[k].toString() + ",灞炴�у��:" + fvalue); + } + } + } + + +} -- Gitblit v1.9.3