3 votos

¿Cómo asignar la geometría a los registros de una tabla que contiene un ID de un punto de geometría?

Estamos buscando un mapa de "incidentes" en las escuelas, pero la tabla de incidentes, que contiene unos cuantos miles de registros, sólo tiene un número de escuela (más los datos del incidente). El formato de la tabla es una hoja de cálculo de Excel con unos 20.000 registros.

Tenemos escuelas (alrededor de 250 registros/puntos) que comparten el mismo ID y por supuesto la geometría de cada escuela. Las escuelas son una clase de característica SDE de punto, pero se pueden convertir en SHP u otro tipo de geometría si es necesario.

¿Cómo podemos asignar la geometría de las escuelas a cada registro de la tabla "incidencias"?

Me gustaría tener algo como un shapefile u otro tipo de tabla. Mantener el archivo de Excel en su formato actual no es necesario, es decir, estamos convirtiendo el archivo de Excel a una clase de característica / shapefile / etc.

Cualquier opción de software está sobre la mesa.

2voto

Ron Warholic Puntos 7479

Supongo, por su pregunta y por algunos de los comentarios de la pregunta original, que está intentando realizar idealmente una unión de uno a varios y está intentando hacerlo en el software ArcGIS Desktop. Desafortunadamente, la unión básica en ArcMap disponible a través de un clic derecho en la capa no funciona bien con las uniones de uno a muchos, pero si eso es lo que usted está buscando, hay dos maneras que usted puede hacer esto:

PUNTO IMPORTANTE PARA CUALQUIERA DE LOS MÉTODOS: En el software ArcGIS Desktop sólo se pueden realizar uniones entre dos campos del mismo tipo, por lo que si se ha incluido un campo ID como Campo de Texto en una tabla y como Campo de Entero Corto en otra, se tendrá que crear un nuevo campo del otro tipo de campo en una de las dos tablas y luego calcular ese nuevo campo a partir del campo ID existente antes de poder realizar la unión. Si sólo se trata de una unión uno a uno, esto es todo lo que debe hacer y luego sólo tiene que unir los datos de los incidentes con la escuela y ya está; sin embargo, si hay múltiples registros de incidentes por escuela, siga leyendo.

En primer lugar, y personalmente el más obvio, puede utilizar la herramienta de geoprocesamiento Make Query Table, que está diseñada para realizar uniones de uno a varios. Puedes obtener algunos detalles en http://support.esri.com/en/knowledgebase/techarticles/detail/37544 para ver un artículo de ESRI KB paso a paso o http://resources.arcgis.com/en/help/main/10.2/index.html#//00170000006r000000 para la ayuda de la herramienta. Esto sólo dará lugar a una capa temporal, pero puede exportar los resultados a un conjunto de datos permanente utilizando las herramientas Feature Class to Feature Class, Table to Table o Copy GP, dependiendo de la dirección en la que se una.

El otro método para hacer una unión de uno a varios sería añadir un campo x y un campo y a la clase de características de sus escuelas y utilizar la opción de calcular la geometría haciendo clic con el botón derecho del ratón en el campo de la tabla de atributos en ArcMap para rellenar esos campos con la latitud y la longitud. A continuación, podría hacer una unión uno a uno, uniendo las escuelas con geometría a los incidentes basados en el campo ID. A continuación, utilizaría esta tabla para crear una nueva clase de características a partir de los datos XY resultantes.

Espero que eso ayude, si no, hágamelo saber con un comentario y veré lo que puedo hacer para aclararlo.

2voto

Sospecho que quiere mantener el archivo de incidentes como un archivo de Excel (para continuar el seguimiento). Probablemente la forma más sencilla de hacerlo sería utilizar las funciones de búsqueda de Excel para crear una geometría en el archivo de Excel, que luego se puede utilizar para el mapeo directamente.

  1. Añada las columnas X e Y al archivo de puntos geométricos y guárdelo como archivo CSV;
  2. Abra el CSV en Excel y cópielo como una nueva pestaña ("ubicaciones") en su archivo de Excel;
  3. Añada columnas X e Y a la pestaña original de Incidentes de Excel y utilice una función de búsqueda para obtener los valores X e Y de la pestaña de ubicaciones;
  4. Mapear los incidentes directamente en Arc (o en QGIS utilizando el plugin XY) leyendo el archivo Excel.

En detalle

Añade las columnas X e Y a tu capa SDE de puntos (yo no uso ArcGIS pero hay instrucciones aquí ). Exporte la tabla de atributos a un archivo CSV y ábralo en Excel:

Tabla de puntos de las escuelas:

id_school   X     Y
1           32.1  -2.3
2           33.0  -2.4
3           32.0  -2.0

Añádelo como una pestaña a tu archivo Excel de "incidentes"; los "incidentes" podrían tener el siguiente aspecto

id_school   Incident     Date
1           A            2014-04-01
1           B            2014-04-02
2           A            2014-04-01
3           B            2014-04-11

Añade una columna X e Y a la pestaña de incidencias, y utiliza la función vlookup para añadir los valores a esas columnas, utilizando el formato vlookup(id_school, points_tab_range, column number) :

id_school   Incident     Date        X
1           A            2014-04-01  =vlookup(A2, points!A1:C5, 2)

La columna X se rellenaría entonces con el valor 32,1. Haga lo mismo con la columna Y pero con la columna 3 indicada. Si actualiza las escuelas o las localidades, añádalas al rango de búsqueda.

A continuación, puede añadir el archivo de Excel como una capa en ArcGIS; si utiliza QGIS, el plugin 'XY Tools' leerá los archivos .XLS (no los .XLSX, lamentablemente) de la misma manera.

0voto

Antonio Locandro Puntos 213

Utilice la unión, supongo que desde SDE se menciona que tiene acceso a ArcMAP, añadir los puntos de la escuela y la hoja de cálculo de Excel como una tabla para el marco de datos, a continuación, haga clic en la capa de puntos seleccione unir y utilizar el campo que tiene los mismos datos en ambas tablas que debe hacer el truco

0voto

mapBaker Puntos 5348

La solución a este problema pasa por el uso de bases de datos relacionales con columnas de geometría como SQL Server o PostGIS.

Primero cargué la tabla de puntos de la escuela (que contiene columnas de geometría y SCHNUM), y la tabla de incidentes (que incluye las columnas SCHNUM y OBJECTID, así como otras columnas de datos de incidentes) en la base de datos relacional.

A continuación, simplemente uní la geometría de los puntos de la escuela a las incidencias del campo SCHNUM utilizando un LEFT JOIN.

A continuación, he creado una vista de esa unión.

A partir de ahí, la vista de los "incidentes geográficos" puede consumirse en ArcMap (a través de SQL Server) o en QGIS (a través de PostGIS).

Los datos también pueden extraerse de esa vista a un shapefile estático o a una tabla SDE utilizando la "exportación de datos" de ArcMap (conectándose a la base de datos de SQL Server), o una herramienta ETL como FME Workbench, por ejemplo.

Por supuesto, los puntos se superponen, pero como estamos haciendo un análisis de tiempo de los incidentes, esto está bien. Esto también permite hacer un análisis de densidad en ciertos tipos de incidentes.

La clave de todo esto es que el uso de una base de datos relacional con la geometría habilitada da la opción de tratar la geometría como cualquier otro dato de la base de datos... ¡¡¡Espacial IT!!!

Gracias a todos por su ayuda.

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