CSV con Latitud y Longitud en el Mapa: Abrilo en el Navegador y Arreglá los Siete Problemas Más Comunes

Tres columnas — un id, lat y lon — guardadas como CSV y soltadas en el csv-viewer: ese es todo el tutorial para un archivo prolijo. Nada se sube a ningún servidor; el archivo se procesa dentro de la pestaña de tu navegador. Si el encabezado dice lat y lon, el selector de columnas ya viene completado y solo tenés que hacer clic en Abrir en el mapa.

El resto trata de archivos que no son tan prolijos — Excel en pt-BR o es escribe -23,55 y ;, una fila de título se sienta arriba del encabezado, los grados y los minutos comparten una sola celda — y un visor que adivina mal no siempre te avisa. Cada caso: el archivo, lo que muestra el visor (citado tal cual de nuestra corrida, incluyendo cuando no muestra nada), la solución en Excel, LibreOffice Calc o Google Sheets, y la solución con ogr2ogr.

Probado de nuevo el 23 de septiembre de 2026; GDAL 3.13.3 «Iowa City» para las transcripciones de línea de comandos. Donde la herramienta cambió desde la primera corrida, el caso de abajo lo dice. El mensaje de rechazo en español citado abajo se volvió a leer el 28 de septiembre de 2026, en el build donde el conversor nombra al formato DMS en español.

Lo que busca el visor

La primera línea es el encabezado — siempre la fila 0 — y el delimitador se elige contando ,, ; y tabulaciones en las tres primeras líneas no vacías y sumándolas; gana el total más alto, y un empate se resuelve a favor de la coma. Las celdas entre comillas se respetan, y un salto de línea dentro de una también. Sí hay forma de forzar el delimitador: un desplegable Delimitador arriba del selector, ya completado con lo que se detectó, que ofrece Coma (,), Punto y coma (;) y Tabulación — cambialo y el encabezado y la lista de columnas se vuelven a leer según tu elección. No hay caja para pegar texto, ni caja de URL; un archivo por vez al soltar, sin límite de bytes.

Las columnas de coordenadas se buscan por nombre — sin distinguir mayúsculas, coincidencia exacta — en tres listas:

  • Latitud — lat, latitude, latitudine, latitud, y, y_coord, ycoord, ylat, lat_dd, latitude_dd.
  • Longitud — lon, lng, long, longitude, longitudine, longitud, x, x_coord, xcoord, xlon, lon_dd, longitude_dd.
  • Geometría WKT — wkt, geom, geometry, wkb, shape, the_geom, geo, geomwkt, wkt_geom.

Sin coincidencia exacta: cualquiera que contenga lat, y cualquiera que contenga lon o lng; si tampoco hay nada: las dos primeras columnas. Estas son preselecciones. El selector Selecciona las columnas de coordenadas se abre en todos los archivos, hasta en uno perfecto, con la ayuda Selecciona qué columnas contienen las coordenadas. La detección automática ha pre-seleccionado los campos más probables., un desplegable Columna de Latitud y otro Columna de Longitud, y Abrir en el mapa. Una columna WKT abre el mismo selector en su pestaña WKT / Geometría; no existe un camino de "mapeo instantáneo".

Al confirmar, el panel de capas imprime 3 puntos para un archivo de tres filas y, cuando alguna fila no sobrevivió, un segundo contador: 1 fila sin coordenadas válidas — la forma plural del mensaje es 2 filas sin coordenadas válidas. Una fila se cuenta cuando su latitud o longitud no es un número después de parsearla, o queda fuera de ±90 y ±180. Las columnas de coordenadas salen de la tabla de atributos; el resto de las columnas se queda.

La coma decimal: -23,55

Síntoma. Excel en pt-BR o es, "Guardar como CSV": -23,55 con ; entre columnas. Google Sheets, LibreOffice Calc y un libro soltado directamente en el visor (el caso .xlsx de abajo) escriben comas entre columnas y ponen entre comillas las celdas con coma decimal: 1,"-23,55","-46,63",São Paulo. Una exportación con tabulaciones da -23,55 con tabs.

