GeoJSON es un formato basado en JSON (JavaScript Object Notation) para representar datos geoespaciales. Se utiliza ampliamente para la codificación de datos estructurados en geografías, incluyendo puntos, líneas, polígonos y sus atributos. GeoJSON es popular en aplicaciones web y de software debido a su simplicidad y compatibilidad con múltiples sistemas y lenguajes de programación.
GeoJSON define varios tipos de objetos para representar diferentes características geográficas:
1. FeatureCollection
2. Feature
3. GeometryCollection
4. Point
5. MultiPoint
6. LineString
7. MultiLineString
8. Polygon
9. MultiPolygon
Cada uno de estos tipos tiene una estructura y convenciones específicas.
Un FeatureCollection
es un objeto GeoJSON que contiene una colección de Feature
(características). Este es el contenedor principal para varios elementos geoespaciales.
{
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [102.0, 0.5]
},
"properties": {
"name": "Dinagat Islands"
}
}
]
}
Un Feature
es un objeto GeoJSON que representa una entidad geográfica y puede contener cualquier tipo de geometría junto con sus propiedades asociadas.
{
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [102.0, 0.5]
},
"properties": {
"name": "Dinagat Islands"
}
}
Un GeometryCollection
es un objeto GeoJSON que contiene una colección de objetos de geometría.
{
"type": "GeometryCollection",
"geometries": [
{
"type": "Point",
"coordinates": [100.0, 0.0]
},
{
"type": "LineString",
"coordinates": [
[101.0, 0.0],
[102.0, 1.0]
]
}
]
}
Un Point
es un objeto GeoJSON que representa una única coordenada en el espacio geográfico.
{
"type": "Point",
"coordinates": [100.0, 0.0]
}
Un MultiPoint
es un objeto GeoJSON que representa múltiples puntos.
{
"type": "MultiPoint",
"coordinates": [
[100.0, 0.0],
[101.0, 1.0]
]
}
Un LineString
es un objeto GeoJSON que representa una línea compuesta por varios puntos.
{
"type": "LineString",
"coordinates": [
[100.0, 0.0],
[101.0, 1.0]
]
}
Un MultiLineString
es un objeto GeoJSON que representa múltiples líneas.
{
"type": "MultiLineString",
"coordinates": [
[
[100.0, 0.0],
[101.0, 1.0]
],
[
[102.0, 2.0],
[103.0, 3.0]
]
]
}
Un Polygon
es un objeto GeoJSON que representa una forma cerrada con límites definidos por líneas.
{
"type": "Polygon",
"coordinates": [
[
[100.0, 0.0],
[101.0, 0.0],
[101.0, 1.0],
[100.0, 1.0],
[100.0, 0.0]
]
]
}
Un MultiPolygon
es un objeto GeoJSON que representa múltiples polígonos.
{
"type": "MultiPolygon",
"coordinates": [
[
[
[102.0, 2.0],
[103.0, 2.0],
[103.0, 3.0],
[102.0, 3.0],
[102.0, 2.0]
]
],
[
[
[100.0, 0.0],
[101.0, 0.0],
[101.0, 1.0],
[100.0, 1.0],
[100.0, 0.0]
]
]
]
}
Las coordenadas en GeoJSON se expresan en el orden [longitud, latitud] y, opcionalmente, [longitud, latitud, altitud].
GeoJSON utiliza el sistema de coordenadas WGS 84 (EPSG:4326) por defecto. Esto asegura la compatibilidad global y la precisión geográfica.
Cada Feature
en GeoJSON puede tener un objeto properties
que contiene pares de clave-valor con información adicional sobre la entidad geográfica.
{
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [102.0, 0.5]
},
"properties": {
"name": "Dinagat Islands",
"population": 127152,
"area_km2": 802.12
}
}
Las características (Feature
) pueden tener un atributo id
único para identificarlas de manera individual.
{
"type": "Feature",
"id": "123",
"geometry": {
"type": "Point",
"coordinates": [102.0, 0.5]
},
"properties": {
"name": "Dinagat Islands"
}
}
GeoJSON es ampliamente utilizado en diversas aplicaciones geoespaciales, incluyendo:
1. Mapeo Web: Integración con bibliotecas como Leaflet y Mapbox para crear mapas interactivos.
2. Bases de Datos Geoespaciales: Almacenamiento y consulta de datos geográficos en bases de datos como PostgreSQL/PostGIS.
3. Intercambio de Datos: Compartir datos geoespaciales entre diferentes sistemas y plataformas.
4. Análisis GIS: Realización de análisis geoespaciales utilizando herramientas GIS.
GeoJSON es un formato potente y flexible para representar datos geoespaciales. Su compatibilidad con JSON lo hace accesible y fácil de usar en una variedad de aplicaciones. Con un entendimiento claro de sus tipos de objetos y convenciones, puedes aprovechar al máximo sus capacidades para tus necesidades geoespaciales.
Jorge García
Fullstack developer