Discussão:PlusCodes

De Documentação

Diagrama utilizado

Exemplo original de https://github.com/google/open-location-code/issues/497

Usar https://mermaid.live/edit com o seguinte script

flowchart TD
  A[Enter a PlusCode]
  B[Split it into 2 parts]
  E[Resolves the name to an<br/>OLC-prefix through a <b><i>black box</i></b>]
  style E fill:black,stroke-width:2px,color:#fff,stroke-dasharray: 5 5
  D[Concatenate prefix+sufix]

  A -->|598P+Q36 Itagui, Antioquia, Colombia| B
  E -->|olc_prefix=67R6| D
  B -->|name=Itagui, Antioquia, Colombia| E
  B -->|olc_suffix=598P+Q36| D
  D -->|olc=67R6598P+Q36| F[Decode OLC to<br/>Latitude-Longitude]

Traduzido para portugues:

Usar https://mermaid.live/edit com o seguinte script

flowchart TD
  A[Entrar com um PlusCode]
  B[Quebrar em 2 partes]
  E[Resolver o nome em um prefixo<br/> OLC através de uma <b><i>caixa preta</i></b>]
  style E fill:black,stroke-width:2px,color:#fff,stroke-dasharray: 5 5
  D[Concatenar prefixo com sufixo]

  A -->|598P+Q3 Itagui, Antioquia, Colombia| B
  E -->|olc_prefixo=67R6| D
  B -->|nome=Itagui, Antioquia, Colombia| E
  B -->|olc_sufixo=598P+Q3| D
  D -->|olc=67R6598P+Q3| F[Decodificar OLC<br/>para Latitude-Longitude]

MELHOR e usando exemplo de Altamira, ver https://stackoverflow.com/q/58489357/287948

flowchart TD
    A[Enter a Plus Code]
    B[Split it into 2 parts]
    E[Find the<br/> reference-point of the <i>name</i><br/> in a black box]
    D["Convert to OLC by<br/><i>recoverNearest</i>(<i>shortCode</i>,<i>refPoint</i>)"]
    F[Convert OLC to LatLong point]

    A -->|<i>type</i>: GR7R+3C Ararunaquara - Altamira, PA, Brasil| B
    B -->|<i>name</i>=Ararunaquara - Altamira, PA, Brasil| E
    B -->|<i>shortCode</i>=GR7R+3C| D
    E-->|<i>refPoint</i>=Ararunaquara's LatLong| D
    D-->|<i>olc</i>=6889GR7R+3C| F
    style E fill:#000,color:#FFF

Para CV-Praia

flowchart TD
    A[Enter a Plus Code]
    B[Split it into 2 parts]
    E[Find the<br/> reference-point of the <i>name</i><br/> in a black box]
    D["Convert to OLC by<br/><i>recoverNearest</i>(<i>shortCode</i>,<i>refPoint</i>)"]
    F[Convert OLC to LatLong point]

    A -->|<i>type</i>: WF8Q+WF, Cape Verde, Praia| B
    B -->|<i>name</i>=Cape Verde, Praia| E
    B -->|<i>shortCode</i>=WF8Q+WF| D
    E-->|<i>refPoint</i>=Praia's LatLong| D
    D-->|<i>olc</i>=796RWF8Q+WF| F
    style E fill:#000,color:#FFF

Aplicando transparência na caixa-preta

Conforme o padrão OLC para encurtamento de códigos, descrito em https://github.com/google/open-location-code/blob/main/docs/specification.md#short-codes cada nome deveria ser associado a uma coordenada de ponto, por exemplo o centroide da cidade. Dado um ponto de interesse a codificar ou decodificar para OLC:

  • encode: o sistema de resolução de nomes confere a distância do ponto aos candidatos e usa o mais próximo, desde que dentro da distância válida.
  • decode: usa o prefixo eleito para decodificação. Conforme a posição do ponto de referência (ex. centroide da cidade) pode ser mais de um prefixo.