vvsantos of Scripts Oracle Adm
6/3/2017 - 8:02 PM

Procedure para Exportar para KML

Procedure para Exportar para KML

DECLARE
  kmlgeom                   CLOB;
  val_result                VARCHAR2(5);
  geom_result               SDO_GEOMETRY;
  geom                      SDO_GEOMETRY;
  V_DENSIDADE_LIQUIDA       DENSIDADE_LIQUIDA_PROC.DENSIDADE_LIQUIDA%type;
  V_V002                    DENSIDADE_LIQUIDA_PROC.V002%type;
  V_AREA_HA                 DENSIDADE_LIQUIDA_PROC.AREA_HA%type;
  V_CODIGO_SETOR_CENSITARIO DENSIDADE_LIQUIDA_PROC.CODIGO_SETOR_CENSITARIO%type;
  V_ESCALA                  DENSIDADE_LIQUIDA_PROC.ESCALA%type;
  V_ANO                     DENSIDADE_LIQUIDA_PROC.ANO%type;
  V_TIPO_GEOMETRIA          DENSIDADE_LIQUIDA_PROC.TIPO_GEOMETRIA%type;
  V_FONTE                   DENSIDADE_LIQUIDA_PROC.FONTE%type;
  V_REGIAO                  DENSIDADE_LIQUIDA_PROC.REGIAO%type;
  V_ID                      DENSIDADE_LIQUIDA_PROC.ID%type;

BEGIN
  DBMS_OUTPUT.PUT_LINE('<?xml version="1.0" encoding="UTF-8"?>');
  DBMS_OUTPUT.PUT_LINE('<kml xmlns="http://www.opengis.net/kml/2.2">');
  DBMS_OUTPUT.PUT_LINE('<Document>');
  DBMS_OUTPUT.PUT_LINE('<name>EMPLASA</name>');
  DBMS_OUTPUT.PUT_LINE('<open>1</open>');
  FOR L1 IN (SELECT COR, NOME, LINHA FROM SIMBOLOGIA2) LOOP
    DBMS_OUTPUT.PUT_LINE('<Style id="' || L1.NOME || '">');
    DBMS_OUTPUT.PUT_LINE('<LineStyle>');
    DBMS_OUTPUT.PUT_LINE('<color>' || L1.COR || '</color>');
    DBMS_OUTPUT.PUT_LINE('<width>' || L1.LINHA || '</width>');
    DBMS_OUTPUT.PUT_LINE('</LineStyle>');
    DBMS_OUTPUT.PUT_LINE('<PolyStyle>');
    DBMS_OUTPUT.PUT_LINE('<color>' || L1.COR || '</color>');
    DBMS_OUTPUT.PUT_LINE('</PolyStyle>');
    DBMS_OUTPUT.PUT_LINE('</Style>');
  END LOOP;

  FOR X IN (select l.id
              from DENSIDADE_LIQUIDA_PROC l
             where l.id in (999999, 44,54,38)) loop
    SELECT DENSIDADE_LIQUIDA,
           V002,
           AREA_HA,
           CODIGO_SETOR_CENSITARIO,
           ESCALA,
           ANO,
           TIPO_GEOMETRIA,
           FONTE,
           REGIAO,
           ID,
           SDO_CS.TRANSFORM((SDO_GEOM.SDO_ARC_DENSIFY(c.GEOMETRY,
                                                      0.1,
                                                      'arc_tolerance=0.05 unit=km')),
                            4326)
      INTO V_DENSIDADE_LIQUIDA,
           V_V002,
           V_AREA_HA,
           V_CODIGO_SETOR_CENSITARIO,
           V_ESCALA,
           V_ANO,
           V_TIPO_GEOMETRIA,
           V_FONTE,
           V_REGIAO,
           V_ID,
           geom
      FROM DENSIDADE_LIQUIDA_PROC c
     where c.id = x.id;
    DBMS_OUTPUT.PUT_LINE('<Folder>');
    DBMS_OUTPUT.PUT_LINE('<name>' || V_DENSIDADE_LIQUIDA || '</name>');
    DBMS_OUTPUT.PUT_LINE('<Placemark>');
    DBMS_OUTPUT.PUT_LINE('<name>' || V_ID || '</name>');
    IF V_V002 BETWEEN 1 AND 2 THEN
      DBMS_OUTPUT.PUT_LINE('<styleUrl>#Style2</styleUrl>');
    ELSE
      DBMS_OUTPUT.PUT_LINE('<styleUrl>#Style1</styleUrl>');
    END IF;
    DBMS_OUTPUT.PUT_LINE('<ExtendedData>');
    DBMS_OUTPUT.PUT_LINE('<SchemaData schemaUrl="#Schema2">');
    DBMS_OUTPUT.PUT_LINE('<SimpleData name="ID">' || V_ID ||
                         '</SimpleData>');
    DBMS_OUTPUT.PUT_LINE('<SimpleData name="REGIAO">' || V_REGIAO ||
                         '</SimpleData>');
    DBMS_OUTPUT.PUT_LINE('<SimpleData name="FONTE">' || V_FONTE ||
                         '</SimpleData>');
    DBMS_OUTPUT.PUT_LINE('<SimpleData name="TIPO_GEOMETRIA">' ||
                         V_TIPO_GEOMETRIA || '</SimpleData>');
    DBMS_OUTPUT.PUT_LINE('<SimpleData name="ANO">' || V_ANO ||
                         '</SimpleData>');
    DBMS_OUTPUT.PUT_LINE('<SimpleData name="ESCALA">' || V_ESCALA ||
                         '</SimpleData>');
    DBMS_OUTPUT.PUT_LINE('<SimpleData name="CODIGO_SETOR_CENSITARIO">' ||
                         V_CODIGO_SETOR_CENSITARIO || '</SimpleData>');
    DBMS_OUTPUT.PUT_LINE('<SimpleData name="AREA_HA">' || V_AREA_HA ||
                         '</SimpleData>');
    DBMS_OUTPUT.PUT_LINE('<SimpleData name="V002">' || V_V002 ||
                         '</SimpleData>');
    DBMS_OUTPUT.PUT_LINE('<SimpleData name="DENSIDADE_LIQUIDA">' ||
                         V_DENSIDADE_LIQUIDA || '</SimpleData>');
    DBMS_OUTPUT.PUT_LINE('</SchemaData>');
  
    DBMS_OUTPUT.PUT_LINE('</ExtendedData>');
    DBMS_OUTPUT.PUT_LINE('<MultiGeometry>');
    kmlgeom := SDO_UTIL.TO_KMLGEOMETRY(geom);
    DBMS_OUTPUT.PUT_LINE(TO_CHAR(kmlgeom));
    DBMS_OUTPUT.PUT_LINE('</MultiGeometry>');
    DBMS_OUTPUT.PUT_LINE('</Placemark>');
    DBMS_OUTPUT.PUT_LINE('</Folder>');
  END LOOP;
  DBMS_OUTPUT.PUT_LINE('</Document>');
  DBMS_OUTPUT.PUT_LINE('</kml>');
END;