osmc:Convenções/Identificadores inteligentes: mudanças entre as edições

De Documentação
m (→‎ID de via: add algoritmos)
Sem resumo de edição
Linha 10: Linha 10:


==ID de via==
==ID de via==
O ID de via pode ser apenas interno ao banco de dados, para controle de segmentos sem compromisso com o controle OSM.


Jeito mais simples de identificar uma via rural através de seus atributos:
No caso de '''vias rurais''', entretanto, é importante que seja legível ao humano, pois vias carecem de identificação pública consensual. Seria uma forma "oficial temporária" para se identificar as vias em seu contexto".
 
Passo a passo para se identificar uma via através de seus atributos de localização:


# Confirmar por algoritmo topologico e rótulos OSM quais os segmentos que compõe a via. Se for descontínua (ex. rua quebrada por uma praça) pode receber dois IDs, um para cada parte contínua. <br/>PS: avaliar se vale criar ''relations'' para unir segmentos dispersos no OSM. As rotas (ex. BR-116) não devem ser confundidas com vias e seu nome/administração dentro do município.  
# Confirmar por algoritmo topologico e rótulos OSM quais os segmentos que compõe a via. Se for descontínua (ex. rua quebrada por uma praça) pode receber dois IDs, um para cada parte contínua. <br/>PS: avaliar se vale criar ''relations'' para unir segmentos dispersos no OSM. As rotas (ex. BR-116) não devem ser confundidas com vias e seu nome/administração dentro do município.  
Linha 30: Linha 33:


PS2: depois da escolha do número de dígitos, pode-se recorrer à "estabilidade", conferindo as células que cobrem maior extensão de via, e descartando aquelas com extensão muito baixa.
PS2: depois da escolha do número de dígitos, pode-se recorrer à "estabilidade", conferindo as células que cobrem maior extensão de via, e descartando aquelas com extensão muito baixa.
PS3: reparar que o ID interno pode ser mais preciso (tipicamente 5m)  do que o ID público, para reduzir o risco de ambiguidade futura, ao acrescentarem-se vias vizinhas. Há um balanço entre discernimento (distinguir das vias vizinhas) e estabilidade (a via pode ser editada e mudar ligeiramente de posição).


Questões da dinâmica do crescimento urbano:
Questões da dinâmica do crescimento urbano:
Linha 44: Linha 50:
== ID de lote ==
== ID de lote ==
Todo lote é um polígono, que pode ser referenciado por um ponto qualquer no seu interior, tipicamente um ponto central, por ter baixa incerteza (nas proximidades das bordas a incerteza é maior). Outra forma de minimizar incerteza é adotar centros ou pontos sobre construções (building), em geral mais estáveis que o terreno livre (mais sujeito a desmembramentos e aquisição de vizinhos).
Todo lote é um polígono, que pode ser referenciado por um ponto qualquer no seu interior, tipicamente um ponto central, por ter baixa incerteza (nas proximidades das bordas a incerteza é maior). Outra forma de minimizar incerteza é adotar centros ou pontos sobre construções (building), em geral mais estáveis que o terreno livre (mais sujeito a desmembramentos e aquisição de vizinhos).
Passo a passo para se identificar um lote através de seus atributos de localização:
# Usar [https://postgis.net/docs/ST_PointOnSurface.html ST_PointOnSurface], confirmando se dentro de certo <code>ST_Buffer(ST_GeometricMedian)</code>. Se não for, usar um buffer maior (com diâmetro característico da área) e sua interseção com o polígono, para garantir estabilidade do ponto. O processo, a princípio, dá conta de lotes com buracos, mas não é garantido em lotes descontínuos &mdash; ideal nesse caso identificar cada parte como lote independente.
# Obter o AFAcode desse ponto, com precisão de 1m.
Em geral o lote já foi modelado por uma [[subpavimentação]] de resolução compatível com a área ocupada (tipicamente cobrindo 90% ou mais da área do lote), viabilizando a escolha de um ID público mais curto e estável. Neste caso temos outra metodologia,  mais simples e eficiente:
# Obter comprimento mínimo do conjunto dos  IDs de cobertura interna do lote. 
# Se houver apenas um, usar ele; se houver mais de um, eleger o mais próximo do ponto ST_GeometricMedian.
Outras situações:
* '''Desmembramento''' de lote: a parte que ficou com o centroide do ID herda o ID, a outra será submetida ao algoritmo de batismo.
* '''União''' de lotes: preserva-se o de maior área, ou, em caso de áreas iguais, o de ID mais baixo.
* '''Deslocamento''' de lote: seja por falha no mapeamento (ex. revisão de divisas) ou natural (ex. terremoto), o ID pode ser mantido se ainda tiver seu centroide e 75% (ou mais) de sua área dentro do lote revisado. Há que se estudar o impacto disso, mas ideal rebatizar com resolução maior para manter-se como célula interior. <br/> Caso o centroide caia fora porém com mais um dígito caia dentro, vale avaliar política de cadastro que aceite essa mudança de precisão.
=== Algoritmos ===
Algoritmo de '''recuperação do lote a partir do ID''', antes de ser batizado: o ponto central da célula ID serve de seletor de polígino.
Algoritmo de '''eleição do ID''': segue a metodologia descrita acima, sem necessidade de supervisão humana, exceto em caso (em geral inválido) de multipolígono.