Lo que muestra el visor. Las tres se leen bien: 3 puntos, sin contador, primer punto sobre São Paulo, con el GeoJSON exportado redondeando a -46.63, -23.55 (fixtures 1, 2, 1b). La regla se aplica a la celda, no al archivo: el visor lee -23,55 como −23,55 sin importar el delimitador — ;, tabulación, o una celda entre comillas en un archivo separado por comas, que es justo lo que escriben Google Sheets, LibreOffice Calc y un libro soltado directamente (el caso .xlsx de abajo) para una planilla en pt-BR o es. Lo único que no puede rescatar es una coma decimal sin comillas en un archivo separado por comas, porque 1,-23,55,-46,63 son cinco celdas antes de que cualquier parser las vea — y ninguna planilla escribe eso. El límite es 1,234: se lee como 1,234 (un grado y algo), nunca como 1234, porque un valor con separador de miles no puede ser una coordenada en grados. Los atributos quedan como están — un preço de 12,50 sigue siendo el texto 12,50.

Solución en la planilla, para herramientas que necesitan un punto. Excel: Opciones → Avanzadas, destildá "Usar separadores del sistema", separador decimal .. Calc: Herramientas → Opciones → Configuración de idioma → Configuración regional → Inglés (EE. UU.). Sheets: Archivo → Configuración → Configuración regional → Estados Unidos. Después exportá.

Solución en la línea de comandos. En GDAL 3.13.3, con nombrar las columnas alcanza: ogr2ogr -f GeoJSON out.geojson decimal-comma-semicolon.csv -oo X_POSSIBLE_NAMES=lon -oo Y_POSSIBLE_NAMES=lat escribe "coordinates":[-46.63,-23.55], y los archivos con tabulación y con coma entre comillas dan el mismo par. Lo que hace -oo AUTODETECT_TYPE=YES con las demás columnas depende del delimitador: en un archivo con ;, lat queda como Real -23.55; en un archivo con coma entre comillas o con tabulación, la misma celda queda como String -23,55. Para los atributos, y para cualquier herramienta que no sea GDAL, la exportación consciente de la configuración regional es la solución honesta.

Una fila de título arriba del encabezado

Síntoma. Una línea de título — Levantamento de campo, setembro 2026, equipe A — arriba del encabezado real id;lat;lon;nome, filas separadas por ; con comas decimales.

Lo que muestra el visor. El título tiene dos comas y ningún punto y coma, pero ya no vota solo: en las tres primeras líneas los punto y coma le ganan a las comas por 6 a 4, así que gana ; y la línea de título — que no contiene ningún punto y coma — pasa a ser un encabezado de exactamente una columna. Los dos desplegables muestran entonces esa línea de título entera, Abrir en el mapa queda deshabilitado, y el archivo nunca se abre: un encabezado de una sola columna no le deja al selector una segunda columna para ofrecer como longitud, así que no hay mapa, ni línea de conteo, ni contador (fixture 3). Un título sin ninguna coma se comporta igual. Forzá el desplegable Delimitador a Coma (,) y vuelve la lectura vieja — Levantamento de campo preseleccionado como latitud, setembro 2026 como longitud — y entonces el mapa queda vacío y el aviso dice No se encontraron columnas de coordenadas válidas. Verifica que las columnas seleccionadas contengan valores numéricos de latitud y longitud.. Los tres puntos que antes se dibujaban en [55, 1], [79, 2] y [12, 3], en el océano Índico, al norte de las Seychelles, no son alcanzables por ningún camino que hayamos medido: un trazado silenciosamente equivocado pasó a ser un rechazo visible. Lo que el visor todavía no hace es explicarse — un formulario que parece completo, un botón que no hace nada, y ningún mensaje.

Solución en la planilla. Borrá la fila de título para que el encabezado quede en la fila 1 — en Excel, Calc y Sheets por igual; una fila de unidades debajo del encabezado se cuenta apenas como una fila sin coordenadas válidas — es la fila de título arriba del encabezado la que destroza todo.

