Estou tentando replicar esse processo do ArcGIS no PostGIS: http://blogs.esri.com/esri/arcgis/2012/11/13/spaghetti_and_meatballs/ . Isso descreve como dividir os pontos em buffer em polígonos com base em suas interseções, contando o número de camadas e atribuindo isso aos polígonos para classificá-los. Estou usando-o para criar um mapa de densidade de pontos aproximados com vetores, e os resultados foram surpreendentemente bons para meus dados no ArcGIS. No entanto, estou lutando para encontrar algo viável no PostGIS, onde preciso para produzir camadas dinâmicas de densidade de pontos para um mapa da web.
No ArcGIS, eu simplesmente executei a ferramenta Intersect na minha camada de pontos em buffer para criar as formas necessárias.
No PostGIS, executei esta consulta:
CREATE TABLE buffer_table AS
SELECT a.gid AS gid, ST_Buffer(a.geo,.003) AS geo
FROM public.pointTable a;
CREATE TABLE intersections AS
SELECT a.gid AS gid_a, b.gid AS gid_b, ST_Intersection(a.geo,b.geo) AS geo
FROM public.pointTable a, public.pointTable b
WHERE ST_Intersects(a.geo, b.geo) AND a.gid < b.gid;
DELETE FROM intersections WHERE id_a = id_b;
A saída parece praticamente idêntica à saída do ArcGIS, exceto que não está dividindo os polígonos na mesma extensão que é necessária para um mapa de densidade significativo. Aqui estão as capturas de tela do que quero dizer:
O ArcGIS está à esquerda e o PostGIS está à direita. É um pouco difícil dizer, mas a imagem do ArcGIS mostra o polígono 'interior' criado onde os três buffers se cruzam. A saída do PostGIS, por outro lado, não cria esse polígono interno e mantém seus componentes intactos. Isso torna impossível fornecer uma classificação apenas para a área interna com 3 camadas uma sobre a outra, em comparação com apenas 1 para as partes externas.
Alguém sabe de alguma função PostGIS para quebrar o polígono na medida em que eu preciso? Como alternativa, alguém conhece uma maneira melhor de produzir um mapa de densidade de pontos com vetores no PostGIS?