Cómo convertir un shapefile a geojson

Recientemente necesitábamos publicar una capa geográfica dentro de una web con un sencillo visor de mapas hecho con Openlayers [1]. La capa estaba en el formato omnipresente ESRI Shapefile.

Openlayers acepta un elevado número de orígenes de datos (WMS, WFS, KML, GeoJSON…) pero no directamente ficheros .shp. Una opción hubiera sido utilizar Geoserver [2] como servidor de los datos, pero buscábamos algo más rápido, para una capa estática, y no queríamos incrementar la infraestructura en el despliegue.

Solución rápida:  generar un fichero con el contenido del .shp en formato geojson y luego alojarlo directamente en el sitio web.  ¿Cómo convertirlo? Utilizando la herramienta gratuita y abierta para conversión entre formatos llamada ogr2ogr [3].

1. Nos descargamos e instalamos FWTools [4] que incluye la citada ogr2ogr y otras utilidades.

2. Desde línea de comandos, en la ruta donde hayamos instalado el software (o la incluimos en el PATH y tecleamos desde cualquier directorio):

ogr2ogr c:\ficheroSalida.geojson -f “GeoJSON” C:\ficheroOriginal.shp

3.  Y con esto ya tenemos un fichero geojson apto para consumir desde OpenLayers.

Enlaces:

[1] Librería Openlayers: http://openlayers.org/

[2] Servidor Geoserver: http://geoserver.org/

[3] Librería GDAL: http://www.gdal.org/ogr2ogr.html

[4] Pack FWTools: http://fwtools.maptools.org/

13 comentarios en “Cómo convertir un shapefile a geojson

  1. Claro , ahora entendi .GeoJson se puede dibujar tambien .Lo vi en ejemplos de openlayers y es liviano.Pero tengo una duda amigo.Yo estoy utilizando openlayers con mapserver .Es esto inprudente?
    Espero tu respuesta.

    • Víctor Velarde Gutiérrez dijo:

      Openlayers + Mapserver o Geoserver son opciones perfectas de trabajo. Es solo que a veces, para casos sencillos, nos podemos ahorrar el servidor GIS e incluir un simple fichero en el sitio web.

  2. Aníbal González dijo:

    Hola señor Velarde, antes que nada le agradesco el gran trabajo que hace al publicar sus notas, que me han sido de mucha ayuda. Soy nuevesito en este ámbito pero me interesa mucho saber como puedo utilizar el Geoserver con Openlayers para visualizar una base de datos de postgis (la cual tengo ya creada). Deseo publicar mis mapas de manera dinámica pero aun no se como hacer la petición al servidor de geoserver. Espero su respuesta y de antemano gracias.

  3. Jairo dijo:

    Buenos días…
    Estoy incursionando en este nuevo mundo del web maping y ha sido de mucha ayuda sus comentarios, pero me gustaría de ser posible ver el Ejemplo de conexión OpenLayers a Geoserver (WFS), lo que sucede es que el enlace no funciona.
    Gracias de antemano

  4. Héctor dijo:

    Qué tal señor Víctor me llamo Héctor soy de México, me sorprende el manejo que tiene sobre openlayers, es por eso que me atrevo hacerle una consulta estoy trabajando con un mapa base de openlayers que es la capa de Google en el.visor de pmapper que es de mapserver, el problema que tengo es que la proyección que maneja está capa es la 900913 mercator de Google pero al querer cargar mis shp al visor no los visualiza, el shp que manejo ya le cambié la proyección por la de Google y ni aún así se visualizan si tiene alguna solución para este problema se lo agradecería mucho este es mi correo anzaldo_pena@hotmail.com. Muchas gracias

    • Hola Héctor,

      ¿Has convertido el shp a algo de más fácil manejo en web como es geojson?
      Asegúrate también de su proyección. OpenLayers y otros software asumen, salvo que les indiques lo contrario, que los datos de GeoJSON están en EPSG:4326 (Longitud / Latitud WGS84).

      Una buena prueba para descartar algún problema con los propios datos es ver si se pintan correctamente en http://geojson.io

      Saludos,
      Víctor

  5. Mikel dijo:

    Hola Víctor,

    Mi nombre es Mikel, muy útil el visor http://geojson.io para representar los datos GeoJSON.

    Tengo un par de cuestiones respecto a los datos GeoJSON:
    1. La primera es respecto al sistema de referencia de mis datos. Estos son UTM 30N (EPSG: 25830), cuando intento representarlos en el visor (http://geojson.io) no se muestran. Pero si cambio el CRS de la capa a EPSG:4326 sí se representan. ¿Los archivos GeoJSON únicamente soportan EPSG:4326?

    Un saludo,

    MIKEL

    • Hola Mikel,

      El convenio asume que el geojson va por defecto en ese EPSG. Nada impide que uses otro EPSG, pero entonces en tu cliente web tendrás que implementar la conversión entre sistemas para el pintado, porque habitualmente los API de JavaScript (GoogleMaps, Leaflet, etc.) usan como inputs valores en EPSG 4326 (Longitud / Latitud).

      Saludos!

      • Mikel dijo:

        Muchas gracias por la aclaración Víctor,
        Tengo otra cuestión respecto a los ficheros GeoJSON.
        Hasta la fecha en JavaScript yo cargaba un fichero JSON en Open Layers de la siguiente manera:

        #######
        var json = new OpenLayers.Layer.Vector(“USA (Geojson)”,{
        protocol: new OpenLayers.Protocol.HTTP({
        url: “./capas/USAstates20m.json”,
        format: new OpenLayers.Format.GeoJSON()
        }),
        strategies: [new OpenLayers.Strategy.Fixed()]
        });
        ########

        Pero actualmente no puedo cargar los archivos JSON de esta manera. Buscando en internet no he encontrado la manera de cargarlos, caso de que pudieras aclararme algo sería genial.
        Gracias de antemano 😉
        Sds,

        MIKEL

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s