6. Cargando capas

loadShapeFile(shpFile, **parameters):

Add an existing shape file to the view. Returns Layer shape file

Parámetros:
  • shpFile – absolute file path to the shape

  • CRS (string) – projection code

  • gvViewName (string) – name of the view where to be loaded

  • gvLayerName (string) – name of the layer inside gvsig

Type:

shpFile: string

Devuelve:

shape

loadRasterFile(filename, **parameters):

Add an existing raster file to the view. Returns Layer Raster file.

Parámetros:
  • filename (str) – absolute file path to the raster

  • CRS (string) – projection code

  • gvViewName (string) – name of the view where to be loaded

  • gvLayerName (string) – name of the layer inside gvsig

Devuelve:

raster layer

loadDBF(filename):
Open an existing dbf file
Parámetros:

filename (str) – absolute file path to the DBF file

Devuelve:

dbf

6.1. Recursos en rutas relativas: getResource()

En muchas ocasiones es necesario hacer referencia a ficheros que tengamos dentro de nuestro módulo, es decir, obtener la ruta completa de un fichero a partir de la ruta relativa en la que se encuentre nuestro script, independientemente de donde este instalado o del sistema. Para ello nos ayudamos de la función getResource(__file__) que devuelve la ruta de la carpeta de nuestro script en ejecución.

Esta constante debe de ser usada siempre usando la función getResource para que obtenga correctamente su ruta.

En este caso, nos devuelve la ruta del script en ejecución:

import gvsig

def main(*args):
    print getResource(__file__)

En mi caso la ruta es:

c:/gvsig/gvSIG-desktop-2.6.1-4026-devel-lin-x86_64/preferences/gvSIG/plugins/org.gvsig.scripting.app.mainplugin/2.6.1/scripts/addons/test/test.py

Con la función lo que hacemos es sacar el directorio donde se encuentra el script. Ejemplo de uso:

# encoding: utf-8
import os
import gvsig

def main(*args):
    """Obtener ruta absoluta de ficheros en la carpeta de ejecucion del script"""

    path_script = getResource(__file__)
    print "Path script: ", path_script
    print "Ruta relativa: data/fichero.xx"
    print "Ruta absoluta: ", getResource(__file__, "data", "fichero.xx")

Salida por consola será:

Path script:  c:/gvsig/gvSIG-desktop-2.6.1-4026-devel-lin-x86_64/preferences/gvSIG/plugins/org.gvsig.scripting.app.mainplugin/2.6.1/scripts/addons/test/test.py
Ruta relativa: data/fichero.xx
Ruta absoluta:  c:/gvsig/gvSIG-desktop-2.6.1-4026-devel-lin-x86_64/preferences/gvSIG/plugins/org.gvsig.scripting.app.mainplugin/2.6.1/scripts/addons/test/data/fichero.xx

De esta forma estaríamos accediendo a la carpeta /data/ dentro de nuestro módulo.

Por ejemplo:

# encoding: utf-8

import gvsig

def main(*args):

    x = gvsig.getResource(__file__,"testing.py")
    print "path: ", x
    print "type: ", type(x)

Podemos comparar la ruta por consola:

path:  c:/gvsig/gvSIG-desktop-2.6.1-4026-devel-lin-x86_64/preferences/gvSIG/plugins/org.gvsig.scripting.app.mainplugin/2.6.1/scripts/addons/test/testing.py
type:  <type 'unicode'>

Pudiendo añadirle tantos parámetros como carpetas sea necesario recorrer:

# encoding: utf-8

import gvsig

def main(*args):

    x = gvsig.getResource(__file__,"Game","data","testing.py")
    print "path: ", x
    print "type: ", type(x)

Muestra por consola la ruta:

path:  c:/gvsig/gvSIG-desktop-2.6.1-4026-devel-lin-x86_64/preferences/gvSIG/plugins/org.gvsig.scripting.app.mainplugin/2.6.1/scripts/addons/test/Game/data/testing.py
type:  <type 'unicode'>

Podemos usar la función para otro tipo de rutas asegurándonos que será correcta independientemente del sistema:

import gvsig

def main(*args):

    x = gvsig.getResource("/home/osc/temp/","test1.dbf")
    print "path: ", x
    print "type: ", type(x)

6.2. Función de carga: loadLayer

Las funciones posteriores se apoyan todas en una función principal denominada loadLayer.

Ejemplo de uso para un fichero raster:

layer = loadLayer('Gdal Store', crs=getCRS("EPSG:3042"),uri=File(r"C:/temp/mdt20_3_etrs89.tif").toURI(),gvViewName=currentView())

6.3. Capas Vectoriales

Para cargar capas vectoriales usaremos la función loadShapeFile(). Esta es una función de apoyo que llama a la función createLayer() más genérica.

Ejemplo:

from gvsig import *
from java.io import File

def main(*args):

    # Get resource path
    shape_path = getResource(__file__,"data","jaen.shp")

    # loadShapeFile function
    s1 = loadShapeFile(shape_path)

    # LoadLayer function
    s2 = loadLayer("Shape", shpFile=xfile, CRS="EPSG:25830")

6.4. Capas Raster

Para cargar capas raster usaremos la función loadRasterFile(). Esta es una función de apoyo que llama a la función createLayer() más genérica.

Si necesitamos transformar una ruta a formato uri podemos hacerlo apoyándonos en la clase de Java: java.io.File:

Ejemplo:

from gvsig import *
from java.io import File

def main(*args):

    # Load Raster File
    raster_path = getResource(__file__,"data","mdt_jaen.tif")
    r1 = loadRasterFile(raster_path)

    raster_uri = File(getResource(__file__,"data","fichero.xx")).toURI()
    r2 = loadLayer("Gdal Store", uri=raster_uri)

6.5. Ficheros DBF

Para trabajar con la creación y carga de ficheros DBF existen las funciones createDBF(schema) y loadDBF(dbfFile). Siendo un objecto FeatureStore

Ejemplo de uso:

from gvsig import *

def main(*args):

    schema = createSchema()
    schema.append("ID", "INTEGER")
    dbf = createDBF(schema, prefixname="summary")
    print dbf, type(dbf)
    path = dbf.getFullName()
    loadDBF(path)