Boa tarde, 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 ( http://mapas.ine.pt/download/index2011.phtml). Adicionei a população residente em cada lugar.
Quem estiver interessado, pode descarregar aqui: https://www.dropbox.com/s/3t3xejnos7haf4y/toponimia_v02_26052015.kml?dl=0 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. Cumprimentos, António ------------------------- drop table if exists uniao1; create table uniao1 as SELECT substring(brgi2011."BGRI11" from 1 for 6) as dicofre, ladministrativos.brgi2011."LUG11DESIG" as lugar, SUM(censos2011.c2011definitivos.n_individuos_resident) as populacao, st_union(ladministrativos.brgi2011.the_geom) as the_geom FROM censos2011.c2011definitivos, ladministrativos.brgi2011 WHERE ladministrativos.brgi2011."BGRI11" = censos2011.c2011definitivos.geo_cod AND ladministrativos.brgi2011."LUG11DESIG" != 'Residual' --AND (substring(brgi2011."BGRI11" from 1 for 4) = '1418' or substring(brgi2011."BGRI11" from 1 for 4) = '1411') GROUP BY dicofre, lugar ORDER BY populacao DESC; alter table uniao1 add column unico serial; ------------------------------------------------------------------------------ drop table if exists pre_set1; create table pre_set1 as SELECT a.lugar, a.unico, a.the_geom, sum(a.populacao) as populacao FROM uniao1 AS a, uniao1 AS b WHERE a.lugar = b.lugar AND ST_Touches(a.the_geom, b.the_geom) GROUP BY a.lugar, a.unico, a.the_geom order by lugar; drop table if exists set1; create table set1 as select pre_set1.lugar, st_union(pre_set1.the_geom) as the_geom, sum(pre_set1.populacao) as populacao from pre_set1 group by pre_set1.lugar; drop table if exists set2; create table set2 as SELECT a.lugar, a.the_geom, sum(a.populacao) as populacao FROM uniao1 AS a where a.unico not in (select unico from pre_set1) group by lugar, unico, the_geom; drop table if exists toponimia_v02_26052015; create table toponimia_v02_26052015 as select * from set1 union select * from set2; ------------------------- --campo com centroids alter table toponimia_v02_26052015 add column the_geom_centros geometry; update toponimia_v02_26052015 set the_geom_centros = st_pointonsurface(the_geom);
_______________________________________________ Portugal mailing list [email protected] http://lists.osgeo.org/mailman/listinfo/portugal
