| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- from shapely.geometry import LineString, Polygon
- from shapely.ops import unary_union
- from matplotlib.pyplot import plot, subplot, show, axes
- from matplotlib.axes import *
- from camlib import *
- def plotg2(geo, solid_poly=False, color="black", linestyle='solid'):
- try:
- for sub_geo in geo:
- plotg2(sub_geo, solid_poly=solid_poly, color=color, linestyle=linestyle)
- except TypeError:
- if type(geo) == Polygon:
- if solid_poly:
- patch = PolygonPatch(geo,
- #facecolor="#BBF268",
- facecolor=color,
- edgecolor="#006E20",
- alpha=0.5,
- zorder=2)
- ax = subplot(111)
- ax.add_patch(patch)
- else:
- x, y = geo.exterior.coords.xy
- plot(x, y, color=color, linestyle=linestyle)
- for ints in geo.interiors:
- x, y = ints.coords.xy
- plot(x, y, color=color, linestyle=linestyle)
- if type(geo) == LineString or type(geo) == LinearRing:
- x, y = geo.coords.xy
- plot(x, y, color=color, linestyle=linestyle)
- if type(geo) == Point:
- x, y = geo.coords.xy
- plot(x, y, 'o')
- if __name__ == "__main__":
- p = Polygon([[0, 0], [0, 5], [5, 5], [5, 0]])
- paths = [
- LineString([[0.5, 2], [2, 4.5]]),
- LineString([[2, 0.5], [4.5, 2]])
- ]
- plotg2(p, solid_poly=True)
- plotg2(paths, linestyle="dashed")
- show()
|