#!/bin/bash
awk -F\" 'BEGIN{
 i=-1;j=-1; 
 system("rm -f planet.mi? nodes.mi? segments.mi?");
printf("version 300\ncharset \"utf-8\"\n\
coordsys earth projection 1, 104\n\
delimiter \",\"\n\
columns 1\n\
cat integer\n\
data\n\n") >"planet.mif";
 system("cp planet.mif nodes.mif; cp planet.mif
segments.mif");
}
{
        if ($1 == "  <node id=") 
         {
          nodes[i++]=$2; nodelat[$2]=$4;
          nodelon[$2]=$6;
         } 
        if ($1 == "  <segment id=") 
         {
          seg[j++]=$2; seg_start[j]=$4;
          seg_end[j]=$6;
         } 
}
END{
for(k=0;k<i;k++)
{
 print "point",nodelon[nodes[k]],nodelat[nodes[k]] >>
"planet.mif"
 print nodes[k] >> "planet.mid"
}
system("cp planet.mif nodes.mif; cp planet.mid
nodes.mid");
for(k=0;k<j;k++)
{
 print
"line",nodelon[seg_start[k]],nodelat[seg_start[k]],nodelon[seg_end[k]],nodelat[seg_end[k]]
>>"planet.mif"
 print seg[k] >> "planet.mid"
 print
"line",nodelon[seg_start[k]],nodelat[seg_start[k]],nodelon[seg_end[k]],nodelat[seg_end[k]]
>>"segments.mif"
 print seg[k] >> "segments.mid"
}
system("rm -f nodes.shp nodes.shx nodes.dbf nodes.prj;
ogr2ogr -f \"esri shapefile\" nodes.shp nodes.mif");
system("rm -f segments.shp segments.shx segments.dbf
segments.prj; ogr2ogr -f \"esri shapefile\"
segments.shp segments.mif");
}' planet.osm
