define ("RTerra", 6378137); define ("S_LAT", 'lat'); define ("S_LON", 'lon'); define ("KM_MIL", 1.60934); // echo "costanti RT DG OK"; $RT = RTerra; $Deg2Rad = M_PI/180; $Alfa = 0.015; // coef. resistenza dell'aria; 0.0072 ottimale. $Roto = 0.02; // coef. resistenza al rotolamento; 0.01 ottimale; $Grav = 9.8; if (!isset($SLat)) $SLat = 'lat'; if (!isset($SLon)) $SLon = 'lon'; // echo "variabili RT DG OK"; function EliminApostrofi($str){ return str_replace("'", "`", $str); } function getFotoData($foto){ if (!file_exists($foto) && ($foto[0] == '/')) { $foto = '/var/www/html/bici'.$foto; } if (file_exists($foto) && (strpos($foto, '.jpg') || strpos($foto, '.jpeg'))){ $exif_data = exif_read_data ($foto, 'EXIF'); if (@array_key_exists('DateTimeOriginal', $exif_data)) { return $exif_data['DateTimeOriginal']; } else if (@array_key_exists('DateTimeDigitized', $exif_data)) { return $exif_data['DateTimeDigitized']; } else { $exif_data = exif_read_data ($foto, 'IFD0'); if (@array_key_exists('DateTime', $exif_data)) return $exif_data['DateTime']; else return NULL; } } else return NULL; } function ExifData($foto) { $fotoData = getFotoData("/var/www/html/bici/$foto"); if (isset($fotoData)) { $caption .= " (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 "
| Date | Segment | km | miles";
$titolo = 'title';
} else {
echo "
Cronistoria ciclabile per Venezia - 2020
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
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?
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.
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.
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.
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.
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:
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.
| |||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|