.. _label-cargando_capas: Cargando capas =============== .. py:function:: loadShapeFile(shpFile, **parameters): Add an existing shape file to the view. Returns Layer shape file :param shpFile: absolute file path to the shape :type: shpFile: string :param CRS: projection code :type CRS: string :param gvViewName: name of the view where to be loaded :type gvViewName: string :param gvLayerName: name of the layer inside gvsig :type gvLayerName: string :return: shape :type return: Layer .. py:function:: loadRasterFile(filename, **parameters): Add an existing raster file to the view. Returns Layer Raster file. :param str filename: absolute file path to the raster :param CRS: projection code :type CRS: string :param gvViewName: name of the view where to be loaded :type gvViewName: string :param gvLayerName: name of the layer inside gvsig :type gvLayerName: string :return: raster layer :type return: Layer .. py:function:: loadDBF(filename): Open an existing dbf file :param str filename: absolute file path to the DBF file :return: dbf :type return: TableDocument 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: 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: 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) 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()) Capas Vectoriales ----------------- Para cargar capas vectoriales usaremos la función :py:func:`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") Capas Raster ------------ Para cargar capas raster usaremos la función :py:func:`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) Ficheros DBF ------------ Para trabajar con la creación y carga de ficheros DBF existen las funciones ``createDBF(schema)`` y ``loadDBF(dbfFile)``. Siendo un objecto :javadoc:`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)