2012-11-29 26 views
8

Cerco di unire due oggetti nel mio progetto Python. Esiste un tipo di manuale che descrive alcune caratteristiche di Shapey come cascaded_union(), ma io che funziona solo per i poligoni. Il metodo shapely.ops.unary_union() dovrebbe funzionare anche per altre geometrie ma non riesco a farlo funzionare.Come unire 2 oggetti shapely?

In poche parole: come faccio a fondere 2 LinearRing oggetti?

Grazie in anticipo!

Shapely Manual

risposta

6

realtà ho risolto il problema io stesso.

p1 = Polygon(ring.coords) 
p2 = Polygon(ring2.coords) 

per rendere poligoni dai miei anelli. quindi creo un array con quei poligoni. unirli con cascaded_union e creare un LinearRing dal nuovo poligono.

pols = [p1, p2] 
new_pol = ops.cascaded_union(pols) 
new_ring = LinearRing(new_pol.exterior.coords) 
+0

Quando si crea poligoni da anelli lineari, operare su di essi e poi mettere il risultato di nuovo in un poligono si più o meno sai che fare un cattivo lavoro di programmazione e non hanno più il codice leggibile. In realtà ho cambiato tutto il mio progetto per avere poligoni invece di anelli lineari. Questo perché mi sono reso conto che non è possibile utilizzare la maggior parte delle "incroci" "interseca" i metodi etc su LinearRings. Ma su Poligoni puoi. Quindi scegli saggiamente! Se usi Shapely e vuoi controllare gli oggetti per "dentro" "all'esterno" hai praticamente bisogno di poligoni. –

+1

Ero alla ricerca di modi per estrarre punti da un poligono e la tua risposta mi ha aiutato. Per l'esempio dato puoi farlo con 'poly_x, poly_y = new_pol.exterior.coords.xy'. Grazie. – ryanjdillon