6.1 OPÇÃO 1: Fórmula Excel/Calc para POINT/MULTIPOINT (Automática) 🌟#

Use esta opção quando você tem coordenadas de km_inicial e km_final e deseja gerar automaticamente geometrias POINT ou MULTIPOINT.

Quando usar:

  • ✅ Você tem coordenadas dos pontos inicial e final de cada serviço
  • ✅ Deseja processo rápido e automático
  • ✅ Serviços pontuais ou com dois pontos de referência

O que a fórmula faz:

  • Se km_inicial = km_final (coordenadas iguais) → Gera POINT (serviço pontual)
  • Se km_inicial ≠ km_final (coordenadas diferentes) → Gera MULTIPOINT (dois pontos de referência)

Passo A: Adicionar Coluna WKT com Fórmula#

  1. Certifique-se de que você já preencheu as 4 colunas de coordenadas (conforme Seção 6.3.D):

    • lon_inicio, lat_inicio, lon_fim, lat_fim
  2. Crie uma nova coluna chamada wkt (após as colunas de coordenadas)

  3. Escolha e copie a fórmula adequada para seu software:


📊 Fórmulas por Software#

MICROSOFT EXCEL / ONLYOFFICE SPREADSHEET (Português):

=SE(E(lon_inicio=lon_fim;lat_inicio=lat_fim);"POINT("&lon_inicio&" "&lat_inicio&")";"MULTIPOINT("&lon_inicio&" "&lat_inicio&", "&lon_fim&" "&lat_fim&")")

MICROSOFT EXCEL / ONLYOFFICE SPREADSHEET (Inglês):

=IF(AND(lon_inicio=lon_fim,lat_inicio=lat_fim),"POINT("&lon_inicio&" "&lat_inicio&")","MULTIPOINT("&lon_inicio&" "&lat_inicio&", "&lon_fim&" "&lat_fim&")")

LIBREOFFICE CALC (Português):

=SE(E(lon_inicio=lon_fim;lat_inicio=lat_fim);"POINT("&lon_inicio&" "&lat_inicio&")";"MULTIPOINT("&lon_inicio&" "&lat_inicio&", "&lon_fim&" "&lat_fim&")")

LIBREOFFICE CALC (Inglês):

=IF(AND(lon_inicio=lon_fim,lat_inicio=lat_fim),"POINT("&lon_inicio&" "&lat_inicio&")","MULTIPOINT("&lon_inicio&" "&lat_inicio&", "&lon_fim&" "&lat_fim&")")

  1. Cole a fórmula na primeira célula da coluna wkt (linha 2, se linha 1 é cabeçalho)

  2. Copie a fórmula para todas as linhas de dados:

    • Selecione a célula com a fórmula
    • Copie (Ctrl+C)
    • Selecione todas as células abaixo (até a última linha de dados)
    • Cole (Ctrl+V)

Passo B: Verificar Resultado#

Exemplo de saída:

idlon_iniciolat_iniciolon_fimlat_fimwktTipo Gerado
conserva-001-46.6333-23.5505-46.6333-23.5505POINT(-46.6333 -23.5505)Pontual (início = fim)
conserva-002-46.6333-23.5505-46.6345-23.5515MULTIPOINT(-46.6333 -23.5505, -46.6345 -23.5515)Dois pontos de referência

Verifique:

  • ✅ WKT está no formato correto (sem vírgulas como separador decimal)
  • ✅ POINT tem apenas 1 coordenada
  • ✅ MULTIPOINT tem 2 coordenadas separadas por vírgula

Passo C: Exportar para CSV#

  1. Salve a planilha como CSV:

    • Menu: Arquivo → Salvar Como
    • Formato: CSV (delimitado por vírgulas) (.csv)
    • Codificação: UTF-8
    • Nome: dados_com_wkt.csv
  2. IMPORTANTE: Verifique que o separador decimal no CSV é ponto (.)


