(data e ora: $fotoData)"; } return $caption; } function SegnaLuoghi($lat0, $lon0, $lat1, $lon1, $icona){ $cur = mysql_query(" SELECT nome, sigla, latitudine, longitudine, foto FROM bici.luoghi WHERE (longitudine BETWEEN $lon0 AND $lon1) AND (latitudine BETWEEN $lat0 AND $lat1) ORDER BY longitudine DESC "); if (mysql_error()) echo mysql_error(); $result = ''; while ($riga = mysql_fetch_row($cur)) { $result .= "SetMarker0($riga[2], $riga[3], \"$riga[0]\", \"?Sigla=$riga[1]&Trova=1\", \"$riga[4]\", \"$riga[0]\", \"$icona\");"; } return $result; } function JS_segnaLuoghiLatLon($cLat, $cLon, $zoom){ $dLa = $zoom/50; $dLo = $zoom/50; $lat0 = $cLat - $dLa; $lon0 = $cLon - $dLo; $lat1 = $cLat + $dLa; $lon1 = $cLon + $dLo; return SegnaLuoghi($lat0, $lon0, $lat1, $lon1, 'villa'); } function IterUscitaSQL($sqlCom){ $line = GetPolylineSQL($sqlCom); $linea = '['; $sep = ''; foreach ($line as $latlon){ $linea .= "$sep new google.maps.LatLng($latlon)"; $sep = ','; } $linea .= "]\n"; return $linea; } function IterUscita($uscita, $verso){ $line = GetPolyline($uscita, $verso); $linea = '['; $sep = ''; foreach ($line as $latlon){ $linea .= "$sep new google.maps.LatLng($latlon)"; $sep = ','; } $linea .= "]\n"; return $linea; } function TrovaLatLon($percorso, &$lat, &$lon, &$zoom){ global $Deg2Rad; global $SLat; global $SLon; $lat = 45.6; $lon = 12.3; $zoom = 10; $curP = mysql_query("SELECT CLat, CLon, zoom FROM percorsi.riepilogo WHERE nome = '$percorso'"); if (mysql_error()) echo mysql_error(); if ($rigaP = mysql_fetch_row($curP)) { $lat = $rigaP[0]; $lon = $rigaP[1]; $zoom = $rigaP[2]; } else { $curP = mysql_query("SELECT min($SLat), min($SLon), max($SLat), max($SLon) FROM $percorso"); if (mysql_error()) echo mysql_error(); if ($rigaP = mysql_fetch_row($curP)) { $lat = ($rigaP[0] + $rigaP[2])/2; $lon = ($rigaP[1] + $rigaP[3])/2; $wid = cos($lat*$Deg2Rad)*abs($rigaP[1] - $rigaP[3]); $hi = abs($rigaP[0] - $rigaP[2]); if ($hi > $wid) $wid = $hi; $zoom = floor(9 - log($wid, 2)); if ($zoom > 13) $zoom = 13; if ($zoom < 5) $zoom = 5; } } // $zoom = 9; /* $curP = mysql_query("SELECT min($SLat), min($SLon), max($SLat), max($SLon) FROM $percorso"); if (mysql_error()) echo mysql_error(); if ($rigaP = mysql_fetch_row($curP)) { $lat = ($rigaP[0] + $rigaP[2])/2; $lon = ($rigaP[1] + $rigaP[3])/2; $wid = cos($lat*$Deg2Rad)*abs($rigaP[1] - $rigaP[3]); $hi = abs($rigaP[0] - $rigaP[2]); if ($hi > $wid) $wid = $hi; $zoom = floor(9 - log($wid, 2)); if ($zoom > 13) $zoom = 13; if ($zoom < 5) $zoom = 5; // $zoom = 9; } */ } function EncodeChar($ll){ $lat = round($ll*100000); if ($lat < 0) { $lat = -$lat; $lat = 4294967296 - $lat; $lat = 2*$lat; $lat = 8589934591 - $lat; } else { $lat = 2*$lat; } $line = ''; do { $line .= chr(63 + (($lat % 32) | 32)); $lat = $lat / 32; } while ($lat >= 32); $line .= chr(63 + $lat); return $line; } function EncPolyline($percorso, $verso){ global $SLat; global $SLon; $cur = mysql_query("SELECT $SLat, $SLon FROM $percorso ORDER BY ord $verso"); if (mysql_error()) echo mysql_error(); $line = ''; $ulat = 0; $ulon = 0; while ($riga = mysql_fetch_row($cur)) { $line .= EncodeChar($riga[0] - $ulat); $line .= EncodeChar($riga[1] - $ulon); $ulat = $riga[0]; $ulon = $riga[1]; } return $line; } function GetRPolyline($percorso, $verso, $riduci){ global $SLat; global $SLon; $cur = mysql_query("SELECT $SLat, $SLon FROM percorsi.$percorso ORDER BY ord $verso"); if (mysql_error()) echo mysql_error(); $line = array(); $ind = 0; $indR = 0; while ($riga = mysql_fetch_row($cur)) { if ($ind == 0) $line[$indR++] = "$riga[0], $riga[1]"; ++$ind; if ($ind == $riduci) $ind = 0; } return $line; } function GetPolylineSQL($sqlCom){ $cur = mysql_query($sqlCom); if (mysql_error()) echo mysql_error(); $line = array(); $ind = 0; while ($riga = mysql_fetch_row($cur)) { $line[$ind++] = "$riga[0], $riga[1]"; } return $line; } function GetPolyline($percorso, $verso){ global $SLat; global $SLon; // return GetPolylineSQL("SELECT $SLat, $SLon FROM percorsi.$percorso ORDER BY ord $verso"); può anche essere gps20xx !! return GetPolylineSQL("SELECT $SLat, $SLon FROM $percorso ORDER BY ord $verso"); } function GetPath($percorso, $verso){ global $SLat; global $SLon; $cur = mysql_query("SELECT $SLat, $SLon FROM $percorso ORDER BY ord $verso"); // $cur = mysql_query("SELECT $SLat, $SLon FROM percorsi.$percorso ORDER BY ord $verso"); if (mysql_error()) echo mysql_error(); $line = '['; // $line = ''; $ind = 0; $sep = ''; while ($riga = mysql_fetch_row($cur)) { $line .= $sep."new google.maps.LatLng($riga[0], $riga[1])"; $sep = ', '; } return $line.']'; } function GetInfoWindow($percorso){ $cur = mysql_query("SELECT lat, lon, legenda FROM percorsi.$percorso WHERE rango > 0"); if (mysql_error()) echo mysql_error(); $info = array(); $ind = 0; while ($riga = mysql_fetch_row($cur)) { $info[$ind++] = "$riga[0], $riga[1]|$riga[2]"; } return $info; } function Secondi2HMS($time){ $ore = floor($time/3600); $min = floor(($time - $ore*3600)/60); $sec = floor(($time - $ore*3600 - $min*60)); return array('ore' => $ore, 'min' => $min, 'sec' => $sec); } function Ore2HMagellan($hours){ $ore = floor($hours); $resto = $hours - $ore; $min = $resto * 60; return 100*$ore + $min; } function HMS2Secondi($hour, $min, $sec){ return $sec + 60*$min + 3600*$hour; } function HMS2Minuti($hour, $min, $sec){ return $sec/60 + $min + 60*$hour; } function OraEstiva($anno, $mese, $di){ if (($mese > 2) && ($mese < 9)){ return true; } else if ($mese == 2){ $ud = 31 - ((gregoriantojd (3, 31, $anno)+1) % 7); if ($di >= $ud) { return true; } else { return false; } } else if ($mese == 9){ $ud = 31 - ((gregoriantojd (3, 31, $anno)+1) % 7); if ($di >= $ud) { return false; } else { return true; } } else { return false; } } function DiffOra($anno, $mese, $di){ if (OraEstiva($anno, $mese, $di)) { return 2; } else { return 1; } } function ReadMetaData($xml){ $mdata = array(); while ($xml->read()) { if (($xml->name == "time") && ($xml->nodeType == 1)) { $xml->read(); $mdata[0] = substr($xml->value, 0, 10); $mdata[1] = substr($xml->value, 11, 8); } if ($xml->name == "bounds") { $mdata[2] = $xml->getAttribute('minlat'); $mdata[3] = $xml->getAttribute('minlon'); $mdata[4] = $xml->getAttribute('maxlat'); $mdata[5] = $xml->getAttribute('maxlon'); break; } } return $mdata; } function ReadTrackpoint($xml){ $trk = array(); if ($xml->hasAttributes){ $trk[0] = $xml->getAttribute('lat'); $trk[1] = $xml->getAttribute('lon'); } while ($xml->read()) { if (($xml->name == "trkpt") && ($xml->nodeType == 15)) break; if (($xml->name == "ele") && ($xml->nodeType == 1)) { $xml->read(); $trk[2] = (int) $xml->value; } if (($xml->name == "time") && ($xml->nodeType == 1)) { $xml->read(); $trk[3] = substr($xml->value, 0, 10); $trk[4] = substr($xml->value, 11, 8); } } return $trk; } function ReadWaypoint($xml){ $wpt = array(); if ($xml->hasAttributes){ $wpt[4] = $xml->getAttribute('lat'); $wpt[5] = $xml->getAttribute('lon'); } while ($xml->read()) { if (($xml->name == "wpt") && ($xml->nodeType == 15)) break; if (($xml->name == "ele") && ($xml->nodeType == 1)) { $xml->read(); $wpt[2] = (int) $xml->value; } if (($xml->name == "name") && ($xml->nodeType == 1)) { $xml->read(); $wpt[0] = $xml->value; } if (($xml->name == "desc") && ($xml->nodeType == 1)) { $xml->read(); $wpt[1] = $xml->value; } } $wpt[3] = ''; $wpt[6] = 1; return $wpt; } function SelectFileGPS($name, $dir, $selected, $tipo){ $dp = opendir($dir); echo "$dir \n"; closedir($dp); } function SelectTracceTXT($fname, $selected){ echo "\n"; } function SelectTracceGPS($uscita, $selected, $tipo){ if (isset($uscita) && (strlen($uscita) > 2)) { if ($tipo == 'gpx') { $mark = 'trk'; } else if ($tipo == 'kml') { $mark = 'Placemark'; } else if ($tipo == 'txt') { SelectTracceTXT($uscita, $selected); return 1; } $fname = $uscita; $xml = new XMLReader(); $xml->open($fname); // if (floatval(phpversion()) > 5.1) $xml->setParserProperty(XMLReader::LOADDTD, TRUE); echo "\n"; $xml->close(); } } function Second2Hour($secondi){ $s = $secondi % 60; $h = ($secondi - $s)/60; $m = $h % 60; $h = ($h - $m)/60; return array($h, $m, $s); } function Polar2Cartes($lat, $lon, $alt){ global $RT; $raggio = $RT + $alt; $x = (float)$raggio*(cos($lat)*cos($lon)); $y = (float)$raggio*(cos($lat)*sin($lon)); $z = (float)$raggio*(sin($lat)); return array($x, $y, $z); } function Distanza($P0, $P1){ $dx = $P0[0]-$P1[0]; $dy = $P0[1]-$P1[1]; $dz = $P0[2]-$P1[2]; return (float)sqrt($dx*$dx + $dy*$dy + $dz*$dz); } function DistanzaSfericaC($lat0, $lon0, $alt0, $lat1, $lon1, $alt1){ global $RT; $P0 = Polar2Cartes($lat0, $lon0, $alt0); $P1 = Polar2Cartes($lat1, $lon1, $alt0); return Distanza($P0, $P1); } function DistanzaSfericaP($lat0, $lon0, $lat1, $lon1){ global $RT; $dlat = $RT*($lat1 - $lat0); $dlon = $RT*($lon1 - $lon0); $mlat = ($lat0 + $lat1)/2; $fcos = cos($lat0); return sqrt($dlat^2 + ($fcos*$dlon)^2); } function DistanzaCurvilinea($dretta){ global $RT; return 2*$RT*asin($dretta/2/$RT); } function Potenza($massa, $pendenza, $vel, $frenate, $roto){ global $Alfa; // global $Roto; global $Grav; // global $Frenate; // $roto = $Roto; if ($pendenza < 0) $roto += abs($pendenza)*$frenate; // simulazione frenate in discesa; return ($massa*($pendenza + $roto) + $Alfa*$vel*$vel)*$Grav*abs($vel); } function Velocita($potenza, $massa, $pendenza, $vel0, $vel1, $frenate, $roto){ $conta = 0; $error0 = $potenza - Potenza($massa, $pendenza, $vel0, $frenate, $roto); do { $vel = ($vel0 + $vel1) /2; $error = $potenza - Potenza($massa, $pendenza, $vel, $frenate, $roto); if ($error0*$error < 0) { $vel1 = $vel; } else { $vel0 = $vel; $error0 = $error; } ++$conta; } while ((abs($error) > 0.001) && ($conta < 10)); return $vel; } function JS_Itinerario_LatLon($nome, &$CLat, &$CLon){ $cur = mysql_query("SELECT CLat, CLon FROM percorsi.riepilogo WHERE nome = '$nome'"); if ($riga = mysql_fetch_row($cur)) { $CLat = $riga[0]; $CLon = $riga[1]; } } function JS_Itinerario($nome, $colore){ $cur = mysql_query("SELECT nome, titolo, url_pagina, ordine FROM percorsi.riepilogo WHERE nome = '$nome'"); $JScode = "Percorso = ["; if ($riga = mysql_fetch_row($cur)) { $Titolo = $riga[1]; $URL = $riga[2]; if (strlen($URL) < 2) $URL = "/itinerari/percorso.html?Percorso=$riga[0]"; $OrdIter = $riga[3]; $line = GetRPolyline($riga[0], 'ASC', 1); $sep = ''; foreach($line as $latlon) { $JScode .= "$sep new google.maps.LatLng($latlon)"; $sep = ','; } $JScode .= "] var LatLon = Percorso; var iter = new google.maps.Polyline({ strokeColor : '$colore', strokeWeight: 3, path: LatLon }); iter.setMap(mappa); google.maps.event.addListener(iter, 'click', function(){location.href = '$URL';}); google.maps.event.addListener(iter, 'rightclick', function(){location.href = '/gps/tabella_marcia.phtml?Uscita=$nome';}); "; } return $JScode; } function JS_ItinerariWhere($where, $riduci){ $cur = mysql_query(" SELECT nome, titolo, url_pagina, ordine FROM percorsi.riepilogo r, percorsi.percorsiMappe m $where AND r.nome = m.percorso ORDER BY ordine "); if (mysql_error()) echo "$where - ".mysql_error(); $P_ind = 0; $colore = array('#A03030', '#3030A0', '#308030', '#30A0A0', '#A0A030', '#A030A0', '#202020'); $JScode = ''; while ($riga = mysql_fetch_row($cur)) { $Nome = $riga[0]; $Titolo = $riga[1]; $URL = $riga[2]; if (strlen($URL) < 2) $URL = "/itinerari/percorso.html?Percorso=$riga[0]"; $OrdIter = $riga[3]; $line = GetRPolyline($riga[0], 'ASC', $riduci); $sep = ''; $JScode .= "Percorso = ["; foreach($line as $latlon) { $JScode .= "$sep new google.maps.LatLng($latlon)"; $sep = ','; } $color_ind = $colore[$P_ind % 7]; $JScode .= "] var LatLon = Percorso; var iter = new google.maps.Polyline({ strokeColor : \"$color_ind\", strokeWeight: 3, path: LatLon}); iter.setMap(mappa); google.maps.event.addListener(iter, \"click\", function(){location.href = \"$URL\";}); google.maps.event.addListener(iter, \"rightclick\", function(){location.href = \"/gps/tabella_marcia.phtml?Uscita=$Nome\";}); "; ++$P_ind; } return $JScode; } function JS_Percorso($percorso, $riduci){ $where = " WHERE nome = '$percorso'"; return JS_ItinerariWhere($where, $riduci); } function SegnaVille($lat0, $lon0, $lat1, $lon1, $icona){ $cur = mysql_query(" SELECT v.nome, v.pagina, l.nome, v.architetto, v.provincia, v.latitudine, v.longitudine, v.foto, v.sigla FROM bici.villevenete v, bici.luoghi l WHERE v.luogo = l.sigla AND (v.longitudine BETWEEN $lon0 AND $lon1) AND (v.latitudine BETWEEN $lat0 AND $lat1) ORDER BY v.longitudine DESC "); if (mysql_error()) echo mysql_error(); while ($riga = mysql_fetch_row($cur)) { $foto = $riga[7]; if (!isset($foto) || (strlen($foto) < 3)) { $sigla = $riga[8]; $curF = mysql_query(" SELECT f.foto FROM bici.villevenete v, bici.villeFoto f WHERE v.sigla = f.villa AND v.sigla = '$sigla' LIMIT 1 "); if ($rigaF = mysql_fetch_row($curF)) $foto = $rigaF[0]; else $foto = '???'; } echo " SetMarker0(mappa, $riga[5], $riga[6], \"$riga[0] a $riga[2] ($riga[4])\", \"/luoghi/$riga[1]\", \"/luoghi/$foto\", \"\", \"$icona\");\n"; } } function JS_LocalIgnote($percorso){ $cur = mysql_query("SELECT lat, lon FROM percorsi.percorsiFoto WHERE percorso = '$percorso'"); if (mysql_error()) echo "$where - ".mysql_error(); $locaIgnote = 0; while ($riga = mysql_fetch_row($cur)) { if (!isset($riga[0])) ++$localIgnote; if (!isset($riga[1])) ++$localIgnote; } return $localIgnote; } function JS_FotoVilla($villa, $icona){ // foto villa dove? $sqlCom =" SELECT f.foto, f.titolo, f.descrizione, f.lat, f.lon, f.caption, f.title, r.latitudine, r.longitudine, r.nome, r.foto FROM bici.villeFoto f, bici.villevenete r WHERE f.villa = '$villa' AND r.sigla = '$villa' "; $cur = mysql_query($sqlCom); if (mysql_error()) echo mysql_error(); $fotoList = ''; $conta = 0; while ($riga = mysql_fetch_row($cur)) { $foto = $riga[0]; $iFoto = $riga[10]; if (!isset($iFoto) || (strlen($iFoto) < 3)) $iFoto = $foto; else $iFoto = '---'; if ($conta == 0){ if (isset($riga[7])) $vlat = $riga[7]; else $vlat = 100; if (isset($riga[8])) $vlon = $riga[8]; else $vlon = 100; $fotoList .= "SetMarker0($vlat, $vlon, \"$riga[9]\", \"/luoghi/villa.html?Sigla=$villa\", \"/luoghi/$iFoto\", \"\", \"villa\"); "; } $server = $_SERVER['SERVER_NAME']; if (($server == "bicycle.bonavoglia.eu") || ($server == "bike.bonavoglia.eu")) { $titolo = utf8_encode(EliminApostrofi($riga[6])); $legenda = utf8_encode(EliminApostrofi($riga[5])); } else { $titolo = utf8_encode(EliminApostrofi($riga[1])); $legenda = utf8_encode(EliminApostrofi($riga[2])); } if (isset($riga[3])) $lat = $riga[3]; else $lat = 100; if (isset($riga[4])) $lon = $riga[4]; else $lon = 100; if (($lat < 100) && ($lon < 100)) $fotoList .= "SetMarker0($lat, $lon, \"$titolo\", \"\", \"/luoghi/$foto\", \"$legenda\", \"$icona\"); "; } return $fotoList; } function JS_FotoLuogo($luogo, $icona){ $sqlCom =" SELECT f.foto, f.titolo, f.descrizione, f.lat, f.lon, f.caption, f.title, r.latitudine, r.longitudine, r.nome FROM bici.luoghiFoto f, bici.luoghi r WHERE f.luogo = '$luogo' AND r.situato = '$luogo' AND f.lat <> 0 GROUP BY f.titolo "; $cur = mysql_query($sqlCom); if (mysql_error()) echo mysql_error(); $fotoList = ''; $conta = 0; while ($riga = mysql_fetch_row($cur)) { $foto = $riga[0]; $server = $_SERVER['SERVER_NAME']; if (($server == "bicycle.bonavoglia.eu") || ($server == "bike.bonavoglia.eu")) { $titolo = utf8_encode(EliminApostrofi($riga[6])); $legenda = utf8_encode(EliminApostrofi($riga[5])); } else { $titolo = utf8_encode(EliminApostrofi($riga[1])); $legenda = utf8_encode(EliminApostrofi($riga[2])); } if (isset($riga[3])) $lat = $riga[3]; else $lat = 100; if (isset($riga[4])) $lon = $riga[4]; else $lon = 100; if (($lat < 100) && ($lon < 100)) $fotoList .= "SetMarker0($lat, $lon, \"$titolo\", \"\", \"/citta/$foto\", \"$legenda\", \"$icona\"); "; } return $fotoList; } function JS_FotoFiltro($filtro, $icona){ $cur = mysql_query(" SELECT f.foto, f.titolo, f.descrizione, f.lat, f.lon, f.caption, f.title, r.parent FROM percorsi.percorsiFoto f, percorsi.riepilogo r, percorsi.percorsiMappe m WHERE f.percorso = r.nome AND m.percorso = r.nome $filtro "); if (mysql_error()) echo mysql_error(); $fotoList = ''; while ($riga = mysql_fetch_row($cur)) { $parent = $riga[7]; $server = $_SERVER['SERVER_NAME']; if (($server == "bicycle.bonavoglia.eu") || ($server == "bike.bonavoglia.eu")) { if (strpos($riga[0], '/itinerari/') === false) $foto = "${parent}it/$riga[0]"; else $foto = "it/$riga[0]"; $titolo = utf8_encode(EliminApostrofi($riga[6])); $legenda = utf8_encode(EliminApostrofi($riga[5])); } else { if (strpos($riga[0], '/itinerari/') === false) $foto = "${parent}$riga[0]"; else $foto = $riga[0]; $titolo = utf8_encode(EliminApostrofi($riga[1])); $legenda = utf8_encode(EliminApostrofi($riga[2])); } if (isset($riga[3])) $lat = $riga[3]; else $lat = 100; if (isset($riga[4])) $lon = $riga[4]; else $lon = 100; if (($lat < 100) && ($lon < 100)) $fotoList .= "SetMarker0($lat, $lon, \"$titolo\", \"\", \"$foto\", \"$legenda\", \"$icona\"); "; } return $fotoList; } function JS_FotoPercorso($percorso, $icona){ return JS_FotoFiltro(" AND f.percorso = '$percorso'", $icona); } function JS_FotoWhere($percorso, $icona){ // per compatibilità return JS_FotoFiltro(" AND m.percorso = '$percorso'", $icona); } function JS_FotoViaggio($viaggio, $icona){ return JS_FotoFiltro(" AND m.mappa = '$viaggio'", $icona); } function TabellaViaggio($viaggio, $align, $metric){ if (isset($metric)) { echo "\n
DateSegmentkmmiles"; $titolo = 'title'; } else { echo "\n\n"; $sqlCom = " SELECT DATE(ultimaData) FROM percorsi.riepilogo WHERE mappa0 = '$viaggio' ORDER BY ultimaData ASC, Ordine "; $cur = mysql_query($sqlCom); $semitappe = array(); $ord = -1; $udata = ''; while ($riga = mysql_fetch_row($cur)) { $data = $riga[0]; if ($data == $udata) { ++$semitappe[$ord]['Num']; } else { ++$ord; $semitappe[$ord] = array('Num' => 1, 'Data' => "$riga[0]"); } $udata = $data; } $km = 0; $ord = 0; $riga = ''; mysql_data_seek($cur, 0); foreach ($semitappe as $tappa){ ++$ord; $cols = $tappa['Num']; $data = $tappa['Data']; echo "'; echo "\n"; $acapo = 1; $km += $kmC; } } echo "\n
DataTappakm"; $titolo = 'titolo'; } echo "
$ord"; echo $data; $sqlCom = " SELECT Nome, $titolo, km FROM percorsi.riepilogo WHERE mappa0 = '$viaggio' AND DATE(ultimadata) = '$data' ORDER BY ultimaData ASC"; $curT = mysql_query($sqlCom); $acapo = 0; while ($rigaT = mysql_fetch_row($curT)) { $kmC = $rigaT[2]; if (isset($metric)) $miles = round(2*$kmC/KM_MIL)/2; $nome = utf8_encode($rigaT[1]); if ($acapo == 1) echo '
$nome$kmC"; if (isset($metric)) echo sprintf("%0.1f", $miles); echo "
Total$km"; if (isset($metric)) { $miles = round(2*$km/KM_MIL)/2; printf("%0.1f", $miles); } echo "
\n"; } function JS_segnaVille($lat0, $lon0, $lat1, $lon1, $icona){ // popup villa su mappa $cur = mysql_query(" SELECT v.nome, v.pagina, l.nome, v.architetto, v.provincia, v.latitudine, v.longitudine, v.foto, v.sigla FROM bici.villevenete v, bici.luoghi l WHERE v.luogo = l.sigla AND v.longitudine > $lon0 AND v.longitudine < $lon1 AND v.latitudine > $lat0 AND v.latitudine < $lat1 ORDER BY v.longitudine DESC "); if (mysql_error()) echo mysql_error(); $JScode = ''; while ($riga = mysql_fetch_row($cur)) { $foto = $riga[7]; $sigla = $riga[8]; if (!isset($foto) || (strlen($foto) < 3)) { $sigla = $riga[8]; $curF = mysql_query(" SELECT f.foto FROM bici.villevenete v, bici.villeFoto f WHERE v.sigla = f.villa AND v.sigla = '$sigla' LIMIT 1 "); if ($rigaF = mysql_fetch_row($curF)) $foto = $rigaF[0]; else $foto = '???'; } if ($_SERVER['SERVER_NAME'] == "bicycle.bonavoglia.eu") $foto = "/luoghi/it/$foto"; else $foto = "/luoghi/$foto"; if (strlen($riga[1]) < 3) $URL = "/luoghi/villa.html?Sigla=$riga[8]"; else $URL = "/luoghi/$riga[1]"; $JScode .= "SetMarker0($riga[5], $riga[6], \" == $riga[0] a $riga[2] ($riga[4]) == \", \"$URL\", \"$foto\", \"\", \"$icona\"); "; } return $JScode; } function JS_segnaVilleLatLon($cLat, $cLon, $zoom){ $dLa = $zoom/50; $dLo = $zoom/50; $lat0 = $cLat - $dLa; $lon0 = $cLon - $dLo; $lat1 = $cLat + $dLa; $lon1 = $cLon + $dLo; return JS_segnaVille($lat0, $lon0, $lat1, $lon1, 'villa'); } function JS_ItinerariLatLon($cLat, $cLon, $zoom){ $dLa = $zoom/10; $dLo = $zoom/5; $lat0 = $cLat - $dLa; $lon0 = $cLon - $dLo; $lat1 = $cLat + $dLa; $lon1 = $cLon + $dLo; // return JS_ItinerariWhere("WHERE CLat > $lat0 AND CLat < $lat1 AND CLon > $lon0 AND CLon < $lon1", 2); return JS_ItinerariWhere("WHERE (CLat BETWEEN $lat0 AND $lat1) AND (CLon BETWEEN $lon0 AND $lon1)", 2); } function JS_ItinerariBox($cLat0, $cLat1, $cLon0, $cLon1, $zoom){ return JS_ItinerariWhere("WHERE (CLat BETWEEN $cLat0 AND $cLat1) AND (CLon BETWEEN $cLon0 AND $cLon1)", 2); } function JS_Itinerari($riduci){ return JS_ItinerariWhere('', $riduci); } ?>
Cronistoria ciclabile per Venezia - 2024
Cronistoria anni 2023 - 2022

Attenzione questa è solo la cronistoria della ciclabile; per descrizioni e planimetrie fare clic sui link a destra.

Vega → Venezia
Venezia → Vega
Mestre → Venezia
Marghera → Venezia
Aeroporto → Venezia
Venezia → Mestre
Venezia → Marghera
Venezia → Aeroporto (lungo la laguna)
Venezia → Aeroporto (per via Vallenari)
Cronistoria di una ciclabile

Pagina di aggiornamenti sulla ciclabile per Venezia che, inaugurata nel settembre 2017, è rimasta in funzione solo pochi mesi dopo per essere brutalmente interrotta da parte delle ferrovie (RFI) nel 2018 con la costruzione di un muro che ha chiuso l'accesso dalla rotonda di via Torino al Vega e costretto a una brutta deviazione fino a un brutto sottopassaggio della stazione di Porto Marghera che si concludeva con una scaletta per risalire alla via Paganello. Ma al peggio non ci sono limiti e nel 2021 anche questa scaletta è stata demolita e i ciclisti costretti a portarsi la bici per una stretta scala fino al marciapiede n. 4 per poi scendere sulla via Paganello dove è in costruzione una corsia ciclabile. Finalmente un'\ulteriore forca caudina con la demolizione della rampa verso il Vega e un'altra rampa di scale. Peggio di così è difficile scendere, si spera che i lavori finiscano prima o poi con l'apertura del nuovo sottopassaggio che dovrebbe essere, non so in quale misura, anche ciclabile.

Chi arriva a Venezia in bici deve essere poi informato che dal 2017 il comune di Venezia proibisce l'accesso delle bici nel centro storico di Venezia anche se condotte a mano, con un discutibile provvedimento, al quale dedico una pagina a parte.


Aggiornamenti, anno 2024

17 Febbraio 2024

Una nuova ciclabile è stata completata lungo la ferrovia e la via Ca' Marcello, dalla rotonda di via Paganello alla zona dei nuovi alberghi. Di fatto corre parallela alla ciclabile di via Torino, e sembra destinata ad inserisi nel percorso Mestre - Venezia storica, raggiungendo il famigerato sottopassaggio della stazione di Venezia porto Marghera.

Dico famigerato perché è dall'estate 2018 che la ciclabile per Venezia è interrotta in questo punto; fu infatti RFI fece murare l'accesso dalla ciclabile di via Torino al sottopassaggio, dichiarando come motivo la necessità di dare inizio ai lavori per una nuova stazione e un nuovo sottopassaggio.


Sono passati sei anni e i lavori per la nuova stazione e per il nuovo sottopassaggio vanno a rilento a dir poco: della nuova stazione non si vede traccia, del nuovo sottopassaggio è stato completato lo scavo e sono state realizzate le scale pedonali, mentre delle rampe di accesso che dovranno pur essere realizzate non si vede traccia e dalla parte del Vega, non si capisce nemmeno dove e come sbucheranno ...


21 Febbraio 2024

Novità in vista per il percorso Terraferma- Venezia storica - Venezia Lido, affollato in estate dai tanti che raggiungono le spiaggie del Lido in bici. Allo sbocco della ciclabile dalla terraferma, si trova lo scenario visibile nella foto a destra. È stato realizzato un cordone di cemento per separare il traffico motorizzato da quello ciclo(?)pedonale. Ma resta un arco metallico ad impedire che i ciclisti in arrivo imbocchino questa corsia.

Si tratta di un impedimento provvisorio o permanente? Certo quella corsia è un po' troppo stretta per una ciclabile a doppio senso quale dovrebbe essere, tanto più per una ciclopedonale. Visto che al tempo stesso è stato allargato il marciapiede a sinistra, sembra ragionevole aspettarsi che ai pedoni sia riservato il marciapiede, ai ciclisti la corsia a destra.


In fondo alla discesa c'è invece una sorpresa positiva, il vecchio ponte stradale che portava dalla stazione marittima all'isola del Tronchetto, abbandonato quando ne fu costruito uno nuovo più alto e più largo, è ora in restauro, destinato a pista ciclabile e pedonale, che dovrà rendere più facile e sicuro il percorso dei ciclisti che vogliono raggiungere il ferry per il Lido, soprattutto d'estate. Ma la soluzione ideale sarebbe di prolungare la passerella fino in fondo, all'imbocco del ponte rinnovato.

Da quel che si vede nella foto a destra sembra che il ponte avrà due corsie ciclabili ai lati e una pedonale al centro. O viceversa? Non dovrebbe mancare molto all'apertura.


Continua dalla pagina → Anno 2023


Libro dei sogni

La ciclabile per Venezia è quindi completa da Marghera al bivio del Tronchetto. Altri progetti sarebbero utili a migliorare le connessioni ciclabili con la terraferma; ecco il mio libro dei sogni:

  1. Collegamento ciclabile tra il Vega e Marghera: ora come ora assai poco ciclabile; venendo da Venezia, dopo il Vega si può continuare lungo la ferrovia fino a un passaggio a livello su una strada lungo la Fincantieri assai poco ciclabile, senso unico, con lato sinistro occupato da auto parcheggiate e lato destro in cattive condizioni. Venendo da Marghera si deve salire il cavalcaferrovia di via del Commercio, e poi scendere lungo la SR 11 fino a trovare sulla destra una ciclabile piuttosto malmessa fino al Vega; attualmente attraversa il cantiere per la nuova rotatoria, cosa che costringe a fare qualche pezzo a piedi.
  2. Ciclabile lato sud (lato statale): ormai è stata realizzata, resta il problema del marciapiede sul ponte che è un po' troppo stretto per una ciclabile a doppio senso, cosa che risulta tanto più evidente con l'aumento del traffico di ciclisti, pedoni e podisti. Ideale sarebbe prolungare la passerella lungo tutto il ponte lasciando il vecchio marciapiede alla sua funzione originaria, ai pedoni. Un prolungamento di 170 m è stato completato nel giugno 2020. Il resto è ancora nel libro dei sogni.
  3. Ciclabile lato nord (lato ferrovia): dal parco di San Giuliano ben collegato con il centro di Mestre, un ponte ciclabile sul canale potrebbe portare sul terreno a nord della ferrovia, da dove si potrebbe imboccare una passerella sulla laguna o appesa al ponte che porti diritto alla zona universitaria di San Giobbe e alla stazione di Santa Lucia. Soluzione ottima, ma sicuramente costosa e per ora appunto solo un bel sogno.b

Collegamenti e fonti

X

Il "della burocrazia" è ovviamente una mia aggiunta per contestualizzare la citazione di Schiller, che è la traduzione che si trova più spesso, dall'originale tedesco: Mit (der) Dummheit kämpfen Götter selbst vergebens; letteralmente in italiano sarebbe: "Contro la stupidità, gli dei stessi combattono invano".

X

Modo di dire romano per chi è costretto a fare un giro tortuoso molto più lungo del necessario.

X

L'origine di questa curiosa locuzione è ignota, ma circolano bufale come questa che a prima lettura può sembrare verosimile: Peppe sarebbe nientemeno che Giuseppe Garibaldi, che nel gennaio 1878 sarebbe venuto a Roma per presenziare ai funerali di Vittorio Emanuele II, e avrebbe seguito la carrozza reale che trasportava la salma; carrozza che seguiva un itinerario lungo e tortuoso per consentire alla popolazione di vedere la carrozza e rendere l'ultimo omaggio al re, in particolare fece due volte il giro della rotonda prima di fermarsi davanti al Panteon sempre con Garibaldi al seguito.

Storiella divertente ma senza alcun fondamento; dall'archivio del Corriere della Sera, gennaio 1878 si apprende che Garibaldi inviò un telegramma di condoglianze al ministro guardasigilli Mancini, scusandosi di non poter essere presente al funerale per motivi di salute; al suo posto ci fu il figlio on. Menotti Garibaldi.

Divertente la storiella di Garibaldi che segue la carrozza reale con la salma di Vittorio Emanuele II. Temo però che non abbia alcun fondamento storico. Cercando nell'archivio del Corriere della Sera del gennaio 1878 si apprende che Garibaldi inviò al ministro guardasigilli Mancini un telegramma di condoglianze scusandosi per non poter intervenire per motivi di salute e al suo posto venne il figlio Menotti Garibaldi. Peccato, la storiella era divertente, ma come capita spesso, era una bufala, nata chissà come.