test_plotg.py 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. from shapely.geometry import LineString, Polygon
  2. from shapely.ops import cascaded_union, unary_union
  3. from matplotlib.pyplot import plot, subplot, show
  4. from camlib import *
  5. def plotg2(geo, solid_poly=False, color="black", linestyle='solid'):
  6. try:
  7. for sub_geo in geo:
  8. plotg2(sub_geo, solid_poly=solid_poly, color=color, linestyle=linestyle)
  9. except TypeError:
  10. if type(geo) == Polygon:
  11. if solid_poly:
  12. patch = PolygonPatch(geo,
  13. #facecolor="#BBF268",
  14. facecolor=color,
  15. edgecolor="#006E20",
  16. alpha=0.5,
  17. zorder=2)
  18. ax = subplot(111)
  19. ax.add_patch(patch)
  20. else:
  21. x, y = geo.exterior.coords.xy
  22. plot(x, y, color=color, linestyle=linestyle)
  23. for ints in geo.interiors:
  24. x, y = ints.coords.xy
  25. plot(x, y, color=color, linestyle=linestyle)
  26. if type(geo) == LineString or type(geo) == LinearRing:
  27. x, y = geo.coords.xy
  28. plot(x, y, color=color, linestyle=linestyle)
  29. if type(geo) == Point:
  30. x, y = geo.coords.xy
  31. plot(x, y, 'o')
  32. if __name__ == "__main__":
  33. p = Polygon([[0, 0], [0, 5], [5, 5], [5, 0]])
  34. paths = [
  35. LineString([[0.5, 2], [2, 4.5]]),
  36. LineString([[2, 0.5], [4.5, 2]])
  37. ]
  38. plotg2(p, solid_poly=True)
  39. plotg2(paths, linestyle="dashed")
  40. show()