osmc:Convenções/Identificadores inteligentes: mudanças entre as edições
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. | |||
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 — 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:
- 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. - 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.
- Obter o AFAcode desse ponto
- 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).
- 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 URIgeo: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.
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:
- 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. - 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.
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:
- 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
Hidrovias, córregos e rios podem receber IDs, de forma análoga às vias...