2012-11-29 14 views
8

मैं अपने पायथन परियोजना में दो Shapely ऑब्जेक्ट्स को मर्ज करने का प्रयास करता हूं। एक प्रकार का मैनुअल है जो शैपे की कुछ विशेषताओं जैसे कैस्केड_यूऑनियन() का वर्णन करता है लेकिन मैं केवल पॉलीगन्स के लिए काम करता हूं। Shapely.ops.unary_union() विधि को अन्य ज्यामिति के लिए भी काम करना चाहिए, लेकिन मैं इसे काम नहीं कर सकता।2 आकार के ऑब्जेक्ट्स को मर्ज कैसे करें?

संक्षेप में: मैं 2 लीनियरिंग ऑब्जेक्ट्स को कैसे विलय कर सकता हूं?

अग्रिम धन्यवाद!

Shapely Manual

उत्तर

6

मैं वास्तव में समस्या अपने आप हल किया।

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

मेरे छल्ले से बहुभुज बनाने के लिए। तो मैं उन बहुभुज के साथ एक सरणी बनाते हैं। उन्हें cascaded_union के साथ विलय करें और नए बहुभुज से एक रैखिकरण बनाएं।

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

जब आप रैखिक के छल्ले से बहुभुज बनाते हैं, तो उन पर काम करते हैं और उसके बाद एक बहुभुज आप काफी आप progamming के किसी गलत काम करते हैं और अब और पठनीय कोड नहीं है पता है में वापस परिणाम डाल दिया। मैंने वास्तव में रैखिक छल्ले के बजाय बहुभुज रखने के लिए अपनी पूरी परियोजना को बदल दिया। ऐसा इसलिए है क्योंकि मुझे एहसास हुआ कि आप लाइनररिंग्स पर अधिकांश "क्रॉस" "छेड़छाड़" आदि विधियों का उपयोग नहीं कर सकते हैं। लेकिन बहुभुज पर आप कर सकते हैं। तो बुद्धिमानी से चुनें! यदि आप आकार का उपयोग करते हैं और आप "अंदर" "के लिए ऑब्जेक्ट्स को चेक करना चाहते हैं तो आपको बहुभुज की बहुत आवश्यकता है। –

+1

मैं बहुभुज से अंक निकालने के तरीकों की खोज कर रहा था, और आपके उत्तर में मदद मिली। दिए गए उदाहरण के लिए आप इसे 'poly_x, poly_y = new_pol.exterior.coords.xy' द्वारा कर सकते हैं। धन्यवाद। – ryanjdillon

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