2016-04-07 24 views
3

Polygon nesnelerinden oluşan bir grubum var ve kenarlarından her birini yinelenebilir bir şekilde yinelemeye ihtiyaçları var. Tercih ettiğim yöntem, sınırlama kutusunun en sol noktasından sol alt köşesine doğru saatin tersi yönünde.Noktaların sırasını düzgün bir Poligonda ayarlayabilir miyim?

Ben poligon noktaları ile saat yönünün tersine güvence verebilecek:

polygon = shapely.geometry.Polygon(...) 
lower_left = shapely.geometry.Point(bbox[:2]) 
nearest_pt = min(self.polygon.exterior.coords, 
        key=lambda x: shapely.geometry.Point(x).distance(lower_left)) 

Sorum ben LinearRing hale nasıl: Ben kullanarak istenilen başlangıç ​​noktası bulabilirsiniz

polygon = shapely.geometry.polygon.orient(polygon) 

Polygon nesnesi bu köşeden başlıyor?

cevap

2

Bu işler, ancak muhtemelen çok verimli değil.

perimeter = polygon.exterior.coords 
new_coords = [] 
first_vertex = nearest_pt # as found in the question above 
two_tours = itertools.chain(perimeter, perimeter) 
for v in two_tours: 
    if shapely.geometry.Point(v) == first_vertex: 
     new_coords.append(v) 
     while len(new_coords) < len(perimeter): 
      new_coords.append(two_tours.next()) 
     break 
polygon = shapely.geometry.Polygon(new_coords) 
İlgili konular