Eu tenho a seguinte camada usando SRID 27700 no postgis:
É todas as regiões administrativas do Reino Unido e (como você pode ver no agrupamento de cores) cada uma delas possui um campo de texto especificando o município em que se encontram.
O que eu gostaria de fazer é criar polígonos maiores do condado dos menores em um determinado condado, de modo que, na figura acima, todos os polígonos de cor verde-azulado formariam um polígono grande a partir do anel externo que contém todos os polis do cor, como todos os roxos, marrons, rosa, cinza etc, todos devem formar um polígono.
Eu já tentei o seguinte:
insert into parishesmerged (geometry)
select astext(multi(ST_Union(the_geom))) as the_geom from parishes
group by county_name
Mas ele continua gerando geometrias quebradas, que então eu tenho grandes problemas para processar ainda mais.
Estou tentando fazer um mapa mais simples no nível do condado com as principais áreas de produção de.
Quaisquer soluções não precisam estar no Postgis também, eu tenho a pilha OS4Geo completa instalada, a versão mais recente do QGis e mais utilitários do que posso usar.
As únicas coisas que não tenho são os meninos grandes como ArcGis (embora eu possa ter um Old Mapinfo por aí em algum lugar)
Para o registro, o conjunto de dados que estou tentando criar é acompanhar um livro GIS que estou escrevendo, destinado a programadores .NET que desejam escrever aplicativos GIS usando .NET
Depois de tentar as sugestões abaixo, a que melhor funcionou foi a solução 'Paul Ramseys'.
Agora tenho um bom arquivo simplificado de municípios e distritos, que é simples o suficiente para o meu livro, mas complexo o suficiente para permitir que eu demonstre algumas SQL geoespaciais interessantes.
Embora a solução de Paul tenha sido a que funcionou para mim, eu também recorri às outras respostas para simplificar o mapa de polígonos e reduzir ainda mais a complexidade.
Porém, quando observei isso, enquanto ST_Collect é realmente mais rápido que ST_Union, corrida por corrida também foi a principal responsável por geometrias quebradas. Meu palpite é que o aumento de velocidade é obtido à custa de menos precisão na função principal.
astext(multi())
peça? Estou saindo do que vejo em outros exemplos de dissolução do PostGIS.Respostas:
ST_Union funcionaria, mas seu trabalho de linha quase certamente não está limpo. Portanto, os limites de suas coisinhas não se encaixam perfeitamente. Você pode encaixá-los suavemente em uma grade para tentar aumentar as chances de os vértices se alinharem, mas aposto que você ainda terá alguns casos que não funcionam. Eles estarão além da tolerância ou, mais provavelmente, haverá lugares onde os vértices não estão emparelhados, portanto, há uma linha de um lado e um vértice do outro.
Se você possui o PostGIS 2.0, construir uma estrutura de topologia com tolerância pode levá-lo à resposta que está procurando, se tiver alguma sorte.
fonte
Incorrect parameter count in the call to native function 'ST_Union'
e não sei se é uma limitação do mysql.Você diz que precisa "... formar um polígono grande a partir do anel externo único que contém todos os polígonos ...". O ST_ExteriorRing faz isso,
Você pode usar ST_Union (), como sugerido, ou testar com ST_Collection ().
OBSERVAÇÕES: para evitar pequenos saltos ou "geometrias quebradas", você pode usar st_convexhull e / ou ST_Simplify para cada geom,
e verifique suas geometrias,
fonte
A função ST_Collect é uma função "agregada" na terminologia do PostgreSQL
"
SELECT ST_Collect(GEOM) FROM GEOMTABLE GROUP BY ATTRCOLUMN
" retornará uma GEOMETRYCOLLECTION separada para cada valor distinto de ATTRCOLUMhttp://postgis.net/docs/ST_Collect.html
Nota: ST_Collect é muito mais rápido que ST_Union
fonte
Estou supondo, com base na sua pergunta, que você está usando o produto Boundary-Line da Ordnance Survey. Se for esse o caso, ele já inclui um conjunto de dados no nível do condado, portanto não há necessidade de tentar gerá-lo você mesmo a partir de áreas paroquiais de nível inferior.
Se você não estiver usando a Linha de Fronteira, recomendo que faça isso de graça sob a licença OS OpenData e tenha um nível de Condado como um arquivo de forma que você pode carregar diretamente no PostGIS.
fonte