¿Hay alguna manera de seleccionar un atributo de una capa de polígono e insertar el valor en un campo virtual de una capa de puntos usando "dentro" en la calculadora de campo?
CASE
WHEN within($geometry, geometry_polygon) THEN attribute_polygon
END
qgis
field-calculator
layers
within
Mar lunar
fuente
fuente
Respuestas:
Las uniones espaciales están disponibles en la calculadora de campo después de instalar el complemento refFunctions.
fuente
Fuera de la caja, la calculadora de campo no admite uniones espaciales a través de capas de entidades. Pero, si echa un vistazo a la publicación de NathanW en el editor de funciones para expresiones qgis , podrá ver que podemos escribir nuestra propia interacción de datos.
El siguiente script le permitirá expresar lo que busca. Funciona iterando a través de todas las entidades en la capa de polígono y si hay una unión espacial, entonces haga referencia a los datos tabulares de la columna especificada:
Ejemplo de capa de polígono
A continuación se muestra un ejemplo de una capa de polígono que podría tener. También he creado una capa de puntos correspondiente que verá en la imagen final.
Uso de expresiones
Tenga en cuenta que si desea utilizar una columna separada, debe cambiar el segundo argumento para que coincida con el nombre de la columna en el conjunto de datos del polígono. Por ejemplo, podría usar la columna 'ÁreaNúmero', pero tendría que coincidir con el tipo de columna en la configuración de la calculadora de campo.
Resultado
Puede ver que el valor de columna predeterminado se ha aplicado donde no hay unión espacial, y los otros han coincidido con los datos correctos. Tenga en cuenta que el script que he dado solo se unirá en la primera coincidencia. Debería crear alguna otra lógica de negocios si sus polígonos se superpusieran.
fuente
Se puede hacer en Field Calculator con función
aggregate()
. En la capa de puntos, cree un nuevo campo con una expresión de calculadora de campo como esta:Donde el
layer
nombre de la capa de polígono se escribe como una cadena,aggreagate
es una función de agregado (se puede usar también suma, etc.),expression
se tomará el campo de los valores,concatenator
se une a la cadena de caracteres (debe establecerse, incluso en este caso) yfilter
se basa en el filtrado de características en expresión (en este caso interesa la geometría de la capa con la geometría de la capa primaria).Para obtener más información de verificación de documentación Agregados QGIS .
Para las actualizaciones automáticas se pueden usar campos virtuales o puede establecer la expresión como valor predeterminado en la configuración del formulario de atributos en Propiedades de capa ( documentación de configuración del formulario de atributos ).
fuente
geometry(@parent)
) solo son compatibles desde QGIS 3 en adelante. Por si alguien que lee esto todavía usa 2.18 ...