Solución en la línea de comandos. El driver CSV de GDAL no tiene una opción para "saltar N líneas" (HEADERS solo acepta YES, NO o AUTO), así que hay que sacar la línea y después nombrar el separador: tail -n +2 title-row.csv > title-row-noheader.csv, y luego ogr2ogr -f GeoJSON title-row-fixed.geojson title-row-noheader.csv -oo SEPARATOR=SEMICOLON -oo X_POSSIBLE_NAMES=lon -oo Y_POSSIBLE_NAMES=lat -oo AUTODETECT_TYPE=YES escribe "coordinates":[-46.63,-23.55], comas decimales incluidas. Leído tal cual, ogrinfo todavía comete el error que el visor cometía, e imprime Levantamento de campo (String) = 1;-23.

Latitud y longitud invertidas

Síntoma. Columnas llamadas lat y lon, con los valores al revés: 1,-46.63,-23.55,São Paulo — una exportación lon,lat pegada debajo de un encabezado lat,lon; GeoJSON, WKT y la mayoría de las APIs escriben primero la longitud.

Lo que muestra el visor. Dos resultados posibles. Si los dos valores quedan dentro de ±90 — como cualquier punto brasileño, ya que el país va de aproximadamente −74° a −29° de longitud — el mapa se dibuja en el océano equivocado y no dice nada: 3 puntos, sin aviso, sin contador, primer punto [-23.55, -46.63], en el Atlántico Sur a unos 3.290 km al sudeste de São Paulo (fixture 4). Si una longitud queda más allá de ±90 — el 139,69 de Tokio en la columna lat — esa fila se descarta y se cuenta: 2 puntos · 1 fila sin coordenadas válidas, mientras las otras dos filas brasileñas del mismo archivo se siguen dibujando en el Atlántico Sur (fixture 5). El contador avisa que algo estaba mal; no puede avisar que los puntos que sobrevivieron también están mal.

La solución es el selector. Nada detecta una inversión — una latitud de −46,63 es un punto perfectamente válido. Poné Columna de Latitud en lon y Columna de Longitud en lat, hacé clic en Abrir en el mapa, y el mismo archivo se dibuja sobre São Paulo, primer punto [-46.63, -23.55] (medido en la fixture 4). O invertí los dos nombres de columna en la planilla.

Si están todos en el mismo lugar equivocado, no es una inversión. Una celda de coordenada vacía nunca llega al mapa: es un salteo contado, como la celda de grados y minutos más abajo. Una celda que tiene un cero literal sí llega, y se dibuja en 0, 0, una posición real en el Golfo de Guinea — el punto en (0, 0) distingue una falla de la otra.

Grados, minutos y una letra de hemisferio en una celda

Síntoma. 23°33'S en la celda de latitud, 46°38'W en la celda de longitud — una exportación de GPS o una libreta de campo pasada en limpio.

Lo que muestra el visor. Nada. El selector preselecciona lat y lon como corresponde, hacés clic en Abrir en el mapa, y todas las filas se rechazan: no se crea ninguna capa, no aparece ninguna línea de conteo, y el visor muestra No se encontraron columnas de coordenadas válidas. Verifica que las columnas seleccionadas contengan valores numéricos de latitud y longitud. (fixture 6). La celda de coordenada ahora se lee como un literal numérico entero, así que una celda que arranca con dígitos y después trae un símbolo de grado sencillamente no es un número — mientras que el parser viejo leía los dígitos iniciales, tiraba los minutos y la letra de hemisferio que llevaba el signo negativo, y dibujaba tres puntos en el centro de Arabia Saudita sin ningún mensaje. Ese es el cambio que vale la pena conocer: el archivo que antes abría mal ahora se niega a abrir. Poné una fila buena en el mismo archivo y aparece el contador — 2 puntos · 1 fila sin coordenadas válidas — porque una fila rechazada solo se cuenta cuando queda una capa que lleve el contador; cuando todas las filas tienen un símbolo de grado no hay capa, y el aviso es lo que te queda.

