13.3. Explorando campos y formatos de datos

13.3.1. Datos Raster

Los datos ráster GIS son matrices de celdas discretas que representan entidades/fenómenos sobre, encima o debajo de la superficie terrestre. Cada celda de la cuadrícula ráster tiene el mismo tamaño y las celdas suelen ser rectangulares (en QGIS siempre serán rectangulares). Los datasets ráster típicos incluyen datos de teledetección, como fotografías aéreas, o imágenes de satélite y datos modelados, como elevación o temperatura.

A diferencia de los datos vectoriales, los datos ráster normalmente no tienen un registro de base de datos asociado para cada celda. Están geocodificados por resolución de píxeles y la coordenada X / Y de un píxel de esquina de la capa ráster. Esto permite que QGIS coloque los datos correctamente en el lienzo del mapa.

El formato GeoPackage es conveniente para almacenar datos ráster cuando se trabaja con QGIS. El popular y poderoso formato GeoTiff es una buena alternativa.

QGIS utiliza información de georeferencia dentro de la capa ráster (por ejemplo, GeoTiff) o un archivo mundial asociado para mostrar los datos correctamente.

13.3.2. Datos Vectoriales

Muchas de las funciones y herramientas disponibles en QGIS funcionan igual, independientemente de la fuente de datos vectoriales. Sin embargo, debido a las diferencias en las especificaciones de formato (formatos de archivo GeoPackage, ESRI Shapefile, MapInfo y MicroStation, AutoCAD DXF, PostGIS, SpatiaLite, DB2, Oracle Spatial, bases de datos MSSQL Spatial y muchas más), QGIS puede manejar algunas de sus propiedades de manera diferente . El soporte es proporcionado por OGR Simple Feature Library. Esta sección describe cómo trabajar con estas especificidades.

Nota

QGIS admite tipos de entidades (multi)punto, (multi)línea, (multi)polígono, cadena circular, Curva Compuesta, Curva Poligonal, MultiCurva, MultiSuperficie, todos opcionalmente con valores Z y/o M.

También debe tener en cuenta que algunos controladores no admiten algunos de estos tipos de entidades, como Cadena Circular, Curva Compuesta, Curva Poligonal, MultiCurva, MultiSuperficie. QGIS los convertirá.

13.3.2.1. GeoPackage

El formato GeoPackage (GPKG) es independiente de la plataforma, se implementa como un contenedor de base de datos SQLite y se puede utilizar para almacenar datos vectoriales y ráster. El formato fue definido por el Consorcio Geoespacial Abierto (OGC) y fue publicado en 2014.

GeoPackage puede ser usado para almacenar lo siguiente en una base de datos SQLite:

  • entidades vectoriales

  • conjuntos de matrices de teselas de imágenes y mapas ráster

  • atributos (datos no espaciales)

  • extensiones

Desde la versión 3.8 de QGIS, GeoPackage también puede almacenar proyectos de QGIS. Las capas GeoPackage pueden tener campos JSON.

GeoPackage es el formato de datos predeterminado para datos vectoriales en QGIS.

13.3.2.2. Formato de archivo de forma ESRI

El formato de archivo de forma ESRI sigue siendo uno de los formatos de archivo vectorial más utilizados, incluso si tiene algunas limitaciones en comparación con, por ejemplo, GeoPackage y SpatiaLite.

Un conjunto de datos en formato de archivo de forma ESRI consta de varios archivos. Los tres siguientes son requeridos:

  1. archivo contenedor de las geometrías de las entidades .shp

  2. archivo contenedor de los atributos en formato dBase .dbf

  3. archivo del índice .shx

Un conjunto de datos en formato ESRI Shapefile también puede incluir un archivo con un sufijo .prj, que contiene información de proyección. Si bien es muy útil tener un archivo de proyección, no es obligatorio. Un conjunto de datos en formato Shapefile puede contener archivos adicionales. Para obtener más detalles, consulte la especificación técnica de ESRI en https://www.esri.com/library/whitepapers/pdfs/shapefile.pdf.

GDAL 3.1 tiene soporte de lectura y escritura para el formato comprimido ESRI Shapefile (shz y shp.zip).

Mejora del rendimiento para conjuntos de datos en formato ESRI Shapefile

