12 votos

Uniones de uno a varios en una clase de características a una tabla

Estoy utilizando ArcMap 10.2.2 con una licencia avanzada. He utilizado ArcMap para otros análisis básicos, pero soy bastante nuevo en el programa y sólo tengo conocimientos básicos de codificación, sin experiencia en SQL fuera de muy consultas básicas utilizando los constructores de código SQL en ArcMap.

Tengo polígonos de las áreas de distribución geográfica de las especies y tengo una tabla con una lista de patógenos/enfermedades que portan esas especies. Algunas especies son portadoras de múltiples patógenos. En un mundo ideal, uniría los polígonos de las áreas de distribución a la tabla de las especies+patógenos y mantendría los datos poligonales/espaciales, pero no parece que haya una herramienta SIG para hacer esto (voy a contar más tarde los patógenos que se solapan, así que es importante que cada combinación especie-patógeno tenga su propia característica, en lugar de una característica que tenga la información para múltiples patógenos). Estos son mis datos (#1 y #2, #3 es para más tarde):

Tabla de atributos de las características espaciales:

attribute table for spatial features

Tabla sin datos espaciales:

table without spatial data

(Tenga en cuenta que no se trata de datos reales y que las combinaciones de patógenos y especies pueden no ser reales. En realidad tengo 115 polígonos y 519 filas en la tabla. Las especies son portadoras de entre 1 y 40 patógenos y, por tanto, las especies tienen entre 1 y 40 filas en mi tabla)

Como ventaja adicional, debido a los futuros análisis que necesito hacer, me gustaría poder hacer esta unión de uno a muchos de manera que pudiera mantener una columna extra de datos de la tabla (ver abajo un ejemplo de cómo podría ser). Sin embargo, esto es menos importante porque si puedo averiguar cómo hacer la unión, puedo simplemente rehacer el análisis.

table without spatial data, with extra field

Hay algunas soluciones que encontré para este problema, pero no me funcionaron por las razones que se indican a continuación:

Solución 1: Blog de David Aalbers - Soy demasiado novato para saber cómo editar el nuevo script y averiguar cómo importarlo a ArcMap. He intentado el antiguo script y sólo generó una tonelada de polígonos vacíos titulados test, test_1, test_1_1, test_1_1, etc.

Solución 2: Unión de uno a varios - Intenté usar la herramienta Make Query Table (y no tengo conocimientos de SQL, aunque usé el constructor de expresiones) y obtuve el ERROR 000383: Issue with a table, cannot find the workspace & Failed to execute (MakeQueryTable). Todos mis archivos están en la misma carpeta, pero no están en una geodatabase.

1 votos

Hacer la tabla de consulta funcionará sólo con la base de datos

1 votos

Hacer una tabla de consulta requiere que todos los datos estén en el mismo fgdb.

25voto

overstay_info Puntos 11

Para multiplicar las características haga lo siguiente (disponible para aquellos que tienen ArcGIS 10.1 o superior).

  1. Coloque las características y la tabla en la misma geodatabase de archivos (debe convertir los archivos Shapefiles/Excel/DBF en la geodatabase para que esto funcione).
  2. Asegúrese de que sus polígonos tienen un campo ID único que se conservará (puede crear un campo Long y calcular el ObjectID en él para que el valor ObjectID no se pierda).
  3. Haga un Join estándar de la tabla (atributos, sin datos espaciales) a las características (datos espaciales) en el campo coincidente. Tenga en cuenta que la tabla de atributos de las características (datos espaciales) tendrá el mismo número de características que tenía antes, pero no se preocupe por esto, todas aparecen en el siguiente paso.
  4. Exporte las características a la misma geodatabase como una nueva clase de características (haga clic con el botón derecho del ratón en la capa del índice y elija exportar). Observe que el número de características en la tabla de atributos de las características exportadas tiene ahora el número correcto de características, el mismo que la tabla original (con atributos, sin datos espaciales) o, en el caso de una unión de muchos a muchos, un conjunto completo de características para todas las combinaciones de características y registros relacionados.

Las características se multiplicarán en una nueva clase de características donde cada característica estará presente (incluso si no tenía una coincidencia en la tabla) y donde antes había una coincidencia 1:M, las características se multiplicarán para hacer una coincidencia 1:1 de cada característica con todas sus entradas en la tabla. El campo ID único que creó en el paso 2 le permitirá relacionar los polígonos multiplicados con el conjunto original de polígonos únicos. Con la nueva clase de características multiplicadas puede hacer selecciones en los campos de la tabla, resúmenes, uniones espaciales, etc.

Si desea generar un valor de identificación único que represente cada combinación única de especie y enfermedad, puede utilizar la versión 10.2 de la herramienta descrita en esta entrada del blog . Tener este tipo de clave le permite usarla para hacer uniones estándar a tablas de resumen y estadísticas basadas en una relación de campos múltiples como un sustituto de la creación de una relación real de campos múltiples usando una configuración de Tabla de Consulta.

Aquí hay una buena referencia de esri: https://support.esri.com/en/technical-article/000001228

0 votos

¡Funciona perfectamente cuando se exporta a dentro de la geodatabase!

1 votos

He modificado mi paso 4 para indicar que la exportación debe ser a una nueva clase de característica en la misma geodatabase que los datos originales. Seguir ese procedimiento debería funcionar siempre, aunque es posible que también se permitan algunas variaciones de dónde se almacenan los datos de origen y de salida.

0 votos

Antes estaba claro (aunque los futuros desesperados seguramente agradecerán que se les explique), pero originalmente no me había conectado correctamente a la carpeta de la geodatabase (o algo así) porque no me dejaba exportar a la geodatabase. He reiniciado y ha funcionado bien.

-2voto

Eric Bréchemier Puntos 168

Consulta SQL:

SELECT spp, disease, type
FROM table1, table2
WHERE table1.bimonial = table2.spp;

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