#!/usr/bin/perl use strict; use LWP::Simple; use XML::LibXML; #create temp working directory my $random_value = int(rand(10000000)); my $target_dir = "/tmp/ms_tmp/gearth_$random_value"; `mkdir $target_dir`; #print $target_dir."\n"; ################## #read input files to temp directory ################## my ($zip_url) = @ARGV; #zip_url my $zip_filepath = "$target_dir/sos_config.xml.zip"; #print $zip_filepath."\n"; my $content = getstore($zip_url, $zip_filepath); die "Couldn't get $zip_url" unless defined $content; `cd $target_dir; unzip sos_config.xml.zip`; #convert xml document to csv format my $xp = XML::LibXML->new->parse_file("$target_dir/sos_config.xml"); open (FILE_CSV,">$target_dir/temp1.csv"); #get header data my $regional_assn = $xp->find('//RegionalAssociation/OrganizationName'); my $regional_url = $xp->find('//RegionalAssociation/OrganizationURL'); #'operator' and 'operatorURL' are missing in the sos_config.xml, which kills my kml functionality for breakout by operator - substituting regional args for now my $operator_name = $regional_assn; my $operator_url = $regional_url; #get obs data foreach my $observation ($xp->findnodes('//Observation')) { my $platform_name = $observation->find('localPlatformName'); my $modified = $observation->find('modified'); my $latitude = $observation->find('latitude'); my $longitude = $observation->find('longitude'); my $z = $observation->find('z'); my $z_plane_of_reference = $observation->find('vertical_plane_of_reference'); my $westLimit = $observation->find('westLimit'); my $southLimit = $observation->find('southLimit'); my $eastLimit = $observation->find('eastLimit'); my $northLimit = $observation->find('northLimit'); my $startTime = $observation->find('startTime'); my $endTime = $observation->find('endTime'); my $platform_url = $observation->find('platformURL'); my $data_url = $observation->find('dataURL'); my $observed_property = $observation->find('observedProperty'); my $status = $observation->find('status'); my $comments = $observation->find('comments'); print FILE_CSV '_1.0,'.$modified.','.$operator_name.','.$regional_assn.','.$platform_name.','.$longitude.','.$latitude.','.$z.','.$z_plane_of_reference.','.$westLimit.','.$southLimit.','.$eastLimit.','.$northLimit.','.$startTime.','.$endTime.','.$operator_url.','.$platform_url.','.$data_url.','.$observed_property.','.$status.','.$comments."\n"; } close (FILE_CSV); my $csv_url = 'http://carocoops.org/ms_tmp/gearth_'.$random_value.'/temp1.csv'; #print $csv_url; my $kml_filename = `perl processCatalog.pl $csv_url`; print $kml_filename; exit 0;