Skip to content
Back to Blog
how-to-convert

Cómo convertir GeoJSON a JSON (eliminando la geometría y conservando las propiedades)

2026-05-17 8 min read

Qué contiene realmente un GeoJSON (y por qué es más de lo que necesitas)

GeoJSON es simplemente JSON, pero con una estructura muy específica y, a menudo, voluminosa. Cada archivo normalmente envuelve tus datos en una `FeatureCollection` que contiene un array de objetos `Feature`. Cada `Feature`, a su vez, tiene dos partes principales: `geometry` y `properties`. El bloque `geometry` es donde viven todos los datos espaciales: arrays de coordenadas, tipos de formas como Point o Polygon, y complejos anillos de coordenadas que pueden ocupar miles de líneas. El bloque `properties` es lo que generalmente te interesa: los datos de atributos reales como nombres, IDs, recuentos de población o marcas de tiempo vinculados a cada forma. Esa estructura se convierte en un problema cuando necesitas pasar los datos a un sistema que no habla el lenguaje de los mapas. Imagina que has exportado un conjunto de datos de los límites de los 4.200 condados de EE. UU. desde una herramienta GIS. El archivo GeoJSON resultante podría pesar fácilmente 18 MB, con cada polígono de condado definido por miles de pares de coordenadas. Si tu objetivo es solo usar el nombre del condado, el código FIPS y la población en un informe o una API, estás arrastrando un 95% de peso muerto. Esa geometría es puro ruido. Peor aún, algunos parsers rechazarán de plano un archivo porque no reconocen las claves geoespaciales. Para estos usos no espaciales, eliminar la geometría no es perder datos; es simplemente una preparación de datos inteligente.

La diferencia de estructura: GeoJSON vs. JSON plano

Seamos específicos sobre la transformación. Aquí tienes una `Feature` mínima de GeoJSON con la que podrías empezar: { "type": "Feature", "geometry": { "type": "Point", "coordinates": [-87.6298, 41.8781] }, "properties": { "city": "Chicago", "population": 2696555, "timezone": "America/Chicago" } } Después de eliminar la geometría, tu objetivo es el objeto JSON limpio y simple anidado dentro de la clave `properties`: { "city": "Chicago", "population": 2696555, "timezone": "America/Chicago" } Cuando tu entrada es una `FeatureCollection` (un archivo con múltiples features), el objetivo es producir un único array JSON que contenga solo los objetos de propiedades de cada feature: [ { "city": "Chicago", "population": 2696555, "timezone": "America/Chicago" }, { "city": "Houston", "population": 2304580, "timezone": "America/Chicago" } ] Este es el formato que la mayoría de las APIs, importadores de hojas de cálculo y cargadores de bases de datos están diseñados para entender. Cualquiera que haya depurado una llamada a una API que falla conoce la frustración de un parser que se ahoga con claves de nivel superior inesperadas como `geometry` o `type`. El resultado final es un array JSON limpio, listo para funcionar con casi cualquier herramienta. Un detalle crítico: ¿qué pasa si una feature tiene un valor `null` para sus `properties`? Esto es GeoJSON válido. Un buen conversor producirá un objeto vacío `{}` para esa feature en lugar de fallar o, peor aún, omitirla silenciosamente. Los conversores mediocres fallan esta prueba todo el tiempo.

Convertir GeoJSON a JSON con CocoConvert

Para una solución rápida y sin código, el conversor de GeoJSON a JSON de CocoConvert en /convert/geojson-to-json está diseñado exactamente para este trabajo. El proceso es simple. Subes tu archivo `.geojson` o `.json` (acepta ambas extensiones, ya que GeoJSON a menudo usa `.json`), seleccionas tus opciones y descargas el resultado simplificado. El conversor es implacable por defecto. Encuentra el array `features`, toma el objeto `properties` de cada una de las features y los une en un array JSON limpio. La clave `geometry`, la clave `type` y el envoltorio `FeatureCollection` se quedan atrás. Si tu archivo contiene solo una `Feature` en lugar de una colección, la salida será un único objeto JSON, no un array. CocoConvert maneja archivos de hasta 50 MB en el plan gratuito, lo cual es suficiente para la mayoría de los conjuntos de datos con menos de 10,000 features. Pero si tienes un archivo masivo como una red de carreteras de todo un estado (que puede superar fácilmente los 200 MB), necesitarás usar una herramienta de línea de comandos, que cubriremos a continuación. Por privacidad, el conversor procesa los archivos en el servidor pero no almacena tus datos después de tu sesión, un detalle importante si tus atributos incluyen información sensible como identificadores personales. Por defecto, el archivo descargado tendrá una extensión `.json`. El panel de configuración te da más control, permitiéndote especificar un nombre de archivo personalizado u obtener una salida indentada y legible para humanos en lugar de una sola línea minificada.

