<div dir="ltr"><div>Boa tarde,</div><div><br></div><div>Como não existe ou não está disponível nenhuma cobertura com os topónimos (lugares) portugueses, produzi uma a partir da informação do censos 2011 (<a href="http://mapas.ine.pt/download/index2011.phtml">http://mapas.ine.pt/download/index2011.phtml</a>). Adicionei a população residente em cada lugar.</div><div><br></div><div>Quem estiver interessado, pode descarregar aqui:</div><div><a href="https://www.dropbox.com/s/3t3xejnos7haf4y/toponimia_v02_26052015.kml?dl=0">https://www.dropbox.com/s/3t3xejnos7haf4y/toponimia_v02_26052015.kml?dl=0</a><br></div><div><br></div><div>Esta informação é produzida numa base de dados PostgreSQL com PostGIS. Para quem estiver interessado, coloco o código no final do mail. Quem detectar erros ou tiver uma forma mais "limpa" de obter o mesmo resultado, agradeço que partilhe.</div><div><br></div><div>Cumprimentos,</div><div>António</div><div><br></div><div>-------------------------</div><div>drop table if exists uniao1;</div><div>create table uniao1 as</div><div>SELECT</div><div>   substring(brgi2011."BGRI11" from 1 for 6) as dicofre,</div><div>   ladministrativos.brgi2011."LUG11DESIG" as lugar,</div><div>   SUM(censos2011.c2011definitivos.n_individuos_resident) as populacao,</div><div>   st_union(ladministrativos.brgi2011.the_geom) as the_geom</div><div>FROM </div><div>  censos2011.c2011definitivos, </div><div>  ladministrativos.brgi2011</div><div>WHERE</div><div>  ladministrativos.brgi2011."BGRI11" = censos2011.c2011definitivos.geo_cod AND</div><div>  ladministrativos.brgi2011."LUG11DESIG" != 'Residual'</div><div>--AND (substring(brgi2011."BGRI11" from 1 for 4) = '1418' or substring(brgi2011."BGRI11" from 1 for 4) = '1411')</div><div>GROUP BY</div><div><span class="" style="white-space:pre">    </span>dicofre, lugar</div><div>ORDER BY populacao DESC;</div><div><br></div><div>alter table uniao1</div><div>add column unico serial;</div><div>------------------------------------------------------------------------------</div><div><br></div><div>drop table if exists pre_set1;</div><div>create table pre_set1 as</div><div>SELECT a.lugar, a.unico, a.the_geom, sum(a.populacao) as populacao FROM uniao1 AS a, </div><div>uniao1 AS b</div><div>WHERE a.lugar = b.lugar</div><div>AND ST_Touches(a.the_geom, b.the_geom)</div><div>GROUP BY a.lugar, a.unico, a.the_geom</div><div>order by lugar;</div><div><br></div><div>drop table if exists set1;</div><div>create table set1 as</div><div>select pre_set1.lugar, st_union(pre_set1.the_geom) as the_geom, sum(pre_set1.populacao) as populacao</div><div>from pre_set1</div><div>group by pre_set1.lugar;</div><div><br></div><div>drop table if exists set2;</div><div>create table set2 as</div><div>SELECT a.lugar, a.the_geom, sum(a.populacao) as populacao</div><div>FROM uniao1 AS a</div><div>where a.unico not in</div><div>(select unico from pre_set1)</div><div>group by lugar, unico, the_geom;</div><div><br></div><div>drop table if exists toponimia_v02_26052015;</div><div>create table toponimia_v02_26052015 as</div><div>select * from set1</div><div>union</div><div>select * from set2;</div><div>-------------------------</div><div>--campo com centroids</div><div><br></div><div>alter table toponimia_v02_26052015</div><div>add column the_geom_centros geometry;</div><div><br></div><div>update toponimia_v02_26052015</div><div>set the_geom_centros = st_pointonsurface(the_geom);</div><div><br></div></div>