AequilibraE
0.7.1

Contents:

  • 1. An overview of AequilibraE
  • 2. Getting Started
  • 3. The AequilibraE project
  • 4. Modeling Platform
  • 5. Path computation engine
  • 6. API documentation
  • 7. Workflows
    • 7.1. Logging to terminal
    • 7.2. Editing network geometry: Nodes
    • 7.3. Editing network geometry: Links
    • 7.4. Editing network geometry: Splitting link
    • 7.5. Project from Open-Street Maps
    • 7.6. Creating a zone system based on Hex Bins
    • 7.7. Path and skimming
    • 7.8. Exploring the network on a notebook
    • 7.9. Trip Distribution
    • 7.10. Forecasting
  • 8. Contributing to AequilibraE
  • 9. Roadmap
  • 10. QGIS
AequilibraE
  • Docs »
  • 7. Workflows »
  • 7.3. Editing network geometry: Links
  • View page source

Note

Click here to download the full example code

7.3. Editing network geometry: Links¶

On this example we move a link extremity from one point to another and see what happens to the network

## Imports
from uuid import uuid4
from tempfile import gettempdir
from os.path import join
from aequilibrae.utils.create_example import create_example
from shapely.geometry import LineString, Point
import matplotlib.pyplot as plt

# We create the example project inside our temp folder
fldr = join(gettempdir(), uuid4().hex)

project = create_example(fldr)
all_nodes = project.network.nodes
links = project.network.links

# Let's move node one from the upper left corner of the image above, a bit to the left and to the bottom

# We edit the link that goes from node 1 to node 2
link = links.get(1)
node = all_nodes.get(1)
new_extremity = Point(node.geometry.x + 0.02, node.geometry.y - 0.02)
link.geometry = LineString([node.geometry, new_extremity])

# and the link that goes from node 2 to node 1
link = links.get(3)
node2 = all_nodes.get(2)
link.geometry = LineString([new_extremity, node2.geometry])

links.save()
links.refresh()

# Because each link is unidirectional, you can no longer go from node 1 to node 2, obviously

We do NOT recommend this, though…. It is very slow for real networks We plot the entire network

curr = project.conn.cursor()
curr.execute('Select link_id from links;')

for lid in curr.fetchall():
    geo = links.get(lid[0]).geometry
    plt.plot(*geo.xy, color='blue')

all_nodes = project.network.nodes
curr = project.conn.cursor()
curr.execute('Select node_id from nodes;')

for nid in curr.fetchall():
    geo = all_nodes.get(nid[0]).geometry
    plt.plot(*geo.xy, 'ro', color='black')

plt.show()

# Now look at the network how it used to be
plot moving link extremity
project.close()

Total running time of the script: ( 0 minutes 0.772 seconds)

Download Python source code: plot_moving_link_extremity.py

Download Jupyter notebook: plot_moving_link_extremity.ipynb

Gallery generated by Sphinx-Gallery

Next Previous

© Copyright 2018, Pedro Camargo.

Built with Sphinx and ❤️ using a custom theme based on Read the Docs.