소스 검색

添加任务分析结果

董珍珍 1 년 전
부모
커밋
6038e4a9a8

+ 28 - 0
onemap-common/onemap-common-core/src/main/java/com/onemap/common/core/web/domain/StatusMsg.java

@@ -0,0 +1,28 @@
+package com.onemap.common.core.web.domain;
+
+/**
+ * 记录中间处理的逻辑状态信息
+ */
+public class StatusMsg {
+    public String msg = "成功";
+    public Boolean b = true;
+
+    public StatusMsg() {
+    }
+
+    public String getMsg() {
+        return msg;
+    }
+
+    public void setMsg(String msg) {
+        this.msg = msg;
+    }
+
+    public Boolean getB() {
+        return b;
+    }
+
+    public void setB(Boolean b) {
+        this.b = b;
+    }
+}

+ 14 - 15
onemap-modules/onemap-analyse/src/main/java/com/onemap/analyse/service/impl/FzssServiceImpl.java

@@ -1,19 +1,11 @@
 package com.onemap.analyse.service.impl;
 
-import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.onemap.analyse.domain.*;
-import com.onemap.analyse.domain.ESRI.EsriFeature;
-import com.onemap.analyse.domain.ESRI.EsriField;
-import com.onemap.analyse.domain.ESRI.EsriGeometry;
-import com.onemap.analyse.domain.ESRI.EsriJsonModel;
-import com.onemap.analyse.domain.GeoJSON.Geometry;
 import com.onemap.analyse.mapper.*;
 import com.onemap.analyse.service.IFzssService;
 import com.onemap.analyse.task.FzxzPlanSchedule;
 import com.onemap.analyse.task.FzxzSchedule;
-import com.onemap.analyse.task.PythonExecute;
 import com.onemap.analyse.utils.DozerUtils;
 import com.onemap.common.core.utils.StringUtils;
 import com.onemap.common.core.web.domain.RequestResult;
@@ -23,13 +15,12 @@ import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
-import java.io.FileNotFoundException;
-import java.io.FileOutputStream;
 import java.io.IOException;
-import java.lang.reflect.Array;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
 
-import static com.onemap.analyse.utils.Fxfw2SdeUtils.fzxzvector2Sde;
 import static com.onemap.analyse.utils.Fxfw2SdeUtils.vector2Sde;
 
 @Service
