Skip to content

Commit

Permalink
deploy: 8c84e97
Browse files Browse the repository at this point in the history
  • Loading branch information
geographika committed Apr 3, 2024
1 parent aee8e52 commit 33b5fca
Show file tree
Hide file tree
Showing 18 changed files with 112 additions and 97 deletions.
2 changes: 1 addition & 1 deletion .buildinfo
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Sphinx build info version 1
# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done.
config: e97739c390971b3c7ef72b1a5674caae
config: adc4c32eda777149bbb471ef5fedd62a
tags: 645f666f9bcd5a90fca523b33c5a78b7
Binary file modified .doctrees/environment.pickle
Binary file not shown.
Binary file modified .doctrees/network_loading.doctree
Binary file not shown.
Binary file modified .doctrees/osmnx.doctree
Binary file not shown.
Binary file modified .doctrees/self_loops.doctree
Binary file not shown.
Binary file modified .doctrees/solver.doctree
Binary file not shown.
Binary file added _images/dual_path_middle_network.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added _images/single_edge_loop_network.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
5 changes: 4 additions & 1 deletion _sources/network_loading.rst.txt
Original file line number Diff line number Diff line change
Expand Up @@ -44,17 +44,20 @@ File Geodatabase Example
Python Code Examples
--------------------

.. sourcecode:: python

net = networkx.MultiGraph()
net.add_edge(1, 2, key=1, **{LENGTH_FIELD: 10, EDGE_ID_FIELD: 1, NODEID_FROM_FIELD: 1, NODEID_TO_FIELD: 2})
net.add_edge(2, 3, key=2, **{LENGTH_FIELD: 10, EDGE_ID_FIELD: 2, NODEID_FROM_FIELD: 2, NODEID_TO_FIELD: 3})
net.add_edge(3, 4, key=3, **{LENGTH_FIELD: 10, EDGE_ID_FIELD: 3, NODEID_FROM_FIELD: 3, NODEID_TO_FIELD: 4})
net.add_edge(4, 5, key=4, **{LENGTH_FIELD: 10, EDGE_ID_FIELD: 4, NODEID_FROM_FIELD: 4, NODEID_TO_FIELD: 5})
return net

Alternate:

.. sourcecode:: python