Para mejorar el rendimiento del dibujo para un dataset de formato ESRI Shapefile, puede crear un índice espacial. Un índice espacial mejorará la velocidad tanto del zoom como de la panorámica. Los índices espaciales utilizados por QGIS tienen una extensión .qix.

Usa estos pasos para crear un índice:

  1. Carga un conjunto de datos de formato de archivo de forma ESRI (ver El panel Navegador)

  2. Abre el diálogo Propiedades de capa mediante doble-click en el nombre de la capa en la leyenda o con click derecho y eligiendo Propiedades… del menú contextual

  3. En la pestaña Fuente, click en el botón Crear índice Espacial

Problema cargando un archivo .prj

Si carga un conjunto de datos en formato ESRI Shapefile con un archivo .prj y QGIS no puede leer el sistema de referencia de coordenadas de ese archivo, deberá definir la proyección adecuada manualmente en :menuselection:` Propiedades de capa -> Pestaña Fuente` de la capa haciendo click en el botón setProjection Seleccionar CRS. Esto se debe al hecho de que los archivos .prj a menudo no proporcionan los parámetros de proyección completos que se utilizan en QGIS y que se enumeran en el diálogo CRS.

Por la misma razón, si crea un nuevo conjunto de datos en formato ESRI Shapefile con QGIS, se crean dos archivos de proyección diferentes: un archivo .prj con parámetros de proyección limitados, compatible con el software ESRI, y un archivo . qpj, que proporciona todos los parámetros del CRS. Siempre que QGIS encuentre un archivo .qpj, se usará en lugar del archivo .prj.

13.3.2.3. Archivos de Texto delimitado

Los archivos de texto delimitados son muy comunes y se usan ampliamente debido a su simplicidad y legibilidad: los datos se pueden ver y editar en un editor de texto sin formato. Un archivo de texto delimitado son datos tabulares con columnas separadas por un carácter definido y filas separadas por saltos de línea. La primera fila generalmente contiene los nombres de las columnas. Un tipo común de archivo de texto delimitado es un CSV (valores separados por comas), con columnas separadas por comas. Los archivos de texto delimitados también pueden contener información posicional (ver Almacenamiento de información de geometría en archivos de texto delimitados).

QGIS le permite cargar un archivo de texto delimitado como una capa o una tabla ordinaria (ver El panel Navegador o Importando un archivo de texto delimitado). Primero verifique que el archivo cumpla con los siguientes requisitos:

  1. El archivo debe tener una fila de encabezado delimitada de nombres de campo. Esta debe ser la primera línea de los datos (idealmente la primera fila en el archivo de texto).

  2. Si se debe habilitar la geometría, el archivo debe contener los campos que definen la geometría. Estos campos pueden tener cualquier nombre.

  3. Los campos de coordenadas X e Y (si la geometría está definida por coordenadas) deben especificarse como números. El sistema de coordenadas no es importante.

  4. Si tiene un archivo CSV con columnas que no son cadenas, debe tener un archivo CSVT adjunto (consulte la sección Usar archivo CSVT para controlar el formato de campo).

El archivo de datos de puntos de elevación elevp.csv en el conjunto de datos de muestra de QGIS (ver sección :ref:` label_sampledata`) es un ejemplo de un archivo de texto válido:

X;Y;ELEV
-300120;7689960;13
-654360;7562040;52
1640;7512840;3
[...]

Algunas cosas a tener en cuenta sobre el archivo de texto:

  1. El archivo de texto de ejemplo usa ; (punto y coma) como delimitador (se puede usar cualquier carácter para delimitar los campos).

  2. La primera fila es la fila de encabezado. Contiene los campos X, `` Y `` y `` ELEV ``.

  3. No se utilizan comillas (`` «``) para delimitar campos de texto

  4. Las coordenadas X están contenidas en el campo X

  5. Las coordenadas Y están contenidas en el campo Y

Almacenamiento de información de geometría en archivos de texto delimitados

Los archivos de texto delimitados pueden contener información de geometría en dos formas principales:

  • Como coordenadas en columnas separadas (por ejemplo, Xcol, `` Ycol `` …), para datos de geometría de puntos;

  • Como representación de texto conocido (WKT) de geometría en una sola columna, para cualquier tipo de geometría.

Se admiten las funciones con geometrías curvas (Cadena circular, PolígonoCurvo y CurvaCompuesta). A continuación, se muestran algunos ejemplos de tipos de geometría en un archivo de texto delimitado con geometrías codificadas como WKT:

