2 votos

V.what.rast no puede encontrar la capa de puntos del mapa

Me gustaría aplicar v.what.rast con un mapa de puntos en particular. Al intentar la forma directa, el módulo se queja de que no hay capa 1 (la predeterminada) en el mapa de puntos:

> v.what.rast map=debug_interpol_points_corr raster=weights column='value'
ERROR: Database connection not defined for layer 1

Primero, la verificación de cordura, de hecho hay una capa 1 en este mapa:

> v.category input=debug_interpol_points_corr option=report
Layer: 1
type       count        min        max
point         30          1         30
line           0          0          0
boundary       0          0          0
centroid       0          0          0
area           0          0          0
face           0          0          0
kernel         0          0          0
all           30          1         30

Intentando un enfoque diferente, con el número de capa -1 para forzar al módulo a usar todas las capas en el mapa:

> v.what.rast map=debug_interpol_points_corr raster=weights column='value' layer=-1
ERROR: Database connection not defined for layer -1

¿Qué está buscando exactamente este módulo? ¿O es esto un error?

Actualización: Este es el resultado de v.db.connect:

> v.db.connect -p map=debug_interpol_points_corr
Vector map  is connected by:
layer <2/debug_interpol_area_points_2> table  in database  through driver  with key 

¿Hay algo mal con esto?

1voto

Para verificar una conexión a la base de datos, por favor utilice "v.db.connect". Usted utilizó "v.category" pero eso básicamente verifica las cosas a nivel de geometría y no a nivel de tabla de atributos.

Para más detalles, por favor consulte por ejemplo El concepto de capas en la Wiki de GRASS GIS.

1voto

Eyal Puntos 188

El problema está muy arriba de v.what.to.rast. El mapa de puntos de entrada fue producido con v.to.points, un módulo que funciona de manera idiosincrática. Como muestra el comando v.db.connect en la pregunta, las características de salida están adjuntas a la capa 2, no a la capa predeterminada.

> v.db.connect -p map=debug_interpol_points_corr
El mapa vectorial  está conectado por:
capa <2/debug_interpol_area_points_2> tabla  en la base de datos  a través del controlador  con clave 

Para utilizar este mapa como entrada para otros módulos, la forma más simple es mover las características producidas por v.to.points a la capa 1. Esto se puede lograr con v.category:

> v.category input=debug_interpol_points_corr output=debug_interpol_points_corr_1 option=chlayer layer=2,1
ADVERTENCIA: La conexión de base de datos y las tablas de atributos para las capas afectadas no se cambian
Procesando características...
Copiando tabla(s) de atributos...
Construyendo topología para el mapa vectorial ...
Registrando primitivas...
30 primitivas registradas
30 vértices registrados
Construyendo áreas...
 100%
0 áreas construidas
0 islas construidas
Adjuntando islas...
Adjuntando centroides...
 100%
Número de nodos: 0
Número de primitivas: 30
Número de puntos: 30
Número de líneas: 0
Número de límites: 0
Número de centroides: 0
Número de áreas: 0
Número de islas: 0
v.category completa. 30 características modificadas.

Ahora, preste atención al mensaje de advertencia: las tablas de atributos se dejan sin cambios. Me tomó un tiempo entender lo que realmente significa esto: ninguna tabla de atributos está vinculada a la capa 1. Y dado que se eliminó la capa 2, ya no hay un atributo vinculado a este mapa. A partir de este punto, es prácticamente imposible utilizar esta capa como entrada para cualquier módulo. Ese fue el caso con v.what.rast.

Por lo tanto, la solución es volver a vincular la tabla de atributos a este mapa, usando v.db.connect:

> v.db.connect map=debug_interpol_points_corr_1 table=debug_interpol_points_corr_1 layer=1 -o
La tabla  ahora forma parte del mapa vectorial  y puede ser eliminada o sobrescrita por los módulos de GRASS
Los privilegios de selección se otorgaron en la tabla

Observe que la capa 1 debe especificarse específicamente y que el comando debe usarse en modo de sobrescritura (bandera -o).

Finalmente, se puede aplicar v.what.rast:

> v.what.rast map=debug_interpol_points_corr_1 raster=weights column='value'
ADVERTENCIA: El tipo de ráster es flotante y el tipo de columna es entero, se perderán algunos datos!!
Leyendo características del mapa vectorial...
ADVERTENCIA: Se omitieron 6 puntos fuera de la región actual
Actualizando atributos vectoriales...
 100%
v.what.rast completo. 24 registros actualizados.

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