QGIS में एक ही समय में कई क्षेत्रों द्वारा छंटनी?


17

क्या QGIS में एक ही समय में कई फ़ील्ड्स को सॉर्ट करना संभव है?

उदाहरण के लिए, मैं राज्य के नाम से एक तालिका सॉर्ट करना चाहता हूं, और फिर प्रत्येक राज्य के भीतर, काउंटी नाम के आधार पर छांटना चाहता हूं।

यह ArcMap में उपलब्ध उन्नत सॉर्ट विकल्प के समान होगा।

जवाबों:


4

वास्तव में एक बहुत ही सरल चाल है। मान लीजिए कि आप पहले "ए" फ़ील्ड के आधार पर छाँटना चाहते हैं, और फिर "ए" के भीतर फ़ील्ड "बी" द्वारा। पहले बाईं ओर "बी" फ़ील्ड के हेडर पर क्लिक करें (एक बार आरोही क्रम के लिए क्लिक करें, दूसरी बार अवरोही के लिए) विशेषता तालिका में। फिर फ़ील्ड "ए" के हेडर पर क्लिक करें (एएससी के लिए एक बार, डीईएससी के लिए 2 बार)। इस अंतिम क्रिया में "A" के समान मूल्यों के भीतर फ़ील्ड "B" की छंटाई करते हुए फ़ील्ड "A" को सॉर्ट किया जाएगा। इसे 3 क्षेत्रों के साथ आज़माया और यह भी काम करता है (तब ऊब गया)। मैं क्यूजीआईएस 3.6.3-नूसा का उपयोग कर रहा हूं।


अति उत्कृष्ट! मैंने 3 क्षेत्रों (राज्य, काउंटी, शहर) के साथ भी इसका परीक्षण किया और इसने पूरी तरह से काम किया - आरोही या अवरोही। 3.8.3।
स्टु स्मिथ

8

आप सॉर्ट और नंबर प्लगइन का उपयोग कर सकते हैं । यह आपको एक विशेषता तालिका को 3 फ़ील्ड तक सॉर्ट करने की अनुमति देता है, फिर यह एक अतिरिक्त फ़ील्ड बनाता है जिसमें सॉर्ट की गई सुविधाओं का क्रम होता है।

अस्वीकरण: मैं प्लगइन का लेखक हूँ।


उम्मीद है कि यह काम करेगा। मैंने इसे अपने 150k रिकॉर्ड डेटासेट पर सेट किया है और यह अभी भी 10mins के बाद चल रहा है। यह नए कॉलम में सॉर्ट करता है ताकि आप फिर उस तरह से छांट सकें कि कोई ऐसा तरीका है जो एक्सेल या आर्कपैप में काम करता है जो कॉलम नहीं जोड़ता है? देख desktop.arcgis.com/en/arcmap/10.3/manage-data/tables/...
GeorgeC

1
मुझे यह भी उम्मीद है कि यह काम करेगा, मैंने कभी भी इतने बड़े डेटासेट पर इसका परीक्षण नहीं किया। मुझे नहीं लगता कि आर्कपेज़ की तरह, बस डिस्प्ले ऑर्डर बदलना संभव है; QGIS API ऐसा करने के लिए कोई विधि प्रदान नहीं करता है। इसलिए मैंने वर्किंग के रूप में नंबरिंग फील्ड को जोड़ना चुना।
अरोमाएर

यह अभी भी चल रहा है-आर्केप ने इसे लगभग 30 के दशक में किया था। ओह अच्छा। हालांकि इस समाधान के लिए धन्यवाद-मैं 24 घंटों के लिए इसे खुला रखूंगा ताकि कोई अन्य सुझाव दे सके।
जॉर्ज

ठीक है, प्रतिक्रिया के लिए धन्यवाद। प्लगइन सीधे पायथन के sort()कार्य पर निर्भर करता है , मुझे आश्चर्य है कि यह इतना धीमा क्यों है। मैं भविष्य के संस्करण में प्रक्रिया को तेज करने के लिए कुछ चाल खोजने की कोशिश करूंगा।
अरमोहर