recs = [
{
EDGE_ID_FIELD: 1,
Expand Down
24 changes: 14 additions & 10 deletions _sources/osmnx.rst.txt
Original file line number Diff line number Diff line change
Expand Up @@ -7,27 +7,31 @@ To handle one-way OSMNX adds in all paths twice - once with reverse flag true an

An edge is in the following format:

(53128729, 53149520, 0, {'osmid': 6400955, 'name': 'Hill Lane', 'highway': 'residential', 'oneway': False, 'reversed': False, 'length': 118.926})
.. sourcecode:: python

See loader functions at https://github.com/gboeing/osmnx/blob/c034e2bf670bd8e9e46c5605bc989a7d916d58f3/osmnx/graph.py#L528
(53128729, 53149520, 0, {'osmid': 6400955, 'name': 'Hill Lane', 'highway': 'residential', 'oneway': False, 'reversed': False, 'length': 118.926})

See loader functions at https://github.com/gboeing/osmnx/blob/c034e2bf670bd8e9e46c5605bc989a7d916d58f3/osmnx/graph.py#L528

[(53017091, 53064327, 0, {'osmid': 6345781, 'name': 'Rose Avenue', 'highway': 'residential', 'oneway': False, 'reversed': False, 'length': 229.891}),
(53017091, 53075599, 0, {'osmid': 6345781, 'name': 'Rose Avenue', 'highway': 'residential', 'oneway': False, 'reversed': True, 'length': 121.11399999999999,
'geometry': <LINESTRING (-122.248 37.826, -122.248 37.826, -122.248 37.826, -122.248 37....>}),
.. sourcecode:: python

[(53017091, 53064327, 0, {'osmid': 6345781, 'name': 'Rose Avenue', 'highway': 'residential', 'oneway': False, 'reversed': False, 'length': 229.891}),
(53017091, 53075599, 0, {'osmid': 6345781, 'name': 'Rose Avenue', 'highway': 'residential', 'oneway': False, 'reversed': True, 'length': 121.11399999999999,
'geometry': <LINESTRING (-122.248 37.826, -122.248 37.826, -122.248 37.826, -122.248 37....>}),

# Shapely LineStrings support pickling: https://shapely.readthedocs.io/en/stable/geometry.html#pickling
Shapely LineStrings support pickling: https://shapely.readthedocs.io/en/stable/geometry.html#pickling
Whereas ``save_graphml`` converts all attributes to strings, including attributes such as ``LEN_`` which wayfarer requires to be numeric.

Whereas ``save_graphml`` converts all attributes to strings, including attributes such as "LEN_" which wayfarer requires to be numeric.
.. sourcecode:: python

# ox.save_graphml(G, filepath) # this converts numeric attributes to strings
# https://github.com/gboeing/osmnx/blob/c123c39e5c69159f87802cd6bf6dd79204019744/osmnx/io.py#L158
# G = ox.load_graphml(filepath) # this sets the types based on field names


# geometry is expected as shapely.geometry.linestring.LineString
# geometry is expected as shapely.geometry.linestring.LineString

Nodes are in the format:

(53022625, {'y': 37.8207744, 'x': -122.2323445, 'highway': 'turning_circle', 'street_count': 1})
.. sourcecode:: python

(53022625, {'y': 37.8207744, 'x': -122.2323445, 'highway': 'turning_circle', 'street_count': 1})
1 change: 1 addition & 0 deletions _sources/self_loops.rst.txt
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
.. sourcecode:: python

# add in any loops (this includes self-loops)
# see https://networkx.org/documentation/stable/reference/algorithms/generated/networkx.algorithms.cycles.find_cycle.html
Expand Down
8 changes: 7 additions & 1 deletion _sources/solver.rst.txt
Original file line number Diff line number Diff line change
Expand Up @@ -52,9 +52,15 @@ A circular segment composed of several edges:

A segment with an edge at one end that loops back onto itself:

.. image:: /images/single_edge_loop_network.manual.png
.. image:: /images/single_edge_loop_network.png
:align: center

A two segments with two further segments in the middle both connected to the same start and end nodes:

.. image:: /images/dual_path_middle_network.png
:align: center
:scale: 50%

Valid but Unsupported Segments
------------------------------

Expand Down
Empty file added _static/placeholder.txt
Empty file.
85 changes: 38 additions & 47 deletions network_loading.html
Original file line number Diff line number Diff line change
Expand Up @@ -224,54 +224,45 @@ <h2 id="file-geodatabase-example">File Geodatabase Example<a class="headerlink"
</section>
<section id="python-code-examples">
<h2 id="python-code-examples">Python Code Examples<a class="headerlink" href="#python-code-examples" title="Link to this heading"></a></h2>
<blockquote>
<div><p>net = networkx.MultiGraph()
net.add_edge(1, 2, key=1, <a href="#id1"><span class="problematic" id="id2">**</span></a>{LENGTH_FIELD: 10, EDGE_ID_FIELD: 1, NODEID_FROM_FIELD: 1, NODEID_TO_FIELD: 2})
net.add_edge(2, 3, key=2, <a href="#id3"><span class="problematic" id="id4">**</span></a>{LENGTH_FIELD: 10, EDGE_ID_FIELD: 2, NODEID_FROM_FIELD: 2, NODEID_TO_FIELD: 3})
net.add_edge(3, 4, key=3, <a href="#id5"><span class="problematic" id="id6">**</span></a>{LENGTH_FIELD: 10, EDGE_ID_FIELD: 3, NODEID_FROM_FIELD: 3, NODEID_TO_FIELD: 4})
net.add_edge(4, 5, key=4, <a href="#id7"><span class="problematic" id="id8">**</span></a>{LENGTH_FIELD: 10, EDGE_ID_FIELD: 4, NODEID_FROM_FIELD: 4, NODEID_TO_FIELD: 5})</p>
<p>return net</p>
</div></blockquote>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">net</span> <span class="o">=</span> <span class="n">networkx</span><span class="o">.</span><span class="n">MultiGraph</span><span class="p">()</span>
<span class="n">net</span><span class="o">.</span><span class="n">add_edge</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="o">**</span><span class="p">{</span><span class="n">LENGTH_FIELD</span><span class="p">:</span> <span class="mi">10</span><span class="p">,</span> <span class="n">EDGE_ID_FIELD</span><span class="p">:</span> <span class="mi">1</span><span class="p">,</span> <span class="n">NODEID_FROM_FIELD</span><span class="p">:</span> <span class="mi">1</span><span class="p">,</span> <span class="n">NODEID_TO_FIELD</span><span class="p">:</span> <span class="mi">2</span><span class="p">})</span>
<span class="n">net</span><span class="o">.</span><span class="n">add_edge</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span> <span class="o">**</span><span class="p">{</span><span class="n">LENGTH_FIELD</span><span class="p">:</span> <span class="mi">10</span><span class="p">,</span> <span class="n">EDGE_ID_FIELD</span><span class="p">:</span> <span class="mi">2</span><span class="p">,</span> <span class="n">NODEID_FROM_FIELD</span><span class="p">:</span> <span class="mi">2</span><span class="p">,</span> <span class="n">NODEID_TO_FIELD</span><span class="p">:</span> <span class="mi">3</span><span class="p">})</span>
<span class="n">net</span><span class="o">.</span><span class="n">add_edge</span><span class="p">(</span><span class="mi">3</span><span class="p">,</span> <span class="mi">4</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="mi">3</span><span class="p">,</span> <span class="o">**</span><span class="p">{</span><span class="n">LENGTH_FIELD</span><span class="p">:</span> <span class="mi">10</span><span class="p">,</span> <span class="n">EDGE_ID_FIELD</span><span class="p">:</span> <span class="mi">3</span><span class="p">,</span> <span class="n">NODEID_FROM_FIELD</span><span class="p">:</span> <span class="mi">3</span><span class="p">,</span> <span class="n">NODEID_TO_FIELD</span><span class="p">:</span> <span class="mi">4</span><span class="p">})</span>
<span class="n">net</span><span class="o">.</span><span class="n">add_edge</span><span class="p">(</span><span class="mi">4</span><span class="p">,</span> <span class="mi">5</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="mi">4</span><span class="p">,</span> <span class="o">**</span><span class="p">{</span><span class="n">LENGTH_FIELD</span><span class="p">:</span> <span class="mi">10</span><span class="p">,</span> <span class="n">EDGE_ID_FIELD</span><span class="p">:</span> <span class="mi">4</span><span class="p">,</span> <span class="n">NODEID_FROM_FIELD</span><span class="p">:</span> <span class="mi">4</span><span class="p">,</span> <span class="n">NODEID_TO_FIELD</span><span class="p">:</span> <span class="mi">5</span><span class="p">})</span>

<span class="k">return</span> <span class="n">net</span>
</pre></div>
</div>
<p>Alternate:</p>
<blockquote>
<div><dl>
<dt>recs = [</dt><dd><dl class="simple">
<dt>{</dt><dd><p>EDGE_ID_FIELD: 1,
NODEID_FROM_FIELD: 1,
NODEID_TO_FIELD: 2,
LENGTH_FIELD: 10,</p>
</dd>
</dl>
<p>},
{</p>
<blockquote>
<div><p>EDGE_ID_FIELD: 2,
NODEID_FROM_FIELD: 2,
NODEID_TO_FIELD: 3,
LENGTH_FIELD: 10,</p>
</div></blockquote>
<p>},
{</p>
<blockquote>
<div><p>EDGE_ID_FIELD: 3,
NODEID_FROM_FIELD: 3,
NODEID_TO_FIELD: 4,
LENGTH_FIELD: 10,</p>
</div></blockquote>
<p>},
{</p>
<blockquote>
<div><p>EDGE_ID_FIELD: 4,
NODEID_FROM_FIELD: 4,
NODEID_TO_FIELD: 5,
LENGTH_FIELD: 10,</p>
</div></blockquote>
<p>},</p>
</dd>
</dl>
<p>]
return loader.load_network_from_records(recs)</p>
</div></blockquote>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">recs</span> <span class="o">=</span> <span class="p">[</span>
<span class="p">{</span>
<span class="n">EDGE_ID_FIELD</span><span class="p">:</span> <span class="mi">1</span><span class="p">,</span>
<span class="n">NODEID_FROM_FIELD</span><span class="p">:</span> <span class="mi">1</span><span class="p">,</span>
<span class="n">NODEID_TO_FIELD</span><span class="p">:</span> <span class="mi">2</span><span class="p">,</span>
<span class="n">LENGTH_FIELD</span><span class="p">:</span> <span class="mi">10</span><span class="p">,</span>
<span class="p">},</span>
<span class="p">{</span>
<span class="n">EDGE_ID_FIELD</span><span class="p">:</span> <span class="mi">2</span><span class="p">,</span>
<span class="n">NODEID_FROM_FIELD</span><span class="p">:</span> <span class="mi">2</span><span class="p">,</span>
<span class="n">NODEID_TO_FIELD</span><span class="p">:</span> <span class="mi">3</span><span class="p">,</span>
<span class="n">LENGTH_FIELD</span><span class="p">:</span> <span class="mi">10</span><span class="p">,</span>
<span class="p">},</span>
<span class="p">{</span>
<span class="n">EDGE_ID_FIELD</span><span class="p">:</span> <span class="mi">3</span><span class="p">,</span>
<span class="n">NODEID_FROM_FIELD</span><span class="p">:</span> <span class="mi">3</span><span class="p">,</span>
<span class="n">NODEID_TO_FIELD</span><span class="p">:</span> <span class="mi">4</span><span class="p">,</span>
<span class="n">LENGTH_FIELD</span><span class="p">:</span> <span class="mi">10</span><span class="p">,</span>
<span class="p">},</span>
<span class="p">{</span>
<span class="n">EDGE_ID_FIELD</span><span class="p">:</span> <span class="mi">4</span><span class="p">,</span>
<span class="n">NODEID_FROM_FIELD</span><span class="p">:</span> <span class="mi">4</span><span class="p">,</span>
<span class="n">NODEID_TO_FIELD</span><span class="p">:</span> <span class="mi">5</span><span class="p">,</span>
<span class="n">LENGTH_FIELD</span><span class="p">:</span> <span class="mi">10</span><span class="p">,</span>
<span class="p">},</span>
<span class="p">]</span>
<span class="k">return</span> <span class="n">loader</span><span class="o">.</span><span class="n">load_network_from_records</span><span class="p">(</span><span class="n">recs</span><span class="p">)</span>
</pre></div>
</div>
</section>
</section>

Expand Down
33 changes: 20 additions & 13 deletions osmnx.html
Original file line number Diff line number Diff line change
Expand Up @@ -192,21 +192,28 @@ <h1 id="osmnx--page-root">OSMNx Compatibility<a class="headerlink" href="#osmnx-
<p>OSMNx brings ability to download OSM data directly into networks, plotting, and isochrone analysis.</p>
<p>To handle one-way OSMNX adds in all paths twice - once with reverse flag true and once with it set to false.</p>
<p>An edge is in the following format:</p>
<p>(53128729, 53149520, 0, {‘osmid’: 6400955, ‘name’: ‘Hill Lane’, ‘highway’: ‘residential’, ‘oneway’: False, ‘reversed’: False, ‘length’: 118.926})</p>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="p">(</span><span class="mi">53128729</span><span class="p">,</span> <span class="mi">53149520</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="p">{</span><span class="s1">'osmid'</span><span class="p">:</span> <span class="mi">6400955</span><span class="p">,</span> <span class="s1">'name'</span><span class="p">:</span> <span class="s1">'Hill Lane'</span><span class="p">,</span> <span class="s1">'highway'</span><span class="p">:</span> <span class="s1">'residential'</span><span class="p">,</span> <span class="s1">'oneway'</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s1">'reversed'</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s1">'length'</span><span class="p">:</span> <span class="mf">118.926</span><span class="p">})</span>
</pre></div>
</div>
<p>See loader functions at <a class="reference external" href="https://github.com/gboeing/osmnx/blob/c034e2bf670bd8e9e46c5605bc989a7d916d58f3/osmnx/graph.py#L528">https://github.com/gboeing/osmnx/blob/c034e2bf670bd8e9e46c5605bc989a7d916d58f3/osmnx/graph.py#L528</a></p>
<p>[(53017091, 53064327, 0, {‘osmid’: 6345781, ‘name’: ‘Rose Avenue’, ‘highway’: ‘residential’, ‘oneway’: False, ‘reversed’: False, ‘length’: 229.891}),
(53017091, 53075599, 0, {‘osmid’: 6345781, ‘name’: ‘Rose Avenue’, ‘highway’: ‘residential’, ‘oneway’: False, ‘reversed’: True, ‘length’: 121.11399999999999,
‘geometry’: &lt;LINESTRING (-122.248 37.826, -122.248 37.826, -122.248 37.826, -122.248 37….&gt;}),</p>
<blockquote>
<div><p># Shapely LineStrings support pickling: <a class="reference external" href="https://shapely.readthedocs.io/en/stable/geometry.html#pickling">https://shapely.readthedocs.io/en/stable/geometry.html#pickling</a></p>
<p>Whereas <code class="docutils literal notranslate"><span class="pre">save_graphml</span></code> converts all attributes to strings, including attributes such as “<a href="#id1"><span class="problematic" id="id2">LEN_</span></a>” which wayfarer requires to be numeric.</p>
<p># ox.save_graphml(G, filepath) # this converts numeric attributes to strings
# <a class="reference external" href="https://github.com/gboeing/osmnx/blob/c123c39e5c69159f87802cd6bf6dd79204019744/osmnx/io.py#L158">https://github.com/gboeing/osmnx/blob/c123c39e5c69159f87802cd6bf6dd79204019744/osmnx/io.py#L158</a>
# G = ox.load_graphml(filepath) # this sets the types based on field names</p>
</div></blockquote>
<p># geometry is expected as shapely.geometry.linestring.LineString</p>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="p">[(</span><span class="mi">53017091</span><span class="p">,</span> <span class="mi">53064327</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="p">{</span><span class="s1">'osmid'</span><span class="p">:</span> <span class="mi">6345781</span><span class="p">,</span> <span class="s1">'name'</span><span class="p">:</span> <span class="s1">'Rose Avenue'</span><span class="p">,</span> <span class="s1">'highway'</span><span class="p">:</span> <span class="s1">'residential'</span><span class="p">,</span> <span class="s1">'oneway'</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s1">'reversed'</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s1">'length'</span><span class="p">:</span> <span class="mf">229.891</span><span class="p">}),</span>
<span class="p">(</span><span class="mi">53017091</span><span class="p">,</span> <span class="mi">53075599</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="p">{</span><span class="s1">'osmid'</span><span class="p">:</span> <span class="mi">6345781</span><span class="p">,</span> <span class="s1">'name'</span><span class="p">:</span> <span class="s1">'Rose Avenue'</span><span class="p">,</span> <span class="s1">'highway'</span><span class="p">:</span> <span class="s1">'residential'</span><span class="p">,</span> <span class="s1">'oneway'</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s1">'reversed'</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s1">'length'</span><span class="p">:</span> <span class="mf">121.11399999999999</span><span class="p">,</span>
<span class="s1">'geometry'</span><span class="p">:</span> <span class="o">&lt;</span><span class="n">LINESTRING</span> <span class="p">(</span><span class="o">-</span><span class="mf">122.248</span> <span class="mf">37.826</span><span class="p">,</span> <span class="o">-</span><span class="mf">122.248</span> <span class="mf">37.826</span><span class="p">,</span> <span class="o">-</span><span class="mf">122.248</span> <span class="mf">37.826</span><span class="p">,</span> <span class="o">-</span><span class="mf">122.248</span> <span class="mf">37.</span><span class="o">...&gt;</span><span class="p">}),</span>
</pre></div>
</div>
<p>Shapely LineStrings support pickling: <a class="reference external" href="https://shapely.readthedocs.io/en/stable/geometry.html#pickling">https://shapely.readthedocs.io/en/stable/geometry.html#pickling</a>
Whereas <code class="docutils literal notranslate"><span class="pre">save_graphml</span></code> converts all attributes to strings, including attributes such as <code class="docutils literal notranslate"><span class="pre">LEN_</span></code> which wayfarer requires to be numeric.</p>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="c1"># ox.save_graphml(G, filepath) # this converts numeric attributes to strings</span>
<span class="c1"># https://github.com/gboeing/osmnx/blob/c123c39e5c69159f87802cd6bf6dd79204019744/osmnx/io.py#L158</span>
<span class="c1"># G = ox.load_graphml(filepath) # this sets the types based on field names</span>

<span class="c1"># geometry is expected as shapely.geometry.linestring.LineString</span>
</pre></div>
</div>
<p>Nodes are in the format:</p>
<p>(53022625, {‘y’: 37.8207744, ‘x’: -122.2323445, ‘highway’: ‘turning_circle’, ‘street_count’: 1})</p>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="p">(</span><span class="mi">53022625</span><span class="p">,</span> <span class="p">{</span><span class="s1">'y'</span><span class="p">:</span> <span class="mf">37.8207744</span><span class="p">,</span> <span class="s1">'x'</span><span class="p">:</span> <span class="o">-</span><span class="mf">122.2323445</span><span class="p">,</span> <span class="s1">'highway'</span><span class="p">:</span> <span class="s1">'turning_circle'</span><span class="p">,</span> <span class="s1">'street_count'</span><span class="p">:</span> <span class="mi">1</span><span class="p">})</span>
</pre></div>
</div>
</section>


Expand Down
2 changes: 1 addition & 1 deletion searchindex.js

Large diffs are not rendered by default.

Loading

0 comments on commit 33b5fca

Please sign in to comment.