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)
···
2015-02-05 12:23 GMT+00:00 Carlos Jacinto <carlosjacinto@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@lists.osgeo.org
http://lists.osgeo.org/cgi-bin/mailman/listinfo/qgis-pt