Никто из программистов не думал написать скрипт (на perl, например ) для автоматической загрузки треков из определенной директории?
Где-то в вики видел. Он использует curl. Еще есть перловая библиотека для фильтрации треков и т.п.
Îíî?
<?php
$url = "http://www.openstreetmap.org/api/0.5/gpx/create";
$username="nick@hogweed.org";
$password="password";
$ch=curl_init ($url);
$formvars = array
("file"=>"@041107.gpx",
"description"=>"Henley to Chithurst via Older Hill and Stedham",
"tags"=>"West_Sussex footpaths",
"public"=>1);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
curl_setopt ($ch, CURLOPT_HTTPHEADER,array("Expect:"));
curl_setopt ($ch,CURLOPT_USERPWD,"$username:$password");
curl_setopt($ch,CURLOPT_POST,1 );
curl_setopt($ch,CURLOPT_POSTFIELDS,$formvars);
$resp=curl_exec($ch);
$httpCode=curl_getinfo($ch,CURLINFO_HTTP_CODE);
echo "Response: $resp, HTTP code: $httpCode";
?>
???, ???, ??-??? ??? ??? ??? ??? ??? ? ??? ??? ??? ?? ???
Это скрипт php. Только он загружает один единственный файл.
Прочитать содержимое директории можно так:
// create a handler for the directory
$handler = opendir($directory);
// keep going until all files in directory have been read
while ($file = readdir($handler)) {
// отправить файл $file
}
// close the handler
closedir($handler)
?? ??? ? ??? ??? ?? ???
??? ?? ???(“file”=>@$file,
? ??? ??? ??? ???-?? ??? “file”=>“c:\tracks\1.gpx”, ??? ?? ??? ???-?? ???.
<?php
$url = "http://www.openstreetmap.org/api/0.5/gpx/create";
$username="kekcuha";
$password="password";
$directory="c:\tracks\"
// create a handler for the directory
$handler = opendir($directory);
// keep going until all files in directory have been read
while ($file = readdir($handler)) {
// îòïðàâèòü ôàéë $file
$ch=curl_init ($url);
$formvars = array
("file"=>@$file,
"description"=>"Car track",
"tags"=>"Russia Moscow",
"public"=>1);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
curl_setopt ($ch, CURLOPT_HTTPHEADER,array("Expect:"));
curl_setopt ($ch,CURLOPT_USERPWD,"$username:$password");
curl_setopt($ch,CURLOPT_POST,1 );
curl_setopt($ch,CURLOPT_POSTFIELDS,$formvars);
$resp=curl_exec($ch);
$httpCode=curl_getinfo($ch,CURLINFO_HTTP_CODE);
echo "Response: $resp, HTTP code: $httpCode";
}
// close the handler
closedir($handler)
?>
Ошибка в строке $directory="c:\tracks"
Лучше косые в другую сторону повернуть и не забывать ставить точку с запятой:
$directory=“c:/tracks/”;
Я попробовал получившийся скрипт. Получилось зайти на сервер. Но сервер прислал сообщение об ошибке. Дальше не стал разбираться.
Кстати, здесь http://wiki.openstreetmap.org/index.php/Batch_Upload пишут, что можно просто загрузить чере web-форму zip-архив с gpx-файлами.
На этой же странице приводится скрипт на perl и java
:mad:
Неделя мучений с vbx, php, curl’ом, а на той странице готовое решение.
СПАСИБО!
Имеется код:
$url='http://www.openstreetmap.org/api/0.6/node/'.$row_b[0].'/';
echo $url."<br>\n";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt ($ch, CURLOPT_HTTPHEADER,array("Expect:"));
$result_op = curl_exec($ch); /*сохраняем страницу, которая была выдана*/
echo "Вот: ".$result_op."<br>\n"; /*Выводим результат*/
$httpCode=curl_getinfo($ch,CURLINFO_HTTP_CODE);
echo "Response: $result_op, HTTP code: $httpCode"."<br>\n";
Результат:
Куда девается xml?
HTTP Error 405 - Method not allowed
Убрать строчку с CURLOPT_POST.
Спасибо, заработало.
Подскажите как обратно на сервер закинуть данные?
$url = "http://www.openstreetmap.org/api/0.6/node/".$row_b[0];
//$url = "http://api06.dev.openstreetmap.org/api/0.6/".$row_b[0];
$username="Stud555";
$password="***";
$ch=curl_init ($url);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
curl_setopt ($ch, CURLOPT_HTTPHEADER,array("Expect:"));
curl_setopt ($ch,CURLOPT_USERPWD,"$username:$password");
curl_setopt($ch,CURLOPT_POST,1 );
curl_setopt($ch,CURLOPT_POSTFIELDS,$result_op);
$resp=curl_exec($ch);
$httpCode=curl_getinfo($ch,CURLINFO_HTTP_CODE);
echo "Response: $resp, HTTP code: $httpCode";
Сейчас это выдает 405 ошибку.
Если речь идет о загрузке треков, то $url, наверное, должен содержать ‘/gpx/create’, как в вышеприведенном примере KekcuHa, а не ‘/node/’.
Нет, речь идет именно о загрузке ноды.
CURLOPT_USERPWD это явно HTTP-авторизация. В данном случае нужно другое: логин на сервер и загрузка с передачей cookies.