Re: Consulta base de datos espacial

From: "jvenegasperu (dot)" <jvenegasperu(at)gmail(dot)com>
To: Néstor Ramires <nramire1(at)rosario(dot)gov(dot)ar>
Cc: "pgsql-es-ayuda(at)postgresql(dot)org" <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Consulta base de datos espacial
Date: 2017-06-27 13:35:30
Message-ID: CA+KjtGfuhC0RDLxRDaE+OR58nGxHX+_k+dHVLf-A_rnH5Fo-pQ@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Hola Nestor
buen dia

El 27 de junio de 2017, 7:27, Néstor Ramires <nramire1(at)rosario(dot)gov(dot)ar>
escribió:

> Hola, esta consulta ya la hice en una lista de Postgis (aun sin respuesta)
> si bien no es una consulta concreta de PostgreSQL pero tal vez alguien ha
> trabajado con la extension Postgis y me pueda guiar en la resolución de
> este planteo.
> En una base de datos espacial en Postgis, tengo dos tablas:
> Una tabla llamada forestal_ln la cual contiene LINESTRING.
> Una tabla llamada forestal que cuenta con algunos campos y dos campos
> geométricos: 'centroide' que contiene geometría de tipo POINT y 'geometria'
> que contiene geométrica de tipo MULTIPOLYGON.
> En donde cada centroide de la tabla forestal se encuentra encerrado por
> varias líneas de la tabla forestal_ln.
> Les agradecería mucho si pudieran orientarme en:
> 1) ¿qué procesos podría correr para asegurarme de que esas lineas
> verdaderamente encierran un solo centroide? Verificar la topologia
>
2) (más importante) ¿cómo puedo crear los polígonos a partir de esas lineas
> y actualizar con esos polígonos creados el campo geometria de la tabla
> forestal?
>

Quiza podrias hacer algo asi a cada centroide le haces un bufer lo
suficientemente grande como para cruzarse con las lineas que lo estarian
encerrandolo luego hacer un intersection del buffer con las lineas asi
tendrias el poligono luego preguntarias si el centroide esta dentro del
poligono si tienes mas de un centroide podrias arreglarlo con un count y
faltaria evaluar como disernir los que tengas mas de un centroide dentro de
cada poligono.

no tengo postgis ahora a mano pero ahi te dejo una imagen adjunta de lo que
aqui te escribo que espero te sirva.

PD quiza necesites cortar las lineas para quedarte con las partes que se
intersectan con el buffer antes de armar el poligono y el buffer podrias
tambier configurar para que no sea necesariamente lo mas cercano un
circulo asi trabajas mas rapido con menos puntos.

Por favor si puedes comentar tus progresos en este tema es muy interesante

