Fixes to path_connect() related to LinearRings. Added test cases.
This commit is contained in:
parent
573581ca80
commit
a1345f0a58
15
camlib.py
15
camlib.py
|
@ -583,21 +583,24 @@ class Geometry(object):
|
||||||
|
|
||||||
# No matches on either end
|
# No matches on either end
|
||||||
#optimized_geometry.append(geo)
|
#optimized_geometry.append(geo)
|
||||||
optimized_geometry.append(right)
|
|
||||||
storage.remove(right)
|
storage.remove(right)
|
||||||
|
if type(right) == LinearRing:
|
||||||
|
# Put the linearring at the beginning so it does
|
||||||
|
# not iterfere.
|
||||||
|
optimized_geometry = [right] + optimized_geometry
|
||||||
|
geo = optimized_geometry[-1]
|
||||||
|
print "right was LinearRing, getting previous"
|
||||||
|
else:
|
||||||
|
optimized_geometry.append(right)
|
||||||
geo = right
|
geo = right
|
||||||
print "stored right, now geo<-right"
|
print "stored right, now geo<-right"
|
||||||
|
|
||||||
# Next
|
|
||||||
#_, geo = storage.nearest(geo.coords[0])
|
|
||||||
#optimized_geometry.append(geo)
|
|
||||||
|
|
||||||
except StopIteration: # Nothing found in storage.
|
except StopIteration: # Nothing found in storage.
|
||||||
pass
|
pass
|
||||||
|
|
||||||
print path_count
|
print path_count
|
||||||
|
|
||||||
#self.flat_geometry = optimized_geometry
|
|
||||||
return optimized_geometry
|
return optimized_geometry
|
||||||
|
|
||||||
def convert_units(self, units):
|
def convert_units(self, units):
|
||||||
|
|
|
@ -53,5 +53,21 @@ class PathConnectTest1(unittest.TestCase):
|
||||||
[1 + offset_x, 1 + offset_y],
|
[1 + offset_x, 1 + offset_y],
|
||||||
[2 + offset_x, 1 + offset_y]])))
|
[2 + offset_x, 1 + offset_y]])))
|
||||||
|
|
||||||
|
def test_ring_interfere_connect(self):
|
||||||
|
print
|
||||||
|
print "TEST STARTING ..."
|
||||||
|
|
||||||
|
paths = [
|
||||||
|
LineString([[0, 0], [1, 1]]),
|
||||||
|
LineString([[1, 1], [2, 1]]),
|
||||||
|
LinearRing([[1, 1], [2, 2], [1, 3], [0, 2]])
|
||||||
|
]
|
||||||
|
|
||||||
|
result = Geometry.path_connect(paths)
|
||||||
|
|
||||||
|
self.assertEqual(len(result), 2)
|
||||||
|
matches = [p for p in result if p.equals(LineString([[0, 0], [1, 1], [2, 1]]))]
|
||||||
|
self.assertEqual(len(matches), 1)
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
unittest.main()
|
unittest.main()
|
Loading…
Reference in New Issue