Label;WKT_geom
LineString;LINESTRING(10.0 20.0, 11.0 21.0, 13.0 25.5)
CircularString;CIRCULARSTRING(268 415,227 505,227 406)
CurvePolygon;CURVEPOLYGON(CIRCULARSTRING(1 3, 3 5, 4 7, 7 3, 1 3))
CompoundCurve;COMPOUNDCURVE((5 3, 5 13), CIRCULARSTRING(5 13, 7 15,
  9 13), (9 13, 9 3), CIRCULARSTRING(9 3, 7 1, 5 3))

Los archivos de texto delimitados también admiten coordenadas Z y M en geometrías:

LINESTRINGZ(10.0 20.0 30.0, 11.0 21.0 31.0, 11.0 22.0 30.0)

Usar archivo CSVT para controlar el formato de campo

Al cargar archivos CSV, el controlador OGR asume que todos los campos son cadenas (es decir, texto) a menos que se indique lo contrario. Puede crear un archivo CSVT para decirle a OGR (y QGIS) el tipo de datos de las diferentes columnas:

Tipo

Nombre

Ejemplo

Número entero

Integer

4

Número decimal

Real

3.456

Fecha

Date (YYYY-MM-DD)

2016-07-28

Tiempo

Time (HH:MM:SS+nn)

18:33:12+00

Fecha y hora

DateTime (YYYY-MM-DD HH:MM:SS+nn)

2016-07-28 18:33:12+00

El archivo CSVT es un archivo de texto sin formato de ** UNA línea ** con los tipos de datos entre comillas y separados por comas, por ejemplo

"Integer","Real","String"

Puedes incluso especificar anchura y precisión para cada columna, p.ej.:

"Integer(6)","Real(5.5)","String(22)"

Este archivo es guardado en la misma carpeta que el archivo .csv, con el mismo nombre, pero con extensión csvt.

*Puedes encontrar mas información en GDAL CSV Driver.

13.3.2.4. Capas PostGIS

Las capas de PostGIS se almacenan en una base de datos PostgreSQL. Las ventajas de PostGIS son las capacidades de indexación, filtrado y consulta espacial. Con PostGIS, las funciones vectoriales como seleccionar e identificar funcionan con mayor precisión que con las capas OGR en QGIS.

Truco

Capas PostGIS

Normalmente, una capa PostGIS se identifica mediante una entrada en la tabla geometry_columns. QGIS puede cargar capas que no tienen una entrada en la tabla geometry_columns. Esto incluye tanto tablas como vistas. Consulte su manual de PostgreSQL para obtener información sobre cómo crear vistas.

Esta sección contiene algunos detalles sobre cómo QGIS accede a las capas de PostgreSQL. La mayoría de las veces, QGIS simplemente debería proporcionarle una lista de tablas de base de datos que se pueden cargar, y las cargará a pedido. Sin embargo, si tiene problemas para cargar una tabla de PostgreSQL en QGIS, la siguiente información puede ayudarlo a comprender los mensajes de QGIS y brindarle instrucciones para modificar la tabla de PostgreSQL o la definición de vista para permitir que QGIS la cargue.

Clave primaria

QGIS requiere que las capas de PostgreSQL contengan una columna que se pueda utilizar como clave única para la capa. Para las tablas, esto generalmente significa que la tabla necesita una clave principal o una columna con una restricción única. En QGIS, esta columna debe ser de tipo int4 (un número entero de 4 bytes). Alternativamente, la columna ctid se puede utilizar como clave principal. Si una tabla carece de estos elementos, se utilizará la columna oid en su lugar. El rendimiento mejorará si la columna está indexada (tenga en cuenta que las claves principales se indexan automáticamente en PostgreSQL).

QGIS ofrece una casilla de verificación Seleccionar en id que está activada de forma predeterminada. Esta opción obtiene los identificadores sin los atributos, lo que es más rápido en la mayoría de los casos.

Ver

Si la capa de PostgreSQL es una vista, existe el mismo requisito, pero las vistas no siempre tienen claves primarias o columnas con restricciones únicas. Debe definir un campo de clave principal (debe ser un número entero) en el cuadro de diálogo de QGIS antes de poder cargar la vista. Si no existe una columna adecuada en la vista, QGIS no cargará la capa. Si esto ocurre, la solución es modificar la vista para que incluya una columna adecuada (un tipo de número entero y una clave primaria o con una restricción única, preferiblemente indexada).

En cuanto a la tabla, una casilla de verificación Seleccionar en id está activada de forma predeterminada (consulte más arriba el significado de la casilla de verificación). Puede tener sentido desactivar esta opción cuando utiliza vistas caras.

Copia de seguridad de base de datos y tabla de estilo de capa de QGIS

Si desea hacer una copia de seguridad de su base de datos PostGIS utilizando los comandos pg_dump y pg_restore, y los estilos de capa predeterminados guardados por QGIS no se pueden restaurar posteriormente, debe configurar la opción XML en DOCUMENT antes del comando de restauración:

SET XML OPTION DOCUMENT;

Filtrar el lado de la base de datos

QGIS permite filtrar funciones que ya están en el lado del servidor. Compruebe Configuración -> Opciones -> Fuentes de datos -> checkbox Ejecute expresiones en el lado del servidor si es posible para hacerlo. Solo las expresiones admitidas se enviarán a la base de datos. Las expresiones que utilicen operadores o funciones no admitidas recurrirán con gracia a la evaluación local.

Tipos de archivos soportados por PostgreSQL

Los tipos de datos admitidos por el proveedor de PostgreSQL incluyen: integer, float, boolean, binary object, varchar, geometry, timestamp, array, hstore y json.

13.3.2.5. Importando Datos en PostgreSQL

Los datos se pueden importar a PostgreSQL/PostGIS utilizando varias herramientas, incluido el complemento DB Manager y las herramientas de línea de comandos shp2pgsql y ogr2ogr.

Administrador de BBDD

QGIS viene con un complemento principal llamado dbManager Administrador de bases de datos. Se puede usar para cargar datos e incluye soporte para esquemas. Consulte la sección Complemento de Administración de BBDD para obtener más información.

shp2pgsql

PostGIS incluye una utilidad llamada shp2pgsql, que se puede utilizar para importar conjuntos de datos en formato Shapefile a una base de datos habilitada para PostGIS. Por ejemplo, para importar un conjunto de datos en formato Shapefile llamado lakes.shp a una base de datos PostgreSQL llamada gis_data, use el siguiente comando:

shp2pgsql -s 2964 lakes.shp lakes_new | psql gis_data

Esto crea una nueva capa llamada lakes_new en la base de datos gis_data. La nueva capa tendrá un identificador de referencia espacial (SRID) de 2964. Consulte la sección Trabajar con Proyecciones para obtener más información sobre los sistemas de referencia espacial y las proyecciones.

Truco

Exportando datos desde PostGIS

También hay una herramienta para exportar conjuntos de datos PostGIS a formato Shapefile: pgsql2shp. Se envía dentro de su distribución de PostGIS.

ogr2ogr

Además de shp2pgsql y Administrador de bases de datos, existe otra herramienta para alimentar datos geográficos en PostGIS: ogr2ogr. Es parte de su instalación GDAL.

Para importar un conjunto de datos en formato Shapefile en PostGIS, haga lo siguiente:

ogr2ogr -f "PostgreSQL" PG:"dbname=postgis host=myhost.de user=postgres
password=topsecret" alaska.shp

Esto importará el conjunto de datos en formato Shapefile alaska.shp a la base de datos de PostGIS postgis usando el usuario postgres con la contraseña topsecret en el servidor host myhost.de.

Tenga en cuenta que OGR debe construirse con PostgreSQL para admitir PostGIS. Puede verificar esto escribiendo (en nix)

ogrinfo --formats | grep -i post

Si prefiere utilizar el comando COPY de PostgreSQL en lugar del método INSERT INTO predeterminado, puede exportar la siguiente variable de entorno (al menos disponible en nix y osx):

export PG_USE_COPY=YES

ogr2ogr no crea índices espaciales como lo hace shp2pgsl. Debe crearlos manualmente, utilizando el comando SQL normal ** CREATE INDEX ** después, como un paso adicional (como se describe en la siguiente sección Mejorar el rendimiento).

Mejorar el rendimiento

