source: subversion/applications/utils/export/poiexport/download.php @ 18322

Last change on this file since 18322 was 18317, checked in by rubke, 10 years ago

release 0.2

File size: 5.8 KB
Line 
1<?php
2require ("./config.php"); 
3
4if (!isset($_GET["output"]) || !isset($_GET["k"]) || !isset($_GET["v"]) || !isset($_GET["filename"])) {
5  die("Error, Not all parameters supplied");
6}
7
8$output = $_GET["output"];
9$k = $_GET["k"];
10$v = $_GET["v"];
11$filename = $_GET["filename"];
12
13$dbconn = pg_connect("host=" . $config['Database']['servername'] . " port=" . $config['Database']['port'] . " dbname=" . $config['Database']['dbname'] . " user=".$config['Database']['username'] . " password=" . $config['Database']['password']) or die('Could not connect: ' . pg_last_error());
14
15$query = "SELECT name, lat, lon
16FROM (
17  SELECT name,
18         x(transform(way, 4326)) AS lon,
19         y(transform(way, 4326)) AS lat
20  FROM planet_osm_point
21  WHERE $k='$v'
22UNION
23  SELECT name,
24         x(centroid(transform(way, 4326))) AS lon,
25         y(centroid(transform(way, 4326))) AS lat
26  FROM planet_osm_polygon
27  WHERE $k='$v'
28) AS u1";
29$result = pg_query($query) or die('Query failed: ' . pg_last_error());
30
31switch($output) {
32  case "csv":
33    asGarmin($result, $filename . ".csv");
34    break;
35  case "ov2":
36    asOv2($result, $filename . ".ov2");
37    break;
38  case "gpx":
39    asGpx($result, $filename . ".gpx");
40    break;
41  case "kml":
42    asKml($result, $filename . ".kml");
43    break;
44  default:
45    die("No valid output specified");
46}
47
48pg_free_result($result);
49pg_close($dbconn);
50
51
52function asGarmin($data, $filename) {
53        // Set headers
54        header("Pragma: public");
55    header("Expires: 0");
56    header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
57       
58        header("Cache-Control: public");
59        header("Content-Description: File Transfer");
60        header("Content-Disposition: attachment; filename=$filename");
61        header("Content-Type: text/plain"); // Content-Type: text/html
62        //header("Content-Transfer-Encoding: binary");
63
64        while ($line = pg_fetch_array($data, null, PGSQL_ASSOC)) {
65                echo $line["lon"] . ", " .
66                 $line["lat"] . ", \"" .
67                 utf8_decode($line["name"]) . "\"\n";
68        } 
69}
70
71function asOv2($data, $filename) {
72        // Set headers
73        header("Pragma: public");
74    header("Expires: 0");
75    header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
76    header("Cache-Control: public");
77       
78        header("Content-Description: File Transfer");
79        header("Content-Disposition: attachment; filename=$filename");
80        header("Content-Type: application/octet-stream"); // Content-Type: text/html
81        header("Content-Transfer-Encoding: binary");
82       
83        while ($line = pg_fetch_array($data, null, PGSQL_ASSOC)) {
84        echo chr(0x02) .
85         pack("V",strlen($line["name"]) + 14) .
86         pack("V",round($line["lon"] * 100000)) .
87         pack("V",round($line["lat"] * 100000)) .
88         utf8_decode($line["name"]) . 
89         chr(0x00);
90  } 
91}
92
93function asGpx($data, $filename) {
94        // Set headers
95        header("Pragma: public");
96    header("Expires: 0");
97    header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
98    header("Cache-Control: public");
99
100        header("Content-Description: File Transfer");
101        header("Content-Disposition: attachment; filename=$filename");
102        header("Content-Type: application/force-download"); // Content-Type: text/html
103        //header("Content-Transfer-Encoding: binary");
104
105        echo "<?xml version='1.0' encoding='UTF-8'?>\n" .
106       "<gpx version=\"1.1\" creator=\"OSM-NL POI export\" xmlns=\"http://www.topografix.com/GPX/1/1\"\n" .
107       "  xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n" .
108       "  xsi:schemaLocation=\"http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd\">\n" .
109       "<metadata></metadata>\n";
110 
111        while ($line = pg_fetch_array($data, null, PGSQL_ASSOC)) {
112                $name = normalize($line["name"]);
113        echo "<wpt lat=\"" . $line["lat"] . "\" lon=\"" . $line["lon"] . "\">\n" .
114         "  <name>" . $name . "</name>\n" .
115         "</wpt>\n";
116        }
117        echo "</gpx>";
118}
119
120function asKml($data, $filename) {
121        // Set headers
122        header("Pragma: public");
123    header("Expires: 0");
124    header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
125    header("Cache-Control: public");
126
127        header("Content-Description: File Transfer");
128        header("Content-Disposition: attachment; filename=$filename");
129        header("Content-Type: application/vnd.google-earth.kml+xml"); // Content-Type: text/html
130
131        echo "<?xml version='1.0' encoding='UTF-8'?>\n<kml xmlns='http://earth.google.com/kml/2.2'>\n";
132
133  while ($line = pg_fetch_array($data, null, PGSQL_ASSOC)) {
134                $name = normalize($line["name"]);
135        echo "<Placemark>\n\t<name>" . $name . "</name>\n" .
136                "\t<Point>\n\t\t<coordinates>" . $line["lon"] . ", " . $line["lat"] . "</coordinates>\n\t</Point>\n</Placemark>\n";
137        }
138        echo "</kml>";
139}
140
141function normalize ($string) {
142  $table = array(
143    'Å '=>'S', 'Å¡'=>'s', 'Đ'=>'Dj', 'Ä‘'=>'dj', 'Ž'=>'Z', 'ž'=>'z', 'ÄŒ'=>'C', 'č'=>'c', 'Ć'=>'C', 'ć'=>'c',
144    'À'=>'A', 'Á'=>'A', 'Â'=>'A', 'Ã'=>'A', 'Ä'=>'A', 'Ã…'=>'A', 'Æ'=>'A', 'Ç'=>'C', 'È'=>'E', 'É'=>'E',
145    'Ê'=>'E', 'Ë'=>'E', 'ÃŒ'=>'I', 'Í'=>'I', 'ÃŽ'=>'I', 'Ï'=>'I', 'Ñ'=>'N', 'Ã’'=>'O', 'Ó'=>'O', 'Ô'=>'O',
146    'Õ'=>'O', 'Ö'=>'O', 'Ø'=>'O', 'Ù'=>'U', 'Ú'=>'U', 'Û'=>'U', 'Ãœ'=>'U', 'Ý'=>'Y', 'Þ'=>'B', 'ß'=>'Ss',
147    'à '=>'a', 'á'=>'a', 'â'=>'a', 'ã'=>'a', 'ä'=>'a', 'Ã¥'=>'a', 'æ'=>'a', 'ç'=>'c', 'è'=>'e', 'é'=>'e',
148    'ê'=>'e', 'ë'=>'e', 'ì'=>'i', 'í'=>'i', 'î'=>'i', 'ï'=>'i', 'ð'=>'o', 'ñ'=>'n', 'ò'=>'o', 'ó'=>'o',
149    'ô'=>'o', 'õ'=>'o', 'ö'=>'o', 'ø'=>'o', 'ù'=>'u', 'ú'=>'u', 'û'=>'u', 'ý'=>'y', 'ý'=>'y', 'þ'=>'b',
150    'ÿ'=>'y', 'Å”'=>'R', 'Å•'=>'r', 'ü'=>'u', 'Ãœ'=>'U', '&'=>'and', '´'=>'\'', '<' => '' , '>' => ''
151  );
152
153  return utf8_decode(strtr($string, $table));
154}
155
156?>
Note: See TracBrowser for help on using the repository browser.