/usr/share/pyshared/shapely/examples/dissolve.py is in python-shapely 1.2.14-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | # dissolve.py
#
# Demonstrate how Shapely can be used to build up a collection of patches by
# dissolving circular regions and how Shapely supports plotting of the results.
from functools import partial
import random
import pylab
from shapely.geometry import Point
from shapely.ops import cascaded_union
# Use a partial function to make 100 points uniformly distributed in a 40x40
# box centered on 0,0.
r = partial(random.uniform, -20.0, 20.0)
points = [Point(r(), r()) for i in range(100)]
# Buffer the points, producing 100 polygon spots
spots = [p.buffer(2.5) for p in points]
# Perform a cascaded union of the polygon spots, dissolving them into a
# collection of polygon patches
patches = cascaded_union(spots)
if __name__ == "__main__":
# Illustrate the results using matplotlib's pylab interface
pylab.figure(num=None, figsize=(4, 4), dpi=180)
for patch in patches.geoms:
assert patch.geom_type in ['Polygon']
assert patch.is_valid
# Fill and outline each patch
x, y = patch.exterior.xy
pylab.fill(x, y, color='#cccccc', aa=True)
pylab.plot(x, y, color='#666666', aa=True, lw=1.0)
# Do the same for the holes of the patch
for hole in patch.interiors:
x, y = hole.xy
pylab.fill(x, y, color='#ffffff', aa=True)
pylab.plot(x, y, color='#999999', aa=True, lw=1.0)
# Plot the original points
pylab.plot([p.x for p in points], [p.y for p in points], 'b,', alpha=0.75)
# Write the number of patches and the total patch area to the figure
pylab.text(-25, 25,
"Patches: %d, total area: %.2f" % (len(patches.geoms), patches.area))
pylab.savefig('dissolve.png')
|