> Los datos con los cuales estoy trabajando:
>
> CREATE TABLE forestal(
> id serial NOT NULL,
> tipo varchar(6),
> densidad real,
> CONSTRAINT forestal_pkey PRIMARY KEY(id)
> );
> SELECT AddGeometryColumn ( 'forestal', 'centroide', 22185, 'POINT', 2);
> SELECT AddGeometryColumn ( 'forestal', 'geometria', 22185, 'MULTIPOLYGON',
> 2);
>
> INSERT INTO forestal (tipo,densidad,centroide) VALUES('PMT',85.2,ST_GeomFromText('POINT(5500060
> 6500180)',22185));
> INSERT INTO forestal (tipo,densidad,centroide) VALUES('PCRTA',52.42,ST_GeomFromText('POINT(5500080
> 6500270)',22185));
> INSERT INTO forestal (tipo,densidad,centroide) VALUES('CA',42.26,ST_GeomFromText('POINT(5500120
> 6500100)',22185));
> INSERT INTO forestal (tipo,densidad,centroide) VALUES('AMJ',86.6,ST_GeomFromText('POINT(5500210
> 6500190)',22185));
> INSERT INTO forestal (tipo,densidad,centroide) VALUES('ODM',8.6,ST_GeomFromText('POINT(5500220
> 6500070)',22185));
> INSERT INTO forestal (tipo,densidad,centroide) VALUES('EMDF',27.8,ST_GeomFromText('POINT(5500220
> 6500110)',22185));
> INSERT INTO forestal (tipo,densidad,centroide) VALUES('DHRT',36.27,ST_GeomFromText('POINT(5500220
> 6500280)',22185));
> INSERT INTO forestal (tipo,densidad,centroide) VALUES('FM',73.24,ST_GeomFromText('POINT(5500230
> 6500260)',22185));
>
> CREATE TABLE forestal_ln(
> id serial NOT NULL,
> CONSTRAINT forestal_ln_pkey PRIMARY KEY(id)
> );
> SELECT AddGeometryColumn ( 'forestal_ln', 'geometria', 22185,
> 'LINESTRING', 2);
>
> INSERT INTO forestal_ln (geometria) VALUES(ST_GeomFromText('LINESTRING(5500030
> 6500230,5500030 6500050)',22185));
> INSERT INTO forestal_ln (geometria) VALUES(ST_GeomFromText('LINESTRING(5500030
> 6500290,5500030 6500250)',22185));
> INSERT INTO forestal_ln (geometria) VALUES(ST_GeomFromText('LINESTRING(5500030
> 6500050,5500160 6500050)',22185));
> INSERT INTO forestal_ln (geometria) VALUES(ST_GeomFromText('LINESTRING(5500160
> 6500050,5500280 6500050)',22185));
> INSERT INTO forestal_ln (geometria) VALUES(ST_GeomFromText('LINESTRING(5500280
> 6500090,5500280 6500050)',22185));
> INSERT INTO forestal_ln (geometria) VALUES(ST_GeomFromText('LINESTRING(5500280
> 6500090,5500280 6500140)',22185));
> INSERT INTO forestal_ln (geometria) VALUES(ST_GeomFromText('LINESTRING(5500280
> 6500150,5500280 6500140)',22185));
> INSERT INTO forestal_ln (geometria) VALUES(ST_GeomFromText('LINESTRING(5500280
> 6500150,5500280 6500220)',22185));
> INSERT INTO forestal_ln (geometria) VALUES(ST_GeomFromText('LINESTRING(5500190
> 6500220,5500280 6500220)',22185));
> INSERT INTO forestal_ln (geometria) VALUES(ST_GeomFromText('LINESTRING(5500190
> 6500230,5500100 6500230)',22185));
> INSERT INTO forestal_ln (geometria) VALUES(ST_GeomFromText('LINESTRING(5500190
> 6500220,5500190 6500230)',22185));
> INSERT INTO forestal_ln (geometria) VALUES(ST_GeomFromText('LINESTRING(5500100
> 6500230,5500030 6500230)',22185));
> INSERT INTO forestal_ln (geometria) VALUES(ST_GeomFromText('LINESTRING(5500030
> 6500250,5500120 6500250)',22185));
> INSERT INTO forestal_ln (geometria) VALUES(ST_GeomFromText('LINESTRING(5500180
> 6500250,5500120 6500250)',22185));
> INSERT INTO forestal_ln (geometria) VALUES(ST_GeomFromText('LINESTRING(5500180
> 6500250,5500280 6500250)',22185));
> INSERT INTO forestal_ln (geometria) VALUES(ST_GeomFromText('LINESTRING(5500280
> 6500250,5500280 6500270)',22185));
> INSERT INTO forestal_ln (geometria) VALUES(ST_GeomFromText('LINESTRING(5500280
> 6500290,5500280 6500270)',22185));
> INSERT INTO forestal_ln (geometria) VALUES(ST_GeomFromText('LINESTRING(5500280
> 6500290,5500090 6500290)',22185));
> INSERT INTO forestal_ln (geometria) VALUES(ST_GeomFromText('LINESTRING(5500030
> 6500290,5500090 6500290)',22185));
>
> INSERT INTO forestal_ln (geometria) VALUES(ST_GeomFromText('LINESTRING(5500090
> 6500290,5500180 6500270)',22185));
> INSERT INTO forestal_ln (geometria) VALUES(ST_GeomFromText('LINESTRING(5500180
> 6500270,5500220 6500270)',22185));
> INSERT INTO forestal_ln (geometria) VALUES(ST_GeomFromText('LINESTRING(5500220
> 6500270,5500120 6500250)',22185));
> INSERT INTO forestal_ln (geometria) VALUES(ST_GeomFromText('LINESTRING(5500220
> 6500270,5500280 6500270)',22185));
>
> INSERT INTO forestal_ln (geometria) VALUES(ST_GeomFromText('LINESTRING(5500100
> 6500230,5500100 6500170)',22185));
> INSERT INTO forestal_ln (geometria) VALUES(ST_GeomFromText('LINESTRING(5500100
> 6500170,5500030 6500050)',22185));
> INSERT INTO forestal_ln (geometria) VALUES(ST_GeomFromText('LINESTRING(5500100
> 6500170,5500160 6500170)',22185));
> INSERT INTO forestal_ln (geometria) VALUES(ST_GeomFromText('LINESTRING(5500160
> 6500170,5500160 6500150)',22185));
> INSERT INTO forestal_ln (geometria) VALUES(ST_GeomFromText('LINESTRING(5500160
> 6500150,5500160 6500140)',22185));
> INSERT INTO forestal_ln (geometria) VALUES(ST_GeomFromText('LINESTRING(5500160
> 6500140,5500280 6500140)',22185));
> INSERT INTO forestal_ln (geometria) VALUES(ST_GeomFromText('LINESTRING(5500160
> 6500140,5500160 6500090)',22185));
> INSERT INTO forestal_ln (geometria) VALUES(ST_GeomFromText('LINESTRING(5500160
> 6500090,5500280 6500090)',22185));
> INSERT INTO forestal_ln (geometria) VALUES(ST_GeomFromText('LINESTRING(5500160
> 6500090,5500160 6500050)',22185));
>
>
>

--
José Mercedes Venegas Acevedo
cel Mov RPC 964185205

PHP Documentation Group Member (Spanish)

Attachment Content-Type Size
image/png 35.3 KB
unknown_filename text/plain 157 bytes

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Felipe Guzman 2017-06-27 13:42:13 Re: Consulta base de datos espacial
Previous Message Néstor Ramires 2017-06-27 12:27:52 Consulta base de datos espacial