== ID de endereço ==
== ID de endereço ==
Todo endereço horizontal é relativo a um lote e a uma via. Deve ser representado por um ponto interior ao lote e próximo da via.
Todo endereço horizontal é relativo a um lote e a uma via. Deve ser representado por um ponto interior ao lote e próximo da via.
Existem duas situações para o batismo do endereço com seu ID:
# Quando são exigidos previamente os lotes dos endereços: o identificador de lote é usado como referência, e os endereços são meros contadores. Isso dá liberdade para se reposicionar pontos de endereço, por exemplo para as proximidades da rua.
# Quando os lotes são desconhecidos ou um ID posicional é exigido: ...
A situação-1 é recomendada no caso de meio urbano.


==ID de rio==
==ID de rio==
Hidrovias, córregos e rios podem receber IDs, de forma análoga às vias...
Hidrovias, córregos e rios podem receber IDs, de forma análoga às vias...

Edição das 08h03min de 17 de outubro de 2023

Identificadores inteligentes, de vias, lotes, etc. possuem as seguintes características:

  • auto-confirmáveis: dado o ID o usuário consegue confirmar no mapa a sua veracidade.
  • parcial ou totalmente independentes de uma autoridade central: não precisa ser o ID oficial, basta que seja um ID válido de 64 bits e que tenha uma expressão simples para o usuário humano.

Outros elementos da metodologia:

  • os IDs públicos (ou nomes oficial e praticado) são associados depois.
  • a primeira associação é com ID do objeto OSM, depois a partir do OSM confirma-se o ID (nomenclatura) oficial.
  • a dinâmica natural (ex. terremotos deslocam objetos originais dos pontos) e urbana (novas vias, desmembramento de terrenos, etc.) é gerenciável e estável.

ID de via

O ID de via pode ser apenas interno ao banco de dados, para controle de segmentos sem compromisso com o controle OSM.

No caso de vias rurais, entretanto, é importante que seja legível ao humano, pois vias carecem de identificação pública consensual. Seria uma forma "oficial temporária" para se identificar as vias em seu contexto".

Passo a passo para se identificar uma via através de seus atributos de localização:

  1. Confirmar por algoritmo topologico e rótulos OSM quais os segmentos que compõe a via. Se for descontínua (ex. rua quebrada por uma praça) pode receber dois IDs, um para cada parte contínua.
    PS: avaliar se vale criar relations para unir segmentos dispersos no OSM. As rotas (ex. BR-116) não devem ser confundidas com vias e seu nome/administração dentro do município.
  2. Escolher um ponto sobre a via como referência de ponto único, mais central e livre de cruzamentos. De preferência com alguma referência geográfica.
  3. Obter o AFAcode desse ponto
  4. Entre as diversas vias assim identificadas, estabelecer o número de dígitos mínimos para que sejam distintas no escopo do município.

Exemplo: no ponto sobre via, BR-SP-SaoPaulo~28338U e suas vizinhanças (Marsilac).

IdVia-ex1-marsilac.png
  • Passos 1 e 2: 28338U, 2832FR (F. Belmonte), 283260Y (sobre a ponte), 281QZBC (Carvoeiro), 2832PBP, 2839LZG (travessa M.M.Araújo)
  • Passo 3: 28338, 2832F, 28326, 281QZ, 2832P, 2839L;
    ou 2833, 2832F, 28326, 281Q, 2832P, 2839.
    (em Geo URI geo:idvia:BR-SP-SPA-28338, geo:idvia:BR-SP-SPA-2832F, etc.)

Ou seja, com código do município mais 25 bits (5 dígitos) conseguimos definir identificadores de via rural que levam a um ponto dentro da via.

PS1: pode-se reiniciar a escolha de pontos quando muito próximos entre si, gerando códigos muito longos.

IdVia-ex2-marsilac.png