Solución en la planilla. Una sola fórmula convierte grados-minutos-hemisferio a grados decimales y les cambia el signo tanto a S como a W. Con el texto en A1, en Calc o Sheets con configuración regional pt-BR o es (; entre argumentos; Excel en inglés pide ,):

=IF(OR(RIGHT(A1;1)="S";RIGHT(A1;1)="W");-1;1)*(VALUE(LEFT(A1;FIND("°";A1)-1))+VALUE(MID(A1;FIND("°";A1)+1;FIND("'";A1)-FIND("°";A1)-1))/60)

La fórmula da: 23°33'S → -23.55, 15°47'S → -15.78333, 46°38'W → -46.63333. Poné el resultado en una columna llamada lat o lon y el visor la reconoce por el nombre.

Para un puñado de puntos, el coordinate-converter toma la celda tal como está escrita: 23°33'S 46°38'W se rechazaba por falta de los segundos y ahora se acepta, y da -23.55000000 y -46.63333333 — el mismo par que 23°33'00"S 46°38'00"W. Ese cambio habilitó toda forma de dos grupos, minutos decimales incluidos: 23°33.5'S 46°38.2'W se rechazaba antes y ahora se lee. Las letras de hemisferio siguen siendo obligatorias de los dos lados — 23°32'56.10" 46°38'20.30" da Formato DMS no reconocido. — y un 23°33'S solo también se rechaza; 23 32 56.1 S 46 38 20.3 W separado por espacios y las letras de hemisferio en minúscula funcionan. Mirá el destino antes de confiar en los números: Proyección destino (CRS) arranca en SIRGAS 2000 / UTM 23S (EPSG:31983), y con ese destino la misma cadena devuelve 333283.881280 y 7394643.649020 — metros, no grados. Para grados, dejá el origen en WGS 84 (EPSG:4326) y poné el destino en SIRGAS 2000 (EPSG:4674).

En la línea de comandos, nada. GDAL no tiene parser de DMS: ogrinfo -oo AUTODETECT_TYPE=YES tipa la celda como String, y ogr2ogr con -oo X_POSSIBLE_NAMES=lon -oo Y_POSSIBLE_NAMES=lat termina con código 0, imprime Warning 1: Invalid value type found in record 1 for field lat. This warning will no longer be emitted, y escribe "geometry":null en cada fila — un archivo "convertido" sin un solo punto adentro.

Las formas que se aceptan, todas juntas. Qué grafías de DMS se convierten y cuáles se rechazan es una matriz más larga de lo que esta sección necesita: grados, minutos y segundos a grados decimales recorre el conjunto entero, con la fórmula de la planilla y el conversor lado a lado.

Coordenadas UTM (este y norte) pegadas como latitud y longitud

Síntoma. 333624,7394648 — metros en SIRGAS 2000 / zona UTM 23S, columnas easting y northing.

Lo que muestra el visor. Ninguno de los dos nombres es un alias y ninguno contiene lat o lon, así que el selector recurre a las dos primeras columnas y preselecciona id y easting. Confirmar eso, o elegir easting y northing a mano, da el mismo resultado: todas las filas fallan el control de rango, no sobrevive ningún punto, y el visor muestra No se encontraron columnas de coordenadas válidas. Verifica que las columnas seleccionadas contengan valores numéricos de latitud y longitud. (fixture 7). El mensaje habla de los valores, no de los nombres; no hay ningún campo para indicar el CRS.

