[Portugal] QGIS ou PostGIS - pontos sobrepostos

Jorge Gustavo Rocha jgr di.uminho.pt
Quinta-Feira, 31 de Outubro de 2013 - 10:43:13 PDT


Olá Pedro,

Em 31-10-2013 16:06, Pedro escreveu:
> Olá,
>
> Vou ter numa tabela de uma BD PostGIS um conjunto relativamente grande de
> dados (pontos e e poligonos) que vão todos cair na mesma coordenada (em
> princípio será no centroide dos concelhos).
> Imagino que serão na ordem das centenas de pontos e polígonos.
>
> O objectivo depois será corrigir a posição de cada um deles individualmente,
> colocando-os na coordenada correcta.
>
> Não sei bem se é possível fazer o que pretendo ou qual será a abordagem
> correcta.
> Se o devo/posso fazer a nível do QGIS ou se devo/posso fazer no PostGIS.
> Assim pergunto-vos:
>
> - No QGIS, conhecem alguma forma de seleccionar todos esses pontos e
> dispersá-los por forma a que deixem de estar sobrepostos ?
>

Parece-me que o mais fácil é recorreres a uma script PostgreSQL.

Fazes um agregate de todos os pontos que têm as mesmas coordenadas, e 
contas a acorrência de repetições. Depois fazes um ciclo para esse 
número de repetições, fazendo um update em que somas um delta a cada 
ponto (em x e em y). O delta pode ser random()*100, e provavelmente 
todos os pontos passam a ficar em posições distintas, dentro de uma bbox 
de 100x100m.

Sugestão: Começa por fazer um siples update à tabela, com o delta que 
vem do random()*100. Pode ser que só com uma única instrução consigas o 
que queres.

Se calculares um delta a partir de uma fórmula (por exemplo, da 
espiral), ficar com uma distribuição de pontos eventualmente mais 
legível. Fiz um teste, que não sistematizei. Usei o raio a variar de 1 
em 1m e o ângulo a variar de .1 em .1 radianos.
rs = 1:1:100;
thetas = .1:.1:10;
xs = x + rs .* cos(thetas);
ys = y + rs .* sin(thetas);
Anexo o resultado de 100 pontos dispersos em forma de espiral.

É melhor usares coordenadas métricas em que 1 é 1 metro :-) Se usares 
coordeandas geográficas, cuidado com as unidades a fazer as contas.

> - No PostGIS estou a imaginar, poderia ter alguma função que adicione a
> todos os pontos, por exemplo, 1/2 metro em relação ao ponto anterior ? Se
> sim sabem qual a documentação que devo investigar?
>

http://www.postgresql.org/docs/9.3/static/plpgsql.html

> Obrigado,
> Pedro
>

Dá-lhe!

Abraço,

Jorge

>
>
>
>
> --
> View this message in context: http://osgeo-org.1560.x6.nabble.com/QGIS-ou-PostGIS-pontos-sobrepostos-tp5086866.html
> Sent from the OSGeo Portuguese Local Chapter mailing list archive at Nabble.com.
> _______________________________________________
> Portugal mailing list
> Portugal  lists.osgeo.org
> http://lists.osgeo.org/mailman/listinfo/portugal
>


-- 
Jorge Gustavo Rocha
Departamento de Informática
Universidade do Minho
4710-057 Braga
Tel: +351 253604480
Fax: +351 253604471
Móvel: +351 910333888
skype: nabocudnosor
-------------- próxima parte ----------
A non-text attachment was scrubbed...
Name: Captura de ecra de 2013-10-31 17:05:42.png
Type: image/png
Size: 98308 bytes
Desc: não disponível
URL: <http://lists.osgeo.org/pipermail/portugal/attachments/20131031/ab8db2ef/attachment-0001.png>
-------------- próxima parte ----------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 3205 bytes
Desc: Assinatura cifrada S/MIME
URL: <http://lists.osgeo.org/pipermail/portugal/attachments/20131031/ab8db2ef/attachment-0001.bin>


More information about the Portugal mailing list