From 7087ecd202ec9884e146f32f610725591c402389 Mon Sep 17 00:00:00 2001 From: xingjinshuang <xingjinshuang@smartearth.cn> Date: 星期二, 24 十二月 2024 11:51:55 +0800 Subject: [PATCH] @xingjs@20241224@提交shp方法 --- src/main/java/com/se/simu/config/InitConfig.java | 86 +++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 86 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 index 3d486c6..3299969 100644 --- a/src/main/java/com/se/simu/config/InitConfig.java +++ b/src/main/java/com/se/simu/config/InitConfig.java @@ -9,6 +9,8 @@ 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; @@ -16,6 +18,8 @@ import org.springframework.stereotype.Component; import javax.annotation.Resource; +import java.util.HashMap; +import java.util.Map; @Slf4j @Component @@ -52,11 +56,17 @@ //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); } } + /** @@ -93,6 +103,82 @@ 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