Obrigado a todos pelas ajudas.

Qualquer outra questão, por favor avisem.


Acho que está OK agora, esquematizada a questão dos overlappings em 2D. 
Resolveu usando layer=* (p/ casos de compartilhando ways) ou multipolígono (p/ 
casos de um dentro sem compartilhar ways ou 2 outer grudados no mesmo nível) . 
Uma vez que para a maioria destes de importação, se não houveracesso a mais 
informações, não tem como fazer 3D ( building:levels=*, building:part=*, etc).


Não penso em colocar agora os prédios que seja possível para 3D 
(bulding:levels, etc), depende muita coisa de survey, muitos possivelmente não 
dá pra ver em imagens atuais. Muitos prédios talvez possa com o Mapillary. Mas 
deixar pra outros se divertirem.

A estrutura básica 2D com as formas já fica assim montada, sem overlapping. 
Também ajuda para outros que quiserem adicionar POIs e mais dados, encontrando 
os prédios certos. Quem quiser, adiciona as tags 3D e altera.

Alguns fiz em 3D, para ver se dava certo.  Bem conhecidos como a casa de 
Cultura, ou que dá para ver na imagem (como a Galeria Malcon; pra isto serve a 
distorção lateral de imagens, pra contar número de andares). Testei as tags 
para 3D e tá validando tudo OK no 2D. Ainda tou vendo se fica OK no 3D.

O validador só acusa ainda 1 única coisa: "relation type unknown" (mas na 
verdade tá certo com o type=building).


Sigo preparando a importação de prédios para os outros bairros, com o esquema 
resolvido para casos de overlappings com layer (acho que uns 5% do total, com o 
que tenho visto).

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Paralelamente, pensei numa coisa, se seria possível desenvolver um script 
(programa externo ou plugin para JOSM) para:


-Resolução de overlapping com criação automática de layers, com 2 objetivos:

a)-resolver problema de polígonos de building sobrepostos na mesma área (mesmo 
terreno), adicionando layer nos sobrepostos;

b)-com isto ao mesmo tempo fica esquematizada uma estrutura básica para 
adicionar relação 3D (futuramente só procurando os polígonos com tags layer=* + 
building=* por building:part=* building:levels=*).


Acham que seria útil? Não entendo muito de linguagens de programação, e menos 
ainda das dos últimos 25 anos para cá.


Acho que poderia ser "mais ou menos" assim uma lógica (a testar) para resolver 
overlapping para 2D:

-analisa uma massa de polígonos;

-encontra e retorna os que estão em overlapping (os grudados em um lado não 
acusa, não dá problema);

-destes, encontra e retorna a maior área (o "outline", a base, ou projeção 
total das demais áreas);

-das demais áreas que estão sobre o outline, analisa:

-se estão dentro, então cria multipolígono;

-analisa as áreas destes multipolígonos e dos demais polígonos sobrepostos ao 
outline, então cria "layer=anterior+1" (limite=5) para os sucessivamente 
menores que o outline, a base (supondo comum que se há volumes sobrepostos, os 
de menor área estão sucessivamente mais acima -  a verificar se vale para todos 
os casos). O maior que não tem outra subdivisão grudada é sempre o outline. Se 
tiver outro apenas grudado, é outro prédio, podendo ser no mesmo terreno. Mas 
não analisa junto, não é problema de overlapping.

Não resolve todos os casos. Se tiver mais de 5 layers (só vi o da Galeria 
MAlcon), teria que separar para usar building:levels.


(acho que não serviria para criar building:levels automático, pois tem que 
avaliar o número de pavimentos com imagem, survey ou dados externos)


Se fosse para preparar para 3D (mas o script não pode adivinhar os 
building:levels, teria que fornecer), acho que poderia ser "mais ou menos 
assim" a lógica:

-encontra e retorna os que estão em overlapping (os grudados em um lado não 
acusa, não dá problema);
-cria com estes relação type=building
-para a área maior, adiciona:
role=outline
building=*
-para as demais áreas sucessivamente menores, adiciona:
role=part
building:part=*
building:levels=*
building:min_level=*
heigth=*
min_height=*
(NOTA: o building=* do outline não é usado para o 3D se tiver outros com 
building:part=*; para fazer a base, tem que repetir a do outline como "part", 
sem nós duplicados, e adicionar as tags semelhantes às demais, sem 
building:min_level=*, para que se torne a primeira)
Acho que seria mais ou menos assim.


- - - - - - - - - - - - - - - -

Sérgio / user:smaprs
_______________________________________________
Talk-br mailing list
Talk-br@openstreetmap.org
https://lists.openstreetmap.org/listinfo/talk-br

Responder a