5. 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

5.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 os.path.dirname(__file__) que devuelve la ruta de la carpeta de nuestro script en ejecución.

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

import gvsig

def main(*args):
    print __file__

En mi caso la ruta es:

/home/osc/gvsig-devel/master_scripts/testing_getResource.py

Con la función os.path.dirname() 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 = os.path.dirname(__file__)
    print "Path script: ", path_script
    print "Ruta relativa: data/fichero.xx"
    print "Ruta absoluta: ", os.path.join(path_script, "data", "fichero.xx")

Salida por consola será:

Path script:  c:\gvdevel\gvsig\gvSIG-desktop-2.3.0-2441-RC2-win-x86_64\home\gvSIG\plugins\org.gvsig.scripting.app.mainplugin\scripts
Ruta relativa: data/fichero.xx
Ruta absoluta:  c:\gvdevel\gvsig\gvSIG-desktop-2.3.0-2441-RC2-win-x86_64\home\gvSIG\plugins\org.gvsig.scripting.app.mainplugin\scripts\data\fichero.xx

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

Hemos incorporado en la librería de gvsig una función gvsig.getResource() que nos ayuda a realizar esta operación de forma más sencilla.

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:  /home/osc/gvsig-devel/master_scripts/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:  /home/osc/gvsig-devel/master_scripts/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)

5.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())

5.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 = os.path.join(os.path.dirname(__file__),"data","jaen.shp")

    # loadShapeFile function
    s1 = loadShapeFile(shape_path)

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

5.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 = os.path.join(os.path.dirname(__file__),"data","mdt_jaen.tif")
    r1 = loadRasterFile(raster_path)

    raster_uri = File(os.path.join(os.path.dirname(__file__),"data","fichero.xx")).toURI()
    r2 = loadLayer("Gdal Store", uri=raster_uri)

5.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 DefaultFeatureStore

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)