O método ST_Line_Interpolate_Point retorna um ponto ao longo de uma linha dado uma porcentagem do comprimento desta linha.... se passarmos sempre 0.5, teremos sempre o meio da linha... independente do numero de vértices que ela tem, Agora eu acho que resolve
"UPDATE passeios SET rua = (SELECT FID_ FROM eixos_rua ORDER BY ST_Distance(*ST_Line_Interpolate_Point(eixos_rua.wkb_geometry, 0.5)* , passeios.wkb_geometry) ASC LIMIT 1)" Diego Moreira Carvalho Em 19 de agosto de 2011 08:54, Pedro Costa <[email protected]> escreveu: > Exactamente, neste caso estou a mudar a unha, mas sabes alguma maneira mais > rápida? > > Obrigado > > > > On 19-08-2011 12:50, Diego Moreira wrote: > > Provavelmente os mal atribuídos estao relacionados a ruas que tem somente > dois ou tres pontos.... da para resolver... > > Em 19/08/2011 06:47, "Pedro Costa" <[email protected]> escreveu: >> Caro Diego, >> >> Funcionou... Obrigado pela ajuda. >> Apesar de tudo alguns passeios ainda são mal atribuídos, mas melhorou >> bastante... >> >> Com os melhores cumprimentos, >> >> Pedro Costa >> >> >> >> >> >> Em 18-08-2011 20:04, Diego Moreira escreveu: >>> 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 <[email protected] >>> <mailto:[email protected]>> 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 <[email protected] >>> <mailto:[email protected]>> 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 >>>> <[email protected] <mailto:[email protected]>> >>>> 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 >>>> [email protected] <mailto:[email protected]> >>>> http://lists.osgeo.org/mailman/listinfo/portugal >>>> >>>> >>>> >>>> >>>> _______________________________________________ >>>> Portugal mailing list >>>> [email protected] <mailto:[email protected]> >>>> http://lists.osgeo.org/mailman/listinfo/portugal >>> >>> >>> _______________________________________________ >>> Portugal mailing list >>> [email protected] <mailto:[email protected]> >>> http://lists.osgeo.org/mailman/listinfo/portugal >>> >>> >>> >>> >>> >>> _______________________________________________ >>> Portugal mailing list >>> [email protected] >>> http://lists.osgeo.org/mailman/listinfo/portugal > > > _______________________________________________ > Portugal mailing list > [email protected] > http://lists.osgeo.org/mailman/listinfo/portugal > > > _______________________________________________ > Portugal mailing list > [email protected] > http://lists.osgeo.org/mailman/listinfo/portugal > >
_______________________________________________ Portugal mailing list [email protected] http://lists.osgeo.org/mailman/listinfo/portugal
