Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Error when generating components #5

Open
lobisquit opened this issue Nov 6, 2018 · 0 comments
Open

Error when generating components #5

lobisquit opened this issue Nov 6, 2018 · 0 comments
Assignees

Comments

@lobisquit
Copy link
Contributor

Hello, I have a problem during conversion, specifically running the following code on this dataset.

import fiona
from s2g import ShapeGraph
from shapely.geometry import LineString, shape

path = 'extracted_roads.shp'

with fiona.open(path) as source:
    geoms = []
    for r in source:
        s = shape(r['geometry'])
        if isinstance(s, LineString):
            geoms.append(s)

# create ShapeGraph object from a list of lines
sg = ShapeGraph(geoms, to_graph=False)

# detect major components
mc = sg.gen_major_components()

# convert graph to json
G = json_graph.node_link_data(sg.to_networkx())

for node in G['nodes']:
    node['lat'], node['long'] = sg.node_xy[node['id']]

with open('connected_roads.json', 'w') as output:
    output.write(json.dumps(G))

More or less after 400000 entries are processed the conversion stops with this error.

INFO:root:Validating pair-wise line connections of raw shapefiles (total 9756 lines)
100% (47584890 of 47584890) |#################################################################################| Elapsed Time: 0:03:57 Time:  0:03:57
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-6-0290bc8fe669> in <module>()
----> 1 mc = sg.gen_major_components()

/home/ubuntu/.local/lib/python3.6/site-packages/s2g/shapegraph.py in gen_major_components(self)
    264                 bar.update(k + 1)
    265                 i, j = neighbors[k]
--> 266                 if self.validate_pairwise_connectivity(i, j):
    267                     graph.add_edge(i, j)
    268

/home/ubuntu/.local/lib/python3.6/site-packages/s2g/shapegraph.py in validate_pairwise_connectivity(self, ainx, binx)
    223             valid = True
    224
--> 225         touched = self.validate_intersection(binx, a1)
    226         if touched is not None:
    227             self._pseudo_edges.append([(binx, touched), (ainx, a1)])

/home/ubuntu/.local/lib/python3.6/site-packages/s2g/shapegraph.py in validate_intersection(self, line_index, point)
    195         if line.intersects(buffered_point):
    196             cut = point_projects_to_line(point, line)
--> 197             touched = coords[cut]
    198             self._update_cut(line_index, cut)
    199         return touched

TypeError: list indices must be integers or slices, not NoneType

How can I debug this issue?
Thank you very much.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants