Grupo de transformación ST_GML

Utilice el grupo de transformación ST_GML para transmitir datos utilizando el lenguaje de marcación geográfico (GML).

Cuando se vincula un valor de la base de datos con la aplicación cliente, se utiliza la misma función proporcionada por ST_AsGML() para convertir una geometría en su representación GML. Cuando se transfiere la representación GML de una geometría a la base de datos, se utiliza implícitamente la función ST_Geometry(CLOB) para realizar las conversiones a un valor de tipo ST_Geometry. La utilización del grupo de transformación para vincular valores hace que se representen las geometrías en el sistema de referencia espacial con el identificador numérico de 0 (cero).

Ejemplos

En los ejemplos siguientes, las líneas de resultados se han reformateado para mejorar la legibilidad. El espaciado de líneas en el resultado obtenido variará según la pantalla que se utilice.

Ejemplo 1
El siguiente script de SQL muestra el uso del grupo de transformación ST_GML para obtener una geometría en su representación GML sin utilizar la función explícita ST_AsGML.

CREATE TABLE transforms_sample (
   id INTEGER,
   geom db2gse.ST_Geometry)

INSERT
  INTO	 transforms_sample
  VALUES ( 1, db2gse.ST_Geometry('multipoint z (10 10 
           3, 20 20 4, 15 20 30)', 0) )
  SET CURRENT DEFAULT TRANSFORM GROUP = ST_GML

SELECT id, geom
FROM	 transforms_sample
WHERE	 id = 1
Resultados:

ID		  GEOM
-----  -------------------------------------------------------------
    1 <gml:MultiPoint srsName=UNSPECIFIED><gml:PointMember>
      <gml:Point><gml:coord><gml:X>10</gml:X>
      <gml:Y>10</gml:Y><gml:Z>3</gml:Z>
      </gml:coord></gml:Point></gml:PointMember>
      <gml:PointMember><gml:Point><gml:coord>
      <gml:X>20</gml:X><gml:Y>20</gml:Y>
      <gml:Z>4</gml:Z></gml:coord></gml:Point>
      </gml:PointMember><gml:PointMember><gml:Point>
      <gml:coord><gml:X>15</gml:X><gml:Y>20
      </gml:Y><gml:Z>30</gml:Z></gml:coord>
      </gml:Point></gml:PointMember></gml:MultiPoint>
Ejemplo 2
El siguiente código en C muestra cómo utilizar el grupo de transformación ST_GML para insertar geometrías sin utilizar la función explícita ST_Geometry para la variable de lenguaje principal gml_buffer, cuyo tipo es CLOB y que contiene la representación GML del punto (20 ,20) que se debe insertar.

EXEC SQL BEGIN DECLARE SECTION;
   sqlint32 id = 0;
   SQL TYPE IS db2gse.ST_Geometry AS CLOB(1000) gml_buffer;
EXEC SQL END DECLARE SECTION;

// definir el grupo de transformación para todas las sentencias de SQL
// posteriores
EXEC SQL
   SET CURRENT DEFAULT TRANSFORM GROUP = ST_GML;
	id = 100;
strcpy(gml_buffer.data, "<gml:point><gml:coord>"
			"<gml:X>20</gml:X> <gml:Y>20</gml:Y></gml:coord></gml:point>");

// inicializar variables de lenguaje principal
wkt_buffer.length = strlen(gml_buffer.data);

// insertar punto con WKT en la columna de tipo ST_Geometry
EXEC SQL
   INSERT
	  INTO transforms_sample(id, geom)
	  VALUES ( :id, :gml_buffer );