मैं एक लाइन और बहुभुज के चौराहे को खोजने के लिए आकार का उपयोग करने की कोशिश कर रहा हूं, लेकिन मुझे कुछ फ़्लोटिंग पॉइंट नंबरों के साथ समस्याएं आ रही हैं।लाइन के साथ बहुभुज छेड़छाड़ | पायथन Shapely
उदाहरण कोड:
polygon = [(4.0, -2.0), (5.0, -2.0), (4.0, -3.0), (3.0, -3.0), (4.0, -2.0)]
shapely_poly = shapely.geometry.Polygon(polygon)
line = [(4.0, -2.0000000000000004), (2.0, -1.1102230246251565e-15)]
shapely_line = shapely.geometry.LineString(line)
intersection_line = list(shapely_poly.intersection(shapely_line).coords)
print intersection_line
क्या मैं उम्मीद करेंगे दो कोने की एक सूची है।
प्वाइंट 1: पॉइंट जो पॉलीगॉन के अंदर होगा, या (4.0, -2.0000000000000004) इस मामले में होगा।
प्वाइंट 2: बिंदु [[4.0, -2.0000000000000004), (2.0, -1.1102230246251565e-15)] और [(3.0, -3.0), (4.0, -2.0)] का अंतर है।
हालांकि, परिणाम मैं प्राप्त है:
[(4.0, -2.0000000000000004)]
मैं भी जांच लिया है कि मैं कम से देख रहा हूँ बढ़त के साथ एक चौराहे पर सब है या नहीं:
>>> edge = shapely.geometry.LineString([(3.0, -3.0), (4.0, -2.0)])
>>> edge.intersects(shapely_line)
False
अगर मैं की जगह (4.0, -2.0000000000000004) के साथ (4.0, -2.000000000000000) तो किनारे का चौराहे सही पर मूल्यांकन करेगा।
क्या किसी के पास क्या चल रहा है या मैं क्या खो रहा हूं इसके बारे में कोई विचार है? धन्यवाद!
संपादित करें:
मैं सुडौल संस्करण 1.12 और 3.3.1, 3.3.5, 3.3.6, 3.3.7 के GEOS का उपयोग कर परीक्षण किया है।
GEOS वेबसाइट से डाउनलोड किया geos- [संस्करण] .tar.bz2:
मामले में किसी को भी कैसे मैं विंडोज पर GEOS संस्करण अद्यतन जानने के लिए उत्सुक है। विजुअल स्टूडियो 10 विन 64 जनरेटर का उपयोग करके फ़ाइलों को निकाला और उस पर सीएमके चलाया। .sln फ़ाइल को खोल दिया और इसे बनाया तो जेनरेट geos_c.dll को स्थानांतरित कर दिया और इसे चिपकाया जहां geos_c.dll को Python निर्देशिका में आकार में स्थापित किया गया था।
एक तस्वीर इस प्रश्न को अच्छी तरह से – flup
की एक तस्वीर करेगी, तस्वीर के लिए धन्यवाद unutbu, यह एक ड्रॉ करने के बारे में बेहतर दिखता है! – Lisa
जब मैं 'चौराहे = shapely_poly.intersection (shapely_line)' और उसके बाद 'प्रिंट intersection' मैं' LINESTRING (4.0000000000000000 -2.0000000000000004, 4.0000000000000000 -2.0000000000000000) ' – flup