नाइस टूल ... ने मुझे बहुत काम बचाया ... बहुत सराहना की
K_Man

7

यदि परिणाम को स्थायी रूप से सहेजने के लिए ठीक है, तो आप GDAL के साथ आकृति को सॉर्ट कर सकते हैं

ogr2ogr -f "ESRI Shapefile" -dialect sqlite -sql "SELECT *
FROM my_shapefile ORDER BY attr_1, attr_2, attr_3" sorted.shp my_shapefile.shp

एक मिलियन पॉलीगॉन वाले शेपफाइल के साथ 3 मिनट कम लगे।


1
धन्यवाद, लेकिन मैं कुछ भी स्थायी नहीं करना पसंद करता हूं क्योंकि यह कई डेटासेट उत्पन्न करेगा और साथ ही मैं क्यूजीआईएस के भीतर से एक तरह से उम्मीद कर रहा था।
जार्ज

2
तब मैं शायद आकृति को स्पैटियलाइट में बदल दूंगा। DB प्रबंधक के साथ आप तब SQL क्वेरी बना और चला सकते हैं। आप भविष्य की जरूरतों के लिए अक्सर उपयोग किए जाने वाले प्रश्नों को भी सहेज सकते हैं।
user30184

5

QGIS में DB प्रबंधक प्लगइन में अब एक 'वर्चुअल लेयर्स' नोड है जो आपको अपने QGIS प्रोजेक्ट में लोड किए गए शेपफाइल्स के खिलाफ SQL कमांड लिखने की अनुमति देता है।

तो अब जब आपके पास यह क्षमता है, तो कई फ़ील्ड्स द्वारा सॉर्ट करने के लिए SQL लॉजिक ORDER BY स्टेटमेंट में है, asc (आरोही), desc (अवरोही) का उपयोग करके, और आप उन्हें एक साथ कई कॉलमों को सॉर्ट करने के लिए स्ट्रिंग कर सकते हैं:

यहाँ छवि विवरण दर्ज करें

एक अतिरिक्त बोनस है कि आप अधिक एसक्यूएल सीखेंगे, ताकि जब आप शेपफाइल्स से बीमार हो जाएं और पोस्टगिस से सबसे ज्यादा छलांग लगे तो यह बहुत अच्छा नहीं होगा !!!


धन्यवाद-यह एक महान समाधान है, हालांकि इस उपयोग के मामले के लिए मैं डेटा प्रारूप को और कुछ भी नहीं बदलना चाहता हूं।
जार्ज

2
आप इस समाधान के लिए .SHP के साथ काम कर सकते हैं - यह डेटा प्रारूप को नहीं बदलता है। इसे आज़माएं ...
DPSSpatial

1
@GeorgeC क्या आपने इसे आज़माया है?
DPSSpatial

5

यह अब किसी भी प्लगइन्स या डेटाबेस-विशिष्ट कार्य के बिना किया जा सकता है, कम से कम संस्करण 3.2+ के लिए। कई कॉलमों को छाँटने के लिए:

  1. विशेषता तालिका स्तंभ शीर्ष लेख पर राइट क्लिक करें और "सॉर्ट करें ..." चुनें
  2. concat()उन फ़ील्ड्स के साथ फ़ंक्शन को जोड़ें जिन्हें आप क्रमबद्ध करना चाहते हैं, उचित क्रम (पूर्व concat("column1", "column2")) में। आपके कोड के नीचे एक आउटपुट पूर्वावलोकन दिखाया जाना चाहिए।
  3. स्तंभ सॉर्ट दिशाओं को कॉन्फ़िगर करने के लिए नीचे स्थित "क्रमबद्ध आरोही" चेकबॉक्स को चेक या अनचेक करें।
  4. ठीक क्लिक करें, और सॉर्ट की पुष्टि करें।

यह कार्यक्षमता समस्या # 1137 के माध्यम से जोड़ा गया था , और उपयोगकर्ता मैनुअल के नवीनतम (विकास) संस्करण में शामिल किया गया था


1
सफलतापूर्वक QGIS 3.6 के साथ परीक्षण किया गया।
श्री चे।

