Validação topológica de poligonos
1º Passo: Saber quantos poligonos existem na BD OSM em Portugal
SQL querie
Select count (p.*) FROM planet_osm_polygon p
Numero total de polígonos - 30656
2º Passo: Criar nova tabela com os poligonos que contem erros topológicos
Regras stadartizadas (OGC SFSQL), utilizadas pelo PostGis:
1 - Área do polígono deve estar fechada;
2 - Poligonos que definem espaços vazios devem estar dentro dos limites exteriores do poligono exterior;
3 - Não deve haver intersecções entre os polígonos;
4 - Os polígonos não se podem tocar excepto nos pontos;
Tipo de erro detectado
1 - Erro: "Interior is disconnected"
2 - Erro: "Hole lies outside shell"
3 - Erro: "Self-intersection"
4 - Erro: "Ring Self-intersection"
SQL querie
CREATE TABLE validacao_poligonos AS SELECT p.name, p.amenity, p.landuse, ST_IsValidReason(p.way), p.osm_id, way FROM planet_osm_polygon p WHERE NOT ST_IsValid(p.way);
Foi criada uma tabela onde se pode observar os polígonos com erros topológicos. Nesta tabela pode-se ainda observar o tipo de erro de cada polígono e ainda saber se esses polígonos têm "name", "amenity" ou "landuse". Dos 30656 polígonos existentes na BD, foram detectados 102 erros topológicos. Apesar de terem sido detectados os quatro tipos de erros supracitados, o erro "Self-intersection" ocorre com mais frequência.
3º Passo: Criação de link para a correcção dos polígonos com erros topológicos.
SQL querie
CREATE TABLE validacao_poligonos_id_link AS SELECT v.name, v.amenity, v.landuse,'http://www.openstreetmap.org/browse/way/'|| '' || v.osm_id AS "Link", v.osm_id FROM validacao_poligonos v
Com a utilização do "link" criado é possível aceder ao poligono e efectuar a devida correcção.