Re: Consulta base de datos espacial

From: Felipe Guzman <felipeguzmanv(at)gmail(dot)com>
To: "jvenegasperu (dot)" <jvenegasperu(at)gmail(dot)com>
Cc: Néstor Ramires <nramire1(at)rosario(dot)gov(dot)ar>, "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:42:13
Message-ID: CAEJZrzZmdbsMPNGE52sHkFzxO3xuBuVe5tiML6zou=3hv9SsgQ@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Buenos dias a todos!
Nestor y si calculas la distancia que existe entre la centroide de la linea
y el punto, le aplicas un nivel de "tolerancia" que va a hacer la distancia
mínima entre el centroide de la linea y el punto que tienes marcado.

El 27 de junio de 2017, 9:35, jvenegasperu . <jvenegasperu(at)gmail(dot)com>
escribió:

> 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.
>

Según tengo entendido, no toma parte de lo sobrante de la intersección al
momento de crear los poligonos.

> 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)
>
> -
> Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda(at)postgresql(dot)org
> )
> Para cambiar tu suscripción:
> http://www.postgresql.org/mailpref/pgsql-es-ayuda
>
>

--
Atentamente

*
Felipe Guzmán Vargas*
*Ingeniero en Informatica - Consultor TI*
*Co - Founder *
*www.desarrollamostuidea.cl <http://www.desarrollamostuidea.cl>*

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Néstor Ramires 2017-06-27 14:41:04 Re: Consulta base de datos espacial
Previous Message jvenegasperu . 2017-06-27 13:35:30 Re: Consulta base de datos espacial