2015-05-26 7 views
7

मैं आकार के बिंदुओं से बहुभुज बनाना चाहता हूं।पॉलीगोन को अपने प्वाइंट कोने के लिए कैसे बनाया जाए?

from shapely import geometry 
p1 = geometry.Point(0,0) 
p2 = geometry.Point(1,0) 
p3 = geometry.Point(1,1) 
p4 = geometry.Point(0,1) 

pointList = [p1, p2, p3, p4, p1] 

poly = geometry.Polygon(pointList) 

मुझे एक प्रकार की त्रुटि TypeError: object of type 'Point' has no len()

कैसे सुडौल Point वस्तुओं से एक Polygon बनाने के लिए देता है?

+0

इस से पिगबैकिंग - क्या एक आकार के ऑब्जेक्ट पर 'सीमा' को कॉल करने के परिणाम से बहुभुज उत्पन्न करने के लिए कोई अच्छा एक-लाइनर है? – kuanb

उत्तर

13

आप विशेष रूप से सुडौल ज्यामिति अंक से अपने बहुभुज के निर्माण के लिए है, तो एक सूची समझ में अपने एक्स, वाई गुण फोन चाहते हैं। दूसरे शब्दों में:

from shapely import geometry 

poly = geometry.Polygon([[p.x, p.y] for p in pointList]) 

print(poly.wkt) # prints: 'POLYGON ((0 0, 1 0, 1 1, 0 1, 0 0))' 

ध्यान दें कि सुडौल पर्याप्त चतुर आपकी ओर से बहुभुज बंद करने के लिए है, यानी आप जरूरी पारित-इन करने के पहले बिंदु अंत में फिर से नहीं है।

+0

मेरे लिए यह पॉली = पॉलीगॉन ([[पी [0] .x, पी [0] .y] पॉइंटलिस्ट में पी के लिए काम करता है]) – Piyush

+0

लगता है जैसे आपके पास नेस्टेड पॉइंट (मल्टीपॉइंट?) या लाइन है? – shongololo

+1

इसके अलावा, लाइब्रेरी को हिस्सेदारी पर आयात करना न भूलें: आकार से .geometry आयात पॉलीगॉन से – inigo333

2

Polygon कन्स्ट्रक्टर Point ऑब्जेक्ट्स की सूची की अपेक्षा नहीं करता है लेकिन बिंदु निर्देशांक की एक सूची की अपेक्षा नहीं करता है।

देखें http://toblerity.org/shapely/manual.html#polygons

3

एक Polygon वस्तु नंबर की एक नेस्टेड सूची, Point वस्तुओं की नहीं एक सूची की आवश्यकता है।

polygon = Polygon([[0, 0], [1, 0], [1, 1], [0, 1]]) 
+0

यह दिखाए गए अनुसार काम नहीं करेगा। यह बिंदु निर्देशांक की एक सूची होनी चाहिए, यानी: बहुभुज = बहुभुज ([[0,0], [1,0], [1,1], [0,1]]) – shongololo

+0

@shongololo सिर के लिए धन्यवाद, मैं दस्तावेज़ों को गलत तरीके से पढ़ता हूं। –

संबंधित मुद्दे