9 votos

¿Cómo convertir una capa multipunto a punto utilizando PostGIS?

Tengo una capa de Spatialite que es multipunto (siguiendo un QGIS Save As desde un shapefile). Necesito que sea PostGIS y POINT. He intentado ogr2ogr -nlt POINT y obtuve el error 'new row for relation "xxx" violates check constraint "enforce_geotype_geometry"' al insertar.

También he intentado convertirlo dentro de PostGIS - es decir, traer la capa como multipunto y convertirla a punto - sin éxito.

Estoy usando PostGIS 1.5.3 PostGreSQL 9.1.8. (considerando actualizar a PostGIS2 después de leer esto: ¿Cómo cambiar el tipo de geometría de Punto a Multipunto dentro de una tabla existente en PostGIS?) pero preferiría quedarme en 1.5 por ahora si hay una forma de solucionar esto. Dispuesto a hacerlo en spatialite o PostGIS.

14voto

Nick Puntos 3115

SpatialLite no tiene forma de convertir por sí mismo geometrías múltiples en partes individuales. Hay algunas funciones 'CastTo', pero son para casos especiales (donde su multigeometría contiene una sola geometría - no se expandirá). He visto una referencia a una función en la GUI de SpatialLite pero nunca la encontré (quizás necesitas compilarla desde el código fuente más reciente. Solo estoy usando un binario precompilado). Así que tus mejores opciones son:

  • En PostGIS puedes usar ST_Dump. Esta es una función útil para expandir multigeometrías.
  • En QGIS podrías usar Vector->Herramientas de geometría->De multiparte a monoparte

12voto

valentt Puntos 111

Puedes convertir una capa multipunto en puntos individuales con el menú Vector -> Herramientas de geometría -> Convertir multiparte en partes individuales e importar la nueva capa en PostGIS.

0 votos

Sí, eso tiene que ser más fácil. El único problema con Multipart a Singleparts es que primero debes guardar la capa como un shapefile - por lo que pierdes tus nombres de columna largos y bonitos, ¡pero ciertamente es más fácil para mi cerebro!

0 votos

@minisaurus: tu capa de puntos múltiples puede ser spatialite, pero el resultado de la conversión (capa de un solo punto) será shapefile. Por lo tanto, es posible que pierdas tus bonitos nombres de columna largos, pero puedes cambiarlos de nuevo manualmente en PostGIS.

0voto

user15183 Puntos 28

¿Tienes acceso a ArcGIS? Hay una opción de "multipart to singlepart" en ArcGIS, mira http://resources.arcgis.com/en/help/main/10.1/index.html#//00170000003r000000.

0 votos

No - tengo QGIS sin embargo

0voto

David Casillas Puntos 121

Lo he hecho pero desafortunadamente no recuerdo todos los pasos:

  1. ogr2ogr tabla a PostGIS
  2. creé una nueva tabla como copia de la estructura de esta tabla
  3. eliminé la columna de geometría en la nueva tabla
  4. creé una nueva columna de geometría como punto (selecciona AddGeometryColumn etc)
  5. inserté los datos de la tabla multipunto en la nueva tabla (esta es la parte que olvidé cómo hice)
  6. creé un índice espacial en la tabla de geometría de las nuevas tablas

Debe de haber una manera más fácil.

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