@@ -119,7 +110,7 @@ public class FzssServiceImpl implements IFzssService {
 
             //选址因子
             ArrayList xzyx = (ArrayList) params.get("yxyz");
-            List<FzxzXzyzDTO> xzyxList = DozerUtils.mapList(xzyx, FzxzXzyzDTO.class);
+            List<FzxzXzyzDTO> xzyxList = new ArrayList<>();
             for (int i = 0; i < xzyx.size(); i++) {
                 FzxzXzyzDTO dto = DozerUtils.map(xzyx.get(i), FzxzXzyzDTO.class);
                 dto.setBsm(StringUtils.getUUID());
@@ -128,12 +119,20 @@ public class FzssServiceImpl implements IFzssService {
 
                 xzyxList.add(dto);
             }
+
+            //存储规划任务
+            String xzfw = fzxzDTO.getXzfw();
+            if (fzxzDTO.getFwlx() == 1) {
+                // 绘制不需要存储空间数据
+                fzxzDTO.setXzfw("");
+            }
             fzxzDTO.setRwzt(Rwzt.getCreate());
             fzxzDTO.setCjyh(SecurityUtils.getUsername());
             fzxzMapper.insert(fzxzDTO);
 
             //开始选址规划
-            FzxzPlanSchedule.startPlan(fzxzDTO,xzyxList);
+            fzxzDTO.setXzfw(xzfw);
+            FzxzPlanSchedule.startPlan(fzxzDTO, xzyxList);
 
             return RequestResult.success("保存成功!", fzxzDTO.getBsm());
         } catch (Exception e) {

+ 75 - 0
onemap-modules/onemap-analyse/src/main/java/com/onemap/analyse/task/FzxzPlanSchedule.java

@@ -2,9 +2,12 @@ package com.onemap.analyse.task;
 
 import com.onemap.analyse.domain.FzxzDTO;
 import com.onemap.analyse.domain.FzxzXzyzDTO;
+import com.onemap.common.core.web.domain.StatusMsg;
+import com.supermap.data.*;
 import org.springframework.stereotype.Component;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * 辅助规划选址,通过超图iObject分析
@@ -16,6 +19,78 @@ public class FzxzPlanSchedule {
      * @param xzyzList 选址因子
      */
     public static void startPlan(FzxzDTO fzxzDTO, List<FzxzXzyzDTO> xzyzList) {
+        if (fzxzDTO.getFwlx() == 1) {
+            // 绘制
 
+            //拿到区域
+            String geoWkt = fzxzDTO.getXzfw();
+            Geometry geometry = Toolkit.WKTToGeometry(geoWkt);
+            StatusMsg statusMsg = siteAnalysis(geometry);
+            //拿到图层
+        } else if (fzxzDTO.getFwlx() == 2) {
+            // shp文件
+
+        }
+    }
+
+    // 选址分析
+    private static StatusMsg siteAnalysis(Geometry geometry) {
+        StatusMsg statusMsg = new StatusMsg();
+
+        DatasourceConnectionInfo info = new DatasourceConnectionInfo();
+        info.setEngineType(EngineType.PGGIS);
+
+        //TODO:配置信息放到配置文件中
+        info.setServer("192.168.60.202:5432");
+        info.setDatabase("real3d");
+        info.setUser("postgres");
+        info.setPassword("postgres");
+
+        Workspace mWorkspace = new Workspace();
+        Datasource datasource = mWorkspace.getDatasources().open(info);
+
+        if (datasource == null) {
+            statusMsg.setMsg("创建数据源失败");
+            statusMsg.setB(false);
+            return statusMsg;
+        }
+
+        Datasets datasets = datasource.getDatasets();
+
+        ////TODO:临时代码,输出数据集名称
+        //int dbCount = datasource.getDatasets().getCount();
+        //for (int i = 0; i < dbCount; i++) {
+        //    Dataset da = datasource.getDatasets().get(i);
+        //    System.out.println(da.getName());
+        //}
+
+
+        DatasetVector ghdkaDataset = (DatasetVector) datasets.get("vector_GHDKA");
+        int allSize = ghdkaDataset.getAllFeatures().size();
+
+        // 设置查询参数
+        QueryParameter parameter = new QueryParameter();
+        //where 条件
+        //parameter.setAttributeFilter("SmID<100");
+        parameter.setCursorType(CursorType.STATIC);
+        parameter.setSpatialQueryMode(SpatialQueryMode.CONTAIN);
+        parameter.setSpatialQueryObject(geometry);
+        // 进行查询
+        Recordset recordsetRes = ghdkaDataset.query(parameter);
+        int featureCount = recordsetRes.getAllFeatures().size();
+
+        //recordsetRes.getAllFeatures().get(0).getGeometry();
+
+        for (Map.Entry<Integer, Feature> entry : recordsetRes.getAllFeatures().entrySet()) {
+            Integer key = entry.getKey();
+            Feature feature = entry.getValue();
+            String wktRes = Toolkit.GeometryToWKT(feature.getGeometry());
+            System.out.println(wktRes);
+        }
+        // 释放工作空间占有的资源
+        ghdkaDataset.close();
+        mWorkspace.dispose();
+
+        return statusMsg;
     }
 }

+ 1 - 0
onemap-modules/onemap-analyse/src/main/resources/bootstrap.yml

@@ -21,6 +21,7 @@ spring:
         # 服务注册地址
         server-addr: 127.0.0.1:8848
       config:
+        namespace: model
         # 配置中心地址
         server-addr: 127.0.0.1:8848
         # 配置文件格式

+ 9 - 0
sql/auto_increment_sequence.sql

@@ -0,0 +1,9 @@
+-- 删除已存在的序列(如果存在)
+DROP SEQUENCE IF EXISTS auto_increment_sequence;
+
+-- 创建共享的自增序列
+CREATE SEQUENCE auto_increment_sequence
+    START WITH 1
+    INCREMENT BY 1
+    NO MINVALUE
+    NO MAXVALUE CACHE 1;

+ 31 - 0
sql/t_fzss_fxrw_gis.sql

@@ -0,0 +1,31 @@
+-- 删除表(如果存在)
+DROP TABLE IF EXISTS t_fzss_fxrw_gis;
+
+-- 创建表
+CREATE TABLE t_fzss_fxrw_gis
+(
+    objectid   INT4 PRIMARY KEY DEFAULT nextval('auto_increment_sequence'), -- 对象ID,自增
+    objectid_1 INT4 NOT NULL,                                                         -- 对象ID_1
+    rwbsm      VARCHAR(50),                                                           -- 任务标识码
+    rwlx       VARCHAR(50),                                                           -- 任务类型
+    mj         INT4,                                                                  -- 面积(假设为 int4 类型)
+    geom       GEOMETRY(POINT, 4326)                                                  -- 形状
+);
+
+-- 添加表注释
+COMMENT
+ON TABLE t_fzss_fxrw_gis IS '分析任务';
+
+-- 添加字段注释
+COMMENT
+ON COLUMN t_fzss_fxrw_gis.objectid IS '对象ID';
+COMMENT
+ON COLUMN t_fzss_fxrw_gis.objectid_1 IS '对象ID_1';
+COMMENT
+ON COLUMN t_fzss_fxrw_gis.rwbsm IS '任务标识码';
+COMMENT
+ON COLUMN t_fzss_fxrw_gis.rwlx IS '任务类型';
+COMMENT
+ON COLUMN t_fzss_fxrw_gis.mj IS '面积';
+COMMENT
+ON COLUMN t_fzss_fxrw_gis.geom IS '形状';

+ 58 - 0
sql/t_fzss_fzxz_jg_gis.sql

@@ -0,0 +1,58 @@
+-- 删除表 "t_fzss_fzxz_jg_gis"(如果存在)
+DROP TABLE IF EXISTS "t_fzss_fzxz_jg_gis";
+
+-- 创建表 "t_fzss_fzxz_jg_gis"
+CREATE TABLE "t_fzss_fzxz_jg_gis"
+(
+    "objectid"   INT4 PRIMARY KEY DEFAULT nextval('auto_increment_sequence'), -- 对象ID,自增
+    "objectid_1" INT4 NOT NULL,                                               -- 对象ID_1
+    "bsm"        VARCHAR(50),                                                 -- 标识码
+    "rwbsm"      VARCHAR(50),                                                 -- 任务标识码
+    "dlb"        VARCHAR(50),                                                 -- 地类别
+    "dlbm"       VARCHAR(10),                                                 -- 地类编码
+    "dlmc"       VARCHAR(50),                                                 -- 地类名称
+    "cjsj"       TIMESTAMP,                                                   -- 创建时间
+    "yxfa"       VARCHAR(50),                                                 -- 有效方案
+    "bz"         VARCHAR(255),                                                -- 备注
+    "tbsl"       INT,                                                         -- 图斑数量
+    "tbmj"       NUMERIC(38, 8),                                              -- 图斑面积
+    "xzqdm"      VARCHAR(20),                                                 -- 行政区代码
+    "xzqmc"      VARCHAR(50),                                                 -- 行政区名称
+    "geom"      GEOMETRY(GEOMETRY, 4326)                                     -- 形状
+);
+
+-- 添加表注释
+COMMENT
+ON TABLE "t_fzss_fzxz_jg_gis" IS '辅助选址结果';
+
+-- 添加字段注释
+COMMENT
+ON COLUMN "t_fzss_fzxz_jg_gis"."objectid" IS '对象ID,自增';
+COMMENT
+ON COLUMN "t_fzss_fzxz_jg_gis"."objectid_1" IS '对象ID_1';
+COMMENT
+ON COLUMN "t_fzss_fzxz_jg_gis"."bsm" IS '标识码';
+COMMENT
+ON COLUMN "t_fzss_fzxz_jg_gis"."rwbsm" IS '任务标识码';
+COMMENT
+ON COLUMN "t_fzss_fzxz_jg_gis"."dlb" IS '地类别';
+COMMENT
+ON COLUMN "t_fzss_fzxz_jg_gis"."dlbm" IS '地类编码';
+COMMENT
+ON COLUMN "t_fzss_fzxz_jg_gis"."dlmc" IS '地类名称';
+COMMENT
+ON COLUMN "t_fzss_fzxz_jg_gis"."cjsj" IS '创建时间';
+COMMENT
+ON COLUMN "t_fzss_fzxz_jg_gis"."yxfa" IS '有效方案';
+COMMENT
+ON COLUMN "t_fzss_fzxz_jg_gis"."bz" IS '备注';
+COMMENT
+ON COLUMN "t_fzss_fzxz_jg_gis"."tbsl" IS '图斑数量';
+COMMENT
+ON COLUMN "t_fzss_fzxz_jg_gis"."tbmj" IS '图斑面积';
+COMMENT
+ON COLUMN "t_fzss_fzxz_jg_gis"."xzqdm" IS '行政区代码';
+COMMENT
+ON COLUMN "t_fzss_fzxz_jg_gis"."xzqmc" IS '行政区名称';
+COMMENT
+ON COLUMN "t_fzss_fzxz_jg_gis"."geom" IS '形状';

+ 49 - 0
sql/t_fzss_hgxfx_jg_gis.sql

@@ -0,0 +1,49 @@
+-- 删除表 "t_fzss_hgxfx_jg_gis"(如果存在)
+DROP TABLE IF EXISTS "t_fzss_hgxfx_jg_gis";
+
+-- 创建表 "t_fzss_hgxfx_jg_gis"
+CREATE TABLE "t_fzss_hgxfx_jg_gis"
+(
+    "objectid"   INT4 PRIMARY KEY DEFAULT nextval('auto_increment_sequence'), -- 对象ID,自增
+    "objectid_1" INT4 NOT NULL,                                               -- 对象ID_1
+    "bsm"        VARCHAR(50),                                                 -- 标识码
+    "rwbsm"      VARCHAR(50),                                                 -- 任务标识码
+    "scxbsm"     VARCHAR(50),                                                 -- 生产线标识码
+    "ysmc"       VARCHAR(255),                                                -- 要素名称
+    "yzmj"       NUMERIC(38, 8),                                              -- 院址面积
+    "cjsj"       TIMESTAMP,                                                   -- 创建时间
+    "bz"         VARCHAR(255),                                                -- 备注
+    "ysdm"       VARCHAR(50),                                                 -- 要素代码
+    "objid"      NUMERIC(38, 8),                                              -- 对象ID
+    "geom"       GEOMETRY(GEOMETRY, 4326)                                     -- 几何
+);
+
+-- 添加表注释
+COMMENT
+ON TABLE "t_fzss_hgxfx_jg_gis" IS '合规性分析结果';
+
+-- 添加字段注释
+COMMENT
+ON COLUMN "t_fzss_hgxfx_jg_gis"."objectid" IS '对象ID,自增';
+COMMENT
+ON COLUMN "t_fzss_hgxfx_jg_gis"."objectid_1" IS '对象ID_1';
+COMMENT
+ON COLUMN "t_fzss_hgxfx_jg_gis"."bsm" IS '标识码';
+COMMENT
+ON COLUMN "t_fzss_hgxfx_jg_gis"."rwbsm" IS '任务标识码';
+COMMENT
+ON COLUMN "t_fzss_hgxfx_jg_gis"."scxbsm" IS '生产线标识码';
+COMMENT
+ON COLUMN "t_fzss_hgxfx_jg_gis"."ysmc" IS '要素名称';
+COMMENT
+ON COLUMN "t_fzss_hgxfx_jg_gis"."yzmj" IS '院址面积';
+COMMENT
+ON COLUMN "t_fzss_hgxfx_jg_gis"."cjsj" IS '创建时间';
+COMMENT
+ON COLUMN "t_fzss_hgxfx_jg_gis"."bz" IS '备注';
+COMMENT
+ON COLUMN "t_fzss_hgxfx_jg_gis"."ysdm" IS '要素代码';
+COMMENT
+ON COLUMN "t_fzss_hgxfx_jg_gis"."objid" IS '对象ID';
+COMMENT
+ON COLUMN "t_fzss_hgxfx_jg_gis"."geom" IS '几何';