Tablas y capas

Existen 2 objetos que tienen como característica común que almacenan los datos, pese a que tienen grandes diferencias. Estos objetos son, la Tabla (se corresponde con el objeto java TableDocument) y la Capa (se corresponde con el objeto java FLayer). Hay que resaltar que pese a que comparten los métodos de gestión de los datos son objetos diferentes, por lo que el resto de propiedades no es el mismo. Veámoslo con un ejemplo. Cargamos un documento Tabla desde el gestor de proyectos de gvSIG, que se corresponda con un archivo dbf de un shape. A continuación abrimos ese shape en una vista, y abrimos su tabla de atributos. En el gestor de proyectos si comprobamos los documentos tabla, aparecen 2 documentos, cuyos nombres no coinciden y cuyos atributos tampoco (el documento que hemos abierto como un documento Tabla no tiene campo GEOMETRY), peseque son el mismo archivo dbf.

Abriendo cada uno de los elementos desde la consola de Jython podemos ver que son diferentes
Jython Completion Shell
Jython 2.5.2 (Release_2_5_2:7206, Mar 2 2011, 23:12:06) 
[Java HotSpot(TM) Server VM (Sun Microsystems Inc.)] on java1.6.0_26
>>> from gvsig import *
>>> currentTable().getName()
u'areaDeInfluencia'
>>> currentTable().getSchema().getAttrNames()
[u'Id_muni', u'Influencia']
>>> currentTable().getName()
u'Tabla de atributos: areaDeInfluencia.shp'
>>> currentTable().getSchema().getAttrNames()
[u'Id_muni', u'Influencia', u'GEOMETRY']
>>> 
Como hemos dicho, tanto la Capa como la Tabla contienen un conjunto de datos o registros, la diferencia, respecto sus datos, es que en la capa existe el campo "geometry", que es la definición del elemento cartográfico, y la tabla no, por lo que los métodos de gestión de sus colecciones de datos son los mismos.
Estos métodos son:
­
El parámetro expresión de tipo string, define un filtro que se evalúa para determinar si unfenómeno debe ser incluido en la colección que se devuelve. Por ejemplo:
expresion = "ID > 10 AND ID < 20"
features = currentLayer().features(expresion, 'ID', True)
Este código devuelve la colección de fenómenos de la capa activa cuyo campo ID es mayor que 10 y menor que 20, ordenado por el campo ID ascendente. Si se utiliza una expresión para filtrar los fenómenos y esta expresión no es válida, devuelve None. Si la expresión es válida pero no produce resultados devuelve un conjunto de 0 elementos.
Si únicamente queremos ordenar la colección por un campo en sentido descendente el código sería:
features = currentLayer().features(sortBy='ID', asc=True)
Si el objeto no está en estado de edición al usar este método se cambiará el estado a modo edición.

Otros métodos comunes son:
­­

Métodos exclusivos del objeto Layer

Métodos exclusivos del objeto Table