]> git.openstreetmap.org Git - dns.git/blobdiff - bin/mkgeo
Move few tiles to Sweden for a few EU countries
[dns.git] / bin / mkgeo
index 7f80e98018a9fc44e104b52eee9844ab6be2efd3..bb29fe60f9fc9604e9e22a61602ff2323ab10c5e 100755 (executable)
--- a/bin/mkgeo
+++ b/bin/mkgeo
@@ -15,7 +15,9 @@ my $servers = YAML::LoadFile("src/${source}");
 
 my %countries = ();
 
-my $countries = XML::TreeBuilder->new->parsefile("lib/countries.xml");
+my $countries = XML::TreeBuilder->new;
+
+$countries->parsefile("lib/countries.xml");
 
 foreach my $country ($countries->look_down("_tag" => "country"))
 {
@@ -56,9 +58,9 @@ $countries->delete;
 
 my $zonefile = IO::File->new("> data/${zone}") || die "$!";
 my $kmlfile = IO::File->new("> kml/${zone}.kml") || die "$!";
-my $kmlwriter = XML::Writer->new(OUTPUT => $kmlfile);
+my $kmlwriter = XML::Writer->new(OUTPUT => $kmlfile, ENCODING => 'utf-8');
 
-$kmlwriter->xmlDecl("UTF-8");
+$kmlwriter->xmlDecl();
 $kmlwriter->startTag("kml", "xmlns" => "http://www.opengis.net/kml/2.2");
 $kmlwriter->startTag("Document");
 
@@ -66,21 +68,27 @@ foreach my $country (values %countries)
 {
     my @servers = sort { $b->{priority} <=> $a->{priority} || $a->{distance} <=> $b->{distance} } @{$country->{servers}};
     my $server = $servers->{$servers[0]->{name}};
+    my $clon = $country->{lon};
+    my $clat = $country->{lat};
+    my $slon = $server->{lon};
+    my $slat = $server->{lat};
+
+    if ($clon > 0 && $slon < 0 && 360 + $slon - $clon < $clon - $slon)
+    {
+        $clon = $clon - 360;
+    }
 
     $zonefile->print("C\L$country->{code}\E.${zone}:$servers[0]->{name}.${zone}:600\n");
 
     $kmlwriter->startTag("Placemark");
     $kmlwriter->dataElement("name", $country->{name});
     $kmlwriter->startTag("LineString");
-    $kmlwriter->startTag("coordinates");
-    $kmlwriter->characters("$country->{lon},$country->{lat}");
-    $kmlwriter->characters("$server->{lon},$server->{lat}");
-    $kmlwriter->endTag("coordinates");
+    $kmlwriter->dataElement("coordinates", "$clon,$clat $slon,$slat");
     $kmlwriter->endTag("LineString");
     $kmlwriter->endTag("Placemark");
 }
 
-foreach my $server (keys %$servers)
+foreach my $server (grep { $servers->{$_}->{default} }keys %$servers)
 {
     $zonefile->print("Cxx.${zone}:${server}.${zone}:600\n");
 }