मैंने संक्षिप्त स्ट्रिंग और एक पूर्णांक है जिसमें एक निश्चित लंबाई नहीं है, इसलिए मैंने एक काम का उपयोग किया-पूर्णांक को एक निश्चित लंबाई स्ट्रिंग में पूर्णांक को शून्य करने के लिए उपयोग किया:concat("col1", right( ('000' || tostring( "col2" )), 4))
NettaB

2

खैर, यह 2018 है, इसलिए मैं विश्वास नहीं कर सकता कि यह अभी तक जवाब नहीं दिया गया है।

  1. विशेषता तालिका दृश्य खोलें और किसी भी कॉलम पर राइट-क्लिक करें, फिर सॉर्ट करें ...

  2. संवाद विंडो कॉन्फ़िगर करें विशेषता तालिका सॉर्ट क्रम पूर्ण अभिव्यक्ति संपादक के साथ ही खुला है

  3. उदाहरण के लिए इच्छित स्तंभों के साथ COALESCE फ़ंक्शन का उपयोग करें, यह एक तालिका 3 कॉलम (पहले आईडी और फिर संस्करण) के आधार पर छाँटेगा

coalesce("ID","VERSION","fid" )

यहाँ छवि विवरण दर्ज करें

ओके पर क्लिक करने से टेबल सॉल्व हो जाएगी


दुर्भाग्य से, मोटे तौर पर मेरे लिए काम नहीं किया। दो पूर्णांक स्तंभों (दोनों संख्याओं और रिक्त मानों का मिश्रण): 1) के साथ आकृति आकृति तालिका का उपयोग कर एक परीक्षण में, सॉर्ट आरोही बटन अनियंत्रित के साथ, परिणाम पहले स्तंभ सही (अवरोही) क्रमबद्ध किया गया था, लेकिन दूसरा स्तंभ गलत तरीके से सॉर्ट किया गया था पहले कॉलम के भीतर प्रत्येक मान के लिए आरोही। 2) क्रमबद्ध आरोही बटन की जाँच के साथ, परिणाम एक यादृच्छिक परिणाम था जिसका कोई मतलब नहीं था।
स्टु स्मिथ

1
आप "" से खेतों को समतल कर सकते हैं। ऑपरेटर, कोलेसस पहला गैर NULL मान लौटाएगा जो छँटाई के लिए मान्य नहीं है। संभवतः आपको ११ से पहले १ करने के लिए कुछ फॉर्मेटिंग का उपयोग करना चाहिए
ज़ोल्टन

1

आप (कम से कम इस समय नहीं) नहीं कर सकते। माफ़ करना!

QGIS प्रलेखन देखें और बहुत अंतिम पंक्ति तक स्क्रॉल करें।

आस-पास का गंदा काम, आकृति के DBF को Excel में खींचना होगा। वहां इसे क्रमबद्ध करें और परिणाम सहेजें। वैकल्पिक रूप से PostGIS या SpatialLite में अपने शेपफाइल को आयात करें जहां आपके पास अधिक छँटाई की कार्यक्षमता है। मूल रूप से, आपको उन्नत छंटाई के लिए QGIS को पास करना होगा।


2
सही टिप्पणी है कि यह वर्तमान में संभव नहीं है, लेकिन -1 Excel में DBF से खिलवाड़ सुझाव देने के लिए लिए +1
UnderDark

मैंने कहा कि यह 'बुरा' था :)
MappaGnosis 21

आप पोस्टगिस और स्पैटियालाइट का उल्लेख करते हैं: क्या आप एक उदाहरण दिखा सकते हैं कि कैसे करें जो ओपी ने क्यूजीआईएस से मांगा था, वह भी एक डीबी-प्लगइन का उपयोग करके?
स्टेको

0

जैसा कि @Sylvester Sneekly द्वारा सुझाया गया है, अगर आपका डेटा RDGMS जैसे PosGIS या SpatialLite में लोड किया गया है, तो आप RDBMS में एक डेटाबेस दृश्य बनाने पर विचार कर सकते हैं जो सारणीबद्ध डेटा को प्रस्तुत करता है, और फिर QGIS में दिए गए दृश्य को एक परत के रूप में लोड करता है।

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