Re: Consulta base de datos espacial

From: Néstor Ramires <nramire1(at)rosario(dot)gov(dot)ar>
To:
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 14:41:04
Message-ID: op.y2hxqqdjocut9v@car-800
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Por lo que estuve leyendo, la primer parte tiene que ver con las funciones:
ST_ForceClosed, ST_IsClosed, ST_IsRing

Mientras que la segunda (creo) anda por estas funciones:
ST_MakePolygon, ST_BuildArea y ST_Polygonize

Sólo que aun no encontré la manera de aplicarlo a mis datos.

En Tue, 27 Jun 2017 10:42:13 -0300, Felipe Guzman <felipeguzmanv(at)gmail(dot)com> escribió:

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

-
Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda(at)postgresql(dot)org)
Para cambiar tu suscripcin:
http://www.postgresql.org/mailpref/pgsql-es-ayuda

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Pedro Castillo Larios 2017-06-29 22:47:01 Columna Incremental en Tablas particionadas
Previous Message Felipe Guzman 2017-06-27 13:42:13 Re: Consulta base de datos espacial