Alternativas de línea de comandos para archivos grandes o automatización

Cuando trabajas con archivos de más de 50 MB o necesitas automatizar esta conversión en un script, la línea de comandos es tu amiga. Tienes dos armas principales a tu disposición: `jq` y el módulo `json` integrado de Python. Para la transformación pura de JSON, nada supera a `jq` en velocidad y simplicidad: jq '[.features[].properties]' input.geojson > output.json Este comando de una sola línea hace exactamente lo que hace la herramienta web: itera sobre cada feature, extrae el objeto `properties` y envuelve los resultados en un array JSON. `jq` se instala fácilmente en cualquier sistema operativo principal (como `brew install jq` en macOS o `apt install jq` en Debian/Ubuntu) y puede procesar archivos de gigabytes sin inmutarse porque procesa los datos en streaming en lugar de cargarlos todos en la memoria. Si el `id` de tu feature es importante (en GeoJSON, se encuentra junto a `properties`, no dentro), puedes fusionarlo: jq '[.features[] | {id: .id} + .properties]' input.geojson > output.json Cuando necesitas más lógica, Python es la respuesta: import json with open('input.geojson') as f: gj = json.load(f) result = [feature['properties'] for feature in gj['features']] with open('output.json', 'w') as f: json.dump(result, f, indent=2) Este breve script te da control total para filtrar features, renombrar claves o manejar casos extraños antes de escribir la salida. Lo mejor de todo es que el módulo `json` es parte de la biblioteca estándar de Python, por lo que no hay nada extra que instalar. Permíteme ser directo con mi recomendación: usa CocoConvert cuando tengas un solo archivo y quieras un resultado en 30 segundos sin tocar el código. Usa `jq` o Python cuando estés automatizando un pipeline de datos o procesando cientos de archivos.

Manejando casos especiales que rompen los conversores ingenuos

El GeoJSON del mundo real suele ser más desordenado que los ejemplos limpios de la especificación. Aquí están los problemas comunes que pueden romper un conversor ingenuo. **Geometría nula:** Frecuentemente encontrarás features con `"geometry": null`. Son perfectamente válidas, a menudo representando registros que simplemente carecen de datos de ubicación. Un conversor robusto debe extraer sus propiedades de todos modos, no descartar la feature completa. Los métodos con `jq` y Python mostrados anteriormente manejan esto correctamente. **Propiedades anidadas:** El propio objeto `properties` puede contener objetos JSON anidados, como `"properties": {"address": {"street": "Main St"}}`. Eliminar la geometría no aplana estas estructuras anidadas; se conservan tal cual. Si necesitas una estructura completamente plana (para un CSV, por ejemplo), esa es una transformación separada que tendrás que realizar. **Claves inconsistentes:** Es común que algunas features en una colección tengan una clave `"name"` mientras que otras no. El array JSON resultante simplemente tendrá objetos con diferentes formas. Esto es JSON válido, pero puede causar problemas en sistemas fuertemente tipados. CocoConvert extrae fielmente lo que hay; no intentará normalizar el esquema por ti. **`GeometryCollection`:** Algunos archivos usan un tipo `GeometryCollection`, que tiene una estructura diferente a la `FeatureCollection` estándar. Muchas herramientas, incluido CocoConvert, esperan una `FeatureCollection` y pueden fallar si encuentran una `GeometryCollection` en el nivel superior. **Problemas de codificación:** Este es un clásico dolor de cabeza de los datos GIS. La especificación de GeoJSON exige codificación UTF-8, punto. Pero los archivos exportados desde software antiguo a veces pueden contener caracteres Latin-1 o Windows-1252. Esto causará errores de parseo. Debes corregir la codificación previamente usando una herramienta como `iconv` antes de intentar la conversión.