Recuperar entidades de una base de datos PostgreSQL puede llevar mucho tiempo, especialmente en una red. Puede mejorar el rendimiento de dibujo de las capas de PostgreSQL asegurándose de que exista un índice espacial de PostGIS en cada capa de la base de datos. PostGIS admite la creación de un índice GiST (árbol de búsqueda generalizado) para acelerar la búsqueda espacial (la información del índice GiST se toma de la documentación de PostGIS disponible en https://postgis.net).

Truco

Puede utilizar Administrador de BBDD para crear un índice para su capa. Primero debe seleccionar la capa y hacer clic en Tabla-> Editar tabla, ir a la pestaña :menuselection:` Indexes` y hacer click en Añadir índice Espacial.

La sintaxis para crear un índice GiST es:

CREATE INDEX [indexname] ON [tablename]
  USING GIST ( [geometryfield] GIST_GEOMETRY_OPS );

Tenga en cuenta que para tablas grandes, la creación del índice puede llevar mucho tiempo. Una vez creado el índice, debe realizar un `` ANÁLISIS DE VACÍO ``. Consulte la documentación de PostGIS (POSTGIS-PROJECT en literatura_y_web) para obtener más información.

El siguiente ejemplo crea un índice GiST:

gsherman@madison:~/current$ psql gis_data
Welcome to psql 8.3.0, the PostgreSQL interactive terminal.

Type:  \copyright for distribution terms
       \h for help with SQL commands
       \? for help with psql commands
       \g or terminate with semicolon to execute query
       \q to quit

gis_data=# CREATE INDEX sidx_alaska_lakes ON alaska_lakes
gis_data-# USING GIST (the_geom GIST_GEOMETRY_OPS);
CREATE INDEX
gis_data=# VACUUM ANALYZE alaska_lakes;
VACUUM
gis_data=# \q
gsherman@madison:~/current$

13.3.2.6. Capas vectoriales que cruzan la longitud 180°

Muchos paquetes de SIG no envuelven mapas vectoriales con un sistema de referencia geográfica (lat/lon) que cruza la línea de longitud de 180 grados (http://postgis.refractions.net/documentation/manual-2.0/ST_Shift_Longitude.html). Como resultado, si abrimos un mapa de este tipo en QGIS, podríamos ver dos ubicaciones muy separadas, que deberían aparecer cerca una de la otra. En Figura 13.23, el pequeño punto en el extremo izquierdo del lienzo del mapa (Islas Chatham) debe estar dentro de la cuadrícula, a la derecha de las islas principales de Nueva Zelanda.

../../../_images/vectorNotWrapping.png

Figura 13.23 Mapa en lat / lon cruzando la linea de longitud 180°

Una solución alternativa es transformar los valores de longitud utilizando PostGIS y la función ** ST_Shift_Longitude **. Esta función lee cada punto / vértice en cada componente de cada característica en una geometría, y si la coordenada de longitud es <0°, le agrega 360°. El resultado es 0° - 360° versión de los datos que se trazarán en un mapa centrado en 180 grados.

../../../_images/vectorWrapping.png

Figura 13.24 Cruzando la longitud de 180° aplicando la función ** ST_Shift_Longitude **

Uso

  • Importar datos en PostGIS (Importando Datos en PostgreSQL) usando, por ejemplo, el complemento del Administrador de BBDD.

  • Use la interfaz de línea de comandos de PostGIS para ejecutar el siguiente comando (en este ejemplo, «TABLE» es el nombre real de su tabla de PostGIS): ``gis_data = # update TABLE set the_geom = ST_Shift_Longitude (the_geom); ``

  • Si todo salió bien, debería recibir una confirmación sobre la cantidad de funciones que se actualizaron. Entonces podrá cargar el mapa y ver la diferencia (Figure_vector_crossing_map).

13.3.2.7. Capas SpatiaLite

Si desea guardar una capa vectorial usando el formato SpatiaLite, puede hacerlo siguiendo las instrucciones en Creando nuevas capas desde una capa existente. Seleccione `` SpatiaLite`` como Formato e ingrese ambos :guilabel:` Nombre de archivo` y Nombre de capa.

Además, puede seleccionar `` SQLite`` como formato y luego agregar `` SPATIALITE = YES `` en el campo Opciones personalizadas -> fuente de datos. Esto le dice a GDAL que cree una base de datos SpatiaLite. Consulte también https://gdal.org/drivers/vector/sqlite.html.

QGIS también admite vistas editables en SpatiaLite. Para la gestión de datos de SpatiaLite, también puede utilizar el complemento principal DB Manager.

Si desea crear una nueva capa de SpatiaLite, consulte la sección Crear una nueva capa SpatiaLite.

13.3.2.8. parámetros específicos GeoJSON

Cuando exporting layers a GeoJSON, hay algunas Opciones de Capa disponibles. Estas opciones provienen de GDAL que es responsable de la redacción del archivo:

  • COORDINATE_PRECISION el número máximo de dígitos después del separador decimal para escribir en coordenadas. El valor predeterminado es 15 (nota: para las coordenadas Lat Lon, 6 se considera suficiente). Se producirá un truncamiento para eliminar los ceros finales.

  • RFC7946 por defecto se utilizará GeoJSON 2008. Si se establece en SÍ, se utilizará el estándar RFC 7946 actualizado. El valor predeterminado es NO (por lo tanto, GeoJSON 2008). Ver https://gdal.org/drivers/vector/geojson.html#rfc-7946-write-support para las principales diferencias, en resumen: solo se permite EPSG:4326, otros crs serán transformados, se escribirán polígonos de manera que sigan la regla de la derecha para la orientación, los valores de una matriz «bbox» son [oeste, sur, este, norte], no [minx, miny, maxx, maxy]. Algunos nombres de miembros de extensión están prohibidos en los objetos FeatureCollection, Feature y Geometry, la precisión de coordenadas predeterminada es de 7 dígitos decimales

  • WRITE_BBOX establécelo en SÍ para incluir el cuadro delimitador de las geometrías en el nivel de entidad y colección de entidades

Además de GeoJSON, también hay una opción para exportar a «GeoJSON - Newline Delimited» (ver https://gdal.org/drivers/vector/geojsonseq.html). En lugar de una Colección de Obetos con Objetos, puede transmitir un tipo (probablemente solo Objetos) separados secuencialmente con nuevas líneas.

GeoJSON - Newline Delimited también tiene algunas opciones de capa específicas disponibles:

  • COORDINATE_PRECISION ver arriba (igual que para GeoJSON)

  • RS al iniciar registros con el carácter RS = 0x1E. La diferencia es cómo se separan las entidades: solo por un carácter de nueva línea (LF) (JSON delimitado por nueva línea, geojsonl) o también anteponiendo un carácter separador de registros (RS) (dando GeoJSON Text Sequences, geojsons). Por defecto a NO. Los archivos reciben la extensión .json si no se proporciona la extensión.

13.3.2.9. Capas Espaciales DB2

Los productos IBM DB2 para Linux, Unix y Windows (DB2 LUW), IBM DB2 para z / OS (mainframe) e IBM DashDB permiten a los usuarios almacenar y analizar datos espaciales en columnas de tablas relacionales. El proveedor de DB2 para QGIS admite la gama completa de visualización, análisis y manipulación de datos espaciales en estas bases de datos.

La documentación del usuario sobre estas prestaciones se puede encontrar en DB2 z/OS KnowledgeCenter, DB2 LUW KnowledgeCenter y DB2 DashDB KnowledgeCenter.

Para obtener más información sobre cómo trabajar con las capacidades espaciales de DB2, consulte la DB2 Spatial Tutorial en IBM DeveloperWorks.

Actualmente, el proveedor de DB2 solo da soporte al entorno Windows a través del controlador ODBC de Windows.

El cliente que ejecuta QGIS debe tener uno de los siguientes instalados:

  • DB2 LUW

  • IBM Data Server Driver Package

  • IBM Data Server Client

Para abrir datos de DB2 en QGIS, consulte la El panel Navegador o la sección Cargando una Capa Base de Datos.

Si accede a una base de datos DB2 LUW en la misma máquina o utiliza DB2 LUW como cliente, los archivos ejecutables y de soporte de DB2 deben incluirse en la ruta de Windows. Esto se puede hacer creando un archivo por lotes como el siguiente con el nombre db2.bat e incluyéndolo en el directorio %OSGEO4W_ROOT%/etc/ini

@echo off
REM Point the following to where DB2 is installed
SET db2path=C:\Program Files (x86)\sqllib
REM This should usually be ok - modify if necessary
SET gskpath=C:\Program Files (x86)\ibm\gsk8
SET Path=%db2path%\BIN;%db2path%\FUNCTION;%gskpath%\lib64;%gskpath%\lib;%path%