1
13693261870
2024-09-14 c07a4aa6ecabddb15e0e4ca2a8c3524bf05d3e7a
1
已修改4个文件
93 ■■■■■ 文件已修改
src/main/java/com/se/simu/domain/SeDb.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/se/simu/helper/ShpHelper.java 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/se/simu/helper/StringHelper.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/se/simu/service/SedbService.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/se/simu/domain/SeDb.java
@@ -1,5 +1,8 @@
package com.se.simu.domain;
import org.gdal.osr.SpatialReference;
import org.gdal.osr.osr;
/**
 * SE数据库实体类
 *
@@ -16,6 +19,21 @@
    private String bbox;
    private SpatialReference sr;
    public SeDb() {
    }
    public SpatialReference getSpatialReference() {
        if (null == sr) {
            sr = new SpatialReference();
            sr.ImportFromEPSG(epsg);
            sr.SetAxisMappingStrategy(osr.OAMS_TRADITIONAL_GIS_ORDER);
        }
        return sr;
    }
    public String getDbid() {
        return dbid;
    }
src/main/java/com/se/simu/helper/ShpHelper.java
@@ -1,17 +1,13 @@
package com.se.simu.helper;
import cn.hutool.core.io.FileUtil;
import cn.hutool.json.JSONArray;
import com.se.simu.domain.SeField;
import com.se.simu.domain.SeLayer;
import lombok.extern.slf4j.Slf4j;
import org.gdal.ogr.*;
import org.gdal.osr.SpatialReference;
import java.io.File;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
 * ShapeFile帮助类
@@ -34,23 +30,19 @@
            if (null == dataSource) return false;
            int geoType = getGeometryType(seLayer.getQueryType());
            layer = dataSource.CreateLayer(FileUtil.getName(filePath), null, geoType);
            layer = dataSource.CreateLayer(FileUtil.getName(filePath), seLayer.getDb().getSpatialReference(), geoType);
            if (null == layer) return false;
//
//            List<Field> fields = new ArrayList<>();
//            GdbHelper.getFields(MarkJsonEntity.class, fields, StaticData.MARK_EXCLUDE_FIELDS);
//            GdbHelper.addLayerField(layer, fields);
            createLayerFields(layer, seLayer.getFields());
            FeatureDefn featureDefn = layer.GetLayerDefn();
            //for (MarkJsonEntity t : list) {
            //    Feature f = new Feature(featureDefn);
            //    GdbHelper.setFeatureData(f, fields, t);
            for (int i = 0, c = seLayer.getData().size(); i < c; i++) {
                Feature f = new Feature(featureDefn);
                setFeatureData(f, seLayer.getFields(), seLayer.getData().getJSONArray(i));
                Geometry g = createGeometry();
            //    Geometry geo = Geometry.CreateFromWkt(t.getWkt());
            //    f.SetGeometry(geo);
            //
            //    layer.CreateFeature(f);
            //}
                layer.CreateFeature(f);
            }
            return true;
        } catch (Exception ex) {
@@ -61,25 +53,52 @@
        }
    }
    public static void ss(){
    private static void setFeatureData(Feature f, List<SeField> fields, JSONArray arr) {
        //
    }
    /**
     * 获取图形类型
     */
    private static Geometry createGeometry() {
        Geometry g = null;
        //
        return g;
    }
    private static int getGeometryType(String type) {
        switch (type) {
            case "point":
                return ogr.wkbPoint;
            case "polyline":
                return ogr.wkbLineString;
                return ogr.wkbMultiLineString;
            case "polygon":
                // return ogr.wkbPolygon
                return ogr.wkbMultiPolygon;
            default:
                return ogr.wkbUnknown;
        }
    }
    private static void createLayerFields(Layer layer, List<SeField> fields) {
        for (int i = 0, c = fields.size(); i < c; i++) {
            SeField f = fields.get(i);
            FieldDefn fd = new FieldDefn(f.getName(), getFieldType(f));
            layer.CreateField(fd, i);
        }
    }
    private static Integer getFieldType(SeField f) {
        switch (f.getType()) {
            case "int":
                return ogr.OFTInteger;
            case "long":
                return ogr.OFTInteger64;
            case "double":
                return ogr.OFTReal;
            case "datetime":
                return ogr.OFTDateTime;
            default:
                return ogr.OFTString;
        }
    }
}
src/main/java/com/se/simu/helper/StringHelper.java
@@ -118,6 +118,7 @@
     * 字符串,是否为空null和空格
     */
    public static boolean isEmpty(String str) {
        // return null == str || "".equals(str)
        return null == str || "".equals(str.trim());
    }
src/main/java/com/se/simu/service/SedbService.java
@@ -14,7 +14,6 @@
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import org.springframework.web.client.RestTemplate;
import javax.annotation.Resource;
@@ -94,7 +93,7 @@
    }
    public String getPassword() throws Exception {
        if (StringUtils.isEmpty(password)) {
        if (StringHelper.isEmpty(password)) {
            String key = getPublicKey();
            RsaHelper.setPublicKey(key);
            password = RsaHelper.encrypt(pwd);