(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 - 2020
Cronistoria anni 2019 - 2018 Flag

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
Cronistoria di una ciclabile

Dopo un ventennio di petizioni, manifestazioni, progetti caduti nel vuoto, rinvii, nell'ultimo giorno d'estate 2017 è stato completato l'ultimo tratto della la pista ciclo-pedonale dal Vega (fiera di Venezia) - stazione di Porto Marghera al ponte trans-lagunare.

Un problema collegato a questo, del quale chi arriva a Venezia in bici deve essere informato: 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 2020

5 giugno 2020: A inizio giugno i lavori per entrambe le opere di completamento per la ciclabile per Venezia. sono in dirittura d'arrivo: la passerella, visibile nella foto a lato, è completa nella struttura metallica e la posa delle liste di legno dovrebbe concludersi in pochi giorni; manca ancora l'apertura del varco di accesso da nord. Da segnalare che c'è ora una brutta strettoia prima del vecchio accesso alla passerella, sembrerebbe per la ricostruzione del pilone abbattuto da una bufera di vento un anno fa; speriamo che sia il segnale che l'apertura della nuova passerella è imminente, perché questa strettoia, come è ora, è alquanto pericolosa.


La ciclabile da via Torino al Forte Marghera è praticamente completa e pavimentata con un materiale tipo biostrasse; potrebbe mancare qualche finitura e l'illuminazione; anche il vecchio sentiero che porta da via del Forte Marghera alla fermata del tram in viale San Marco, è ora trasformato in pista ciclabile pavimentata.


20 maggio 2020: continuano celermente i lavori per il prolungamento della passerella lungo il ponte e per il collegamento ciclabile tra via Torino e il Forte Marghera.

Lungo il ponte sono state montate le ultime mensole e i primi segmenti della passerella, che arrivano già montati con tiranti; il lavoro sembra più accurato di quello del 2016. Mancano ancora i rimanenti segmenti della passerella, la pavimentazione in legno, le ringhiere e la connessione con il percorso esistente: rimozione della ringhiera terminale dell'attuale passerella e apertura del varco nella balaustra del ponte. Pronta prima dell'estate?


Il collegamento tra via Torino e Forte Marghera è ormai completo a livello di struttura di base: ponte e rampe di accesso; resta solo da pavimentare la pista e da sistemare gli accessori, illuminazione, mancorrenti, segnaletica ecc. Inoltre è anche quasi pronto il prolungamento ciclabile fino alla fermata del tram in viale San Marco e quindi al viadotto Europa per il parco di San Giuliano. Qualche settimana?


14 maggio 2020: due buone notizie: 1) sono ripresi anche i lavori per il prolungamento della passerella; un pontone carico con le mensole mancanti e qualche segmento della passerella è arrivato in luogo nel pomeriggio del 14 maggio (vedi foto a lato).

2) Proseguono anche i lavori del raccordo ciclabile Forte Marghera-via Torino; la sede della rampa per il ponte è pronta per essere pavimentata. E' la prima volta che i due cantieri funzionano in parallelo, cosa che dà buone speranze di vedere il tutto concluso prima dell'estate.


7 maggio 2020: dopo quasi due mesi di lock-down torno a pedalare e ritrovo i lavori per la ciclabile tra Forte Marghera e via Torino e quelli per il prolungamento della passerella lungo il ponte al punto in cui erano a inizio marzo; sono invece avanzati un poco quelli per il nuovo sovrappasso davanti al Vega, che ciclabile non è, c'è solo da sperare che preveda una corsia ciclabile per arrivare alla ciclabile in sicurezza.

I lavori per la prima opera sono poi ripresi da lunedì 4 maggio, come si vede nella foto scattata dalla rotonda di via Torino. Si sta realizzando la massiciata per la rampa che deve portare al ponte. Ora forse si può sperare in una inaugurazione per l'estate. Per la passerella invece tutto fermo, sono montate solo la metà delle mensole ed è sparito anche il pontone dal quale venivano effettuati i lavori. Tempi lunghi, c'è da temere.


28 febbraio 2020: continua l'alternanza tra i lavori a Forte Marghera, e quelli per il prolungamento della passerella lungo il ponte lagunare; sono ora in fase di montaggio le mensole che reggeranno la passerella. Il montaggio avviene da un pontone nella laguna e non comporta alcuna interruzione della ciclabile esistente.


22 febbraio 2020: Il Forte Marghera è stato riaperto, molto parzialmente, al pubblico, e il nuovo ponte ciclabile sul Canal Salso è ora visibile da nord; mancano ancora le rampe di accesso, e la pavimentazione della ciclabile; per ora si lavora alla posa di canali sotto la futura ciclabile, per linee elettriche e telefoniche. Il 22-2-2020 annunciato come data di fine lavori, slitterà, sperabilmente solo di qualche settimana.

