Quiero tomar la salida XML de una consulta Xapi y mostrarla usando leaflet o polymaps. ¿Cómo puedo hacerlo? ¿Hay alguna manera fácil de convertir XML a geojson?
Respuestas
¿Demasiados anuncios?Puedes convertir OSM XML a GeoJson con ogr2ogr. Para convertir a GeoJSON sin obtener el siguiente error:
ERROR 6: GeoJSON driver doesn't support creating more than one layer
Puede utilizar uno de los siguientes comandos o todos ellos:
ogr2ogr -f GeoJSON points.json data.osm.pbf points
ogr2ogr -f GeoJSON lines.json data.osm.pbf lines
ogr2ogr -f GeoJSON multilinestrings.json data.osm.pbf multilinestrings
ogr2ogr -f GeoJSON multipolygons.json data.osm.pbf multipolygons
ogr2ogr -f GeoJSON other_relations.json data.osm.pbf other_relations
La versión de desarrollo (a marzo de 2013) de gdal tiene soporte de lectura para OSM tanto para el formato XML plano como para el formato PBF.
Así que usted puede convertir su archivo OSM con:
ogr2ogr -f GeoJSON miarchivo.geojson miarchivo.osm.pbf
osmtogeojson es otro conversor de OSM a GeoJSON, que tiene algunas ventajas en comparación con éste (OSM2GEO) o con osm-and-geojson:
- puede utilizarse como herramienta de línea de comandos o como javascript (navegador). y nodejs).
- soporte multipolígono adecuado
- sofisticado detección de polígonos
- estable (puede hacer frente a datos OSM incompletos)
- bien probado
- más rápido
La biblioteca ya se utiliza en geojson.io así como overpass-turbo.eu .
OSM2GEO - Un conversor JS para convertir OSM a GeoJSON
* OSM2GEO - OSM to GeoJSON converter
* OSM to GeoJSON converter takes in a .osm XML file as input and produces
* corresponding GeoJSON object.
*
* AUTHOR: P.Arunmozhi <>
* DATE : 26 / Nov / 2011
* LICENSE : WTFPL - Do What The F##% You Want To Public License
* LICENSE URL: http://sam.zoy.org/wtfpl/
*
* DEPENDENCY: OSM2GEO entirely depends on jQuery for the XML parsing and
* DOM traversing. Make sure you include <script src="somewhere/jquery.js">
* </script> before you include osm2geo.js
*
* USAGE: This script contains a single function -> geojson osm2geo(osmXML)
* It takes in a .osm (xml) as parameter and returns the corresponding
* GeoJson object."
Créditos para P.Arunmozhi
Si necesita una biblioteca sobre Python: osm2geojson
Ejemplo
import codecs
import osm2geojson
with codecs.open('file.osm', 'r', encoding='utf-8') as data:
xml = data.read()
geojson = osm2geojson.xml2geojson(xml)
# >> { "type": "FeatureCollection", "features": [ ... ] }
- Ver respuestas anteriores
- Ver más respuestas