Skip to main content
Ctrl+K

AequilibraE 1.0.1

  • Getting started
  • Examples
  • Modeling with AequilibraE
  • API Reference
  • Validation & Benchmarking
    • Developing
    • History
  • GitHub
  • Getting started
  • Examples
  • Modeling with AequilibraE
  • API Reference
  • Validation & Benchmarking
    • Developing
    • History
  • GitHub

Section Navigation

  • Creating Models
    • Project from OpenStreetMap
    • Import GTFS
    • Creating a zone system based on Hex Bins
    • Importing network from GMNS
    • Project from a link layer
  • Editing networks
    • Editing network geometry: Nodes
    • Editing network geometry: Links
    • Editing network geometry: Splitting link
  • Trip Distribution
    • Running IPF without an AequilibraE model
    • Network skimming
    • Path computation
    • Trip Distribution
  • Visualization
    • Creating Delaunay Lines
    • Exploring the network on a notebook
  • AequilibraE without a Model
    • Traffic Assignment without an AequilibraE Model
  • Full Workflows
    • Public transport assignment with Optimal Strategies
    • Forecasting
  • Other Applications
    • Logging to terminal
    • Checking AequilibraE’s log
    • Exporting network to GMNS
    • Finding disconnected links
  • Examples
  • Editing networks
  • Editing...

Note

Go to the end to download the full example code

Editing network geometry: Links#

In 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, "o", color="black")

plt.show()

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

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

Download Jupyter notebook: plot_moving_link_extremity.ipynb

Download Python source code: plot_moving_link_extremity.py

Gallery generated by Sphinx-Gallery

previous

Editing network geometry: Nodes

next

Editing network geometry: Splitting link

Show Source

© Copyright 2024-02-25, AequilibraE developers.

Created using Sphinx 7.2.6.

Built with the PyData Sphinx Theme 0.15.2.