<html>
<head>
<meta content="text/html; charset=ISO-8859-1"
http-equiv="Content-Type">
</head>
<body bgcolor="#FFFFFF" text="#000000">
Pessoal, <br>
<br>
Escrevo só para apresentar resultados. Testei em vários shapes e
funciona muito bem. Em casos com cerca de 2500 features só à volta
de cinco erros, em situações muito específicos, algumas <i>esquesitisses</i>
de ruas :-)... Mas com uma querie pré-definida são logo detectados e
corrigidos...<br>
O script ficou porreiro por isso muito obrigado a todos os que
contribuíram, especialmente ao João Carvalho e ao Diego Moreira...
Consigo poupar muito tempo de trabalho assim.<br>
Queria acrescentar mais a opção das paralelas mas acho que não vai
dar. O essencial também está feito.<br>
Se alguém precisar de fazer algo parecido e precisar de ajuda que
diga.<br>
<br>
Abraço<br>
<br>
Obrigado<br>
<pre class="moz-signature" cols="72">Com os melhores cumprimentos,
</pre>
<br>
Em 19-08-2011 13:13, Diego Moreira escreveu:
<blockquote
cite="mid:CADUiXM+HxvyjoTHUu-F0UfixuvtXteJ77eJzpFFJA18S7QyGdw@mail.gmail.com"
type="cite">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,<br>
Agora eu acho que resolve<br>
<br>
<br>
"UPDATE passeios SET rua =<br>
(SELECT FID_ FROM eixos_rua ORDER BY ST_Distance(<b>ST_Line_Interpolate_Point(eixos_rua.wkb_geometry,
0.5)</b> , passeios.wkb_geometry) ASC LIMIT 1)"<br>
<br>
<br>
Diego Moreira Carvalho<br>
<br>
<br>
<br>
<br>
Em 19 de agosto de 2011 08:54, Pedro Costa <<a
moz-do-not-send="true" href="mailto:pedrocostaarma@sapo.pt">pedrocostaarma@sapo.pt</a>>
escreveu:<br>
> Exactamente, neste caso estou a mudar a unha, mas sabes
alguma maneira mais<br>
> rápida?<br>
><br>
> Obrigado<br>
><br>
><br>
><br>
> On 19-08-2011 12:50, Diego Moreira wrote:<br>
><br>
> Provavelmente os mal atribuídos estao relacionados a ruas que
tem somente<br>
> dois ou tres pontos.... da para resolver...<br>
><br>
> Em 19/08/2011 06:47, "Pedro Costa" <<a
moz-do-not-send="true" href="mailto:pedrocostaarma@sapo.pt">pedrocostaarma@sapo.pt</a>>
escreveu:<br>
>> Caro Diego,<br>
>><br>
>> Funcionou... Obrigado pela ajuda.<br>
>> Apesar de tudo alguns passeios ainda são mal atribuídos,
mas melhorou<br>
>> bastante...<br>
>><br>
>> Com os melhores cumprimentos,<br>
>><br>
>> Pedro Costa<br>
>><br>
>><br>
>><br>
>><br>
>><br>
>> Em 18-08-2011 20:04, Diego Moreira escreveu:<br>
>>> Acho que vai dar certo, o pg numa divisão do tipo 3/2
retorna 1,<br>
>>> retornaria 1.5 se fosse 3.0/2...<br>
>>> Então... acho que vai funcionar.<br>
>>><br>
>>> Diego Moreira Carvalho<br>
>>><br>
>>><br>
>>><br>
>>> Em 18 de agosto de 2011 16:00, Diego Moreira <<a
moz-do-not-send="true" href="mailto:moreira.geo@gmail.com">moreira.geo@gmail.com</a><br>
>>> <mailto:<a moz-do-not-send="true"
href="mailto:moreira.geo@gmail.com">moreira.geo@gmail.com</a>>>
escreveu:<br>
>>><br>
>>> NumPoints(geometry)<br>
>>><br>
>>> Encontra e Retorna o número de pontos na primeira
linha na<br>
>>> geometria. Retorna NULO se não há nenhuma linha na
geometria.<br>
>>><br>
>>> PointN(geometry,integer)<br>
>>><br>
>>> Retorna o enésimo ponto na primeira linha na
geometria.<br>
>>> Retorna NULO se não há nenhuma linha na geometria.<br>
>>><br>
>>> "UPDATE passeios SET rua =<br>
>>> (SELECT FID_ FROM eixos_rua ORDER BY<br>
>>> ST_Distance(PointN(eixos_rua.wkb_geometry,<br>
>>> NumPoints(eixos_rua.wkb_geometry)/2) ,
passeios.wkb_geometry) ASC<br>
>>> LIMIT 1)"<br>
>>><br>
>>><br>
>>> Sera que isso dá certo? caso não, o problema é que a
função PointN<br>
>>> espera receber um inteiro, mas o resultado da divisão
por 2<br>
>>> retorna um numero tipo 3.5<br>
>>><br>
>>> Diego Moreira Carvalho<br>
>>><br>
>>><br>
>>><br>
>>> Em 18 de agosto de 2011 15:49, Pedro Costa <<a
moz-do-not-send="true" href="mailto:pedrocostaarma@sapo.pt">pedrocostaarma@sapo.pt</a><br>
>>> <mailto:<a moz-do-not-send="true"
href="mailto:pedrocostaarma@sapo.pt">pedrocostaarma@sapo.pt</a>>>
escreveu:<br>
>>><br>
>>> É exactamente por isso Diego. Mas sabes como faço
para<br>
>>> determinar a contagem de pontos em sql?<br>
>>><br>
>>> Obrigado<br>
>>><br>
>>><br>
>>><br>
>>><br>
>>> On 18-08-2011 19:40, Diego Moreira wrote:<br>
>>>> Boa tarde Pedrom<br>
>>>><br>
>>>> Acredito que tal problema ocorre porque as vezes
a<br>
>>>> estremidade da rua adjacente a que deveria ser
escolhida é<br>
>>>> mais próxima. Acho que o problema pode ser
resolvido da<br>
>>>> seguinte forma:<br>
>>>><br>
>>>> Pego o ponto n/2 do eixo da rua: se a rua tem dez
pontos pego<br>
>>>> o 5 ponto, e executo aquela mesma sql, só que com
este ponto,<br>
>>>> e não com a geometria(eixos_rua.wkb_geometry).<br>
>>>><br>
>>>> Acho que deve resolver.<br>
>>>><br>
>>>> Espero ter ajudado.<br>
>>>><br>
>>>> Diego Moreira Carvalho<br>
>>>><br>
>>>><br>
>>>><br>
>>>> Em 18 de agosto de 2011 11:39, Pedro Costa<br>
>>>> <<a moz-do-not-send="true"
href="mailto:pedrocostaarma@sapo.pt">pedrocostaarma@sapo.pt</a>
<mailto:<a moz-do-not-send="true"
href="mailto:pedrocostaarma@sapo.pt">pedrocostaarma@sapo.pt</a>>><br>
>>>> escreveu:<br>
>>>><br>
>>>> Pessoal é o seguinte, eu tenho duas tabelas no
pgadmin<br>
>>>> (passeios e ruas), e quero que o campo rua dos
passeios<br>
>>>> seja prenchido pela rua correspondente. Isto pode<br>
>>>> fazer-se em função da distância, como o João
Carvalho me<br>
>>>> ajudou:<br>
>>>><br>
>>>> "UPDATE passeios SET rua = (SELECT FID_ FROM
eixos_rua<br>
>>>> ORDER BY<br>
>>>>
ST_Distance(eixos_rua.wkb_geometry,passeios.wkb_geometry)<br>
>>>> ASC LIMIT 1)"<br>
>>>><br>
>>>> No entanto em muitos casos a rua escolhida não é
a<br>
>>>> correspondente, esta query não é muito eficiente
neste<br>
>>>> caso. Alguém sabe uma maneira diferente em que
seja<br>
>>>> escolhida a rua que está mais próxima "em toda a
sua<br>
>>>> extensão"?<br>
>>>> Podem ver a imagem em anexo para perceberem
melhor, as<br>
>>>> linhas verdes são os passeios e as vermelhas os
eixos de<br>
>>>> rua. Alguém tem alguma ideia que possa ajudar?<br>
>>>><br>
>>>> Obrigado<br>
>>>><br>
>>>> _______________________________________________<br>
>>>> Portugal mailing list<br>
>>>> <a moz-do-not-send="true"
href="mailto:Portugal@lists.osgeo.org">Portugal@lists.osgeo.org</a>
<mailto:<a moz-do-not-send="true"
href="mailto:Portugal@lists.osgeo.org">Portugal@lists.osgeo.org</a>><br>
>>>> <a moz-do-not-send="true"
href="http://lists.osgeo.org/mailman/listinfo/portugal">http://lists.osgeo.org/mailman/listinfo/portugal</a><br>
>>>><br>
>>>><br>
>>>><br>
>>>><br>
>>>> _______________________________________________<br>
>>>> Portugal mailing list<br>
>>>> <a moz-do-not-send="true"
href="mailto:Portugal@lists.osgeo.org">Portugal@lists.osgeo.org</a>
<mailto:<a moz-do-not-send="true"
href="mailto:Portugal@lists.osgeo.org">Portugal@lists.osgeo.org</a>><br>
>>>> <a moz-do-not-send="true"
href="http://lists.osgeo.org/mailman/listinfo/portugal">http://lists.osgeo.org/mailman/listinfo/portugal</a><br>
>>><br>
>>><br>
>>> _______________________________________________<br>
>>> Portugal mailing list<br>
>>> <a moz-do-not-send="true"
href="mailto:Portugal@lists.osgeo.org">Portugal@lists.osgeo.org</a>
<mailto:<a moz-do-not-send="true"
href="mailto:Portugal@lists.osgeo.org">Portugal@lists.osgeo.org</a>><br>
>>> <a moz-do-not-send="true"
href="http://lists.osgeo.org/mailman/listinfo/portugal">http://lists.osgeo.org/mailman/listinfo/portugal</a><br>
>>><br>
>>><br>
>>><br>
>>><br>
>>><br>
>>> _______________________________________________<br>
>>> Portugal mailing list<br>
>>> <a moz-do-not-send="true"
href="mailto:Portugal@lists.osgeo.org">Portugal@lists.osgeo.org</a><br>
>>> <a moz-do-not-send="true"
href="http://lists.osgeo.org/mailman/listinfo/portugal">http://lists.osgeo.org/mailman/listinfo/portugal</a><br>
><br>
><br>
> _______________________________________________<br>
> Portugal mailing list<br>
> <a moz-do-not-send="true"
href="mailto:Portugal@lists.osgeo.org">Portugal@lists.osgeo.org</a><br>
> <a moz-do-not-send="true"
href="http://lists.osgeo.org/mailman/listinfo/portugal">http://lists.osgeo.org/mailman/listinfo/portugal</a><br>
><br>
><br>
> _______________________________________________<br>
> Portugal mailing list<br>
> <a moz-do-not-send="true"
href="mailto:Portugal@lists.osgeo.org">Portugal@lists.osgeo.org</a><br>
> <a moz-do-not-send="true"
href="http://lists.osgeo.org/mailman/listinfo/portugal">http://lists.osgeo.org/mailman/listinfo/portugal</a><br>
><br>
><br>
<br>
<br>
<fieldset class="mimeAttachmentHeader"></fieldset>
<br>
<pre wrap="">_______________________________________________
Portugal mailing list
<a class="moz-txt-link-abbreviated" href="mailto:Portugal@lists.osgeo.org">Portugal@lists.osgeo.org</a>
<a class="moz-txt-link-freetext" href="http://lists.osgeo.org/mailman/listinfo/portugal">http://lists.osgeo.org/mailman/listinfo/portugal</a>
</pre>
</blockquote>
</body>
</html>