Yuxiang Wang
2016-01-31 05:28:06 UTC
Dear all,
I am using Python 3.5 64 bit in Windows 7 64 bit, shapely version 1.5.13.
I have the following code that returned me a self-intersecting polygon:
import numpy as npfrom shapely.geometry import Polygon,
MultiPolygonimport matplotlib.pyplot as plt
x = np.array([ 0.38517325, 0.40859912, 0.43296919, 0.4583215 , 0.4583215 ,
0.43296919, 0.40859912, 0.38517325, 0.36265506, 0.34100929])
y = np.array([ 62.5 , 56.17977528, 39.39698492, 0. ,
0. , 17.34605377, 39.13341671, 60.4180932 ,
76.02574417, 85.47008547])
polygon = Polygon(np.c_[x, y])
plt.plot(*polygon.exterior.xy)
[image: Self-intersecting polygon] <Loading Image...>
This is correct. Then I tried to obtain the two individual polygons by
using buffer(0):
split_polygon = polygon.buffer(0)
plt.plot(*polygon.exterior.xy)print(type(split_polygon))
plt.fill(*split_polygon.exterior.xy)
Unfortunately, it only returned of the the two polygons:
[image: Only returned one polygon] <Loading Image...>
Could anyone please help? Thanks!
Shawn
I am using Python 3.5 64 bit in Windows 7 64 bit, shapely version 1.5.13.
I have the following code that returned me a self-intersecting polygon:
import numpy as npfrom shapely.geometry import Polygon,
MultiPolygonimport matplotlib.pyplot as plt
x = np.array([ 0.38517325, 0.40859912, 0.43296919, 0.4583215 , 0.4583215 ,
0.43296919, 0.40859912, 0.38517325, 0.36265506, 0.34100929])
y = np.array([ 62.5 , 56.17977528, 39.39698492, 0. ,
0. , 17.34605377, 39.13341671, 60.4180932 ,
76.02574417, 85.47008547])
polygon = Polygon(np.c_[x, y])
plt.plot(*polygon.exterior.xy)
[image: Self-intersecting polygon] <Loading Image...>
This is correct. Then I tried to obtain the two individual polygons by
using buffer(0):
split_polygon = polygon.buffer(0)
plt.plot(*polygon.exterior.xy)print(type(split_polygon))
plt.fill(*split_polygon.exterior.xy)
Unfortunately, it only returned of the the two polygons:
[image: Only returned one polygon] <Loading Image...>
Could anyone please help? Thanks!
Shawn