[QGIS-pt] Automatização da Rotação de Elementos Pontuais‏

Fred Lehodey lehodey gmail.com
Quinta-Feira, 5 de Fevereiro de 2015 - 07:12:35 PST


Boa tarde,
viva o "spatial sql" !!!  ;)

Isto é uma ideia a quente e deverá precisar testes e mais dedicação...
Atenção, estou a considerar aqui linhas com apenas 2 pontos !!



--- a criar dados de test...
-- 1 tabela de linhas
create table myline (
id integer,
line geometry(linestring,3763)
);

-- 1 table de pontos:
create table mypts (
id integer,
angulo float,
pt geometry(point,3763)
);

-- inserir 2 lines (para os 2 exemplos)
insert into myline values  (1,st_setsrid(ST_MakeLine(ST_MakePoint(0,0),
ST_MakePoint(5,5)),3763));
insert into myline values  (2,st_setsrid(ST_MakeLine(ST_MakePoint(10,10),
ST_MakePoint(10,20)),3763));


-- inserir um ponto en cima de cada linha... um em cima de um vertex, outro
no meio da linha
insert into mypts values  (1,null,st_setsrid(ST_MakePoint(0,0),3763));
insert into mypts values  (2,null,st_setsrid(ST_MakePoint(10,15),3763));



---------------- A função para actualizar tabela de pontos com o ângulo:
-- o ponto_a é o ponto que cruza a linha mais próximo
-- o ponto_b é o segundo mais próximo

-- com estes 2 , posso ter o azimuth.
-- se for em cima de um vertex, adiciona 90 º ao azimuth senão fica o
azimuth entre os 2 pontos.
-- enfim,  actualiza-se o campo do ângulo da tabela de pontos....


Do $$
declare
r record;
ang float;
dist float;
Begin

for r in select * from mypts
loop

with
ponto_a as
(select mypts.id,st_distance(ptl,pt) dist,ptl,st_distance(ptl,pt) from
(select (st_dumppoints(line)).geom ptl from myline,mypts where
st_intersects(line,pt) and mypts.id = r.id) as foo,mypts order by
st_distance(ptl,pt) limit 1)
,
ponto_b as
(select ptl,st_distance(ptl,pt) from (select (st_dumppoints(line)).geom ptl
from myline,mypts where st_intersects(line,pt)  and mypts.id = r.id) as
foo,mypts order by st_distance(ptl,pt) limit 1 offset 1)

select into dist,ang
ponto_a.dist,degrees(st_azimuth(ponto_a.ptl,ponto_b.ptl)) from
ponto_a,ponto_b;

if dist = 0 then ang = ang + 90; end if;

update mypts set angulo = ang where id = r.id;

end loop;

end
$$;
------------------------------------------------------------------------




Abr,
Fred















2015-02-05 12:23 GMT+00:00 Carlos Jacinto <carlosjacinto at hotmail.com>:

>
> Olá a todos.
>
> Versões: PostgreSQL 9.3.5, compiled by Visual C++ build 1600, 32-bit e
> Qgis 2.6.1 Brighton.
>
> Área de trabalho: gestão de redes de água.
>
> Questão: Automatizar o processo da rotação de pontos de acordo com a linha
> base / nó final .
>
> Actualmente a rotação de elementos pontuais é realizada em Qgis com
> recurso à ferramenta Rodar Simbolos de Pontos. ( As tabelas possuiem campo
> de rotação ).
>
> Pretendia implementar uma função ou constrangimento topológico que
> forçasse a rotação de elementos pontuais aquadando da sua digitalização.
>
> Aguardo feedback da comunidade e agradeço desde já o apoio de alguêm, que
> como eu já se tenha confrontado com esta questão.
>
> Cumprimentos
>
>
>
>
>
>
>
>
>
>
> _______________________________________________
> QGIS-pt mailing list
> QGIS-pt at lists.osgeo.org
> http://lists.osgeo.org/cgi-bin/mailman/listinfo/qgis-pt
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/qgis-pt/attachments/20150205/ef6465f2/attachment-0001.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: Elemento_1_Rotacao.jpg
Type: image/jpeg
Size: 12345 bytes
Desc: not available
URL: <http://lists.osgeo.org/pipermail/qgis-pt/attachments/20150205/ef6465f2/attachment-0004.jpg>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: Elemento_2_Rotacao.jpg
Type: image/jpeg
Size: 16634 bytes
Desc: not available
URL: <http://lists.osgeo.org/pipermail/qgis-pt/attachments/20150205/ef6465f2/attachment-0005.jpg>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: Elemento_2.jpg
Type: image/jpeg
Size: 15523 bytes
Desc: not available
URL: <http://lists.osgeo.org/pipermail/qgis-pt/attachments/20150205/ef6465f2/attachment-0006.jpg>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: Elemento_1.jpg
Type: image/jpeg
Size: 11050 bytes
Desc: not available
URL: <http://lists.osgeo.org/pipermail/qgis-pt/attachments/20150205/ef6465f2/attachment-0007.jpg>


More information about the QGIS-pt mailing list