Solución en la línea de comandos. Nombrá las columnas, declará el CRS de origen, pedí WGS 84: ogr2ogr -f GeoJSON utm-fixed.geojson utm.csv -oo X_POSSIBLE_NAMES=easting -oo Y_POSSIBLE_NAMES=northing -s_srs EPSG:31983 -t_srs EPSG:4326 deja el primer punto en -46.6300, -23.5500 — São Paulo, con un residuo de unas pocas millonésimas de grado que es el redondeo en metros de nuestra fixture. 31983 es SIRGAS 2000 / zona UTM 23S; ese nombre sale de gdalsrsinfo -o wkt1 EPSG:31983, porque 31982 y 31984 son las zonas vecinas (unos 6° de diferencia, sin error), 3198 es un CRS libio válido, y solo 319830 falla. La guía rápida de códigos EPSG para Brasil y América Latina tiene los códigos de zona. GDAL escribe por defecto un miembro crs (CRS84) en ese GeoJSON; -lco RFC7946=YES lo saca y redondea a siete decimales, que es lo que un visor necesita.

En la planilla, no se puede. Pasar de UTM a coordenadas geográficas es matemática de proyección; una planilla donde easting se renombra lon es la versión silenciosa de este mismo error.

Latin-1 desde Excel: São Paulo o S�o Paulo

Síntoma. Excel en Windows, "CSV (delimitado por comas)" — no "CSV UTF-8" — escribe Windows-1252: ã es el byte único 0xE3, inválido como UTF-8. Las coordenadas son ASCII y nunca les importó; los atributos se rompen.

Lo que muestra el visor. 3 puntos, el primer punto correcto, y São Paulo en la tabla de atributos — no S�o Paulo (fixture 8). El archivo se decodifica primero como UTF-8 estricto; cuando eso falla en un byte como 0xE3, se decodifica como Windows-1252 en su lugar. Un archivo realmente UTF-8 no se ve afectado.

Solución en la planilla. Excel: Guardar como → "CSV UTF-8 (delimitado por comas)". Calc: Texto CSV → Editar configuración del filtro → Conjunto de caracteres "Unicode (UTF-8)". Sheets siempre escribe en UTF-8.

Solución en la línea de comandos. iconv -f WINDOWS-1252 -t UTF-8 latin1.csv > latin1-utf8.csv — el byte 0xE3 pasa a ser C3 A3. GDAL sobre el archivo crudo muestra el mismo daño (ogrinfo imprime nome (String) = S�o Paulo), así que corré iconv antes de ogr2ogr también.

Al soltar el .xlsx directamente

Síntoma. Soltás el libro de Excel directamente. El visor lee .xls y .xlsx, solo la primera hoja.

Lo que muestra el visor. Depende de cómo esté guardada cada celda, así que armamos un libro pt-BR con los dos tipos y medimos celda por celda (fixture 9). Una celda numérica con -23.55 y formato de número 0.00 — lo que Excel pt-BR muestra como -23,55 — sale como -23.55; la configuración regional de pantalla no queda guardada en el archivo. Una celda con el texto -15,79, guardada como texto por Excel, sale entre comillas, "-15,79" — la misma forma que una exportación de Sheets — y se lee como −15,79. Las dos caen donde tienen que caer: 3 puntos, sin contador, [-46.63, -23.55] y [-47.88, -15.79].

Solución. Movés la hoja con las coordenadas a la primera posición, o la exportás como CSV UTF-8 y usás las soluciones de arriba.

Archivos de prueba que podés usar

