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 . <jvenegasp...@gmail.com> escribió: > Hola Nestor > buen dia > > El 27 de junio de 2017, 7:27, Néstor Ramires <nrami...@rosario.gov.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@postgresql.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>*