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 );