1
13693261870
2024-09-14 3e0b038b5c61aa26a5be2fffada678e9dad58aa2
src/main/java/com/se/simu/helper/ShpHelper.java
@@ -1,5 +1,6 @@
package com.se.simu.helper;
import cn.hutool.core.io.FileUtil;
import com.se.simu.domain.SeLayer;
import lombok.extern.slf4j.Slf4j;
import org.gdal.ogr.*;
@@ -21,28 +22,20 @@
@Slf4j
@SuppressWarnings("ALL")
public class ShpHelper {
    public static boolean createShp(String path, SeLayer seLayer) {
    public static boolean createShp(String filePath, SeLayer seLayer) {
        Driver driver = null;
        DataSource dataSource = null;
        Layer layer = null;
        try {
//            driver = ogr.GetDriverByName("ESRI shapefile");
//            if (null == driver) {
//                return null;
//            }
//
//            String filePath = path + File.separator + type.toLowerCase() + ".shp";
//            // DataSource ds = driver.Open(filePath, 0)
//            dataSource = driver.CreateDataSource(filePath, null);
//            if (null == dataSource) {
//                return null;
//            }
//
//            int geoType = getGeometryType(type);
//            layer = dataSource.CreateLayer(type.toLowerCase(), GeoHelper.sr104903, geoType);
//            if (null == layer) {
//                return null;
//            }
            driver = ogr.GetDriverByName("ESRI shapefile");
            if (null == driver) return false;
            dataSource = driver.CreateDataSource(filePath, null);
            if (null == dataSource) return false;
            int geoType = getGeometryType(seLayer.getQueryType());
            layer = dataSource.CreateLayer(FileUtil.getName(filePath), null, geoType);
            if (null == layer) return false;
//
//            List<Field> fields = new ArrayList<>();
//            GdbHelper.getFields(MarkJsonEntity.class, fields, StaticData.MARK_EXCLUDE_FIELDS);
@@ -68,17 +61,23 @@
        }
    }
    public static void ss(){
    }
    /**
     * 获取图形类型
     */
    private static int getGeometryType(String type) {
        switch (type) {
            case "POINT":
            case "point":
                return ogr.wkbPoint;
            case "LINESTRING":
            case "polyline":
                return ogr.wkbLineString;
            case "POLYGON":
                return ogr.wkbPolygon;
            case "polygon":
                // return ogr.wkbPolygon
                return ogr.wkbMultiPolygon;
            default:
                return ogr.wkbUnknown;
        }