mirror of
https://github.com/redoules/redoules.github.io.git
synced 2025-12-12 15:59:34 +00:00
added a project
Scrapping google maps data
This commit is contained in:
parent
f09bbbae8b
commit
f0910983b2
@ -185,7 +185,7 @@ For a continuous probability distribution, the median is the value such that a n
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 94 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 95 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -219,7 +219,7 @@
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 94 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 95 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -429,7 +429,7 @@
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 94 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 95 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -256,7 +256,7 @@ we call B the event "a blue ball is drawn" and R the event "a red ball is drawn"
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 94 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 95 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -311,7 +311,7 @@
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 94 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 95 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -331,7 +331,7 @@ Between 20 and 22 hours?</p>
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 94 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 95 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -270,7 +270,7 @@ The total number of tickets bought follows a normal distribution of mean <span c
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 94 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 95 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -272,7 +272,7 @@
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 94 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 95 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -277,7 +277,7 @@ $$</div>
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 94 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 95 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -275,7 +275,7 @@
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 94 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 95 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -286,7 +286,7 @@ maxuploadtarget=5000
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 94 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 95 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -161,7 +161,7 @@
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 94 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 95 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -365,7 +365,7 @@
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 94 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 95 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -279,7 +279,7 @@ Let's first import some libraries</p>
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 94 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 95 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -161,7 +161,7 @@
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 94 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 95 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -149,7 +149,7 @@
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 94 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 95 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -152,7 +152,7 @@
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 94 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 95 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -154,7 +154,7 @@
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 94 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 95 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -235,7 +235,7 @@ Let's first import some libraries</p>
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 94 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 95 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -280,7 +280,7 @@
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 94 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 95 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
BIN
images/journeygrid/extraire_temps.png
Normal file
BIN
images/journeygrid/extraire_temps.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 418 KiB |
BIN
images/journeygrid/output_22_0.png
Normal file
BIN
images/journeygrid/output_22_0.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 134 KiB |
@ -146,7 +146,7 @@
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-body">
|
||||
<ul>
|
||||
<li>Coming soon.</li>
|
||||
<li><a href="./projects/get_traffic_data.html">08/19 Getting traffic data from google maps</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
@ -382,6 +382,7 @@
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<ul>
|
||||
<li><a href="./python/compare_dict.html">Get items in one dictionnary but not the other one</a></li>
|
||||
<li><a href="./python/iterate_dict.html">Iterate over a dictionnary</a></li>
|
||||
<li><a href="./python/write_config_file.html">Write a value to a config file</a></li>
|
||||
<li><a href="./python/config_parse.html">Parse variable from config file</a></li>
|
||||
@ -493,7 +494,6 @@
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<ul>
|
||||
<li><a href="./python/compare_dict.html">Get items in one dictionnary but not the other one</a></li>
|
||||
<li><a href="./python/maximize_window.html">Maximize a window in Windows</a></li>
|
||||
<li><a href="./python/case_config.html">Case sensitive ConfigParser</a></li>
|
||||
<li><a href="./python/list_windows.html">List all opened windows on Windows</a></li>
|
||||
@ -710,7 +710,7 @@
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 94 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 95 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -149,7 +149,7 @@
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 94 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 95 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -211,7 +211,7 @@
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 94 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 95 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -144,7 +144,7 @@ However, you can use the following command to do it </p>
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 94 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 95 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -143,7 +143,7 @@
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 94 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 95 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -203,7 +203,7 @@
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 94 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 95 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -148,7 +148,7 @@
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 94 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 95 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -167,7 +167,7 @@ none 0 0 0 - /config
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 94 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 95 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -256,7 +256,7 @@ wifi0 Link encap:UNSPEC HWaddr 5C-51-4F-41-7A-AD-00-00-00-00-00-00-00-00-00
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 94 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 95 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -172,7 +172,7 @@ USER;PID;%CPU;%MEM;VSZ;RSS;TTY;STAT;START;TIME;COMMAND</p>
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 94 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 95 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -158,7 +158,7 @@
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 94 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 95 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -169,7 +169,7 @@ dd <span class="k">if</span><span class="o">=</span>/dev/zero <span class="nv">o
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 94 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 95 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -494,7 +494,7 @@
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 94 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 95 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -151,7 +151,7 @@
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 94 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 95 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -208,7 +208,7 @@ The secret number is 126
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 94 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 95 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -160,7 +160,7 @@
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 94 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 95 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -234,7 +234,7 @@ Where :</p>
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 94 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 95 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -248,7 +248,7 @@ b_2\\
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 94 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 95 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -1033,7 +1033,7 @@
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 94 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 95 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -196,7 +196,7 @@
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 94 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 95 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -256,7 +256,7 @@
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 94 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 95 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -233,7 +233,7 @@ So :
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 94 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 95 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -214,7 +214,7 @@
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 94 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 95 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -195,7 +195,7 @@
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 94 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 95 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -203,7 +203,7 @@
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 94 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 95 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -197,7 +197,7 @@ and B are considered to be independent if event A has no effect on the probabili
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 94 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 95 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -221,7 +221,7 @@ where <span class="math">\(erf\)</span> is the error function:
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 94 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 95 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -206,7 +206,7 @@
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 94 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 95 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -222,7 +222,7 @@
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 94 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 95 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -223,7 +223,7 @@ $$</div>
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 94 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 95 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -145,7 +145,7 @@
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 94 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 95 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
573
projects/get_traffic_data.html
Normal file
573
projects/get_traffic_data.html
Normal file
@ -0,0 +1,573 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="fr">
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
|
||||
<meta name="description" content="Data Science for Political and Social Phenomena">
|
||||
<meta name="author" content="Guillaume Redoulès">
|
||||
<link rel="icon" href="../favicon.ico">
|
||||
|
||||
<title>Getting traffic data from google maps - Projects</title>
|
||||
|
||||
<!-- JQuery -->
|
||||
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
|
||||
<script>
|
||||
window.jQuery || document.write('<script src="../theme/js/jquery.min.js"><\/script>')
|
||||
</script>
|
||||
|
||||
<!-- Bootstrap core CSS -->
|
||||
<link rel="stylesheet" href="../theme/css/bootstrap.css" />
|
||||
<!-- IE10 viewport hack for Surface/desktop Windows 8 bug -->
|
||||
<link rel="stylesheet" type="text/css" href="../theme/css/ie10-viewport-bug-workaround.css" />
|
||||
<!-- Custom styles for this template -->
|
||||
<link rel="stylesheet" type="text/css" href="../theme/css/style.css" />
|
||||
<link rel="stylesheet" type="text/css" href="../theme/css/notebooks.css" />
|
||||
<link href='https://fonts.googleapis.com/css?family=PT+Serif:400,700|Roboto:400,500,700' rel='stylesheet' type='text/css'>
|
||||
|
||||
<!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
|
||||
<!--[if lt IE 9]>
|
||||
<script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
|
||||
<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
|
||||
<![endif]-->
|
||||
|
||||
|
||||
<meta name="tags" content="Data ingestion" />
|
||||
<meta name="tags" content="web scrapping" />
|
||||
<meta name="tags" content="mapping" />
|
||||
|
||||
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<div class="navbar navbar-fixed-top">
|
||||
<div class="container">
|
||||
<div class="navbar-header">
|
||||
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
</button>
|
||||
<a class="navbar-brand" href="..">Guillaume Redoulès</a>
|
||||
</div>
|
||||
<div class="navbar-collapse collapse" id="searchbar">
|
||||
|
||||
<ul class="nav navbar-nav navbar-right">
|
||||
<li class="dropdown">
|
||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">About<span class="caret"></span></a>
|
||||
<ul class="dropdown-menu">
|
||||
<li><a href="../pages/about.html">About Guillaume</a></li>
|
||||
<li><a href="https://github.com/redoules">GitHub</a></li>
|
||||
<li><a href="https://www.linkedin.com/in/guillaume-redoul%C3%A8s-33923860/">LinkedIn</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="dropdown">
|
||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Data Science<span class="caret"></span></a>
|
||||
<ul class="dropdown-menu">
|
||||
<li><a href="..#Blog">Blog</a></li>
|
||||
<li><a href="..#Python">Python</a></li>
|
||||
<li><a href="..#Bash">Bash</a></li>
|
||||
<li><a href="..#SQL">SQL</a></li>
|
||||
<li><a href="..#Mathematics">Mathematics</a></li>
|
||||
<li><a href="..#Machine_Learning">Machine Learning</a></li>
|
||||
<li><a href="..#Projects">Projects</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="dropdown">
|
||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Projects<span class="caret"></span></a>
|
||||
<ul class="dropdown-menu">
|
||||
<li><a href="https://github.com/redoules/redoules.github.io">Notes (Github)</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
<!--<li class="dropdown">
|
||||
<a href="../feeds/blog.rss.xml">Blog RSS</a>
|
||||
</li>-->
|
||||
|
||||
|
||||
</ul>
|
||||
|
||||
<form class="navbar-form" action="../search.html" onsubmit="return validateForm(this.elements['q'].value);">
|
||||
<div class="form-group" style="display:inline;">
|
||||
<div class="input-group" style="display:table;">
|
||||
<span class="input-group-addon" style="width:1%;"><span class="glyphicon glyphicon-search"></span></span>
|
||||
<input class="form-control search-query" name="q" id="tipue_search_input" placeholder="e.g. scikit KNN, pandas merge" required autocomplete="off" type="text">
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
</div>
|
||||
<!--/.nav-collapse -->
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<!-- end of header section -->
|
||||
<div class="container">
|
||||
<!-- <div class="alert alert-warning" role="alert">
|
||||
Did you find this page useful? Please do me a quick favor and <a href="#" class="alert-link">endorse me for data science on LinkedIn</a>.
|
||||
</div> -->
|
||||
<section id="content" class="body">
|
||||
<header>
|
||||
<h1>
|
||||
Getting traffic data from google maps
|
||||
</h1>
|
||||
<ol class="breadcrumb">
|
||||
<li>
|
||||
<time class="published" datetime="2019-08-22T21:11:00+02:00">
|
||||
22 août 2019
|
||||
</time>
|
||||
</li>
|
||||
<li>Projects</li>
|
||||
<li>Data ingestion</li>
|
||||
<li>web scrapping</li>
|
||||
<li>mapping</li>
|
||||
</ol>
|
||||
</header>
|
||||
<div class='article_content'>
|
||||
<h2>Goal of the project</h2>
|
||||
<p>We will scrap google maps in order to find the travel time from a grid of points to a couple of destinations. This way, we will find the most optimal points to minimize both journeys. This code can be used to pinpoint the best locations to pick a home when two people are working at different locations. By scrapping google maps, we can take into account how the traffic impacts the travel time.</p>
|
||||
<p>You can download the project by going to the <a href="https://github.com/redoules/journeygrid">GitHub repository</a></p>
|
||||
<h2>Scrapping google maps</h2>
|
||||
<p>Since google maps is a dynamic website, we cannot use simple tools such as wget or curl. Even webparsers such as scrappy don't render the DOM hence cannot work in this situation. The easiest way to scrap data from such websites is to take control of a browser by using an automation tool. In this case we will use selenium to take control of Google Chrome with the chromedriver.</p>
|
||||
<p>You have to install selenium with </p>
|
||||
<div class="highlight"><pre><span></span><span class="n">conda</span> <span class="n">install</span> <span class="o">-</span><span class="k">c</span> <span class="n">conda</span><span class="o">-</span><span class="n">forge</span> <span class="n">selenium</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
<p>or </p>
|
||||
<div class="highlight"><pre><span></span><span class="n">pip</span> <span class="n">install</span> <span class="n">selenium</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
<p>you also need to have the <code>chromedriver.exe</code> downloaded.
|
||||
BeautifulSoup is a package we will use to parse the html of the webpage opened in chrome. </p>
|
||||
<p>In order to extract the estimated travel time, we need to inspect the source code of the page in find the <div> element we are interested in. In our case it is <code>section-directions-trip-numbers</code>. In this <code><div></code> element we will then get the estimated value contained in the <code><span></code> element</p>
|
||||
<p><img alt="Extract time from Google Maps" src="../images/journeygrid/extraire_temps.png"></p>
|
||||
<h2>The code</h2>
|
||||
<p>First, let's import selenium, beautiful soup and some other libraries</p>
|
||||
<div class="highlight"><pre><span></span><span class="c1"># Selenium allows to control chrome programmatically</span>
|
||||
<span class="kn">from</span> <span class="nn">selenium</span> <span class="kn">import</span> <span class="n">webdriver</span>
|
||||
<span class="kn">from</span> <span class="nn">selenium.webdriver.common.keys</span> <span class="kn">import</span> <span class="n">Keys</span>
|
||||
<span class="kn">from</span> <span class="nn">selenium.webdriver.chrome.options</span> <span class="kn">import</span> <span class="n">Options</span>
|
||||
|
||||
<span class="c1">#beautifulsoup is used to parse the dom of the html page</span>
|
||||
<span class="kn">import</span> <span class="nn">bs4</span> <span class="kn">as</span> <span class="nn">BeautifulSoup</span>
|
||||
|
||||
<span class="kn">import</span> <span class="nn">numpy</span> <span class="kn">as</span> <span class="nn">np</span>
|
||||
<span class="kn">import</span> <span class="nn">pandas</span> <span class="kn">as</span> <span class="nn">pd</span>
|
||||
<span class="kn">import</span> <span class="nn">os</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
<p>We will also need some extra libraries for plotting the results</p>
|
||||
<div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">matplotlib.pyplot</span> <span class="kn">as</span> <span class="nn">plt</span>
|
||||
<span class="kn">from</span> <span class="nn">matplotlib.transforms</span> <span class="kn">import</span> <span class="n">offset_copy</span>
|
||||
|
||||
<span class="kn">import</span> <span class="nn">cartopy.crs</span> <span class="kn">as</span> <span class="nn">ccrs</span>
|
||||
<span class="kn">import</span> <span class="nn">cartopy.io.img_tiles</span> <span class="kn">as</span> <span class="nn">cimgt</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
<p>Let's define the GPS coordinates of the two destinations we are interested in. The coordinates can be found the the URL of a google maps search</p>
|
||||
<div class="highlight"><pre><span></span><span class="n">longitudeDestination1</span> <span class="o">=</span> <span class="mf">48.9361537</span>
|
||||
<span class="n">latitudeDestination1</span> <span class="o">=</span> <span class="mf">2.2507129</span>
|
||||
|
||||
<span class="n">longitudeDestination2</span> <span class="o">=</span> <span class="mf">48.7783875</span>
|
||||
<span class="n">latitudeDestination2</span> <span class="o">=</span> <span class="mf">2.1803534</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
<p>We will search on an equally spaced grid of point starting from (long_begin, lat_begin) and going to (long_end, lat_end). In order to do so, we will :
|
||||
* construct the URL from the GPS coordinates
|
||||
* load the url in chrome with <code>driver.get</code>
|
||||
* read the resulting html with <code>driver.page_source</code>
|
||||
* parse the html with beautiful soup in order to find the first <code><div></code> element with the class <code>section-directions-trip-numbers</code>
|
||||
* in this element, we will get the estimated travel time by reading the text value of the second <code><span></code> element</p>
|
||||
<div class="highlight"><pre><span></span><span class="k">def</span> <span class="nf">get_travel_time</span><span class="p">(</span><span class="n">url</span><span class="p">,</span> <span class="n">driver</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> get the estimated travel time of the google maps given as url</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">resultats</span> <span class="o">=</span> <span class="bp">None</span>
|
||||
<span class="n">driver</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">url</span><span class="p">)</span>
|
||||
|
||||
<span class="k">while</span> <span class="n">resultats</span> <span class="o">==</span> <span class="bp">None</span> <span class="p">:</span>
|
||||
<span class="n">soupe</span> <span class="o">=</span> <span class="n">BeautifulSoup</span><span class="o">.</span><span class="n">BeautifulSoup</span><span class="p">(</span><span class="n">driver</span><span class="o">.</span><span class="n">page_source</span><span class="p">,</span> <span class="s2">"lxml"</span><span class="p">)</span>
|
||||
<span class="n">soupe</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="s2">"section-directions-trip-numbers"</span><span class="p">)</span>
|
||||
<span class="n">resultats</span> <span class="o">=</span> <span class="n">soupe</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="s1">'div'</span><span class="p">,</span><span class="n">attrs</span><span class="o">=</span><span class="p">{</span><span class="s2">"class"</span><span class="p">:</span><span class="sa">u</span><span class="s2">"section-directions-trip-numbers"</span><span class="p">})</span>
|
||||
<span class="k">return</span> <span class="n">resultats</span><span class="o">.</span><span class="n">find_all</span><span class="p">(</span><span class="s2">"span"</span><span class="p">)[</span><span class="mi">2</span><span class="p">]</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
<p>Once the function is defined, we only need to call it in a loop in order to get all the point of the grid</p>
|
||||
<div class="highlight"><pre><span></span><span class="n">chrome_options</span> <span class="o">=</span> <span class="n">Options</span><span class="p">()</span>
|
||||
<span class="c1">#chrome_options.add_argument("--disable-extensions")</span>
|
||||
<span class="c1">#chrome_options.add_argument("--disable-gpu")</span>
|
||||
<span class="n">chrome_options</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span><span class="s2">"--headless"</span><span class="p">)</span> <span class="c1">#make chrome headless. If you want to see the autimation, comment this line</span>
|
||||
<span class="n">driver</span> <span class="o">=</span> <span class="n">webdriver</span><span class="o">.</span><span class="n">Chrome</span><span class="p">(</span><span class="n">executable_path</span> <span class="o">=</span> <span class="s1">'.</span><span class="se">\\</span><span class="s1">chromedriver.exe'</span><span class="p">,</span> <span class="n">chrome_options</span><span class="o">=</span><span class="n">chrome_options</span><span class="p">)</span>
|
||||
|
||||
<span class="n">nb</span> <span class="o">=</span> <span class="mi">10</span>
|
||||
<span class="n">ctn</span> <span class="o">=</span> <span class="mi">0</span>
|
||||
<span class="n">time</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
<span class="k">for</span> <span class="n">coordX</span> <span class="ow">in</span> <span class="n">np</span><span class="o">.</span><span class="n">linspace</span><span class="p">(</span><span class="n">long_begin</span><span class="p">,</span> <span class="n">long_end</span><span class="p">,</span> <span class="n">nb</span><span class="p">):</span>
|
||||
<span class="k">for</span> <span class="n">coordY</span> <span class="ow">in</span> <span class="n">np</span><span class="o">.</span><span class="n">linspace</span><span class="p">(</span><span class="n">lat_begin</span><span class="p">,</span> <span class="n">lat_end</span><span class="p">,</span> <span class="n">nb</span><span class="p">):</span>
|
||||
|
||||
|
||||
<span class="n">url_journey1</span> <span class="o">=</span> <span class="n">f</span><span class="s2">"https://www.google.com/maps/dir/{coordX},{coordY}/@{longitudeDestination1},{latitudeDestination1},12z/data=!3m1!4b1!4m14!4m13!1m0!1m5!1m1!1s0x47e67bff078f6575:0x95df2619f9304bd7!2m2!1d2.1825421!2d48.778384!2m4!2b1!6e0!7e2!8j1570521600!3e0"</span>
|
||||
<span class="n">url_journey2</span> <span class="o">=</span> <span class="n">f</span><span class="s1">'https://www.google.com/maps/dir/{coordX},{coordY}/@{longitudeDestination2},{latitudeDestination2},14z/data=!3m1!4b1!4m14!4m13!1m0!1m5!1m1!1s0x47e665df0cb0b919:0x5f513cdf2fe6d39d!2m2!1d2.2572779!2d48.9368666!2m4!2b1!6e0!7e2!8j1570521600!3e0'</span>
|
||||
|
||||
<span class="n">temps_user1</span> <span class="o">=</span> <span class="n">get_travel_time</span><span class="p">(</span><span class="n">url_journey1</span><span class="p">,</span> <span class="n">driver</span><span class="p">)</span>
|
||||
<span class="n">temps_user2</span> <span class="o">=</span> <span class="n">get_travel_time</span><span class="p">(</span><span class="n">url_journey2</span><span class="p">,</span> <span class="n">driver</span><span class="p">)</span>
|
||||
|
||||
<span class="n">ctn</span> <span class="o">+=</span> <span class="mi">1</span>
|
||||
<span class="k">print</span><span class="p">(</span><span class="n">f</span><span class="s1">'Downloaded : {ctn/(nb*nb)*100}%'</span><span class="p">)</span>
|
||||
<span class="n">time</span><span class="o">.</span><span class="n">append</span><span class="p">([</span><span class="n">coordX</span><span class="p">,</span> <span class="n">coordY</span><span class="p">,</span> <span class="n">temps_user1</span><span class="o">.</span><span class="n">text</span><span class="p">,</span> <span class="n">temps_user2</span><span class="o">.</span><span class="n">text</span><span class="p">,</span> <span class="n">f</span><span class="s1">'https://www.google.com/maps/place/{coordX},{coordY}'</span><span class="p">])</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
<div class="highlight"><pre><span></span><span class="n">Downloaded</span> <span class="o">:</span> <span class="mf">1.0</span><span class="o">%</span>
|
||||
<span class="n">Downloaded</span> <span class="o">:</span> <span class="mf">2.0</span><span class="o">%</span>
|
||||
<span class="n">Downloaded</span> <span class="o">:</span> <span class="mf">3.0</span><span class="o">%</span>
|
||||
<span class="n">Downloaded</span> <span class="o">:</span> <span class="mf">4.0</span><span class="o">%</span>
|
||||
<span class="o">[...]</span>
|
||||
<span class="n">Downloaded</span> <span class="o">:</span> <span class="mf">96.0</span><span class="o">%</span>
|
||||
<span class="n">Downloaded</span> <span class="o">:</span> <span class="mf">97.0</span><span class="o">%</span>
|
||||
<span class="n">Downloaded</span> <span class="o">:</span> <span class="mf">98.0</span><span class="o">%</span>
|
||||
<span class="n">Downloaded</span> <span class="o">:</span> <span class="mf">99.0</span><span class="o">%</span>
|
||||
<span class="n">Downloaded</span> <span class="o">:</span> <span class="mf">100.0</span><span class="o">%</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
<p>After gathering the results, the values stored in the <code>time</code> list are string and cannot be interpreted as numerical values without a post processing. This is why I've written the function <code>analyse_time</code> in order to split the text and convert it to a numerical format expressed in minutes.</p>
|
||||
<div class="highlight"><pre><span></span><span class="k">def</span> <span class="nf">analyse_time</span><span class="p">(</span><span class="n">time</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Analyse the time given by google maps, splits the lower and higher estimate and converts them to minutes</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">tlow</span> <span class="o">=</span> <span class="n">time</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">" - "</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s2">"</span><span class="se">\xa0</span><span class="s2">"</span><span class="p">,</span> <span class="s2">" "</span><span class="p">)</span>
|
||||
<span class="n">thigh</span> <span class="o">=</span> <span class="n">time</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">" - "</span><span class="p">)[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s2">"</span><span class="se">\xa0</span><span class="s2">"</span><span class="p">,</span> <span class="s2">" "</span><span class="p">)</span>
|
||||
|
||||
<span class="k">if</span> <span class="p">(</span><span class="s2">"min"</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">tlow</span><span class="p">)</span> <span class="ow">and</span> <span class="p">(</span><span class="s2">"h"</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">tlow</span><span class="p">):</span>
|
||||
<span class="c1">#example : 26 </span>
|
||||
<span class="n">tlow</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">tlow</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s2">" "</span><span class="p">,</span> <span class="s2">""</span><span class="p">))</span>
|
||||
<span class="k">elif</span> <span class="s2">"h"</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">tlow</span> <span class="p">:</span>
|
||||
<span class="c1"># example 26 min </span>
|
||||
<span class="n">tlow</span> <span class="o">=</span> <span class="n">tlow</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s2">"min"</span><span class="p">,</span> <span class="s2">""</span><span class="p">)</span>
|
||||
<span class="n">tlow</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">tlow</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s2">" "</span><span class="p">,</span> <span class="s2">""</span><span class="p">))</span>
|
||||
<span class="k">else</span> <span class="p">:</span>
|
||||
<span class="k">if</span> <span class="s2">"min"</span> <span class="ow">in</span> <span class="n">tlow</span><span class="p">:</span>
|
||||
<span class="c1">#example 1h 26min</span>
|
||||
<span class="n">tlow</span> <span class="o">=</span> <span class="n">tlow</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">"h"</span><span class="p">)</span>
|
||||
<span class="n">tlow</span> <span class="o">=</span> <span class="mi">60</span><span class="o">*</span><span class="nb">int</span><span class="p">(</span><span class="n">tlow</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s2">" "</span><span class="p">,</span> <span class="s2">""</span><span class="p">))</span> <span class="o">+</span> <span class="nb">int</span><span class="p">(</span><span class="n">tlow</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s2">"min"</span><span class="p">,</span> <span class="s2">""</span><span class="p">)</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s2">" "</span><span class="p">,</span> <span class="s2">""</span><span class="p">))</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="c1">#example 1h</span>
|
||||
<span class="n">tlow</span> <span class="o">=</span> <span class="mi">60</span><span class="o">*</span><span class="nb">int</span><span class="p">(</span><span class="n">tlow</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s2">"h"</span><span class="p">,</span> <span class="s2">""</span><span class="p">))</span>
|
||||
|
||||
<span class="k">if</span> <span class="s2">"h"</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">thigh</span> <span class="p">:</span>
|
||||
<span class="n">thigh</span> <span class="o">=</span> <span class="n">thigh</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s2">"min"</span><span class="p">,</span> <span class="s2">""</span><span class="p">)</span>
|
||||
<span class="n">thigh</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">thigh</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s2">" "</span><span class="p">,</span> <span class="s2">""</span><span class="p">))</span>
|
||||
<span class="k">else</span> <span class="p">:</span>
|
||||
<span class="k">if</span> <span class="s2">"min"</span> <span class="ow">in</span> <span class="n">thigh</span><span class="p">:</span>
|
||||
<span class="n">thigh</span> <span class="o">=</span> <span class="n">thigh</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">"h"</span><span class="p">)</span>
|
||||
<span class="n">thigh</span> <span class="o">=</span> <span class="mi">60</span><span class="o">*</span><span class="nb">int</span><span class="p">(</span><span class="n">thigh</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s2">" "</span><span class="p">,</span> <span class="s2">""</span><span class="p">))</span> <span class="o">+</span> <span class="nb">int</span><span class="p">(</span><span class="n">thigh</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s2">"min"</span><span class="p">,</span> <span class="s2">""</span><span class="p">)</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s2">" "</span><span class="p">,</span> <span class="s2">""</span><span class="p">))</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">thigh</span> <span class="o">=</span> <span class="mi">60</span><span class="o">*</span><span class="nb">int</span><span class="p">(</span><span class="n">thigh</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s2">"h"</span><span class="p">,</span> <span class="s2">""</span><span class="p">))</span>
|
||||
|
||||
<span class="k">return</span> <span class="p">(</span><span class="n">tlow</span><span class="p">,</span> <span class="n">thigh</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
<p>For every result previously gathered, let's apply the function <code>analyse_time</code> then put it in a pandas dataframe. While we are at it, I also computed the geometric mean of the minimum time estimated for both users as well of the maximum time. A geometric mean is interesting in this interesting here because we want to avoid have one user doing a long journey while the other is doing a short one. </p>
|
||||
<div class="highlight"><pre><span></span><span class="n">df</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
<span class="k">for</span> <span class="n">t</span> <span class="ow">in</span> <span class="n">time</span><span class="p">:</span>
|
||||
<span class="n">lat</span> <span class="o">=</span> <span class="n">t</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
|
||||
<span class="n">lon</span> <span class="o">=</span> <span class="n">t</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span>
|
||||
<span class="n">t1</span> <span class="o">=</span> <span class="n">analyse_time</span><span class="p">(</span><span class="n">t</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span>
|
||||
<span class="n">t2</span> <span class="o">=</span> <span class="n">analyse_time</span><span class="p">(</span><span class="n">t</span><span class="p">[</span><span class="mi">3</span><span class="p">])</span>
|
||||
<span class="n">geomlow</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="n">t1</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">*</span><span class="n">t2</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span> <span class="c1">#geometric mean </span>
|
||||
<span class="n">geomhigh</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="n">t1</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">*</span><span class="n">t2</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span> <span class="c1">#geometric mean </span>
|
||||
<span class="n">df</span><span class="o">.</span><span class="n">append</span><span class="p">([</span><span class="n">lat</span><span class="p">,</span> <span class="n">lon</span><span class="p">,</span> <span class="n">geomlow</span><span class="p">,</span> <span class="n">geomhigh</span><span class="p">,</span> <span class="n">t1</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">t1</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">t2</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">t2</span><span class="p">[</span><span class="mi">1</span><span class="p">]])</span>
|
||||
|
||||
|
||||
<span class="n">traveltime</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">DataFrame</span><span class="p">(</span><span class="n">df</span><span class="p">,</span> <span class="n">columns</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"latitude"</span><span class="p">,</span> <span class="s2">"longitude"</span><span class="p">,</span> <span class="s2">"geometric mean low"</span><span class="p">,</span> <span class="s2">"geometric mean high"</span><span class="p">,</span> <span class="s2">"time low 1"</span><span class="p">,</span> <span class="s2">"time high 1"</span><span class="p">,</span> <span class="s2">"time low 2"</span><span class="p">,</span> <span class="s2">"time high 2"</span><span class="p">])</span>
|
||||
<span class="n">traveltime</span> <span class="o">=</span> <span class="n">traveltime</span><span class="o">.</span><span class="n">sort_values</span><span class="p">(</span><span class="s2">"geometric mean low"</span><span class="p">)</span>
|
||||
<span class="n">traveltime</span> <span class="o">=</span> <span class="n">traveltime</span><span class="o">.</span><span class="n">reset_index</span><span class="p">()</span>
|
||||
<span class="n">traveltime</span><span class="o">.</span><span class="n">to_csv</span><span class="p">(</span><span class="s2">"extraction.csv"</span><span class="p">,</span> <span class="n">index</span><span class="o">=</span><span class="bp">False</span><span class="p">)</span> <span class="c1">#save it to csv</span>
|
||||
<span class="n">traveltime</span><span class="o">.</span><span class="n">head</span><span class="p">(</span><span class="mi">10</span><span class="p">)</span> <span class="c1">#print the 10 first rows</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
<div>
|
||||
<style scoped>
|
||||
.dataframe tbody tr th:only-of-type {
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.dataframe tbody tr th {
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
.dataframe thead th {
|
||||
text-align: right;
|
||||
}
|
||||
</style>
|
||||
<table border="1" class="dataframe">
|
||||
<thead>
|
||||
<tr style="text-align: right;">
|
||||
<th></th>
|
||||
<th>index</th>
|
||||
<th>latitude</th>
|
||||
<th>longitude</th>
|
||||
<th>geometric mean low</th>
|
||||
<th>geometric mean high</th>
|
||||
<th>time low 1</th>
|
||||
<th>time high 1</th>
|
||||
<th>time low 2</th>
|
||||
<th>time high 2</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<th>0</th>
|
||||
<td>38</td>
|
||||
<td>48.833333</td>
|
||||
<td>2.231111</td>
|
||||
<td>16.124515</td>
|
||||
<td>33.166248</td>
|
||||
<td>10</td>
|
||||
<td>20</td>
|
||||
<td>26</td>
|
||||
<td>55</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>1</th>
|
||||
<td>89</td>
|
||||
<td>48.888889</td>
|
||||
<td>2.260000</td>
|
||||
<td>16.248077</td>
|
||||
<td>36.742346</td>
|
||||
<td>22</td>
|
||||
<td>45</td>
|
||||
<td>12</td>
|
||||
<td>30</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>2</th>
|
||||
<td>97</td>
|
||||
<td>48.900000</td>
|
||||
<td>2.202222</td>
|
||||
<td>16.733201</td>
|
||||
<td>40.987803</td>
|
||||
<td>35</td>
|
||||
<td>70</td>
|
||||
<td>8</td>
|
||||
<td>24</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>3</th>
|
||||
<td>6</td>
|
||||
<td>48.800000</td>
|
||||
<td>2.173333</td>
|
||||
<td>16.733201</td>
|
||||
<td>35.777088</td>
|
||||
<td>8</td>
|
||||
<td>16</td>
|
||||
<td>35</td>
|
||||
<td>80</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>4</th>
|
||||
<td>98</td>
|
||||
<td>48.900000</td>
|
||||
<td>2.231111</td>
|
||||
<td>17.320508</td>
|
||||
<td>41.109610</td>
|
||||
<td>30</td>
|
||||
<td>65</td>
|
||||
<td>10</td>
|
||||
<td>26</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>5</th>
|
||||
<td>99</td>
|
||||
<td>48.900000</td>
|
||||
<td>2.260000</td>
|
||||
<td>17.663522</td>
|
||||
<td>37.815341</td>
|
||||
<td>26</td>
|
||||
<td>55</td>
|
||||
<td>12</td>
|
||||
<td>26</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>6</th>
|
||||
<td>88</td>
|
||||
<td>48.888889</td>
|
||||
<td>2.231111</td>
|
||||
<td>17.663522</td>
|
||||
<td>40.620192</td>
|
||||
<td>26</td>
|
||||
<td>55</td>
|
||||
<td>12</td>
|
||||
<td>30</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>7</th>
|
||||
<td>7</td>
|
||||
<td>48.800000</td>
|
||||
<td>2.202222</td>
|
||||
<td>17.748239</td>
|
||||
<td>34.641016</td>
|
||||
<td>9</td>
|
||||
<td>16</td>
|
||||
<td>35</td>
|
||||
<td>75</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>8</th>
|
||||
<td>68</td>
|
||||
<td>48.866667</td>
|
||||
<td>2.231111</td>
|
||||
<td>18.000000</td>
|
||||
<td>37.416574</td>
|
||||
<td>18</td>
|
||||
<td>35</td>
|
||||
<td>18</td>
|
||||
<td>40</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>9</th>
|
||||
<td>87</td>
|
||||
<td>48.888889</td>
|
||||
<td>2.202222</td>
|
||||
<td>18.330303</td>
|
||||
<td>43.874822</td>
|
||||
<td>28</td>
|
||||
<td>55</td>
|
||||
<td>12</td>
|
||||
<td>35</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<p>Ok now that we finished preparing the data, it's time to draw some maps.
|
||||
We will use caropy in order to download some Google maps tiles. You might need to manually change the extent of the map.</p>
|
||||
<div class="highlight"><pre><span></span><span class="o">%</span><span class="n">matplotlib</span> <span class="n">inline</span>
|
||||
<span class="n">plt</span><span class="o">.</span><span class="n">rcParams</span><span class="p">[</span><span class="s1">'figure.figsize'</span><span class="p">]</span> <span class="o">=</span> <span class="mi">20</span><span class="p">,</span> <span class="mi">12</span>
|
||||
<span class="c1"># Create a Stamen terrain background instance.</span>
|
||||
<span class="n">stamen_terrain</span> <span class="o">=</span> <span class="n">cimgt</span><span class="o">.</span><span class="n">GoogleTiles</span><span class="p">()</span>
|
||||
<span class="n">fig</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">figure</span><span class="p">()</span>
|
||||
<span class="c1"># Create a GeoAxes in the tile's projection.</span>
|
||||
<span class="n">ax</span> <span class="o">=</span> <span class="n">fig</span><span class="o">.</span><span class="n">add_subplot</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="n">projection</span><span class="o">=</span><span class="n">stamen_terrain</span><span class="o">.</span><span class="n">crs</span><span class="p">)</span>
|
||||
|
||||
<span class="c1"># Limit the extent of the map to a small longitude/latitude range.</span>
|
||||
<span class="n">ax</span><span class="o">.</span><span class="n">set_extent</span><span class="p">([</span><span class="n">lat_begin</span><span class="o">*</span><span class="mf">0.975</span><span class="p">,</span> <span class="n">lat_end</span><span class="o">*</span><span class="mf">1.02</span><span class="p">,</span> <span class="n">long_begin</span><span class="o">*</span><span class="mf">0.999</span><span class="p">,</span> <span class="n">long_end</span><span class="o">*</span><span class="mf">1.001</span><span class="p">],</span> <span class="n">crs</span><span class="o">=</span><span class="n">ccrs</span><span class="o">.</span><span class="n">Geodetic</span><span class="p">())</span>
|
||||
|
||||
|
||||
<span class="c1"># Add the Stamen data at zoom level 10.</span>
|
||||
<span class="n">ax</span><span class="o">.</span><span class="n">add_image</span><span class="p">(</span><span class="n">stamen_terrain</span><span class="p">,</span> <span class="mi">10</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
<p>Now, we draw the 10 points that minimize time for user 1, color them is red and make the size of the pot proportionnal to the travel time of the second user.
|
||||
And we do the same for he 10 points that minimize time for user 2, color them is blue and make the size of the pot proportionnal to the travel time of the first user. </p>
|
||||
<div class="highlight"><pre><span></span><span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">point</span> <span class="ow">in</span> <span class="n">traveltime</span><span class="o">.</span><span class="n">sort_values</span><span class="p">(</span><span class="s2">"time low 1"</span><span class="p">)</span><span class="o">.</span><span class="n">iterrows</span><span class="p">():</span>
|
||||
<span class="k">if</span> <span class="n">i</span> <span class="o"><</span> <span class="mi">10</span> <span class="p">:</span>
|
||||
<span class="n">ax</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span> <span class="n">point</span><span class="o">.</span><span class="n">longitude</span><span class="p">,</span> <span class="n">point</span><span class="o">.</span><span class="n">latitude</span><span class="p">,</span> <span class="n">marker</span><span class="o">=</span><span class="s1">'o'</span><span class="p">,</span>
|
||||
<span class="n">c</span> <span class="o">=</span><span class="s1">'red'</span><span class="p">,</span> <span class="n">markersize</span><span class="o">=</span><span class="n">point</span><span class="p">[</span><span class="s2">"time low 2"</span><span class="p">],</span>
|
||||
<span class="n">alpha</span><span class="o">=</span><span class="mf">0.5</span><span class="p">,</span> <span class="n">transform</span><span class="o">=</span><span class="n">ccrs</span><span class="o">.</span><span class="n">Geodetic</span><span class="p">())</span>
|
||||
|
||||
<span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">point</span> <span class="ow">in</span> <span class="n">traveltime</span><span class="o">.</span><span class="n">sort_values</span><span class="p">(</span><span class="s2">"time low 2"</span><span class="p">)</span><span class="o">.</span><span class="n">iterrows</span><span class="p">():</span>
|
||||
<span class="k">if</span> <span class="n">i</span> <span class="o"><</span> <span class="mi">10</span> <span class="p">:</span>
|
||||
<span class="n">ax</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span> <span class="n">point</span><span class="o">.</span><span class="n">longitude</span><span class="p">,</span> <span class="n">point</span><span class="o">.</span><span class="n">latitude</span><span class="p">,</span> <span class="n">marker</span><span class="o">=</span><span class="s1">'o'</span><span class="p">,</span>
|
||||
<span class="n">c</span> <span class="o">=</span><span class="s1">'blue'</span><span class="p">,</span> <span class="n">markersize</span><span class="o">=</span><span class="n">point</span><span class="p">[</span><span class="s2">"time low 1"</span><span class="p">],</span>
|
||||
<span class="n">alpha</span><span class="o">=</span><span class="mf">0.5</span><span class="p">,</span> <span class="n">transform</span><span class="o">=</span><span class="n">ccrs</span><span class="o">.</span><span class="n">Geodetic</span><span class="p">())</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
<p>To help with the vizualisation, we add two stars on the maps in order to mark the location of the 2 destinations.</p>
|
||||
<div class="highlight"><pre><span></span><span class="c1"># Add a marker for destination 1</span>
|
||||
<span class="n">ax</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span> <span class="n">latitudeDestination1</span><span class="p">,</span> <span class="n">longitudeDestination1</span><span class="p">,</span> <span class="n">marker</span><span class="o">=</span><span class="s1">'*'</span><span class="p">,</span>
|
||||
<span class="n">c</span> <span class="o">=</span><span class="s1">'green'</span><span class="p">,</span> <span class="n">markersize</span><span class="o">=</span><span class="mi">25</span><span class="p">,</span>
|
||||
<span class="n">alpha</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">transform</span><span class="o">=</span><span class="n">ccrs</span><span class="o">.</span><span class="n">Geodetic</span><span class="p">())</span>
|
||||
<span class="c1"># Add a marker for destination 2</span>
|
||||
<span class="n">ax</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span> <span class="n">latitudeDestination2</span><span class="p">,</span> <span class="n">longitudeDestination2</span><span class="p">,</span> <span class="n">marker</span><span class="o">=</span><span class="s1">'*'</span><span class="p">,</span>
|
||||
<span class="n">c</span> <span class="o">=</span><span class="s1">'orange'</span><span class="p">,</span> <span class="n">markersize</span><span class="o">=</span><span class="mi">25</span><span class="p">,</span>
|
||||
<span class="n">alpha</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">transform</span><span class="o">=</span><span class="n">ccrs</span><span class="o">.</span><span class="n">Geodetic</span><span class="p">())</span>
|
||||
|
||||
<span class="n">geodetic_transform</span> <span class="o">=</span> <span class="n">ccrs</span><span class="o">.</span><span class="n">Geodetic</span><span class="p">()</span><span class="o">.</span><span class="n">_as_mpl_transform</span><span class="p">(</span><span class="n">ax</span><span class="p">)</span>
|
||||
<span class="n">text_transform</span> <span class="o">=</span> <span class="n">offset_copy</span><span class="p">(</span><span class="n">geodetic_transform</span><span class="p">,</span> <span class="n">units</span><span class="o">=</span><span class="s1">'dots'</span><span class="p">,</span> <span class="n">x</span><span class="o">=-</span><span class="mi">25</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
<p>Finally, we draw the maps. The optimal point is where both the dots in blue and in red are smaller.</p>
|
||||
<div class="highlight"><pre><span></span><span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
<p><img alt="Final output" src="../images/journeygrid/output_22_0.png"></p>
|
||||
</div>
|
||||
<aside>
|
||||
<div class="bug-reporting__panel">
|
||||
<h3>Find an error or bug? Have a suggestion?</h3>
|
||||
<p>Everything on this site is avaliable on GitHub. Head on over and <a href='https://github.com/redoules/redoules.github.io/issues/new'>submit an issue.</a> You can also message me directly by <a href='mailto:guillaume.redoules@gadz.org'>email</a>.</p>
|
||||
</div>
|
||||
</aside>
|
||||
</section>
|
||||
|
||||
</div>
|
||||
<!-- start of footer section -->
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 95 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
</center>
|
||||
</p>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
<!-- This jQuery line finds any span that contains code highlighting classes and then selects the parent <pre> tag and adds a border. This is done as a workaround to visually distinguish the code inputs and outputs -->
|
||||
<script>
|
||||
$( ".hll, .n, .c, .err, .k, .o, .cm, .cp, .c1, .cs, .gd, .ge, .gr, .gh, .gi, .go, .gp, .gs, .gu, .gt, .kc, .kd, .kn, .kp, .kr, .kt, .m, .s, .na, .nb, .nc, .no, .nd, .ni, .ne, .nf, .nl, .nn, .nt, .nv, .ow, .w, .mf, .mh, .mi, .mo, .sb, .sc, .sd, .s2, .se, .sh, .si, .sx, .sr, .s1, .ss, .bp, .vc, .vg, .vi, .il" ).parent( "pre" ).css( "border", "1px solid #DEDEDE" );
|
||||
</script>
|
||||
|
||||
|
||||
<!-- Load Google Analytics -->
|
||||
<script>
|
||||
/*
|
||||
(function(i, s, o, g, r, a, m) {
|
||||
i['GoogleAnalyticsObject'] = r;
|
||||
i[r] = i[r] || function() {
|
||||
(i[r].q = i[r].q || []).push(arguments)
|
||||
}, i[r].l = 1 * new Date();
|
||||
a = s.createElement(o),
|
||||
m = s.getElementsByTagName(o)[0];
|
||||
a.async = 1;
|
||||
a.src = g;
|
||||
m.parentNode.insertBefore(a, m)
|
||||
})(window, document, 'script', '//www.google-analytics.com/analytics.js', 'ga');
|
||||
|
||||
ga('create', 'UA-66582-32', 'auto');
|
||||
ga('send', 'pageview');
|
||||
*/
|
||||
</script>
|
||||
<!-- End of Google Analytics -->
|
||||
|
||||
<!-- Bootstrap core JavaScript
|
||||
================================================== -->
|
||||
<!-- Placed at the end of the document so the pages load faster -->
|
||||
<script src="../theme/js/bootstrap.min.js"></script>
|
||||
<!-- IE10 viewport hack for Surface/desktop Windows 8 bug -->
|
||||
<script src="../theme/js/ie10-viewport-bug-workaround.js"></script>
|
||||
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@ -192,7 +192,7 @@
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 94 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 95 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -241,7 +241,7 @@
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 94 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 95 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -235,7 +235,7 @@
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 94 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 95 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -378,7 +378,7 @@
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 94 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 95 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -168,7 +168,7 @@
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 94 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 95 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -192,7 +192,7 @@ If you try to open a non existing file in read mode 'r', a FileNotFoundError wil
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 94 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 95 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -176,7 +176,7 @@ conda install numpy --channel intel --override-channels
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 94 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 95 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -208,7 +208,7 @@
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 94 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 95 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -237,7 +237,7 @@
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 94 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 95 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -186,7 +186,7 @@
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 94 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 95 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -171,7 +171,7 @@
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 94 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 95 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -339,7 +339,7 @@ However, exporting to a sql database can prove very useful. Indeed, having a wel
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 94 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 95 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -146,7 +146,7 @@
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 94 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 95 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -34,7 +34,7 @@
|
||||
<![endif]-->
|
||||
|
||||
|
||||
<meta name="tags" content="Other" />
|
||||
<meta name="tags" content="Basics" />
|
||||
|
||||
|
||||
</head>
|
||||
@ -121,7 +121,7 @@
|
||||
</time>
|
||||
</li>
|
||||
<li>Python</li>
|
||||
<li>Other</li>
|
||||
<li>Basics</li>
|
||||
</ol>
|
||||
</header>
|
||||
<div class='article_content'>
|
||||
@ -165,7 +165,7 @@
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 94 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 95 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -169,7 +169,7 @@ myvariable: 42
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 94 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 95 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -181,7 +181,7 @@
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 94 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 95 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -338,7 +338,7 @@ http://127.0.0.1:8787/status</p>
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 94 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 95 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -148,7 +148,7 @@
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 94 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 95 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -232,7 +232,7 @@ The list of dependencies required to test, build and generate the doc are listed
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 94 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 95 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -164,7 +164,7 @@
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 94 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 95 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -218,7 +218,7 @@
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 94 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 95 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -177,7 +177,7 @@
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 94 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 95 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -158,7 +158,7 @@
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 94 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 95 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -213,7 +213,7 @@
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 94 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 95 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -217,7 +217,7 @@
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 94 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 95 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -248,7 +248,7 @@
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 94 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 95 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -188,7 +188,7 @@
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 94 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 95 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -181,7 +181,7 @@
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 94 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 95 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -237,7 +237,7 @@
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 94 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 95 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -156,7 +156,7 @@
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 94 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 95 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -647,7 +647,7 @@ you also need to specify the axis.</p>
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 94 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 95 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -173,7 +173,7 @@
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 94 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 95 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -288,7 +288,7 @@
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 94 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 95 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -359,7 +359,7 @@
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 94 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 95 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -192,7 +192,7 @@
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 94 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 95 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -381,7 +381,7 @@
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 94 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 95 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -171,7 +171,7 @@
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 94 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 95 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -151,7 +151,7 @@
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 94 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 95 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -176,7 +176,7 @@
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 94 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 95 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -112,7 +112,7 @@
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 94 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 95 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -5,7 +5,7 @@ xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
|
||||
|
||||
<url>
|
||||
<loc>redoules.github.io/</loc>
|
||||
<lastmod>2019-08-22T20:57:14-00:00</lastmod>
|
||||
<lastmod>2019-08-25T21:46:29-00:00</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
<priority>0.5</priority>
|
||||
</url>
|
||||
@ -17,6 +17,13 @@ xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
|
||||
<priority>0.5</priority>
|
||||
</url>
|
||||
|
||||
<url>
|
||||
<loc>redoules.github.io/projects/get_traffic_data.html</loc>
|
||||
<lastmod>2019-08-22T21:11:00+02:00</lastmod>
|
||||
<changefreq>monthly</changefreq>
|
||||
<priority>0.5</priority>
|
||||
</url>
|
||||
|
||||
<url>
|
||||
<loc>redoules.github.io/python/compare_dict.html</loc>
|
||||
<lastmod>2019-08-22T14:12:00+02:00</lastmod>
|
||||
|
||||
@ -344,7 +344,7 @@
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 94 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 95 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -631,7 +631,7 @@
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 94 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 95 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -216,7 +216,7 @@ In our example, we want to display the data contained in the table named tutyfru
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 94 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 95 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -346,7 +346,7 @@ The database mydatabase.db is a SQLite database already created before the examp
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 94 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 95 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -156,7 +156,7 @@
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 94 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 95 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user