2 votos

QGIS / Spatialite / DB Browser : básico : unión de tablas y más

Pregunta : ¿Es posible crear una tabla en QGIS que sirva de referencia dinámica para las entradas de datos geográficos?

Como estoy seguro de que esto sonará muy general y poco claro, aquí está la situación real que me gustaría abordar :

  • Supongamos que tengo un mapa vectorial (puntos) de los árboles de un sitio.
  • Cada árbol se identifica con un número único y, además, con un código que indica su especie (hasta el nivel de cultivar).
  • Cada especie tiene sus propias características, como preferencias ambientales (suelo, sol, clima, etc.), plagas, usos (frutos, madera, hábitat de la fauna, etc.), comportamiento (tamaño, sistema radicular, época de floración, etc.) y mucho más.

-> Mi objetivo : crear una tabla que enumere todas estas características por especie, de forma que cuando añada un árbol en mi capa vectorial, sólo introduzca el número único (o deje que QGIS lo haga por mí), y el código de la especie, y dinámicamente recupere toda la información de la lista de especies, y la incluya en los atributos de la capa vectorial para ese árbol. Por supuesto, utilizaría los mismos nombres y tipos de campo en ambas tablas. Y al revés, digamos que modifico algunas características de una especie, y automáticamente actualiza todos los árboles únicos en mi capa vectorial.

He experimentado con muchas cosas en QGIS, y una cosa que me molesta es que nada parece "permanecer" o ser dinámico. Por ejemplo, para hacer que QGIS calcule una superficie poligonal para un campo "Área", tengo que rehacer la fórmula cada vez que añado nuevas entidades. ¿No puede ser dinámico?

Contexto :

Estoy exponiendo las necesidades y soluciones para cartografiar una futura granja en QGIS. No sólo los árboles, sino arbustos, plantas perennes, cultivos anuales, animales, y mucho más ...

Tengo una experiencia moderada (afortunadamente fructífera) con la cartografía con QGIS, pero ha sido 100% autodidacta y estoy limitado por el aspecto de la base de datos, ahora que quiero ir más allá. La última vez que realmente traté con bases de datos fue en Access en la universidad, hace unos 10 años, y no fue super profundo.

Acabo de descargar DB Browser para SQLite (estoy en OS X), que me da la agradable capacidad de hacer ediciones simples que QGIS no me deja, como cambiar el orden de los campos. También parece que me da la capacidad de estropear rápidamente mis datos, por lo que decidí unirme a Stackexchange e ir más allá del autoaprendizaje. Me está costando analizar qué es factible en el propio QGIS o requiere un manejo externo de la BD.

3voto

sonoftsadik Puntos 116

Una solución podría ser tener una tabla para editar la capa y una vista para leerla.

Por ejemplo, si su tabla está definida de la siguiente manera:

CREATE TABLE trees
(
  id INTEGER PRIMARY KEY AUTOINCREMENT,
  species_id INTEGER,
  FOREIGN KEY(species_id) REFERENCES species(id)
);
SELECT AddGeometryColumn('trees', 'geom', 4326, 'POINT', 'XY');

Puede crear una vista en la que realice las uniones para recuperar dinámicamente los atributos de las especies o realizar cálculos espaciales, por ejemplo:

CREATE VIEW trees_view AS
SELECT trees.id AS id,
  trees.geom AS geom,
  species.name AS species_name,
  species.soil AS species_soil,
  species.blooming_time AS species_blooming_time
FROM trees
LEFT JOIN species ON (trees.species_id = species.id);

0voto

Tom Smith Puntos 1069

¿Por qué no tener una tabla relacionada con esos valores de búsqueda? Recomiendo utilizar Geopackage Sqlite en lugar de Spatialite.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X