@Dano plantea con razón algunos problemas que son mejor abordados en una respuesta completa.
Una dificultad, ya señalada por @Celenius, es que una unión entre B y A (en cualquier dirección) duplica todos los campos; puede ser oneroso corregir esto. He sugerido en comentarios que la forma obvia y fácil (exportar a una hoja de cálculo) plantea preguntas sobre la integridad de los datos. Otra dificultad, ya abordada por la propuesta de Celenius, se refiere a resolver este problema cuando ninguna combinación de atributos puede servir como clave para tanto A como B, ya que eso impide una unión de bases de datos. La unión espacial resuelve ese problema.
¿Entonces, cuál es una buena solución? Un enfoque utiliza A para identificar los registros correspondientes de B que contienen los datos deseados. Dependiendo de las suposiciones sobre las configuraciones de los polígonos -si se superponen, si algunos pueden contener a otros, etc.- esto se puede llevar a cabo de varias maneras: usando una capa para seleccionar objetos en la otra, o mediante uniones. El punto aquí es que todo lo que queremos hacer en esta etapa es seleccionar el subconjunto de B correspondiente a A.
Habiendo logrado esa selección, exporta la selección y deja que reemplace a A. Hecho.
Esta solución asume que todos los campos de B están destinados a reemplazar a sus homólogos en A. Si no es así, entonces realmente es necesario realizar una unión 1-1 de B (origen) a A (destino). La unión basada en identificadores es la mejor, pero hacer una unión en la identidad de polígonos (Celenius) funciona bien si los identificadores no están disponibles y no hay posibilidad de que las formas de los polígonos correspondientes en A y B puedan diferir, aunque sea ligeramente. (Este es un punto sutil, y la causa potencial de errores insidiosos, porque ediciones anteriores en B a polígonos que no corresponden a A podrían modificar invisiblemente los otros polígonos en B si el GIS está "ajustando" o "manteniendo la topología" u haciendo automáticamente cambios globales durante ediciones locales.)
En este momento, hay dos copias de cada campo: si [Foo] es un campo común para A y B, entonces la unión contiene A.[Foo] y B.[Foo]. Usando un cálculo de campo, copia B.[Foo] en A.[Foo]. Repite para todos los campos necesarios. Después de esto, elimina la unión.
Aunque este procedimiento puede ser un poco oneroso cuando intervienen muchos campos, sus méritos incluyen
- Es directo y rápido de automatizar.
- La automatización de este proceso deja un rastro de auditoría documentando el procesamiento realizado en los datos. Esto es crucial para proteger la integridad de los datos.
- Defiende contra algunos tipos de errores generalizados, como retener el campo incorrecto después de la unión (manteniendo así los datos antiguos en lugar de los nuevos datos para ese campo) o eliminar un campo crucial.
- Aprovecha las defensas incorporadas ofrecidas por el sistema de gestión de base de datos, como la aplicación de tipos de datos y reglas comerciales, que operan para prevenir e identificar errores y mantener la consistencia entre todas las tablas y capas de la base de datos.
Algunos de los principios orientadores involucrados en esta sugerencia son
- Utiliza tu sistema de gestión de base de datos para procesar datos en lugar de utilizar software no diseñado o inadecuado para esta tarea.
- Evita cambiar las estructuras de la base de datos (como eliminar o agregar campos) cuando las operaciones no lo requieran absolutamente.
- Usa las capacidades de automatización del software para simplificar el trabajo, documentarlo y hacer las operaciones reproducibles.
Uno podría objetar que en muchos casos hay formas más rápidas y fáciles de alcanzar el mismo resultado. Sí, las hay, y pueden ser efectivas y por lo general funcionan cuando se realizan con cuidado. Pero las soluciones que ponen en riesgo los datos son difíciles de recomendar y defender como respuestas de uso general. Se deben emplear mejor en situaciones puntuales con conjuntos de datos pequeños donde la corrupción en los datos debería volverse rápidamente evidente y las consecuencias de cualquier error sean inmateriales.
0 votos
Crear centroides (puntos) del Polígono A y unir los atributos a B y exportar a un archivo nuevo para preservar los atributos de A.
3 votos
@Mapperz Este es un enfoque peligroso, porque puede producir errores a pesar de que normalmente generará una respuesta probable. Si los polígonos se superponen entre sí, todas las apuestas están canceladas. Incluso cuando no hay superposiciones, es posible que el centroide de un polígono se encuentre dentro de un polígono diferente (que no se superpone). La corrección solo se puede asegurar en general cuando todos los polígonos en A no se superponen y son convexos.
0 votos
+1 @ Diego - ¡tu pregunta llevó a una discusión/debate bastante interesante; ¡uno interesante en efecto!