test_linemerge.py 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. import unittest
  2. from shapely.geometry import LineString, MultiLineString
  3. from shapely.ops import linemerge
  4. class LineMergeTestCase(unittest.TestCase):
  5. def test_linemerge(self):
  6. lines = MultiLineString([[(0, 0), (1, 1)], [(2, 0), (2, 1), (1, 1)]])
  7. result = linemerge(lines)
  8. assert isinstance(result, LineString)
  9. assert not result.is_ring
  10. assert len(result.coords) == 4
  11. assert result.coords[0] == (0.0, 0.0)
  12. assert result.coords[3] == (2.0, 0.0)
  13. lines2 = MultiLineString([((0, 0), (1, 1)), ((0, 0), (2, 0), (2, 1), (1, 1))])
  14. result = linemerge(lines2)
  15. assert result.is_ring
  16. assert len(result.coords) == 5
  17. lines3 = [
  18. LineString([(0, 0), (1, 1)]),
  19. LineString([(0, 0), (0, 1)]),
  20. ]
  21. result = linemerge(lines3)
  22. assert not result.is_ring
  23. assert len(result.coords) == 3
  24. assert result.coords[0] == (0.0, 1.0)
  25. assert result.coords[2] == (1.0, 1.0)
  26. lines4 = [
  27. [(0, 0), (1, 1)],
  28. [(0, 0), (0, 1)],
  29. ]
  30. assert result.equals(linemerge(lines4))
  31. lines5 = [
  32. ((0, 0), (1, 1)),
  33. ((1, 0), (0, 1)),
  34. ]
  35. result = linemerge(lines5)
  36. assert result.geom_type == "MultiLineString"