#!/usr/bin/env ruby

# Quick script to generate RDF from waypoint files in PCX5 format
# Dan Brickley <danbri@w3.org>, W3C
# $Id: pcx5import.rb,v 1.2 2003/01/11 00:53:04 danbri Exp $
# 
# Status: 	Doesn't work yet. We have N5127.26190 W00236.35267 instead 
# 		of the numeric lat/long values we want. In progress.
#
# Recent changes:
# $Log: pcx5import.rb,v $
# Revision 1.2  2003/01/11 00:53:04  danbri
# Nearly finished mapping the lat/long values.
#
# Revision 1.1  2003/01/11 00:36:17  danbri
# First attempt at convertor from PXC 2.09 waypoint text format.
# Not working yet.
#
#
# Sample record:
#H  IDNT   LATITUDE    LONGITUDE    DATE      TIME     ALT   DESCRIPTION 
# 						PROXIMITY     SYMBOL ;waypts
#
#W  01J01  N5134.34900 W00013.72200 18-JAN-96 20:40:26 -9999 M1 JUNCTION 
#	     					1      0.00000e+00       18

fn='test/m-junct.wpt' # default input file

fn=ARGV.shift if ARGV.length > 0

geo_ns='http://www.w3.org/2003/01/geo/wgs84_pos#'

header=<<EOF
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
	xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
        xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#">
EOF


f=File.open fn
out=""
state='headers'
f.each do |l|
  next if state=='headers' and  !(l =~ /^W/)
  state='body'
  point_info=l.split(/\s+/)
  lat=point_info[2]
  lat.gsub!(/^N/,"")
  lat.gsub!(/^S/,"")  # ?? RTFM pls. **todo**
  lat=lat.to_f/100

  long=point_info[3]
  long.gsub!(/^W/,"")
  long.gsub!(/^E/,"") # err, what are we doing here?
  long=long.to_f/100


  txt=point_info[7..15]
  symbol=txt.pop
  proximity=txt.pop
  label=txt.join " "

  out += "<geo:Point>\n"
  out += " <rdfs:label>#{label.downcase!}</rdfs:label>\n"
  out += " <geo:lat>#{lat}</geo:lat>\n"
  out += " <geo:long>#{long}</geo:long>\n"
  out += "</geo:Point>\n\n"

end

puts header + out + "</rdf:RDF>\n\n"
