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