Re: Postgis error en geometria

From: Miguel Rodríguez Penabad <penabad(at)gmail(dot)com>
To: "Antonio Garcia" <angarben(at)hotmail(dot)com>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Postgis error en geometria
Date: 2007-07-10 14:58:24
Message-ID: 95335e4e0707100758l8936c2fwea3819e53be7e19b@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

El 10/07/07, Antonio Garcia <angarben(at)hotmail(dot)com> escribió:
> ¿Alguien podría ayudarme a crear polígonos en Postgis a partir de las
> coordenadas de los mismos?

Hola. En primer lugar, supongo que si usas PostGIS no has instalado el
"PostGIS por defecto" que viene con Postgres. Al menos en la página de
postgis recomienda no hacerlo, e instalar la versión de su página (más
reciente).
Una vez dicho esto, la solución a tus problemas va intercalada con lo
que tú has escrito.

> Estoy un poco perdido. Ya que consultando la documentación de Postgis y sql
> consigo insertar registro en los campos de la base de datos pero no en la
> columna de la geometría.
>
> Los campos son:
> gid(PK)integer | codigo integer | fechainici text | fechafin text
> | horainicio text | horafin text | promotor text | descripcio text |
> the_geom geometry |

¿Cómo has creado la geometría? No es un "campo normal" ya que al crear un campo
de tipo geometría hay que decirle el sistema de coordenadas que usa, etc.
El OGC (OpenGIS Consortium) ha definido una serie de funciones, y la
que tú necesitas es
addGeometryColumn para añadir un campo geometría en una tabla, como en
el ejemplo que te paso:

create table kk1(id serial);
NOTICE: CREATE TABLE will create implicit sequence "kk1_id_seq" for
serial column "kk1.id"

select addGeometryColumn('','kk1','the_geom',-1,'GEOMETRY',2);
addgeometrycolumn
--------------------------------------------------
public.kk1.the_geom SRID:-1 TYPE:GEOMETRY DIMS:2

(Ya ves que te dice que el SRID es -1)

>
> 11 | 1005 | 13:09:2007 | 13:09:2007 | 08:00 | 20:00 | Antonio
> García | Levantamiento de aceras | En la geometría no se.
>
> insert into cortecalles (gid,
> codigo,fechainici,fechafin,horainicio,horafin,promotor,descripcio,the_geom)
> values (11, '1005','13:09:2007','13:09:2007','08:00','20:00','Antonio
> García','Levantamiento de aceras',GeometryFromText('MULTIPOLYGON (
> (25 70, 20 65, 30 55, 20 65, 25 70)
> )', -1)
> );
>
> En esta me salen errores del tipo para MULTIPOLYGON:
>
> ERROR: parse error - invalid geometry
> Estado SQL:XX000
>

Te faltan paréntesis:
insert into kk1(the_geom) values(GeometryFromText('MULTIPOLYGON (
( --Este paréntesis
(25 70, 20 65, 30 55, 20 65, 25 70)
) -- Y este otro
)', -1));

> Y no entiendo que esta mal.
>
> Si pongo la sentencia SQL para POLYGON:
>
> insert into cortecalles (gid,
> codigo,fechainici,fechafin,horainicio,horafin,promotor,descripcio,the_geom)
> values (12, '1005','13:09:2007','13:09:2007','08:00','20:00','Antonio
> García','Levantamiento de aceras',GeometryFromText('POLYGON (
> (25 70, 20 65, 30 55, 20 65, 25 70)
> )', -1)
> );
>
> ERROR: new row for relation "cortecalles" violates check constraint
> "enforce_srid_the_geom"
> Estado SQL:23514

Este error te lo da por no haber usado addGeometryColumn. Si lo usas
la consulta debería funcionar.

Saludos
Miguel

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Patricio Cifuentes Ithal 2007-07-10 15:03:29 RE: Postgis error en geometria
Previous Message Arturo Munive 2007-07-10 14:45:19 Instalacion modulo ltree