Centralizando datos de archivos de forma en la base de datos

13

Tengo cientos de shapefiles de varios proyectos SIG diferentes que quiero comenzar a consolidar en una sola plataforma de base de datos, actualmente lo intento con Postgres / PostGIS.

Casi ninguno de los datos está estandarizado, lo que significa que son muchos de los mismos tipos de datos , pero los nombres / tipos de atributos particulares no coinciden.

¿Dónde debería comenzar a abordar esto? ¿Debería desarrollar un modelo estándar para migrar cada shapefile al primero (por ejemplo, Hydro_line, transport_line, Hydro_poly, etc.)?

Una alternativa es importar cada archivo de forma en Postgres individualmente, de modo que cada shp se convierta en una tabla en la base de datos, pero no estoy seguro de esto en términos de rendimiento y organización. Se siente como retrasar lo inevitable ...

¿Algún consejo para lidiar con esta tarea desalentadora?

colemanm
fuente

Respuestas:

7

Eche un vistazo a los softwares ETL espaciales (Extraer - Transformar - Cargar), están dedicados a tales tareas. El más conocido es FME de Safe, pero algunas alternativas de código abierto (parciales) ahora están disponibles, como SDI (Spatial Data Integrator) y GeoKettle .

Laurent Jégou
fuente
2
Pedí una comparación en una pregunta anterior, así que si sigues esta ruta, por favor haz una reseña. gis.stackexchange.com/questions/5049/spatial-etl-comparisons
RyanKDalton
Tomé una versión de prueba de FME e instalé SDI y GeoKettle. Los probaré y veré si puedo entenderlos. FME parece una solución de sopa a nueces, pero primero tendré que superar la curva de aprendizaje :).
colemanm
1
@ colemanm- ¿Qué terminaste haciendo en esto? ¿Qué producto te pareció más útil?
RyanKDalton
6

Hola

Lo importaría primero a PostGIS. Hay herramientas para cargar múltiples formas en tablas individuales. QGIS spit extension es uno. El nuevo gráfico shp2pgsql en troncales PostGIS o binarios experimentales es otra alternativa. O simplemente podría escribir un script por lotes con shp2pgsql.

Comenzaría allí, importaría todo a un esquema llamado original o algo así. Entonces, a partir de eso, estructuraría los datos. Fusionarse en tablas donde sea adecuado, etc.

Lo bueno de hacerlo así es que si guarda todas las consultas que usa para hacer esas transformaciones, tiene una excelente documentación sobre el historial de sus datos. También es muy fácil rehacerlo si es necesario. Una vez que esté listo con su trabajo de organización, descarga una copia de seguridad de su esquema "original" y la guarda en algún lugar.

Creo que esta es una forma estructurada y limpia de hacerlo. Y como se dijo anteriormente, obtendrá una documentación muy sólida de qué campo cambió de nombre a qué nombre nuevo, y qué tablas originales se fusionaron en ese gran nuevo y así sucesivamente.

En FME y software como ese, por supuesto, también puede guardar lo que ha hecho, pero además de ser muy lento en comparación con las consultas internas de la base de datos, no es esa forma universal de documentar lo que se hace como consultas sql. Serán utilizables y legibles siempre que haya archivos de texto y bases de datos relacionales.

Solía ​​terminar con archivos de texto parecidos a:

-- A query to merge all roads in Norway

Create table road_tables.all_roads as
SELECT id as roadid, status, the_geom from original.big_roads
union all
SELECT rid as roadid, condition as status, the_geom from original.small_roads;

y así. Este archivo guardado como texto tiene un gran valor después de unos años.

Saludos Nicklas

Nicklas Avén
fuente
1
+1 Creo que este es un muy buen enfoque. Todo se hace dentro de Postgres, muy transparente y fácilmente reproducible si es necesario.
oscuro
1
No es una buena recomendación para los SIG basados ​​en ESRI. De código abierto "solo" esto sería aceptable. ESRI tiene muchas más dependencias que no serían accesibles a través de este método. la conexión directa a postgis no está permitida sin interoperabilidad, servidor gis o arcsde.
Brad Nesom
2
@Brad Hmm, me pregunto si ese es un argumento en contra de hacer las cosas de manera transparente, reproducible y rápida, o un argumento en contra de quedar encerrado al poner algo entre mí y mis datos ... ;-)
Nicklas Avén
1
@Brad: colemanm no mencionó ESRI, por lo que la respuesta parece ser buena.
oscuro
He hecho un trabajo similar a esto con las clases de características ESRI Sde y SQL Server 2008 (con geometría nativa): primero creé la clase de características y luego la cargué con una serie de instrucciones de inserción. IIRC, tuve que exportar la clase de características al final a una nueva clase de características porque no podía generar nuevos objectids correctamente. Una vez que hice eso, lo de siempre.
Jay Cummins
4

Mi sugerencia sería elegir 2-5 de sus capas de datos más pesadas (archivos de forma) y migrarlas a un rdbms.
Investigue e implemente flujos de trabajo para esos datos. Acostumbrarse a las limitaciones y requisitos de rdbms vs datos basados ​​en archivos.

Las limitaciones incluyen: exportación requerida, zona de aterrizaje, coordsys, tipo de archivo para colaboración.

Hay muchos beneficios para lo que está proponiendo.
NOTA lateral: (Mi abuelo les dijo a mis padres que pasaran 6 meses buscando una casa antes de comprar) considere que está buscando una casa (a largo plazo) para sus datos, no quiere pagar por algo 30 años a partir de ahora que usted no me gusta

Mi recomendación sería escribir (digital o analógico) una lista de árbol de sus fuentes de datos y verlas en una imagen general, esto debería permitirle organizar los datos en agrupaciones más concisas.

Hay métodos dentro de arcgis (mi suposición: no ha especificado su sistema preferido) para integrar datos dispares.

Puede probar parte de esta información si está interesado en aprender buenas prácticas de diseño ...

Descripción general del diseño de la
geodatabase Documentación de la geodatabase
Hay algunos vínculos similares para el arco 10 también.
Centro de
recursos de la geodatabase arc10

Brad Nesom
fuente