QGIS के साथ चयनित बहुभुज के बाउंडिंग बॉक्स निर्देशांक की गणना करें


17

मैं सिर्फ मैन्युअल रूप से (और कुछ हद तक मुझे यकीन है कि) एक काउंटी बहुभुज के लिए बाउंडिंग बॉक्स निर्देशांक को पुनः प्राप्त किया गया है, जो काउंटी आकार की एक बड़ी परत से चयन है। मैं इसे शीघ्रता से और हाथ से गणना करने के लिए QGIS प्लगइन या अन्य फ़ंक्शन का उपयोग करने में सक्षम होना चाहता हूं। यह लगभग निश्चित रूप से संभव है, लेकिन मुझे Google खोज के साथ कुछ भी नहीं मिला

जवाबों:


26

निम्नलिखित छोटा अजगर फ़ंक्शन वर्तमान में सक्रिय सुविधा के बाउंडिंग बॉक्स निर्देशांक को आउटपुट करेगा:

def printBB():
    feature = iface.activeLayer().selectedFeatures()[0]
    print feature.geometry().boundingBox().toString()

फ़ंक्शन को परिभाषित करने के लिए, प्लगइन्स मेनू से पायथन कंसोल खोलें, कंसोल में तीन पंक्तियों को कॉपी और पेस्ट करें, और एंटर दबाएं। तब आप फ़ंक्शन को टाइप करके printBB()और एंटर दबाकर कॉल कर सकते हैं जबकि वांछित सुविधा का चयन किया जाता है।


1
जब मुझे इस स्क्रिप्ट को चलाने की कोशिश की जाती है तो मुझे यह त्रुटि मिलती है: File "<input>", line 4 printBB() ^ SyntaxError: invalid syntax
cbunn

@cbunn सुनिश्चित करें कि आपके पास परतों / सामग्री की तालिका में चयनित परत है - यह इसके लिए बहुत संवेदनशील है!
18

सहायता के लिए धन्यवाद। मैं कॉल करने से पहले फ़ंक्शन प्रिंटबीबी () को पूरी तरह से परिभाषित करने के लिए एंटर प्रेस करना भी भूल रहा था।
cbunn

2
मुझे लाइन 3 के लिए प्रिंट (फ़ीचर.गेमेट्री ()। बाउंडिंगबॉक्स ()। स्ट्रींग ()) का उपयोग करना था
सेमी 1

17

QGIS लेयर एक्स्टेंट से बहुभुज के माध्यम से कर सकता है

वेक्टर - अनुसंधान उपकरण - बहुउद्देशीय परत से बहुभुज

XMIN XMAX YMIN YMAX AREA WIDTH HEIGHT जैसी विशेषताओं के साथ एक नई आकृति तैयार करेंगे


1
आप जांच करने के लिए है Use only selected obectsऔर calculate for every objectवांछित परिणाम प्राप्त करने के लिए।
आंद्रे जे

हम्म जो मेरे लिए काम नहीं करता था,
आउटपुट शेपफाइल

1
आप केवल चयनित वस्तुओं का उपयोग करना चाहते हैं, यदि आपके पास चयनित वस्तुएं हैं। मैंने उन दोनों क्षेत्रों को अनियंत्रित छोड़ दिया और एक अच्छा परिणाम हासिल किया।
जोहाना

4

आप पायथन में PyShp प्लगइन का उपयोग करके भी ऐसा कर सकते हैं .. यह बहुत सरल है ...

import shapefile

sf = shapefile.Reader("Path to shapefile...") 
shapes = sf.shapes() 
bbox = shapes[0].bbox # Retrieves the bounding box of the first shape

print bbox # Will print the bounding box coordinates

PyShp और अन्य कार्यात्मकताओं के बारे में अधिक जानकारी यहां पाई जा सकती है


3

यदि आपको कई बहुभुज के बाउंडिंग बॉक्स की आवश्यकता है, तो आप WRITE_BBOX = YES विकल्प के साथ जियोसन पर अपनी परत को "Save As ..." कर सकते हैं और मल्टीप्लेगॉन के लिए भी "ज्यामिति" विशेषता से पहले एक एकल "bbox" विशेषता होगी।

..., "bbox": [ -70.062408006999874, 12.417669989000046, -69.876820441999939, 12.632147528000104 ], "geometry": ...

1

मुझे ऐसा करने के लिए एक क्षेत्र उत्पन्न करना था जिसे मैं एक सूची के रूप में कहीं और आयात कर सकता था।

  1. QGIS प्लगइन FieldPyculator स्थापित करें
  2. परत का संपादन टॉगल करें
  3. विशेषता तालिका में स्ट्रिंग के रूप में नया कॉलम बनाएं जैसे bbox (संपादन संपादित करें)
  4. FieldPyculator खोलें
  5. अद्यतन फ़ील्ड को bbox में सेट करें
  6. फ़ील्ड अभिव्यक्ति में कुछ इस तरह लिखें:

    bb = $geom.boundingBox().toString()

    bb = bb.replace(' ','')

    bb = bb.replace(':',',')

    value = bb

  7. Daud

  8. संपादन बंद करें और परत सहेजें

1

त्वरित लहजे के लिए, एक विकल्प विशेषता तालिका में bbox निर्देशांक रखने के लिए है।

  • टॉगल एडिट मोड
  • फ़ील्ड कैलकुलेटर लॉन्च करें
  • नया फ़ील्ड सेट करें , सेट नाम (जैसे xmin), प्रकार (दशमलव), लंबाई, (परिशुद्धता) सेट करें
  • अभिव्यक्ति: x_min ($ ज्यामिति)
  • आपको LEFT समन्वय के साथ विशेषता तालिका में एक नया फ़ील्ड मिलेगा।

    अभिव्यक्ति के लिए सही, बॉटम, टॉप के लिए इसे दोहराएं:

  • x_max ($ ज्यामिति)
  • y_min ($ ज्यामिति)
  • y_max ($ ज्यामिति)
  • परिणाम का उदाहरण यहाँ छवि विवरण दर्ज करें

    आप तब इन फ़ील्ड्स को स्वचालित रूप से अपडेट करने के लिए AutoFields प्लगइन सेट कर सकते हैं जब सुविधा बदली जाती है।

    हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
    Licensed under cc by-sa 3.0 with attribution required.