Convertir un MULTIPOINT a POINT con postgis

Hay veces que estas trabajando con dos tablas de puntos pero al querer juntarlas o trabajar con ellas te de das cuenta de que una es de tipo punto y la otra de tipo multipunto; es entonces cuando te saltan las alarmas y puede cundir el desespero, en muchos casos porque ni siquiera habías pensado al principio como debía ser la información geométrica si multi o simple en la mayoría de los casos con una (geometría simple nos bastará). Hay una solución bastante sencilla que te paso a mostrar

Los pasos que vamos a mostrar son para postgis 2.0 Primero tenemos que averiguar si al pasar la gemetrias de multipoint a point podemos perder información. Realizaremos el siguiente query para saber si tenemos geometrias con mas de una parte:

SELECT COUNT(CASE WHEN ST_NumGeometries(geom) > 1 THEN 1 END) AS multi_geom,
       COUNT(geom) AS total_geom
FROM mi_tabla;

Si el resultado del query es que  las multi_geom son mayores que 0, tienes el riesgo de perder algo de información, si hay un 0 en esta columna podemos convertir-la sin ningún tipo de problemas. Si sabes de donde proviene la información esta parte es solo orientativa ,por ejemplo en el caso de que hayas importado a postgis sin tener en cuenta el tipo de geometría en el que se importaba, en este puedes hacer una conversión a tipo point sin ms problemas.

En el siguiente query lo que hace es cambiar la geometria de multipoint a point. En realidad lo que estamos haciendo es coger tan solo el primer punto del multipoint, de ahí el riesgo de perder información si los otros puntos contienen información distinta al primero.


ALTER TABLE mi_table
    ALTER COLUMN geom TYPE geometry(Point,4326) USING ST_GeometryN(geom, 1);

 

En este ejemplo hemos visto las funciones ST_NumGeometries y ST_ GeometryN. Pasar de point a multipoint es mucho mas sencillo i con menos riesgos basta con utilizar ST_Multi

Advertisements

Deixa un comentari

Fill in your details below or click an icon to log in:

WordPress.com Logo

Esteu comentant fent servir el compte WordPress.com. Log Out / Canvia )

Twitter picture

Esteu comentant fent servir el compte Twitter. Log Out / Canvia )

Facebook photo

Esteu comentant fent servir el compte Facebook. Log Out / Canvia )

Google+ photo

Esteu comentant fent servir el compte Google+. Log Out / Canvia )

Connecting to %s