Proseguono anche i lavori, dall'altra parte della rotonda di via Torino, per il cavalcavia non-ciclabile per la Macro-isola di Marghera; la ciclabile a sinistra di via Torino, seppur chiusa da tempo, per ora non è stata toccata, resta in piedi l'auspicio/speranza che sia riattivata e continuata fino al Vega lungo la rampa in discesa.


11 febbraio 2020: È stato montato il ponte in metallo che collegherà la ciclabile di via Torino con il Forte Marghera. Ovviamente ci vorrà ancora un po' di tempo per sistemare massicciata, pavimentazione, illuminazione e quant'altro, ma ormai il pezzo più importante è arrivato e sembra realistico che i lavori si concludano entro la primavera.

Fermi invece i lavori per il prolungamento della passerella lagunare. Per ora sono stati approntati solo i blocchi di cemento incastonati nel ponte ai quali andrà fissata la passerella. Qui i tempi potrebbero essere più lunghi.


Gennaio 2020: I lavori per il completamento della ciclabile per Venezia segnano il passo. Quelli per il collegamento via Torino - forte Marghera, sono fermi da novembre, quelli per il prolungamento della passerella lungo il ponte trans-lagunare sono ancora alla fase della preparazione dei blocchi di cemento dove andranno fissate le mensole. Insomma la scadenza del febbraio 2020 per la conclusione dei lavori è ormai impossibile, speriamo che si finisca prima dell'estate.

Intanto sono cominciati i lavori per la nuova rotatoria della SR 11 presso il Vega. La triste notizia è che per prima cosa è stata demolita la corsia ciclabile che finiva nel sottopassaggio della stazione di Porto Marghera. Certo era inutilizzabile da quando RFI aveva murato l'accesso al sottopassaggio per i lavori di ricostruzione della stazione che si sono quasi subito interrotti. Ora chissà quanti anni ci vorranno per ricuperare un passaggio decentemente ciclabile dal Vega a via Torino. Una triste notizia appunto.


Continua dalla pagina → Anno 2019


Libro dei sogni

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

  1. Ciclabile lato nord (lato ferrovia): dal parco di San Giuliano ben collegato con il centro di Mestre, un ponte ciclabile sul canale dovrebbe portare sul terreno a nord della ferrovia, da dove si dovrebbe 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.
  2. Ciclabile lato sud (lato statale): ormai è stata realizzata, resta il problema del marciapiede sul ponte che presenta strettoie ed è poco adatto a una ciclabile a doppio senso. Ideale sarebbe prolungare la passerella lungo tutto il ponte con larghezza adeguata. Un progetto per prolungarla di qualche centinaio di metri evitando la strettoia, è stato presentato dal comune, i lavori sono poi iniziati a metà 2019, vedi sopra per gli aggiornamenti.
  3. Collegamento ciclabile tra la rotonda di via Torino e forte Marghera: i lavori sono iniziati a metà 2019, dovrebbero concludersi presto (vedi sopra).

Collegamenti e fonti

Il 21 dicembre 2012 il comune di Venezia aveva presentato un più modesto progetto per un collegamento ciclabile da Mestre a Venezia, nel quale la passerella a doppio senso era limitata solo alle ultime centinaia di metri dove c'era uno stretto budello tra balaustra e guardrail. È il progetto in corso: la passerella è stata completata nel 2016, la ciclabile lungo la SR 11 dovrebbe, dovrebbe essere completata nel 2017. X
X

Nel 1994 quando mi trasferii a Venezia da Roma, c'era una corsia ciclabile all'altezza del Vega (Fiera di Venezia) poi alcuni tratti su stradine lungo il porto, infine dalla fine di via dell'Idraulica, circa 750 m sulla SR 11 in mezzo a un traffico pesantissimo e lanciato ad alta velocità prima di arrivare all'imbocco del ponte, dove c'era già una corsia ciclabile ricavata sul vecchio marciapiede. Nel verso opposto da Venezia a Mestre situazione simile perché il primo tratto da piazzale Roma alla ciclabile sul ponte è più lungo e con diversi punti critici e piuttosto pericolosi, mentre alla fine del ponte ci si ritrova sulla SR 11 nonostante sulla destra ci sia una spazio tra la ferrovia e la strada che potrebbe benissimo ospitare una ciclabile.

X Il gas radon è un gas di origine naturale debolmente radioattivo, considerato responsabile di circa il 5% dei morti di cancro in Italia (il rimanente 95% è dovuto al fumo di sigaretta); in piccole quantità è presente dappertutto, in quantità maggiore nelle regioni con rocce vulcaniche come il tufo che emettono naturalmente radon, come nella provincia di Viterbo dove il livello di gas radon è al di sopra della media. È considerato pericoloso soprattutto quando si accumula in ambienti chiusi.