Re: consulta sobre postgis para encontrar un punto concreto

From: Mario Sileone <msileone(at)gmail(dot)com>
To: josego <josego(at)simgia(dot)com>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: consulta sobre postgis para encontrar un punto concreto
Date: 2011-08-25 18:37:26
Message-ID: 4E569666.5040306@gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

El 25/08/2011 14:55, josego escribió:
> El 25/08/11 10:48, Mario Sileone escribió:
>> El 25/08/2011 11:33, josego escribió:
>>> Hola a todos.
>>> Tengo una base de datos espacial. En una tabla tengo el nombre de calle,
>>> la geometría y su numero de inicio y su fin.
>>> Ejemplo la calle SICILIA tiene una geomertia con un numero de inicio 100
>>> hasta 200.
>>>
>>> En la tabla existen nueve filas sobre la calle SICILIA con su geometría
>>> especifica pero con números diferentes. Osea cada cien números. Lo que
>>> quisiera hacer una consulta que si yo introduzco un numero a la calle
>>> SICILIA por ejemplo 150 me ubique mas o menos en ese punto.
>>>
>>> *Lo que hice es esta sentencia -->
>>> SELECT
>>> X(startPoint(calle.the_geom)) as coordenada_inicio_X,
>>> Y(startPoint(calle.the_geom)) as coordenada_inicio_Y,
>>> calle.gid
>>> FROM
>>> calles_polyline AS calle
>>> WHERE
>>> calle.calle = 'SICILIA' and ((calle.desde <= 100) and (calle.hasta >=
>>> 199));*
>>>
>>>
>>> Pero me coloca el punto inicial que comienza la calle con su numero. Yo
>>> quisiera que me coloque el punto exacto. como podría hacer??.
>>>
>>> muchas gracias, jose
>>
>> Mira: hay un par de funciones muy interesantes para lo que estás
>> buscando.
>>
>> una de ellas y la que más puede resultarte es
>> ST_Line_Interpolate_Point(geometría, posicion), que toma el largo de
>> la geometría como una razón de 0 a 1, y si le pasas en posición el
>> parámetro 0,5 te devolverá un punto en la mitad de la geometría.
>>
>> Si esto lo pasas a una diferencia entre la altura final y la inicial,
>> sabiendo que tu geometría tiene una razón entre 0 y 1, creo que tienes
>> la solución.
>>
>> Saludos.
>>
>>
> Muchas gracias.. Estuve viendo la función y creo que me va ayudar lo que
> necesito. Ahora el problema que tengo que el tipo de dato es un
> multilinestring y no un linestring. No se como podría resolver eso. Si
> alguien tiene alguna idea. Estoy buscando y no encuentro anda..
> desde ya muchas gracias
> saludos, jose
>

Puedes obtener de cuantas Linestring se compone con
ST_NumGeometries(geometria) y luego extrayendo cada una con
ST_GeometryN(geometría, orden). De esta manera puedes obtener cada una
de las geometrías que contiene tu multilinestring.
De ahi en mas o bien armas una sola geometría con todos los elementos o
generas los registros correspondientes para cada geometría, eso ya queda
a tu criterio y necesidad.

Saludos.

--
Mario Sileone

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Alvaro Herrera 2011-08-25 19:16:28 Re: Significado de 'Cursor', para los que lo desconocen.
Previous Message Miguel Angel Hernandez Moreno 2011-08-25 18:17:30 Re: Regresa el Numero de filas afectadas en un funcion