transforming data from xml to csv - is this possible?

Einfach Dinge, die nichts mit XAMPP, Apache Friends, Apache, MySQL, PHP und alle dem zu tun haben. Allerlei halt. ;)

transforming data from xml to csv - is this possible?

Postby unleash_it » 28. April 2014 19:16

dear geoclub-fans and coder, tr

i do not know if this is the right forum here - but it seems to be so. Well dear Geocache-Experts: i have an issue in transforming data: i run the following code in opverpass-api - see here http://overpass-turbo.eu/

i have the options to export of the data to the following formats

to GeoJSON to GPX to KML

and to get the data from

Overpass API loat them to JOSM laden (only for requests, that give back valid OSM-XML with Metadata) GeoJSON to save it as gist

note - i did not install the overpass-api on my opensuse 13.1 yet. but i am willing to do so.

as for now - running the above mentioned code in the oerpass-api - here. how to treat it to get it exported as csv-formated

hope i was able to provide all the necessary things for a clear and concise question. See the output that needs to be transformed:
Code: Select all
<?xml version="1.0" encoding="UTF-8"?>
<osm version="0.6" generator="Overpass API">
<note>The data included in this document is from www.openstreetmap.org. The data is made available under ODbL.</note>
<meta osm_base="2014-04-27T13:49:02Z"/>

  <node id="297489767" lat="49.4085014" lon="8.6941465">
    <tag k="addr:city" v="Heidelberg"/>
    <tag k="addr:housenumber" v="23"/>
    <tag k="addr:postcode" v="69115"/>
    <tag k="addr:street" v="Sofienstraße"/>
    <tag k="name" v="ARLT"/>
    <tag k="phone" v="+49 6221 20229"/>
    <tag k="shop" v="computer"/>
    <tag k="source" v="survey"/>
    <tag k="website" v="http://www.arlt.com"/>
    <tag k="wheelchair" v="yes"/>
  </node>
  <node id="305144906" lat="49.4060012" lon="8.6929652">
    <tag k="addr:city" v="Heidelberg"/>
    <tag k="addr:country" v="DE"/>
    <tag k="addr:housenumber" v="13-15"/>
    <tag k="addr:postcode" v="69115"/>
    <tag k="addr:state" v="Baden-Württemberg"/>
    <tag k="addr:street" v="Rohrbacher Straße"/>
    <tag k="name" v="Heidel-bike"/>
    <tag k="opening_hours" v="Tu-Fr 10:00-18:30; Sa 10:00-14:00"/>
    <tag k="shop" v="bicycle"/>
    <tag k="website" v="http://www.heidelbike.de/"/>
    <tag k="wheelchair" v="yes"/>
  </node>
  <node id="305963167" lat="49.4139877" lon="8.6924247">
    <tag k="addr:city" v="Heidelberg"/>
    <tag k="addr:country" v="DE"/>
    <tag k="addr:housenumber" v="4"/>
    <tag k="addr:postcode" v="69120"/>
    <tag k="addr:street" v="Brückenstraße"/>
    <tag k="name" v="Buchhandlung Schmitt &amp; Hahn"/>
    <tag k="shop" v="books"/>
    <tag k="wheelchair" v="no"/>



can i transform the data into csv?
unleash_it
 
Posts: 16
Joined: 10. December 2011 18:32
Operating System: linux opensuse 12.1

Re: transforming data from xml to csv - is this possible?

Postby unleash_it » 29. April 2014 16:55

update; perhaps we can do this like so:

to use Perl for text-mangling - so we can use the XML::Simple module. here's an example of a little script to parse your XML:

Code: Select all
#!/usr/bin/perl
use strict;
use warnings;
use XML::Simple;
use Data::Dumper;

my $xmlfile = shift || die "Usage: $0 <XML_FILE>\n";

my $ref;
eval {
  $ref = XMLin($xmlfile,
    ForceArray    => 0,
    KeyAttr       => [ ],
    SuppressEmpty => '',
  ) or die "Can't read XML from $xmlfile: $!\n";
};
die $@ if($@);
print Dumper $ref;




Explantion: iterating thru the array/hash it creates the file and helps carving up the data into comma separated lines of data than can be redirected to file.
unleash_it
 
Posts: 16
Joined: 10. December 2011 18:32
Operating System: linux opensuse 12.1


Return to Allerlei

Who is online

Users browsing this forum: No registered users and 2 guests