Por exemplo as células 28380 e 281RZ estão sobre a mesma via, porém apresentam prefixos mais distintos, descartamos 281RZ por ser parecido com o pequeno vizinho 281RX. Vias curtas possuem preferência por terem menos opções.

PS2: depois da escolha do número de dígitos, pode-se recorrer à "estabilidade", conferindo as células que cobrem maior extensão de via, e descartando aquelas com extensão muito baixa.

PS3: reparar que o ID interno pode ser mais preciso (tipicamente 5m) do que o ID público, para reduzir o risco de ambiguidade futura, ao acrescentarem-se vias vizinhas. Há um balanço entre discernimento (distinguir das vias vizinhas) e estabilidade (a via pode ser editada e mudar ligeiramente de posição).


Questões da dinâmica do crescimento urbano:

  • o segmento utilizado no batismo pode vir a ser abandonado (trecho de via sem manutenção), demandando refazer a identificação em caso de ambiguidade com vizinhança.
  • um mesmo segmento de via pode vir a ser particionado por nomes oficiais distintos. Nesse caso o ID existente fica para um dos nomes e o outro requer novo ponto para referência do seu ID.

Algoritmos

Algoritmo de recuperação do segmento a partir do ID: o polígono da célula serve de seletor de segmento. Se por acaso retornar mais de uma via, calcular aquela que possui maior extensão na interseção com a célula.

Algoritmo de eleição do ID: segue a metodologia descrita acima, requer supervisão humana em diversos casos, para maior estabilidade do ID, ou para simples definição de escopo (ex. bairro).

ID de lote

Todo lote é um polígono, que pode ser referenciado por um ponto qualquer no seu interior, tipicamente um ponto central, por ter baixa incerteza (nas proximidades das bordas a incerteza é maior). Outra forma de minimizar incerteza é adotar centros ou pontos sobre construções (building), em geral mais estáveis que o terreno livre (mais sujeito a desmembramentos e aquisição de vizinhos).

Passo a passo para se identificar um lote através de seus atributos de localização:

  1. Usar ST_PointOnSurface, confirmando se dentro de certo ST_Buffer(ST_GeometricMedian). Se não for, usar um buffer maior (com diâmetro característico da área) e sua interseção com o polígono, para garantir estabilidade do ponto. O processo, a princípio, dá conta de lotes com buracos, mas não é garantido em lotes descontínuos — ideal nesse caso identificar cada parte como lote independente.
  2. Obter o AFAcode desse ponto, com precisão de 1m.

Em geral o lote já foi modelado por uma subpavimentação de resolução compatível com a área ocupada (tipicamente cobrindo 90% ou mais da área do lote), viabilizando a escolha de um ID público mais curto e estável. Neste caso temos outra metodologia, mais simples e eficiente:

  1. Obter comprimento mínimo do conjunto dos IDs de cobertura interna do lote.
  2. Se houver apenas um, usar ele; se houver mais de um, eleger o mais próximo do ponto ST_GeometricMedian.

Outras situações:

  • Desmembramento de lote: a parte que ficou com o centroide do ID herda o ID, a outra será submetida ao algoritmo de batismo.
  • União de lotes: preserva-se o de maior área, ou, em caso de áreas iguais, o de ID mais baixo.
  • Deslocamento de lote: seja por falha no mapeamento (ex. revisão de divisas) ou natural (ex. terremoto), o ID pode ser mantido se ainda tiver seu centroide e 75% (ou mais) de sua área dentro do lote revisado. Há que se estudar o impacto disso, mas ideal rebatizar com resolução maior para manter-se como célula interior.
    Caso o centroide caia fora porém com mais um dígito caia dentro, vale avaliar política de cadastro que aceite essa mudança de precisão.

Algoritmos

Algoritmo de recuperação do lote a partir do ID, antes de ser batizado: o ponto central da célula ID serve de seletor de polígino.

Algoritmo de eleição do ID: segue a metodologia descrita acima, sem necessidade de supervisão humana, exceto em caso (em geral inválido) de multipolígono.

ID de endereço

Todo endereço horizontal é relativo a um lote e a uma via. Deve ser representado por um ponto interior ao lote e próximo da via.

Existem duas situações para o batismo do endereço com seu ID:

  1. Quando são exigidos previamente os lotes dos endereços: o identificador de lote é usado como referência, e os endereços são meros contadores. Isso dá liberdade para se reposicionar pontos de endereço, por exemplo para as proximidades da rua.
  1. Quando os lotes são desconhecidos ou um ID posicional é exigido: ...

A situação-1 é recomendada no caso de meio urbano.

ID de rio

Hidrovias, córregos e rios podem receber IDs, de forma análoga às vias...