के साथ बहुभुज चौराहे का तेज़ तरीका मेरे पास बड़ी संख्या में बहुभुज (~ 100000) हैं और नियमित ग्रिड कोशिकाओं के साथ अपने अंतरंग क्षेत्र की गणना करने का एक स्मार्ट तरीका खोजने का प्रयास करें।आकार
वर्तमान में, मैं बहुभुज और ग्रिड कोशिकाओं को आकार (उनके कोने निर्देशांक के आधार पर) का उपयोग कर बना रहा हूं। फिर, एक साधारण फॉर-लूप का उपयोग करके मैं प्रत्येक बहुभुज के माध्यम से जाता हूं और इसकी तुलना पास के ग्रिड कोशिकाओं से करता हूं।
बहुभुज/ग्रिड कोशिकाओं को चित्रित करने के लिए बस एक छोटा सा उदाहरण।
from shapely.geometry import box, Polygon
# Example polygon
xy = [[130.21001, 27.200001], [129.52, 27.34], [129.45, 27.1], [130.13, 26.950001]]
polygon_shape = Polygon(xy)
# Example grid cell
gridcell_shape = box(129.5, -27.0, 129.75, 27.25)
# The intersection
polygon_shape.intersection(gridcell_shape).area
:
वास्तव में इस के आसपास 0.003 सेकंड के साथ एक व्यक्ति बहुभुज/ग्रिड सेल कॉम्बो के लिए काफी तेजी से होता है (btw ग्रिड कोशिकाएं आयाम 0.25x0.25 और अधिकतम पर बहुभुज 1x1 है)। हालांकि, इस कोड को बड़ी मात्रा में बहुभुजों पर चलाया जा रहा है (प्रत्येक व्यक्ति दर्जनों ग्रिड कोशिकाओं को छेड़छाड़ कर सकता है) मेरी मशीन पर लगभग 15+ मिनट (ग्रिड कोशिकाओं को छेड़छाड़ करने की संख्या के आधार पर 30+ मिनट तक) लेता है जो स्वीकार्य नहीं है। दुर्भाग्य से, मुझे नहीं पता कि ओवरलैप के क्षेत्र को पाने के लिए पॉलीगॉन चौराहे के लिए कोड लिखना संभव है। क्या आपके पास कोई टिप हैं? क्या आकार देने का कोई विकल्प है?
मुझे उत्सुकता है कि आप अपने बहुभुजों को कैसे लूपिंग और छेड़छाड़ कर रहे हैं। क्या आप प्रक्रिया पर अधिक कोड दिखा सकते हैं? यह पता लगाना आसान होगा कि इसे कैसे अनुकूलित किया जा सकता है। – tdedecko
मैं मूल रूप से अक्षांश/लोन कोने मानों की एक सरणी लेता हूं और उन्हें बहुभुज के लिए लूप में परिवर्तित करता हूं। फिर, मैं प्रत्येक बहुभुज की तुलना कुछ ग्रिड सेल से करता हूं, जो फिर से लूप में किया जाता है। इसे देखें: http://stackoverflow.com/a/13956110/1740928 – HyperCube