Advertisement
brunohaick

SIGALERTA_GEOSERVER_ALERT_REFINED

May 31st, 2024
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PL/SQL 7.67 KB | Source Code | 0 0
  1.  
  2. DROP INDEX "SIGALERTA"."IDX_GIST_GEOSERVER_ALERT_REFINED" FORCE;
  3. DROP TABLE "SIGALERTA"."GEOSERVER_ALERT_REFINED";
  4. ALTER INDEX "SIGALERTA"."IDX_ALERT_REFINED_GEOMETRY_ID" REBUILD ONLINE PARALLEL 4;
  5.  
  6. CREATE TABLE GEOSERVER_ALERT_REFINED
  7.   AS
  8.     SELECT
  9.         A.alert_id,
  10.         A.source AS alert_source,
  11.         A.detection_date AS alert_detection_date,
  12.         A.insertion_date AS alert_insertion_date,
  13.         A.chargeable AS alert_chargeable,
  14.         A.satellite_name AS alert_satellite_name,
  15.         A.deleted_at AS Alert_deleted_at,
  16.         A.deleted_by_user_id AS alert_deleted_by_user_id,
  17.         A.user_id AS alert_geometry_user_id,
  18.         A.alert_geometry_id,
  19.         A.detection_class_id AS alert_geometry_detection_class_id,
  20.         A.area AS alert_geometry_area,
  21.         A.bioma_id,
  22.         A.assentamento_id,
  23.         A.municipio_id,
  24.         A.uc_id,
  25.         A.ucs_jurisdicao,
  26.         --A.asv_id,
  27.         A.validation_bool,
  28.         A.validated_class_id,
  29.         A.status_id,
  30.         A.geoembargo_id_geo,
  31.         A.geo_car_source,  
  32.         A.ti_id,
  33.         A.reserva_legal_id,
  34.         A.area_uso_restrito_id,
  35.         A.vegetacao_preterita_id,
  36.         A.vegetacao_preterita_categories,
  37.         '0' AS refined,
  38.         CASE
  39.             WHEN A.asv_id IS NULL THEN A.peso_total
  40.             WHEN A.asv_id IS NOT NULL THEN 0
  41.         END AS final_weight,
  42.         CASE
  43.             WHEN A.geoembargo_id_geo IS NULL THEN 'Não'
  44.             WHEN A.geoembargo_id_geo IS NOT NULL THEN 'Sim'
  45.         END AS embargo_bool,
  46.         CASE
  47.             WHEN A.uc_id IS NULL THEN 'Não'
  48.             WHEN A.uc_id IS NOT NULL THEN 'Sim'
  49.         END AS uc_bool,
  50.         CASE
  51.             WHEN A.assentamento_id IS NULL THEN 'Não'
  52.             WHEN A.assentamento_id IS NOT NULL THEN 'Sim'
  53.         END AS assentamento_bool,
  54.         CASE
  55.             WHEN A.asv_id IS NULL THEN 'Não'
  56.             WHEN A.asv_id IS NOT NULL THEN 'Sim'
  57.         END AS asv_bool,
  58.         CASE
  59.             WHEN A.ti_id IS NULL THEN 'Não'
  60.             WHEN A.ti_id IS NOT NULL THEN 'Sim'
  61.         END AS ti_bool,
  62.     (SELECT SDO_UTIL.rectify_geometry(geom,0.05) FROM ALERT_REFINED_GEOMETRY WHERE id = A.alert_geometry_id) AS geom
  63. FROM
  64. (
  65.     SELECT
  66.         A.id AS alert_id,
  67.         A.source,
  68.         A.detection_date,
  69.         A.insertion_date,
  70.         A.chargeable,
  71.         A.satellite_name,
  72.         A.deleted_at,
  73.         A.user_id,
  74.         A.deleted_by_user_id,
  75.         A.alert_geometry_id,
  76.         A.detection_class_id,
  77.         A.validation_bool,
  78.         A.VALIDATED_CLASS_ID,
  79.         A.status_id,
  80.         A.area,
  81.         LISTAGG(DISTINCT A.MODIFICATION_DATE,',') AS modification_date,
  82.         (SELECT ROUND((A.TOTAL_WEIGHT * 100) / (SELECT MAX(TOTAL_WEIGHT) FROM ALERT_REFINED_GEOMETRY)) FROM ALERT_REFINED_GEOMETRY WHERE A.alert_geometry_id = ID) AS peso_total,
  83.         (SELECT LISTAGG(CONCAT('-', CONCAT(x.ID_GEO, '-')) ,',') FROM (SELECT DISTINCT ID_GEO FROM ALERT_REFINED_GEOMETRY_HAS_GEO_ASSENTAMENTO c WHERE A.alert_geometry_id = c.ID_ALERT) x) AS assentamento_id,
  84.         (SELECT LISTAGG(CONCAT('-', CONCAT(x.ID_GEO, '-')) ,',') FROM (SELECT DISTINCT ID_GEO FROM ALERT_REFINED_GEOMETRY_HAS_GEO_MUNICIPIO c WHERE A.alert_geometry_id = c.ID_ALERT) x) AS municipio_id,
  85.         (SELECT LISTAGG(CONCAT('-', CONCAT(x.ID_GEO, '-')) ,',') FROM (SELECT DISTINCT ID_GEO FROM ALERT_REFINED_GEOMETRY_HAS_GEO_UC c WHERE A.alert_geometry_id = c.ID_ALERT) x) AS uc_id,
  86.         (SELECT LISTAGG(CONCAT('-', CONCAT(x.JURISDICAO, '-')),',') FROM (SELECT DISTINCT JURISDICAO FROM ALERT_REFINED_GEOMETRY_HAS_GEO_UC c INNER JOIN GEO_UC ON c.ID_GEO = GEO_UC.ID WHERE A.alert_geometry_id = c.ID_ALERT) x) AS ucs_jurisdicao,
  87.         (SELECT LISTAGG(CONCAT('-', CONCAT(x.ID_GEO, '-')) ,',') FROM (SELECT DISTINCT ID_GEO FROM ALERT_REFINED_GEOMETRY_HAS_GEO_TI c WHERE A.alert_geometry_id = c.ID_ALERT) x) AS ti_id,
  88.         (SELECT DISTINCT ID_GEO FROM ALERT_REFINED_GEOMETRY_HAS_GEO_ASV c WHERE A.alert_geometry_id = c.ID_ALERT FETCH FIRST 1 ROWS ONLY) AS asv_id,
  89.         --(SELECT LISTAGG(CONCAT('-', CONCAT(x.ID_GEO, '-')) ,',') FROM (SELECT DISTINCT ID_GEO FROM ALERT_REFINED_GEOMETRY_HAS_GEO_ASV c WHERE A.alert_geometry_id = c.ID_ALERT) x) as asv_id,
  90.         (SELECT LISTAGG(CONCAT('-', CONCAT(x.ID_GEO, '-')) ,',') FROM (SELECT DISTINCT ID_GEO FROM ALERT_REFINED_GEOMETRY_HAS_GEO_EMBARGO c WHERE A.alert_geometry_id = c.ID_ALERT) x) AS geoembargo_id_geo,
  91.         (SELECT LISTAGG(CONCAT('-', CONCAT(x.ID_GEO, '-')),',') FROM (SELECT DISTINCT ID_GEO FROM ALERT_REFINED_GEOMETRY_HAS_GEO_BIOMA c WHERE A.alert_geometry_id = c.ID_ALERT) x) AS bioma_id,
  92.         (SELECT LISTAGG(CONCAT('-', CONCAT(x.ID_GEO, '-')),',') FROM (SELECT DISTINCT ID_GEO FROM ALERT_REFINED_GEOMETRY_HAS_GEO_RESERVA_LEGAL c WHERE A.alert_geometry_id = c.ID_ALERT) x) AS reserva_legal_id,
  93.         (SELECT LISTAGG(CONCAT('-', CONCAT(x.ID_GEO, '-')),',') FROM (SELECT DISTINCT ID_GEO FROM ALERT_REFINED_GEOMETRY_HAS_GEO_AREAS_USO_RESTRITO c WHERE A.alert_geometry_id = c.ID_ALERT) x) AS area_uso_restrito_id,
  94.         (SELECT LISTAGG(CONCAT('-', CONCAT(x.ID_GEO, '-')),',') FROM (SELECT DISTINCT ID_GEO FROM ALERT_REFINED_GEOMETRY_HAS_GEO_VEGETACAO_PRETERITA c WHERE A.alert_geometry_id = c.ID_ALERT) x) AS vegetacao_preterita_id,
  95.         (SELECT LISTAGG(CONCAT('-', CONCAT(x.CATEGORY, '-')),',') FROM (SELECT DISTINCT gvegp.CATEGORY FROM ALERT_REFINED_GEOMETRY_HAS_GEO_VEGETACAO_PRETERITA c INNER JOIN GEO_VEGETACAO_PRETERITA gvegp ON gvegp.ID = c.ID_GEO WHERE A.alert_geometry_id = c.ID_ALERT) x) AS vegetacao_preterita_categories,
  96.         (SELECT LISTAGG(CONCAT('-', CONCAT(x.source, '-')) ,',') FROM (SELECT DISTINCT source FROM ALERT_REFINED_GEOMETRY_HAS_GEO_CAR c INNER JOIN GEO_CAR ON GEO_CAR.ID = C.ID_GEO WHERE A.alert_geometry_id = c.ID_ALERT) x) AS geo_car_source
  97.     FROM (
  98.         SELECT
  99.             a.id,
  100.             a.source,
  101.             a.detection_date,
  102.             a.insertion_date,
  103.             a.satellite_type,
  104.             a.satellite_name,
  105.             a.chargeable,
  106.             a.deleted_at,
  107.             a.deleted_by_user_id,
  108.             b.validation_bool,
  109.             b.status_id,
  110.             b.user_id,
  111.             b.VALIDATED_CLASS_ID,
  112.             b.ID AS alert_geometry_id,
  113.             b.DETECTION_CLASS_ID AS detection_class_id,
  114.             SDO_GEOM.SDO_AREA(SDO_CS.TRANSFORM(b.GEOM,1000202),0.001,'unit=HECTARE') AS area,
  115.             b.MODIFICATION_DATE  AS modification_date
  116.         FROM ALERT a
  117.             INNER JOIN ALERT_REFINED_GEOMETRY b ON a.id = b.alert_id
  118.         WHERE  
  119.             a.DELETED_AT IS NULL AND B.ID IN (SELECT MAX(ALERT_REFINED_GEOMETRY.ID) FROM ALERT INNER JOIN ALERT_REFINED_GEOMETRY ON ALERT.ID = ALERT_REFINED_GEOMETRY.alert_ID WHERE ALERT.ID = A.ID)
  120.         ) A
  121.         WHERE
  122.          A.area >= 1
  123.         GROUP BY
  124.         A.id,
  125.         A.source,
  126.         A.user_id,
  127.         A.VALIDATED_CLASS_ID,
  128.         A.satellite_name,
  129.         A.detection_date,
  130.         A.insertion_date,
  131.         A.chargeable,
  132.         A.deleted_at,
  133.         A.deleted_by_user_id,
  134.         A.alert_geometry_id,
  135.         A.detection_class_id,
  136.         A.validation_bool,
  137.         A.status_id,
  138.         A.area
  139. ) A;
  140.  
  141.   ALTER TABLE GEOSERVER_ALERT_REFINED
  142. ADD CONSTRAINT GEOSERVER_ALERT_REFINED_PK PRIMARY KEY (alert_id);
  143.  
  144.  
  145.   INSERT INTO user_sdo_geom_metadata
  146.     (TABLE_NAME,
  147.      COLUMN_NAME,
  148.      DIMINFO,
  149.      SRID)
  150.   VALUES (
  151.   'GEOSERVER_ALERT_REFINED',
  152.   'GEOM',
  153.   SDO_DIM_ARRAY(   -- 20X20 grid
  154.     SDO_DIM_ELEMENT('X', -90, 90, 0.005),
  155.     SDO_DIM_ELEMENT('Y', -180, 180, 0.005)
  156.      ),
  157.   4674   -- SRID
  158. );
  159.  
  160. CREATE INDEX IDX_GIST_GEOSERVER_ALERT_REFINED ON "SIGALERTA"."GEOSERVER_ALERT_REFINED"("GEOM") INDEXTYPE IS MDSYS.SPATIAL_INDEX
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement