rain
2024-07-10 3afaf1a21f47b6f9b46dd8e089e15e1e325c810a
src/main/java/com/dji/sample/patches/utils/ShapeFileUtil.java
@@ -2,6 +2,7 @@
import cn.hutool.core.io.FileUtil;
import com.alibaba.fastjson.JSONObject;
import com.dji.sample.patches.model.dto.ShpDTO;
import org.geotools.data.DataStore;
import org.geotools.data.DataStoreFinder;
import org.geotools.data.FeatureSource;
@@ -11,21 +12,14 @@
import org.opengis.feature.simple.SimpleFeature;
import org.opengis.feature.simple.SimpleFeatureType;
import org.opengis.filter.Filter;
import java.io.File;
import java.io.IOException;
import java.io.StringWriter;
import java.util.*;
public class ShapeFileUtil {
    /*
     * @param zipFile: 压缩包文件地址
     * @return FeatureCollection
     * @author pangshicheng
     * @description 解析shp压缩包,并返回解析出的 FeatureCollection
     * @date 2023/7/18 16:02
     */
    //将文件解压
    public static FeatureCollection getFeatureCollectionByShpFile(File zipFile) throws IOException {
        try {
            String tempDir = FileUtil.getTmpDirPath();
@@ -54,27 +48,30 @@
            Filter filter = Filter.INCLUDE;
            FeatureCollection<SimpleFeatureType, SimpleFeature> collection = source.getFeatures(filter);
            return collection;
        }catch (Exception e){
        } catch (Exception e) {
            throw e;
        }
    }
    /**
     * @param zipFile:
     * @return JSONObject
     * @author pangshicheng
     * @description 通过shp压缩文件,将其转换为GeoJson格式
     * @date 2023/7/18 16:04
     */
    public static JSONObject shpToGeoJson(File zipFile) throws IOException {
    //将解压后的文件转换成GeoJson格式
    public static List<ShpDTO> shpToGeoJson(File zipFile) throws IOException {
        ShpDTO shpDTO=new ShpDTO();
        List<ShpDTO> dtoList= new ArrayList<>();
        FeatureJSON fjson = new FeatureJSON();
        JSONObject geoJsonObject=new JSONObject();
        geoJsonObject.put("type","FeatureCollection");
        JSONObject geoJsonObject = new JSONObject();
        geoJsonObject.put("type", "FeatureCollection");
        List<String> strings = new ArrayList<>();
        try {
            // 获取FeatureCollection
            FeatureCollection collection = getFeatureCollectionByShpFile(zipFile);
            FeatureIterator iterator = collection.features();
            List<JSONObject> array  = new ArrayList<JSONObject>();
            List<JSONObject> array = new ArrayList<JSONObject>();
            //遍历feature转为json对象
            while (iterator.hasNext()) {
                SimpleFeature feature = (SimpleFeature) iterator.next();
@@ -84,17 +81,31 @@
                byte[] b = temp.getBytes("iso8859-1");
                temp = new String(b, "gbk");
                JSONObject json = JSONObject.parseObject(temp);
                shpDTO.setDKFW(json.getJSONObject("geometry").get("coordinates").toString());
                shpDTO.setGEO(json.getJSONObject("geometry").get("type").toString());
                shpDTO.setXZQDM(json.getJSONObject("properties").get("XZQDM").toString());
                shpDTO.setXZB( json.getJSONObject("properties").getDouble("XZB"));
                shpDTO.setYZB( json.getJSONObject("properties").getDouble("YZB"));
                shpDTO.setDKBH(json.getJSONObject("properties").get("JCBH").toString());
                shpDTO.setJCMJ(json.getJSONObject("properties").getDouble("JCMC"));
                shpDTO.setTBLX(json.getJSONObject("properties").getString("TBLX"));
                shpDTO.setDDTC(json.getJSONObject("properties").getString("DDTC"));
                shpDTO.setHSX(json.getJSONObject("properties").getString("HSX"));
                shpDTO.setJCLX(json.getJSONObject("properties").getString("JCLX"));
                dtoList.add(shpDTO);
                String str2 = json.getJSONObject("geometry").get("coordinates").toString();
                strings.add(str2);
                array.add(json);
            }
            iterator.close();
            //添加到geojsonObject
            geoJsonObject.put("features",array);
            geoJsonObject.put("features", array);
            iterator.close();
        }catch (Exception e){
        } catch (Exception e) {
            throw e;
        }
        return geoJsonObject;
        return dtoList;
    }
}