summaryrefslogtreecommitdiff
path: root/examples/geospatial
diff options
context:
space:
mode:
authorMartin Fleischmann <martin@martinfleischmann.net>2020-12-03 22:35:09 +0000
committerGitHub <noreply@github.com>2020-12-03 14:35:09 -0800
commit5c1929d57b15785b1b260a6bc5f0f80825693001 (patch)
tree76c80125e0e557391b4a9da18501542b91b443af /examples/geospatial
parentc034a899070774f70119c0d73207411db7db90b6 (diff)
downloadnetworkx-5c1929d57b15785b1b260a6bc5f0f80825693001.tar.gz
DOC: geospatial example using lines (#4407)
* DOC: geospatial example using lines * convert dual back * attribution * requirements * try to fix rasterio * use libpysal * cleanup temp examples * Fix typos * Apply suggestions from code review Co-authored-by: Ross Barnowski <rossbar@berkeley.edu> * remove plt.show Co-authored-by: Jarrod Millman <jarrod.millman@gmail.com> Co-authored-by: Ross Barnowski <rossbar@berkeley.edu>
Diffstat (limited to 'examples/geospatial')
-rw-r--r--examples/geospatial/plot_geopandas.py20
-rw-r--r--examples/geospatial/plot_lines.py110
-rw-r--r--examples/geospatial/plot_pysal.py23
-rw-r--r--examples/geospatial/rivers.geojson28
4 files changed, 138 insertions, 43 deletions
diff --git a/examples/geospatial/plot_geopandas.py b/examples/geospatial/plot_geopandas.py
deleted file mode 100644
index 83aaace8..00000000
--- a/examples/geospatial/plot_geopandas.py
+++ /dev/null
@@ -1,20 +0,0 @@
-"""
-=========
-GeoPandas
-=========
-
-This example shows how to read a shapefile with GeoPandas,
-and convert it to a NetworkX graph....
-"""
-
-import geopandas as gpd
-import matplotlib.pyplot as plt
-import networkx as nx
-
-
-# %%
-# TODO
-
-world = gpd.read_file(gpd.datasets.get_path("naturalearth_lowres"))
-world.plot()
-plt.show()
diff --git a/examples/geospatial/plot_lines.py b/examples/geospatial/plot_lines.py
new file mode 100644
index 00000000..616db374
--- /dev/null
+++ b/examples/geospatial/plot_lines.py
@@ -0,0 +1,110 @@
+"""
+==========================
+Graphs from a set of lines
+==========================
+
+This example shows how to build a graph from a set of geographic lines
+(sometimes called "linestrings") using GeoPandas, momepy and alternatively
+PySAL. We'll plot some rivers and streets, as well as their graphs formed
+from the segments.
+
+There are generally two ways of creating graph object from line geometry.
+Let's use an example of street network to illustrate both:
+
+The first way is a so-called primal approach, where each intersection is
+a node and each linestring segment connecting two intersections is an edge.
+
+The second way is so-called dual approach, where each line is a node and
+intersection topology is turned into edges. One of the options how this is
+used for street network analysis is an angular analysis, where your routing
+is weighted via angles between street segments on intersections.
+
+We will use GeoPandas to read spatial data and momepy to generate first
+primal graph and then dual graph. Furthermore, we will use PySAL to
+illustrate an alternative way of creating raw dual graph.
+"""
+
+
+import geopandas
+import matplotlib.pyplot as plt
+import momepy
+import networkx as nx
+from contextily import add_basemap
+from libpysal import weights
+
+# %%
+# Read in example river geometry from GeoJSON. Source of example data:
+# https://doi.org/10.3390/data5010008 (Nicolas Cadieux)
+rivers = geopandas.read_file("rivers.geojson")
+
+# %%
+# Construct the primal graph. momepy automatically preserves all attributes
+# from GeoDataFrame and stores then as edge attributes.
+G = momepy.gdf_to_nx(rivers, approach="primal")
+
+# %%
+# Each node is encoded by its coordinates, which allows us to use them
+# in plotting.
+positions = {n: [n[0], n[1]] for n in list(G.nodes)}
+
+# Plot
+f, ax = plt.subplots(1, 2, figsize=(12, 6), sharex=True, sharey=True)
+rivers.plot(color="k", ax=ax[0])
+for i, facet in enumerate(ax):
+ facet.set_title(("Rivers", "Graph")[i])
+ facet.axis("off")
+nx.draw(G, positions, ax=ax[1], node_size=5)
+
+# %%
+# Once we finish graph-based analysis, we can convert graph back
+# to GeoDataFrames. momepy can return nodes as point geometry,
+# edges as original line geometry and W object, which is PySAL
+# spatial weights matrix encoding original graph so we can use
+# it with node GeoDataFrame.
+nodes, edges, W = momepy.nx_to_gdf(G, spatial_weights=True)
+
+
+# Read in example street network from GeoPackage
+streets = geopandas.read_file(momepy.datasets.get_path("bubenec"), layer="streets")
+
+# Construct the primal graph
+G_primal = momepy.gdf_to_nx(streets, approach="primal")
+
+# Plot
+f, ax = plt.subplots(1, 2, figsize=(12, 6), sharex=True, sharey=True)
+streets.plot(color="k", ax=ax[0])
+for i, facet in enumerate(ax):
+ facet.set_title(("Streets", "Graph")[i])
+ facet.axis("off")
+ add_basemap(facet)
+nx.draw(
+ G_primal, {n: [n[0], n[1]] for n in list(G_primal.nodes)}, ax=ax[1], node_size=50
+)
+
+# %%
+# Construct the dual graph. momepy will store row attributes as node attributes and
+# automatically measures angle between lines.
+G_dual = momepy.gdf_to_nx(streets, approach="dual")
+
+# Plot
+f, ax = plt.subplots(1, 2, figsize=(12, 6), sharex=True, sharey=True)
+streets.plot(color="k", ax=ax[0])
+for i, facet in enumerate(ax):
+ facet.set_title(("Streets", "Graph")[i])
+ facet.axis("off")
+ add_basemap(facet)
+nx.draw(G_dual, {n: [n[0], n[1]] for n in list(G_dual.nodes)}, ax=ax[1], node_size=50)
+plt.show()
+
+# Convert dual graph back to GeoDataFrame. Returns only original line geometry.
+lines = momepy.nx_to_gdf(G_dual)
+
+# %%
+# We can also construct the dual graph using PySAL. Note that it only encodes
+# relationship between geometries and do not any store attributes. However, it is
+# significantly faster than momepy.gdf_to_nx().
+# Create PySAL weights (graph).
+W = weights.Queen.from_dataframe(streets)
+
+# Convert the graph to networkx
+G_dual = W.to_networkx()
diff --git a/examples/geospatial/plot_pysal.py b/examples/geospatial/plot_pysal.py
deleted file mode 100644
index 24f52bea..00000000
--- a/examples/geospatial/plot_pysal.py
+++ /dev/null
@@ -1,23 +0,0 @@
-"""
-=====
-PySAL
-=====
-
-This example shows how to read a shapefile with PySAL,
-the Python Spatial Analysis Library, and convert it
-to a NetworkX graph....
-"""
-
-import libpysal
-import geopandas as gpd
-import mapclassify as mc
-import matplotlib.pyplot as plt
-import networkx as nx
-
-# %%
-# TODO
-
-columbus = gpd.read_file(libpysal.examples.get_path("columbus.shp"))
-q5 = mc.Quantiles(columbus.CRIME, k=5)
-q5.plot(columbus, axis_on=False, cmap="Blues")
-plt.show()
diff --git a/examples/geospatial/rivers.geojson b/examples/geospatial/rivers.geojson
new file mode 100644
index 00000000..1f22c3d0
--- /dev/null
+++ b/examples/geospatial/rivers.geojson
@@ -0,0 +1,28 @@
+{
+"type": "FeatureCollection",
+"crs": { "type": "name", "properties": { "name": "urn:ogc:def:crs:EPSG::32718" } },
+"features": [
+{ "type": "Feature", "properties": { "Length": 8726.582, "id": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ 554143.902784303762019, 9370463.606285564601421 ], [ 554090.77431408688426, 9370670.527637269347906 ], [ 554090.774323970079422, 9371226.15380304120481 ], [ 554241.587090324610472, 9371670.65468049235642 ], [ 554694.025547004304826, 9371853.21761728823185 ], [ 555225.839149633422494, 9371750.02984730899334 ], [ 555343.558532191440463, 9371655.854319509118795 ], [ 555345.387838716618717, 9371654.390889570116997 ], [ 555662.402400243096054, 9371400.77914435043931 ], [ 556122.77833932172507, 9371003.903421515598893 ], [ 557091.155320196412504, 9369979.963763244450092 ], [ 557341.200555620715022, 9369629.900410778820515 ], [ 557346.268165812827647, 9369622.805799175053835 ], [ 557527.71874447260052, 9369368.775065643712878 ], [ 557765.84421896468848, 9368876.649134300649166 ], [ 558049.371886842884123, 9368053.068484710529447 ], [ 558053.988722653128207, 9368039.657954649999738 ], [ 558099.219791372306645, 9367908.272239688783884 ], [ 558226.220121195539832, 9367098.645607182756066 ], [ 558099.219845050014555, 9366423.956662653014064 ], [ 558080.528334323316813, 9366376.590186208486557 ] ] } },
+{ "type": "Feature", "properties": { "Length": 4257.036, "id": 1 }, "geometry": { "type": "LineString", "coordinates": [ [ 556297.090028856880963, 9365917.049970472231507 ], [ 555900.606109458953142, 9365657.158350326120853 ], [ 555782.799677672795951, 9365476.812701666727662 ], [ 555700.779348274692893, 9365322.130740420892835 ], [ 555688.470050815492868, 9365265.110052039846778 ], [ 555681.259945538826287, 9365190.290051722899079 ], [ 555674.760025494731963, 9364974.659947790205479 ], [ 555682.420050675049424, 9364852.709972137585282 ], [ 555694.550037671811879, 9364781.880019277334213 ], [ 555727.349953718483448, 9364659.910016257315874 ], [ 555744.420012982562184, 9364518.670053444802761 ], [ 555729.489983960986137, 9364441.560034865513444 ], [ 555699.249948039650917, 9364386.189982520416379 ], [ 555684.109970162622631, 9364315.900024494156241 ], [ 555686.449967577122152, 9364255.080044345930219 ], [ 555728.060013480484486, 9364125.630033632740378 ], [ 555749.610024364665151, 9364085.360002601519227 ], [ 555770.949986239895225, 9364059.309945780783892 ], [ 555794.450053149834275, 9364010.699949137866497 ], [ 555829.790047806687653, 9363850.149949369952083 ], [ 555874.309982567094266, 9363744.100027633830905 ], [ 555907.019950926303864, 9363695.920032363384962 ], [ 555947.87997955083847, 9363615.940017953515053 ], [ 556013.410024100914598, 9363509.110036455094814 ], [ 556202.53995044529438, 9363306.050033012405038 ], [ 556274.150049703195691, 9363241.279995545744896 ], [ 556299.859950244426727, 9363225.749980885535479 ], [ 556317.170045118778944, 9363207.929970927536488 ], [ 556341.640031377784908, 9363196.830052131786942 ], [ 556441.779971952550113, 9363116.399995505809784 ], [ 556510.090008058585227, 9363068.569956073537469 ], [ 556590.200010528787971, 9363037.669945260509849 ], [ 556741.749954544007778, 9362995.009969409555197 ], [ 557237.734752693213522, 9362710.7868034504354 ] ] } },
+{ "type": "Feature", "properties": { "Length": 4126.414, "id": 2 }, "geometry": { "type": "LineString", "coordinates": [ [ 556950.010039016604424, 9367879.529990935698152 ], [ 556969.360006319358945, 9367808.640045430511236 ], [ 557003.739985266700387, 9367721.949950056150556 ], [ 557036.919998358935118, 9367525.920052092522383 ], [ 557039.840040050446987, 9367455.529969932511449 ], [ 557024.140032706782222, 9367220.819958550855517 ], [ 557024.3699557390064, 9367105.170054715126753 ], [ 557049.169946600683033, 9366954.26003678701818 ], [ 557070.480000229552388, 9366864.159951467067003 ], [ 557127.270002986304462, 9366510.689949084073305 ], [ 557132.919950186274946, 9366497.259986190125346 ], [ 557139.560054676607251, 9366401.4000089392066 ], [ 557136.479962345212698, 9366150.580038771033287 ], [ 557151.830032242462039, 9365999.990010671317577 ], [ 557155.590027201920748, 9365871.080005507916212 ], [ 557152.200018741190434, 9365729.669961683452129 ], [ 557146.04999157320708, 9365662.309972265735269 ], [ 557096.070009808056056, 9365457.700033070519567 ], [ 557080.740025472827256, 9365348.980017950758338 ], [ 557047.89997448399663, 9365232.779988572001457 ], [ 556998.720020562410355, 9364984.410006260499358 ], [ 556998.470042725093663, 9364891.139983013272285 ], [ 557016.959983234293759, 9364759.48998936265707 ], [ 557020.109949165023863, 9364692.179985167458653 ], [ 556986.650004463270307, 9364540.580016005784273 ], [ 556978.97003573179245, 9364414.860015098005533 ], [ 556989.520046097226441, 9364373.359963739290833 ], [ 557295.943237604573369, 9363890.830840945243835 ] ] } },
+{ "type": "Feature", "properties": { "Length": 1193.85, "id": 3 }, "geometry": { "type": "LineString", "coordinates": [ [ 557295.943237604573369, 9363890.830840945243835 ], [ 557179.526292844675481, 9363224.079394550994039 ], [ 557237.734752693213522, 9362710.7868034504354 ] ] } },
+{ "type": "Feature", "properties": { "Length": 3678.113, "id": 4 }, "geometry": { "type": "LineString", "coordinates": [ [ 557237.734752693213522, 9362710.7868034504354 ], [ 557322.401589901186526, 9362345.661031894385815 ], [ 557629.318806320428848, 9362086.368931673467159 ], [ 557952.111221184954047, 9361938.201930712908506 ], [ 558433.653843024745584, 9361885.285094810649753 ], [ 558571.23748308327049, 9361906.45183520950377 ], [ 558804.071235538460314, 9362118.119011694565415 ], [ 559042.196680794470012, 9362398.577756013721228 ], [ 559280.322152965702116, 9362620.82816337607801 ], [ 559481.405938610434532, 9362795.453616688027978 ], [ 559994.698619224131107, 9362964.787325641140342 ], [ 560098.0373490806669, 9362989.473788045346737 ] ] } },
+{ "type": "Feature", "properties": { "Length": 732.404, "id": 5 }, "geometry": { "type": "LineString", "coordinates": [ [ 557427.158627981320024, 9364610.527111783623695 ], [ 557407.068465149030089, 9364546.998659269884229 ], [ 557295.943237604573369, 9363890.830840945243835 ] ] } },
+{ "type": "Feature", "properties": { "Length": 1884.698, "id": 6 }, "geometry": { "type": "LineString", "coordinates": [ [ 558080.528334323316813, 9366376.590186208486557 ], [ 557602.860547710210085, 9365166.124975387006998 ], [ 557427.158627981320024, 9364610.527111783623695 ] ] } },
+{ "type": "Feature", "properties": { "Length": 3442.012, "id": 7 }, "geometry": { "type": "LineString", "coordinates": [ [ 557427.158627981320024, 9364610.527111783623695 ], [ 557805.752903219312429, 9364280.688339363783598 ], [ 558106.716948954388499, 9363923.500108260661364 ], [ 558275.389236090704799, 9363589.46295397169888 ], [ 558457.290563251823187, 9363242.196594277396798 ], [ 558702.030567424371839, 9363080.139034846797585 ], [ 559002.994778543710709, 9363030.529521865770221 ], [ 559194.818084074184299, 9363076.831730449572206 ], [ 559380.026796967722476, 9363083.446249704807997 ], [ 560098.0373490806669, 9362989.473788045346737 ] ] } },
+{ "type": "Feature", "properties": { "Length": 2233.621, "id": 8 }, "geometry": { "type": "LineString", "coordinates": [ [ 558080.528334323316813, 9366376.590186208486557 ], [ 558315.076750056818128, 9366239.931772261857986 ], [ 558526.479321829974651, 9366203.154564624652267 ], [ 558709.042151712812483, 9366137.008597478270531 ], [ 558870.438306444324553, 9366025.883540779352188 ], [ 559097.980513922870159, 9365814.216369282454252 ], [ 559232.918147033080459, 9365687.216153411194682 ], [ 559373.147643727250397, 9365512.590732062235475 ], [ 559513.377018287777901, 9365263.882038922980428 ], [ 559611.273070521652699, 9365033.693947337567806 ], [ 559631.074507311917841, 9364934.686608903110027 ] ] } },
+{ "type": "Feature", "properties": { "Length": 10205.469, "id": 9 }, "geometry": { "type": "LineString", "coordinates": [ [ 561623.109724191948771, 9370725.055553076788783 ], [ 561676.18997294921428, 9370714.779967816546559 ], [ 561872.700051285326481, 9370633.689976416528225 ], [ 561965.950044951401651, 9370604.980027223005891 ], [ 562030.249970029108226, 9370576.360040871426463 ], [ 562124.010049782693386, 9370520.819982415065169 ], [ 562167.6200290042907, 9370486.610048672184348 ], [ 562228.209969406016171, 9370457.580005738884211 ], [ 562373.359956271015108, 9370432.180039843544364 ], [ 562492.949983207508922, 9370383.569977002218366 ], [ 562715.320010068826377, 9370251.099986046552658 ], [ 562817.060029708780348, 9370201.850013209506869 ], [ 562910.809955675154924, 9370133.78995799459517 ], [ 563009.018621220253408, 9370046.866670096293092 ], [ 563009.985151003114879, 9370046.011303126811981 ], [ 563020.719979303888977, 9370036.509967906400561 ], [ 563153.016688115894794, 9369931.317918915301561 ], [ 563160.323813738301396, 9369925.507776217535138 ], [ 563259.789997064508498, 9369846.419983314350247 ], [ 563309.629967176355422, 9369788.110029544681311 ], [ 563352.719949327409267, 9369746.749972360208631 ], [ 563482.359983313828707, 9369582.040037693455815 ], [ 563546.450017801485956, 9369482.339969750493765 ], [ 563568.230047828517854, 9369438.550010936334729 ], [ 563640.699980834499002, 9369257.379998253658414 ], [ 563704.739994174800813, 9369068.280027104541659 ], [ 563758.530009357258677, 9368843.660054840147495 ], [ 563782.790046340785921, 9368769.659959333017468 ], [ 563802.600015265867114, 9368654.040054289624095 ], [ 563809.940042392350733, 9368570.360043799504638 ], [ 563810.639974911697209, 9368493.269952712580562 ], [ 563828.989995523355901, 9368377.549995694309473 ], [ 563835.819965007714927, 9368229.960012884810567 ], [ 563817.079956445842981, 9367927.960038047283888 ], [ 563789.859994518570602, 9367789.759950948879123 ], [ 563659.979972447268665, 9367401.359956156462431 ], [ 563571.960032540373504, 9367214.499949682503939 ], [ 563534.900016752071679, 9367147.420007986947894 ], [ 563487.759952491149306, 9367080.549984656274319 ], [ 563350.280050816945732, 9366928.819999873638153 ], [ 563299.450048363767564, 9366889.93997529707849 ], [ 563052.050024612806737, 9366770.009978745132685 ], [ 562937.400018213316798, 9366720.689949177205563 ], [ 562669.570023030042648, 9366625.919982662424445 ], [ 562326.890030118636787, 9366482.909977274015546 ], [ 562099.610032433643937, 9366398.40998206473887 ], [ 561991.650016712956131, 9366349.370033476501703 ], [ 561779.182359215803444, 9366384.032598856836557 ], [ 561636.968650399707258, 9366417.105622258037329 ], [ 561464.213070619851351, 9366402.262741258367896 ], [ 561463.75820950884372, 9366402.262741258367896 ], [ 561463.073749605566263, 9366401.980590904131532 ], [ 561382.249945723451674, 9366407.229994645342231 ], [ 561342.7800421891734, 9366397.170049915090203 ], [ 561318.300000792369246, 9366379.429999388754368 ], [ 561298.470034805126488, 9366324.010052978992462 ], [ 561272.490045037120581, 9366274.860033167526126 ], [ 561245.32002614159137, 9366258.689991842955351 ], [ 561209.280043817125261, 9366250.149994755163789 ], [ 561164.889944912865758, 9366248.770035138353705 ], [ 561131.099964152090251, 9366287.050040356814861 ], [ 561116.460049882531166, 9366310.640005555003881 ], [ 561048.77001735009253, 9366340.479974111542106 ], [ 560988.900028594769537, 9366352.31000741943717 ], [ 560941.339979647658765, 9366336.740006012842059 ], [ 560923.070013260468841, 9366316.929958242923021 ], [ 560919.330047259107232, 9366300.380018414929509 ], [ 560921.569994766265154, 9366260.259971223771572 ], [ 560936.799992737360299, 9366192.209996210411191 ], [ 560925.05003163870424, 9366126.270037136971951 ], [ 560876.040008636191487, 9366071.009984320029616 ], [ 560811.089955819770694, 9366030.080027123913169 ], [ 560777.720031510107219, 9366021.430015010759234 ], [ 560722.320030105300248, 9366019.599988108500838 ], [ 560687.230004222132266, 9366026.950045935809612 ], [ 560611.969972735270858, 9366056.569956619292498 ], [ 560558.649947706609964, 9366056.350004274398088 ], [ 560505.070005991496146, 9366036.09994831867516 ], [ 560424.559977711178362, 9365964.249981984496117 ], [ 560389.580007423646748, 9365942.949960263445973 ], [ 560368.409995377995074, 9365939.010003125295043 ], [ 560323.710036418400705, 9365944.029953524470329 ], [ 560310.509968371130526, 9365949.480042090639472 ], [ 560272.819948982447386, 9366039.820001818239689 ], [ 560255.240021657198668, 9366054.909989798441529 ], [ 560241.229975403286517, 9366057.109999237582088 ], [ 560027.700045749545097, 9365958.499957986176014 ], [ 559981.980015838518739, 9365926.920028259977698 ], [ 559960.809977819211781, 9365902.629947766661644 ], [ 559937.809967474080622, 9365863.670021612197161 ], [ 559929.169960617087781, 9365818.25998305901885 ], [ 559928.909987358376384, 9365702.910010498017073 ], [ 559941.24996009003371, 9365584.660001531243324 ], [ 559941.370029916986823, 9365478.899977192282677 ], [ 559933.660025156103075, 9365340.459967693313956 ], [ 559916.789950799196959, 9365227.910002045333385 ], [ 559887.94998219050467, 9365172.430055160075426 ], [ 559835.799970475956798, 9365101.660033008083701 ], [ 559793.400005815550685, 9365063.109944943338633 ], [ 559703.000015168450773, 9365007.539955627173185 ], [ 559631.074507311917841, 9364934.686608903110027 ] ] } },
+{ "type": "Feature", "properties": { "Length": 2061.313, "id": 10 }, "geometry": { "type": "LineString", "coordinates": [ [ 559631.074507311917841, 9364934.686608903110027 ], [ 559674.773152898997068, 9364716.193343315273523 ], [ 559717.106637695804238, 9364488.651212530210614 ], [ 559754.148339871317148, 9364245.234052091836929 ], [ 559788.544262650422752, 9364015.046059736981988 ], [ 559833.523490295745432, 9363858.941560404375196 ], [ 559854.690266018733382, 9363729.295549921691418 ], [ 559965.815547276288271, 9363552.024331323802471 ], [ 560113.982422707602382, 9363395.919846467673779 ], [ 560233.045221633277833, 9363181.606919135898352 ], [ 560319.598569430410862, 9363042.402333023026586 ] ] } },
+{ "type": "Feature", "properties": { "Length": 83.734, "id": 11 }, "geometry": { "type": "LineString", "coordinates": [ [ 559897.255002218298614, 9369874.2249611672014 ], [ 559964.208351333625615, 9369823.988749623298645 ] ] } },
+{ "type": "Feature", "properties": { "Length": 1687.179, "id": 12 }, "geometry": { "type": "LineString", "coordinates": [ [ 559935.500016157515347, 9368146.289991278201342 ], [ 559922.310023608617485, 9368229.959980944171548 ], [ 559929.429956942796707, 9368342.340002160519361 ], [ 559941.249947638250887, 9368419.490002373233438 ], [ 559941.480000208131969, 9368557.889966269955039 ], [ 559928.1699612531811, 9368763.130033286288381 ], [ 559915.889949735254049, 9368846.899954961612821 ], [ 559915.899990991689265, 9369264.769971307367086 ], [ 559956.630007576197386, 9369486.99005114659667 ], [ 559954.07999915163964, 9369624.289997108280659 ], [ 559947.930049324408174, 9369697.340018127113581 ], [ 559954.159957599826157, 9369781.860050067305565 ], [ 559961.630633292719722, 9369813.181432234123349 ], [ 559964.208351333625615, 9369823.988749623298645 ] ] } },
+{ "type": "Feature", "properties": { "Length": 2098.763, "id": 13 }, "geometry": { "type": "LineString", "coordinates": [ [ 559964.208351333625615, 9369823.988749623298645 ], [ 559993.93003548309207, 9369948.599983097985387 ], [ 560024.45994486194104, 9370038.910024585202336 ], [ 560075.27995169442147, 9370135.399959975853562 ], [ 560100.700002578087151, 9370167.779956474900246 ], [ 560138.18996147532016, 9370201.569987757131457 ], [ 560355.609977724030614, 9370357.219972815364599 ], [ 560409.639980466105044, 9370401.170008989050984 ], [ 560457.739998309873044, 9370449.789993532001972 ], [ 560565.390003379434347, 9370582.470039075240493 ], [ 560643.150022109039128, 9370615.329998968169093 ], [ 560757.790031655691564, 9370645.409984136000276 ], [ 560924.549954789690673, 9370717.559975691139698 ], [ 561044.0500304447487, 9370744.38003858178854 ], [ 561172.519950155168772, 9370748.350045446306467 ], [ 561304.110004225745797, 9370782.95998015627265 ], [ 561365.289962874725461, 9370784.139984445646405 ], [ 561432.550000729039311, 9370771.879966421052814 ], [ 561564.86994812823832, 9370736.329980153590441 ], [ 561623.109724191948771, 9370725.055553076788783 ] ] } },
+{ "type": "Feature", "properties": { "Length": 227.876, "id": 14 }, "geometry": { "type": "LineString", "coordinates": [ [ 560098.0373490806669, 9362989.473788045346737 ], [ 560319.598569430410862, 9363042.402333023026586 ] ] } },
+{ "type": "Feature", "properties": { "Length": 3105.917, "id": 15 }, "geometry": { "type": "LineString", "coordinates": [ [ 560319.598569430410862, 9363042.402333023026586 ], [ 560947.200462090782821, 9363192.329369526356459 ], [ 561666.868644681759179, 9363234.662870485335588 ], [ 562316.908597845584154, 9363141.799990758299828 ], [ 562329.508644707500935, 9363140.000025192275643 ], [ 562407.703429786488414, 9363128.829273901879787 ], [ 563046.928949325345457, 9363061.146588189527392 ], [ 563048.499706661328673, 9363060.980306170880795 ], [ 563307.288444920442998, 9363033.579099290072918 ], [ 563385.142031962051988, 9362997.808577870950103 ] ] } },
+{ "type": "Feature", "properties": { "Length": 3886.99, "id": 16 }, "geometry": { "type": "LineString", "coordinates": [ [ 560815.479997918009758, 9365530.689978899434209 ], [ 560902.259947555139661, 9365515.080050561577082 ], [ 561049.850032853893936, 9365511.849946537986398 ], [ 561124.029952492564917, 9365494.479996873065829 ], [ 561249.360020865686238, 9365444.579967383295298 ], [ 561353.540000218898058, 9365425.390015292912722 ], [ 561434.549947706982493, 9365368.420008925721049 ], [ 561472.269985198974609, 9365324.550047246739268 ], [ 561481.899960414506495, 9365299.940050642937422 ], [ 561494.540039928629994, 9365285.530010910704732 ], [ 561533.909994185902178, 9365167.599945735186338 ], [ 561561.699985285289586, 9365039.019990542903543 ], [ 561574.470049194991589, 9364817.399949222803116 ], [ 561624.59000070951879, 9364589.349988346919417 ], [ 561660.90998010057956, 9364508.99999831803143 ], [ 561690.690036914311349, 9364465.460024479776621 ], [ 561818.679991500452161, 9364344.429977498948574 ], [ 562040.629969758912921, 9364188.099969102069736 ], [ 562171.840027747675776, 9364083.560016987845302 ], [ 562318.199945067055523, 9363925.839996244758368 ], [ 562361.270036499947309, 9363890.489975864067674 ], [ 562408.920048193074763, 9363862.110008614137769 ], [ 562502.29994682315737, 9363827.250028057023883 ], [ 562561.040022045373917, 9363792.399958049878478 ], [ 562630.640048502013087, 9363740.510028844699264 ], [ 562737.170037001371384, 9363644.159994296729565 ], [ 562854.730042885988951, 9363567.550046514719725 ], [ 562903.770015719346702, 9363527.429986264556646 ], [ 562959.38994843326509, 9363496.420005165040493 ], [ 563032.1500472901389, 9363465.870003057643771 ], [ 563078.400049898773432, 9363435.940001895651221 ], [ 563128.439971880055964, 9363360.700036335736513 ], [ 563136.859951579943299, 9363332.6300014462322 ], [ 563385.142031962051988, 9362997.808577870950103 ] ] } },
+{ "type": "Feature", "properties": { "Length": 1235.319, "id": 17 }, "geometry": { "type": "LineString", "coordinates": [ [ 561911.180035983212292, 9371902.450048869475722 ], [ 561911.290002782829106, 9371774.560007127001882 ], [ 561916.410003134049475, 9371707.729972602799535 ], [ 561910.259977804496884, 9371553.489982048049569 ], [ 561896.39003321994096, 9371460.949989477172494 ], [ 561875.290005644783378, 9371378.690044919028878 ], [ 561838.010008008219302, 9371289.289959898218513 ], [ 561813.170048271305859, 9371259.270027354359627 ], [ 561716.240030192770064, 9371063.799999132752419 ], [ 561640.690031638368964, 9370842.729984594509006 ], [ 561626.13999830186367, 9370782.070050254464149 ], [ 561623.109724191948771, 9370725.055553076788783 ] ] } },
+{ "type": "Feature", "properties": { "Length": 1106.873, "id": 18 }, "geometry": { "type": "LineString", "coordinates": [ [ 563385.142031962051988, 9362997.808577870950103 ], [ 564090.456766493618488, 9362673.74504354223609 ], [ 564386.659932249225676, 9362527.618199057877064 ] ] } },
+{ "type": "Feature", "properties": { "Length": 1122.178, "id": 19 }, "geometry": { "type": "LineString", "coordinates": [ [ 565364.253777569159865, 9362503.811572419479489 ], [ 565383.560033028945327, 9362503.310028443112969 ], [ 565293.300813051871955, 9362573.508931530639529 ], [ 565154.570039769634604, 9362686.990004047751427 ], [ 565069.959959919564426, 9362712.129985691979527 ], [ 564881.849966394715011, 9362714.800014909356833 ], [ 564821.750010306946933, 9362704.4400226008147 ], [ 564794.950000228360295, 9362693.920012114569545 ], [ 564789.299989039078355, 9362685.28998427093029 ], [ 564386.659932249225676, 9362527.618199057877064 ] ] } },
+{ "type": "Feature", "properties": { "Length": 3264.726, "id": 20 }, "geometry": { "type": "LineString", "coordinates": [ [ 564386.659932249225676, 9362527.618199057877064 ], [ 564884.208424394950271, 9362282.160890934988856 ], [ 565656.793198664672673, 9361625.993028860539198 ], [ 566175.377591628581285, 9361117.991917047649622 ], [ 566598.711782545782626, 9360631.157560428604484 ], [ 566802.417236858978868, 9360379.115381432697177 ] ] } },
+{ "type": "Feature", "properties": { "Length": 2306.128, "id": 21 }, "geometry": { "type": "LineString", "coordinates": [ [ 558080.528334323316813, 9366376.590186208486557 ], [ 558150.80009717203211, 9366018.721947841346264 ], [ 558252.318974075606093, 9365828.925786674022675 ], [ 558459.770592095912434, 9365714.165317131206393 ], [ 558583.358790065394714, 9365599.404847588390112 ], [ 558658.394481689785607, 9365511.127563323825598 ], [ 558751.085630166926421, 9365356.642315862700343 ], [ 558830.53518600447569, 9365255.123438958078623 ], [ 558892.329284989275038, 9365188.915475759655237 ], [ 558962.951112400507554, 9365118.293648349121213 ], [ 559055.642260877648368, 9365065.327277790755033 ], [ 559174.816594633972272, 9365007.94704301841557 ], [ 559280.749335750704631, 9364968.222265100106597 ], [ 559369.026620014687069, 9364954.980672460049391 ], [ 559631.074507311917841, 9364934.686608903110027 ], [ 559631.074507311917841, 9364934.686608903110027 ] ] } }
+]
+}