Re: [Portugal] expressão sql para preencher tabela com rua mais próxima

Diego Moreira moreira.geo at gmail.com
Thu Aug 18 15:04:32 EDT 2011


Acho que vai dar certo, o pg numa divisão do tipo 3/2 retorna 1, retornaria
1.5 se fosse 3.0/2...
Então... acho que vai funcionar.

Diego Moreira Carvalho



Em 18 de agosto de 2011 16:00, Diego Moreira <moreira.geo  gmail.com>escreveu:

> NumPoints(geometry)
>
> Encontra e Retorna o número de pontos na primeira linha na geometria.
> Retorna NULO se não há nenhuma linha na geometria.
> PointN(geometry,integer)
>
> Retorna o enésimo ponto na primeira linha na geometria. Retorna NULO se não
> há nenhuma linha na geometria.
> "UPDATE passeios SET rua = (SELECT FID_ FROM eixos_rua ORDER BY
> ST_Distance(PointN(eixos_rua.wkb_geometry, NumPoints(eixos_rua.wkb_
> geometry)/2) , passeios.wkb_geometry) ASC LIMIT 1)"
> Sera que isso dá certo? caso não, o problema é que a função PointN espera
> receber um inteiro, mas o resultado da divisão por 2 retorna um numero tipo
> 3.5
>
> Diego Moreira Carvalho
>
>
>
> Em 18 de agosto de 2011 15:49, Pedro Costa <pedrocostaarma  sapo.pt>escreveu:
>
>  É exactamente por isso Diego. Mas sabes como faço para determinar a
>> contagem de pontos em sql?
>>
>> Obrigado
>>
>>
>>
>>
>> On 18-08-2011 19:40, Diego Moreira wrote:
>>
>> Boa tarde Pedrom
>>
>> Acredito que tal problema ocorre porque as vezes a estremidade da rua
>> adjacente a que deveria ser escolhida é mais próxima. Acho que o problema
>> pode ser resolvido da seguinte forma:
>>
>> Pego o ponto n/2 do eixo da rua: se a rua tem dez pontos pego o 5 ponto, e
>> executo aquela mesma sql, só que com este ponto, e não com a
>> geometria(eixos_rua.wkb_geometry).
>>
>> Acho que deve resolver.
>>
>> Espero ter ajudado.
>>
>> Diego Moreira Carvalho
>>
>>
>>
>> Em 18 de agosto de 2011 11:39, Pedro Costa <pedrocostaarma  sapo.pt>escreveu:
>>
>>> Pessoal é o seguinte, eu tenho duas tabelas no pgadmin (passeios e ruas),
>>> e quero que o campo rua dos passeios seja prenchido pela rua correspondente.
>>> Isto pode fazer-se em função da distância, como o João Carvalho me ajudou:
>>>
>>> "UPDATE passeios SET rua = (SELECT FID_ FROM eixos_rua ORDER BY
>>> ST_Distance(eixos_rua.wkb_geometry,passeios.wkb_geometry) ASC LIMIT 1)"
>>>
>>>  No entanto em muitos casos a rua escolhida não é a correspondente, esta
>>> query não é muito eficiente neste caso. Alguém sabe uma maneira diferente em
>>> que seja escolhida a rua que está mais próxima "em toda a sua extensão"?
>>>  Podem ver a imagem em anexo para perceberem melhor, as linhas verdes são
>>> os passeios e as vermelhas os eixos de rua. Alguém tem alguma ideia que
>>> possa ajudar?
>>>
>>> Obrigado
>>>
>>> _______________________________________________
>>> Portugal mailing list
>>> Portugal  lists.osgeo.org
>>> http://lists.osgeo.org/mailman/listinfo/portugal
>>>
>>>
>>
>>
>> _______________________________________________
>> Portugal mailing listPortugal  lists.osgeo.orghttp://lists.osgeo.org/mailman/listinfo/portugal
>>
>>
>>
>> _______________________________________________
>> Portugal mailing list
>> Portugal  lists.osgeo.org
>> http://lists.osgeo.org/mailman/listinfo/portugal
>>
>>
>
-------------- próxima parte ----------
Um anexo em HTML foi limpo...
URL: http://lists.osgeo.org/pipermail/portugal/attachments/20110818/5347738b/attachment-0001.html


More information about the Portugal mailing list