From a088987e7ab7005db1bb1da61dfc0cf420e02d78 Mon Sep 17 00:00:00 2001 From: 13693261870 <252740454@qq.com> Date: 星期三, 13 十一月 2024 17:11:28 +0800 Subject: [PATCH] 1 --- src/main/java/com/moon/server/helper/GdalHelper.java | 55 ++----------------------------------------------------- 1 files changed, 2 insertions(+), 53 deletions(-) diff --git a/src/main/java/com/moon/server/helper/GdalHelper.java b/src/main/java/com/moon/server/helper/GdalHelper.java index 08ba1cc..4576d60 100644 --- a/src/main/java/com/moon/server/helper/GdalHelper.java +++ b/src/main/java/com/moon/server/helper/GdalHelper.java @@ -21,23 +21,16 @@ import java.util.List; import java.util.Map; -/** - * GDAL甯姪绫� - * @author WWW - */ @SuppressWarnings("ALL") public class GdalHelper { private final static Log log = LogFactory.getLog(GdalHelper.class); public static void init(String gdalPath) { - // 鏀寔涓枃璺緞 gdal.SetConfigOption("GDAL_FILENAME_IS_UTF8", "YES"); - // 灞炴�ц〃鏀寔涓枃锛欳P936 gdal.SetConfigOption("SHAPE_ENCODING", ""); gdal.SetConfigOption("PGEO_DRIVER_TEMPLATE", "DRIVER=Microsoft Access Driver (*.mdb, *.accdb);DBQ=%s"); gdal.SetConfigOption("MDB_DRIVER_TEMPLATE", "DRIVER=Microsoft Access Driver (*.mdb, *.accdb);DBQ=%s"); - // 閰嶇疆鐜鍙橀噺 if (!StringHelper.isEmpty(gdalPath)) { gdal.SetConfigOption("GDAL_DATA", gdalPath + File.separator + "gdal-data"); gdal.SetConfigOption("PROJ_LIB", gdalPath + File.separator + "proj7" + File.separator + "share"); @@ -50,17 +43,11 @@ } } - // 娉ㄥ唽鎵�鏈夌殑椹卞姩 gdal.AllRegister(); ogr.RegisterAll(); GeoHelper.initSr(); } - /** - * 璇诲彇tif鏂囦欢 - * - * @param fileName - */ public static void readTif(String fileName) { // 璇诲彇褰卞儚鏁版嵁 Dataset dataset = gdal.Open(fileName, gdalconstConstants.GA_ReadOnly); @@ -69,32 +56,23 @@ 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(); } - /** - * 璇诲彇shp鏂囦欢 - * - * @param filePath - */ public static void readShp(String filePath) { try { org.gdal.ogr.Driver driver = ogr.GetDriverByName("ESRI shapefile"); @@ -120,10 +98,8 @@ Map<String, Object> fieldMap = new HashMap(5); for (int i = 0, count = featureDefn.GetFieldCount(); i < count; i++) { FieldDefn fieldDefn = featureDefn.GetFieldDefn(i); - //寰楀埌灞炴�у瓧娈电被鍨� int fieldType = fieldDefn.GetFieldType(); String fieldTypeName = fieldDefn.GetFieldTypeName(fieldType); - //寰楀埌灞炴�у瓧娈靛悕绉� String fieldName = fieldDefn.GetName(); fieldMap.put(fieldTypeName, fieldName); @@ -159,20 +135,16 @@ dataSource = driver.Open(filePath, 0); int num = dataSource.GetLayerCount(); for (int i = 0; i < num; i++) { - // 鑾峰彇鍥惧眰 Layer layer = dataSource.GetLayer(i); - // 琛ㄥ悕绉� String strlayerName = layer.GetName(); - // 鑾峰彇鍥惧眰瑕佹暟涓暟 long count = layer.GetFeatureCount(); if (0 != count) { do { - // 鑾峰彇鍥惧眰涓嬬殑瑕佺礌 Feature feature = layer.GetNextFeature(); if (null == feature) { break; } - // 鑾峰彇杈圭晫鍧愭爣 + Geometry geometry = feature.GetGeometryRef(); if (geometry != null) { String geometryJson = geometry.ExportToJson(); @@ -192,7 +164,6 @@ } } Map map = new HashMap(5); - //鑾峰彇灞炴�� for (int p = 0; p < feature.GetFieldCount(); p++) { map.put(feature.GetFieldDefnRef(p).GetName(), getProperty(feature, p)); } @@ -214,11 +185,6 @@ } } - /** - * 璇诲彇gdb鏂囦欢 - * - * @param filePath - */ public static void readGdb(String filePath) { try { org.gdal.ogr.Driver driver = ogr.GetDriverByName("OpenFileGDB"); @@ -228,20 +194,16 @@ DataSource dataSource = driver.Open(filePath, 0); for (int i = 0, count = dataSource.GetLayerCount(); i < count; i++) { - // 鑾峰彇鍥惧眰 Layer layer = dataSource.GetLayer(i); System.out.println(i + "\t" + layer.GetName()); do { - // 鑾峰彇鍥惧眰涓嬬殑瑕佺礌 Feature feature = layer.GetNextFeature(); if (null == feature) { break; } - // 鑾峰彇鏍峰紡锛岃繖閲屾槸绌猴紝寰呯‘瀹� + System.out.println(feature.GetStyleString()); - // 鑾峰彇geometry锛屼篃鍙互ExportToWkb() gml绛夌瓑 System.out.println(feature.GetGeometryRef().ExportToWkt()); - // 鑾峰彇灞炴�� System.out.println("----------------------------------"); for (int p = 0; p < feature.GetFieldCount(); p++) { System.out.println(feature.GetFieldDefnRef(p).GetName() + "\t" + getProperty(feature, p)); @@ -275,26 +237,13 @@ } } - /** - * 灞炴�ц幏鍙栧櫒 - */ @FunctionalInterface private interface PropertyGetter { - /** - * 鑾峰彇灞炴�� - * - * @param feature - * @param index - * @return - */ Object get(Feature feature, int index); } private static final PropertyGetter STRING_PROPERTY_GETTER = (feature, index) -> feature.GetFieldAsString(index); - /** - * feature.GetFieldType(index)寰楀埌涓�涓睘鎬х被鍨嬬殑int鍊�,璇ュ�煎搴斿叿浣撶被鍨� - */ private static final PropertyGetter[] PROPERTY_GETTERS = new PropertyGetter[]{ // 0-Integer (feature, index) -> feature.GetFieldAsInteger(index), -- Gitblit v1.9.3