Ningún host público tiene CSVs de prueba tan chicos, así que acá van los nuestros — tres filas cada uno. Copiá un ítem en un editor de texto, un span por línea, guardalo como .csv, y soltalo en el csv-viewer. El paréntesis indica el caso de arriba, en orden de sección.

  • Coma decimal, con punto y coma (fixture 1) — id;lat;lon;nome · 1;-23,55;-46,63;São Paulo · 2;-15,79;-47,88;Brasília · 3;-3,12;-60,02;Manaus (caso 1).
  • Coma decimal, entre comillas, separado por comas (fixture 1b) — id,lat,lon,nome · 1,"-23,55","-46,63",São Paulo · 2,"-15,79","-47,88",Brasília · 3,"-3,12","-60,02",Manaus (caso 1).
  • Coma decimal, separado por tabulaciones (fixture 2) — la fixture 1 con una tabulación tipeada donde tiene ; (caso 1).
  • Fila de título arriba del encabezado (fixture 3) — Levantamento de campo, setembro 2026, equipe A · id;lat;lon;nome · 1;-23,55;-46,63;São Paulo · 2;-15,79;-47,88;Brasília · 3;-3,12;-60,02;Manaus (caso 2).
  • Invertida, dentro de rango (fixture 4) — id,lat,lon,nome · 1,-46.63,-23.55,São Paulo · 2,-47.88,-15.79,Brasília · 3,-60.02,-3.12,Manaus (caso 3).
  • Invertida, una fila fuera de rango (fixture 5) — id,lat,lon,nome · 1,-46.63,-23.55,São Paulo · 2,-47.88,-15.79,Brasília · 3,139.69,35.68,Tóquio (caso 3).
  • Grados y minutos (fixture 6) — id,lat,lon,nome · 1,23°33'S,46°38'W,São Paulo · 2,15°47'S,47°53'W,Brasília · 3,3°07'S,60°01'W,Manaus (caso 4).
  • UTM zona 23S (fixture 7) — id,easting,northing,nome · 1,333624,7394648,São Paulo · 2,191433,8252182,Brasília · 3,687688,7465276,Rio de Janeiro (caso 5; Rio, no Manaus, porque Manaus queda en la zona 20S).
  • Latin-1 (fixture 8) — el control re-codificado con iconv -f UTF-8 -t WINDOWS-1252 all-valid.csv > latin1.csv (caso 6).
  • Un libro al estilo pt-BR armado para imitar a Excel (fixture 9) — un .xlsx con el encabezado del control, fila 2 con celdas numéricas con formato 0.00, fila 3 con celdas de texto -15,79 y -47,88, fila 4 numérica — 3 puntos sobre Brasil (caso 7).
  • Control (fixture 10) — id,lat,lon,nome · 1,-23.55,-46.63,São Paulo · 2,-15.79,-47.88,Brasília · 3,-3.12,-60.02,Manaus — 3 puntos sobre Brasil.

Y un archivo real. El Programa Queimadas del INPE publica todos los focos de incendio activos de Brasil en un CSV diario: el archivo del 14 de septiembre de 2026 es focos_diario_br_20260914.csv, 4.283.545 bytes, UTF-8, 16 columnas separadas por comas que empiezan id,lat,lon,data_hora_gmt,satelite,municipio,estado,…, 27.447 filas. Responde 200 con Accept-Ranges: bytes y Access-Control-Allow-Origin: * — abierto, sin cuenta. No hay ningún archivo de licencia al lado de los CSVs; la nota de gobernanza de datos del INPE en focos/documentos/ (hermano de focos/csv/) describe los datos como disponibles para cualquier usuario a través de su página de datos abiertos, así que el crédito es para INPE / Programa Queimadas.

lat y lon son coincidencias exactas de alias y los espacios iniciales de las celdas se recortan: nuestra corrida dibujó 27.447 puntos, sin filas omitidas, primer punto [-45.2744, -5.2883] en Maranhão, 581 ms desde Abrir en el mapa hasta la fila de la capa.

Dos advertencias, fechadas el 23 de septiembre de 2026: el directorio diario guarda alrededor de un mes de archivos, así que el nombre de arriba se pudre — hay que usar el más nuevo; y los archivos mensuales de al lado pesan unos 99 MiB, para descargar y no para soltar.

Para equipos

Poner los puntos en un mapa es la mitad fácil. Alguien te mandó un CSV porque un equipo tiene que hacer algo en esos puntos: un estado por fila, fotos y un formulario desde el campo, una revisión, un informe para el viernes. Geodocs importa el mismo archivo a un mapa de equipo, mantiene las columnas como campos que el equipo completa, corre la revisión, y genera el informe con el mapa adentro. El visor es donde revisás el archivo; el espacio de trabajo es donde se convierte en trabajo.

Artículos Relacionados

Navegação