momepy.nx_to_gdf

momepy.nx_to_gdf(net, points=True, lines=True, spatial_weights=False, nodeID='nodeID')[source]

Convert a networkx.Graph to a LineString GeoDataFrame and Point GeoDataFrame.

Automatically detects an approach of the graph and assigns edges and nodes to relevant geometry type.

See the User Guide page ../../user_guide/graph/convert for details.

Parameters:
netnetworkx.Graph

A networkx.Graph object.

pointsbool (default is True)

Export point-based gdf representing intersections.

linesbool (default is True)

Export line-based gdf representing streets.

spatial_weightsbool (default is False)

Set to True to export a libpysal spatial weights for nodes (only for primal graphs).

nodeIDstr

The name of the node ID column to be generated.

Returns:
GeoDataFrame

The Selected gdf or tuple of both gdfs or tuple of gdfs and weights.

See also

gdf_to_nx

Examples

>>> import geopandas as gpd
>>> df = gpd.read_file(momepy.datasets.get_path('bubenec'), layer='streets')
>>> df.head(2)
                                            geometry
0  LINESTRING (1603585.640 6464428.774, 1603413.2...
1  LINESTRING (1603268.502 6464060.781, 1603296.8...
>>> G = momepy.gdf_to_nx(df)

Converting the primal Graph to points as intersections and lines as street segments:

>>> points, lines = momepy.nx_to_gdf(graph)
>>> points.head(2)
   nodeID                         geometry
0       1  POINT (1603585.640 6464428.774)
1       2  POINT (1603413.206 6464228.730)
>>> lines.head(2)
                     geometry      mm_len  node_start  node_end
0  LINESTRING (1603585.640...  264.103950           1         2
1  LINESTRING (1603561.740...   70.020202           1         9

Storing the relationship between points/nodes as a libpysal W object:

>>> points, lines, W = momepy.nx_to_gdf(graph, spatial_weights=True)
>>> W
<libpysal.weights.weights.W object at 0x7f8d01837210>

Converting the dual Graph to lines. The dual Graph does not export edges to GDF:

>>> G = momepy.gdf_to_nx(df, approach="dual")
>>> lines = momepy.nx_to_gdf(graph)
>>> lines.head(2)
                                            geometry      mm_len
0  LINESTRING (1603585.640 6464428.774, 1603413.2...  264.103950
1  LINESTRING (1603607.303 6464181.853, 1603592.8...  199.746503