Cuándo deberías conservar la geometría (y convertir de otra manera)

Aunque eliminar la geometría es genial para flujos de trabajo centrados solo en datos, a veces es la decisión completamente equivocada. Hay muchas ocasiones en las que necesitas conservar los datos espaciales, solo que en una forma diferente. Si estás alimentando datos a una biblioteca de mapas web como Leaflet o MapboxGL, detente. No conviertas nada. Ambas bibliotecas consumen GeoJSON de forma nativa, por lo que convertir a JSON plano eliminaría las mismas coordenadas que necesitan para dibujar tu mapa. _A veces necesitas las coordenadas, pero en una forma diferente, como un array plano de objetos `{lat, lng, name}` para un gráfico personalizado. Esa es una tarea de remodelación, no de eliminación de geometría. `jq` es perfecto para esto: jq '[.features[] | {lat: .geometry.coordinates[1], lng: .geometry.coordinates[0], name: .properties.name}]' input.geojson > output.json Presta mucha atención al orden de las coordenadas aquí. GeoJSON es estrictamente `[longitud, latitud]`, o (x, y). Esto es lo opuesto a lo que muchas personas y sistemas esperan. Equivocarse en esto es el error más común al manejar manualmente coordenadas GeoJSON, y tiene el efecto hilarante y frustrante de colocar tus datos en el hemisferio equivocado. Si tu objetivo es convertir GeoJSON a otro formato geoespacial como TopoJSON, Shapefile o KML, necesitas una herramienta diferente. CocoConvert no realiza estas conversiones que preservan la geometría. Para eso, deberías usar una herramienta diseñada para ello, como la potente herramienta de línea de comandos `ogr2ogr` (de GDAL) o la excelente herramienta web Mapshaper. Son las herramientas adecuadas para ese trabajo. Nuestra herramienta de GeoJSON a JSON en /convert/geojson-to-json está enfocada con precisión en una sola tarea: extraer las propiedades. Hace esa única cosa, y la hace bien.

Validando tu resultado antes de usarlo en otros sistemas

Antes de introducir tu flamante archivo JSON en un sistema posterior, tómate dos minutos para validarlo. Este simple paso puede ahorrarte horas de depuración de fallos confusos más tarde. Abre el archivo en un editor de texto. ¿El nivel superior es un array (comienza con `[`)? ¿Cada elemento es un objeto (comienza con `{`)? Críticamente, ¿ves alguna clave `geometry` o `type`? No deberías. Una búsqueda rápida de la cadena 'coordinates' no debería encontrar ninguna coincidencia. A continuación, comprueba el número de registros. Si tu GeoJSON de entrada tenía 847 features, tu array JSON de salida debe tener exactamente 847 objetos. Si los números no coinciden, el conversor ha omitido features, probablemente debido a una entrada mal formada o un manejo incorrecto de los nulos. Ahora, revisa los datos al azar. Compara los valores de las propiedades del primer, último y un registro intermedio aleatorio en tu nuevo JSON con el archivo GeoJSON original. Si los nombres, IDs y números coinciden, puedes estar seguro de que la conversión fue limpia. Para pipelines automatizados, usa JSONSchema. Herramientas como `ajv` para Node.js o `jsonschema` para Python te permiten verificar programáticamente que cada objeto en tu array tenga las claves y los tipos de datos que esperas. Esto es esencial para cualquier proceso que se ejecute regularmente sobre datos cambiantes. Y una última cosa: si los datos van a una base de datos, ejecuta una consulta `COUNT` en la tabla después de la importación. ¿El número de filas coincide con lo que esperabas? Esta comprobación de 30 segundos es la confirmación definitiva de que toda la cadena —conversión e importación— funcionó perfectamente.

Ready to convert?

Try it now — fast, secure, and private.

Convert Now →