Passo D: Importar no QGIS#

  1. Abra o QGIS (baixe em https://qgis.org/download/ se necessário)

  2. Menu: Camada → Adicionar Camada → Adicionar Camada de Texto Delimitado

  3. Configuração:

    • Nome da camada: conservacao_2026 (ou nome apropriado)
    • Nome do arquivo: Selecione seu dados_com_wkt.csv
    • Formato de arquivo: CSV (vírgulas)
    • Codificação: UTF-8
    • Definição de geometria: Definição de geometria WKT
    • Campo de geometria: wkt
    • CRS da geometria: EPSG:4674 - SIRGAS 2000
  4. Clique em “Adicionar”

  5. Verifique: As geometrias devem aparecer no mapa


Passo E: Prosseguir para Exportação#

Continue para Exportar para GeoJSON.


⚠️ Notas Importantes#

1. POINT vs MULTIPOINT:

  • POINT: Serviço em um único local (ex: instalação de equipamento no km 25.3)
  • MULTIPOINT: Representa dois pontos de referência (início e fim do trecho)
  • MULTIPOINT NÃO é a geometria completa da rodovia - são apenas pontos de referência

2. Quando MULTIPOINT é apropriado:

  • ✅ Para visualização dos pontos de início e fim do serviço
  • ✅ Quando precisão da geometria intermediária não é crítica
  • ✅ Como solução rápida e automática

3. Quando MULTIPOINT NÃO é apropriado:

  • ❌ Se você precisa de LineString que segue o traçado da rodovia
  • ❌ Se você precisa de Polygon representando área precisa
  • ❌ Se requisitos exigem geometria detalhada

Para geometrias precisas (LineString/Polygon seguindo traçado), use Opção 3 (QGIS Desenho Manual).

4. Separador Decimal:

  • A fórmula gera WKT com ponto (.) como separador
  • Se você vê vírgulas no WKT, revise a Seção 6.3.D sobre formatação de coordenadas

📋 Fórmula com Validação Automática (Avançado)#

Se você quer que a fórmula converta automaticamente vírgulas para pontos no WKT, use esta versão:

Excel/OnlyOffice (Português) - COM VALIDAÇÃO:

=SE(SOMA(ÉNÚM(lon_inicio);ÉNÚM(lat_inicio);ÉNÚM(lon_fim);ÉNÚM(lat_fim))<4;"❌ ERRO: Coordenadas inválidas";SE(E(lon_inicio=lon_fim;lat_inicio=lat_fim);"POINT("&SUBSTITUIR(TEXTO(lon_inicio;"0.000000");",";".")&" "&SUBSTITUIR(TEXTO(lat_inicio;"0.000000");",";".")&")";"MULTIPOINT("&SUBSTITUIR(TEXTO(lon_inicio;"0.000000");",";".")&" "&SUBSTITUIR(TEXTO(lat_inicio;"0.000000");",";".")&", "&SUBSTITUIR(TEXTO(lon_fim;"0.000000");",";".")&" "&SUBSTITUIR(TEXTO(lat_fim;"0.000000");",";".")&")"))

Excel/OnlyOffice (Inglês) - COM VALIDAÇÃO:

=IF(SUM(ISNUMBER(lon_inicio),ISNUMBER(lat_inicio),ISNUMBER(lon_fim),ISNUMBER(lat_fim))<4,"❌ ERROR: Invalid coordinates",IF(AND(lon_inicio=lon_fim,lat_inicio=lat_fim),"POINT("&SUBSTITUTE(TEXT(lon_inicio,"0.000000"),",",".")&" "&SUBSTITUTE(TEXT(lat_inicio,"0.000000"),",",".")&")","MULTIPOINT("&SUBSTITUTE(TEXT(lon_inicio,"0.000000"),",",".")&" "&SUBSTITUTE(TEXT(lat_inicio,"0.000000"),",",".")&", "&SUBSTITUTE(TEXT(lon_fim,"0.000000"),",",".")&" "&SUBSTITUTE(TEXT(lat_fim,"0.000000"),",",".")&")"))

LibreOffice Calc (Português) - COM VALIDAÇÃO:

=SE(SOMA(ÉNÚMERO(lon_inicio);ÉNÚMERO(lat_inicio);ÉNÚMERO(lon_fim);ÉNÚMERO(lat_fim))<4;"❌ ERRO: Coordenadas inválidas";SE(E(lon_inicio=lon_fim;lat_inicio=lat_fim);"POINT("&SUBSTITUIR(TEXTO(lon_inicio;"0,000000");",";".")&" "&SUBSTITUIR(TEXTO(lat_inicio;"0,000000");",";".")&")";"MULTIPOINT("&SUBSTITUIR(TEXTO(lon_inicio;"0,000000");",";".")&" "&SUBSTITUIR(TEXTO(lat_inicio;"0,000000");",";".")&", "&SUBSTITUIR(TEXTO(lon_fim;"0,000000");",";".")&" "&SUBSTITUIR(TEXTO(lat_fim;"0,000000");",";".")&")"))

LibreOffice Calc (Inglês) - COM VALIDAÇÃO:

=IF(SUM(ISNUMBER(lon_inicio),ISNUMBER(lat_inicio),ISNUMBER(lon_fim),ISNUMBER(lat_fim))<4,"❌ ERROR: Invalid coordinates",IF(AND(lon_inicio=lon_fim,lat_inicio=lat_fim),"POINT("&SUBSTITUTE(TEXT(lon_inicio,"0.000000"),",",".")&" "&SUBSTITUTE(TEXT(lat_inicio,"0.000000"),",",".")&")","MULTIPOINT("&SUBSTITUTE(TEXT(lon_inicio,"0.000000"),",",".")&" "&SUBSTITUTE(TEXT(lat_inicio,"0.000000"),",",".")&", "&SUBSTITUTE(TEXT(lon_fim,"0.000000"),",",".")&" "&SUBSTITUTE(TEXT(lat_fim,"0.000000"),",",".")&")"))

Essa fórmula:

  • ✅ Valida se as coordenadas são números válidos
  • ✅ Converte automaticamente vírgulas para pontos
  • ✅ Mantém 6 casas decimais
  • ❌ Mostra erro se dados estiverem incorretos

Use a versão simples se suas coordenadas já estão formatadas corretamente com ponto decimal.


🔧 Solução de Problemas Comuns#

Problema 1: WKT gerado com vírgulas no lugar de pontos#

Sintoma:

MULTIPOINT(-46,6333 -23,5505, -46,6345 -23,5515)  ❌ INVÁLIDO

Soluções:

Opção A: Use a fórmula com validação (seção acima) que converte automaticamente

Opção B: Formate as células de coordenadas como Número:

  1. Selecione colunas lon_inicio, lat_inicio, lon_fim, lat_fim
  2. Clique direito → Formatar Células → Número
  3. Casas decimais: 6
  4. Refaça a fórmula WKT

Opção C: Localizar e Substituir no WKT gerado:

  1. Selecione a coluna wkt
  2. Ctrl+H (Localizar e Substituir)
  3. Localizar: ,
  4. Substituir: .
  5. ATENÇÃO: Isto substituirá TODAS as vírgulas, inclusive as que separam coordenadas no MULTIPOINT
  6. Solução: Substituir primeiro , (vírgula+espaço) por ; (ponto-e-vírgula+espaço), depois , por ., depois ; de volta para ,

Opção D (Mais Segura): Use substituição com regex no VS Code:

  1. Abra o CSV no VS Code
  2. Ctrl+H, ative regex (ícone .*)
  3. Localizar: (-?\d+),(\d+)
  4. Substituir: $1.$2
  5. Substituir Tudo

Problema 2: Fórmula retorna erro #NOME? ou #VALUE!#

Causas possíveis:

  1. Nomes de função em idioma errado:

    • Se Excel está em português, use SE, E, CONCATENAR
    • Se Excel está em inglês, use IF, AND, CONCATENATE
  2. Nomes de colunas incorretos:

    • Verifique se as colunas se chamam exatamente: lon_inicio, lat_inicio, lon_fim, lat_fim
    • Sem espaços, sem acentos
  3. Células vazias:

    • Certifique-se de que todas as 4 colunas de coordenadas estão preenchidas
    • Use a fórmula com validação para detectar células vazias

Problema 3: MULTIPOINT sempre gerado, mesmo quando coordenadas são iguais#

Causa: Coordenadas aparentemente iguais têm pequenas diferenças nas casas decimais

Solução: Arredonde as coordenadas para 6 casas decimais:

=SE(E(ARRED(lon_inicio;6)=ARRED(lon_fim;6);ARRED(lat_inicio;6)=ARRED(lat_fim;6));"POINT("&lon_inicio&" "&lat_inicio&")";"MULTIPOINT("&lon_inicio&" "&lat_inicio&", "&lon_fim&" "&lat_fim&")")

Problema 4: QGIS não reconhece geometrias ao importar CSV#

Soluções:

  1. Verifique formato do WKT:

    • Deve ser exatamente: POINT(lon lat) ou MULTIPOINT(lon1 lat1, lon2 lat2)
    • Sem aspas extras, sem espaços no início/fim
  2. Verifique codificação do CSV:

    • Deve ser UTF-8
    • Ao salvar, escolha explicitamente “CSV UTF-8”
  3. Configuração no QGIS:

    • “Definição de geometria”: selecione “Definição de geometria WKT”
    • “Campo de geometria”: selecione a coluna wkt
    • “CRS da geometria”: EPSG:4674
  4. Separador de CSV:

    • Se o CSV usa ponto-e-vírgula (;) como delimitador, altere nas configurações do QGIS
    • Ou salve novamente o Excel como “CSV (delimitado por vírgulas)”

📌 Próximo passo:

➡️ Exportar para GeoJSON e Validar