क्या एक परत से सभी विशेषताओं को साफ़ करने का एक त्वरित तरीका है लेकिन बहुभुज को जगह में छोड़ दें?


9

मेरे पास QGIS 2.6 में कई पॉलीगॉन के साथ शेपफाइल लेयर है, जिनमें से प्रत्येक में 100 से अधिक क्षेत्रों में डेटा है। मुझे सभी समान बहुभुजों के साथ एक नई परत बनाने की आवश्यकता है, लेकिन उनके सभी डेटा फ़ील्ड रिक्त (फ़ील्ड प्रकार के आधार पर 0, शून्य या रिक्त पर सेट) के साथ। क्या एक बहुभुज के प्रत्येक क्षेत्र पर एक समय में हटाने को दबाने की तुलना में ऐसा करने का एक तेज़ तरीका है, मुझे इस तरह से 1000 से अधिक बार करना होगा।


1
कृपया जीआईएस सॉफ्टवेयर संस्करण और डेटा फॉर्मेट (जैसे, शेपफाइल, एफजीडीबी, पोस्टजीआईएस, ..) को शामिल करने के लिए प्रश्न को संपादित करें
विंस

जवाबों:


3

तुम सिर्फ कॉपी और पेस्ट कर सकते हैं नहीं पर अपना डेटा लेयर एक्स (एक परत / शेपफ़ाइल / सुविधा वर्ग / जो कुछ भी) है कि कोई गुण (OID और ज्यामिति के अलावा) और फिर कॉपी और पेस्ट अब "खाली" ज्यामिति वापस अपनी मूल परत में?


6

क्यूजीआईएस में भरी हुई आकृति के लिए सभी विशेषताओं को खाली करने के लिए आप पायथन कंसोल में निम्न कोड दर्ज कर सकते हैं NULL। परतों पैनल (सामग्री की तालिका) से परत का चयन करें और कोड चलाएँ:

layer = qgis.utils.iface.activeLayer()     
layer.startEditing()   
for field in layer.dataProvider().attributeIndexes():   
    for feature in layer.getFeatures(): 
        layer.changeAttributeValue(feature.id(), field, NULL)    

layer.commitChanges()        

यह QGIS 2.8.2 पर परीक्षण किया गया था।


अद्यतन :

@Vince द्वारा टिप्पणी के जवाब में, निम्न कोड सीधे कॉपी किया जा सकता है / पायथन कंसोल में चिपकाया और के आधार पर विशेषताओं के मान बदल जाएगा प्रकार क्षेत्र के (यानी 0के लिए पूर्णांक क्षेत्रों; NULLके लिए स्ट्रिंग क्षेत्रों, और के एक युग 1900-01-01के लिए एक तिथि क्षेत्र):

layer = qgis.utils.iface.activeLayer()     
layer.startEditing()  
for field in layer.pendingFields():
        if field.typeName() == 'Integer':
                name_int = field.name()
                for feature in layer.getFeatures():
                        feature[name_int] = '0'
                        layer.updateFeature(feature)
        if field.typeName() == 'String':
                name_str = field.name()
                for feature in layer.getFeatures():
                        feature[name_str] = NULL
                        layer.updateFeature(feature)
        if field.typeName() == 'Date':
                name_dat = field.name()
                for feature in layer.getFeatures():
                        feature[name_dat] = '1900-01-01'
                        layer.updateFeature(feature)
layer.commitChanges()

1
क्या आप शून्य से संख्या विज्ञान, रिक्त / NULL को स्ट्रिंग्स, और युगों से तारीखों को निर्दिष्ट करने के लिए तर्क को बदल सकते हैं?
विंस

@ विंस - धन्यवाद दोस्त, मैं निश्चित रूप से कोशिश कर सकता हूं क्योंकि मैं इस मामले में कोई विशेषज्ञ नहीं हूं :)
जोसफ

@ विंस - ट्वीक का उल्लेख करने के लिए फिर से धन्यवाद, मैं अजगर के बारे में अधिक जानने के लिए हुआ =)
जोसेफ

1
मैं मेरी उम्र से पता चलता है लगता है कि जब मैंने 1 जनवरी, 1970 या 1900 एक युग के बारे में सोच, नहीं 2000;)
विन्स

3

आप बस इसे एक नई फ़ाइल के रूप में सहेज सकते हैं और "इस रूप में सहेजें ..." संवाद में "एट्रीब्यूट एट्रिब्यूट क्रिएशन" बॉक्स पर टिक करें। जैसा कहता है वैसा ही करता है।

एफआईडी नाम का एक संख्यात्मक काउंटर कॉलम होगा, जाहिर है कि शेपफाइल प्रारूप में कम से कम एक विशेषता की आवश्यकता होती है? यदि आप कर सकते हैं, तो कुछ बेहतर, स्थानिक या भू-उपयोग का उपयोग करें।


+1, आप सही हैं क्योंकि कम से कम एक विशेषता होनी चाहिए। लेकिन यह एक बहुत अच्छा और सरल तरीका है क्योंकि आप फील्ड कैलकुलेटर चला सकते हैं और एफआईडी के सभी मूल्यों को बदल सकते हैं NULL
जोसफ

1
QGIS का व्यवहार अजीब लगता है। स्तंभ FID संपादन योग्य है और यह ज्यामिति और विशेषताओं के बीच वास्तविक मानचित्रण नहीं है। यदि आप कॉलम को हटाते हैं, तो आपको "सुविधा आईडी" नाम दिया जाता है, जो संपादन योग्य नहीं है। यह पहला परिणाम पहले से ही होना चाहिए। QGIS 2.10। मैं बाद में बग दर्ज करूंगा।
Bugmenot123

2

ओपनऑफ़िस या अन्य के साथ .dbf फ़ाइल खोलें, और डेटा निकालें।
आप फ़ाइलों पर लूप करने के लिए अजगर का उपयोग कर सकते हैं और सभी को हटा सकते हैं लेकिन हेडर dbf अजगर मॉड्यूल देखें


1
DBase फ़ाइल घटक पर शेपफाइल-अज्ञानी साधनों का उपयोग करने से शेपफाइल भ्रष्टाचार होने की संभावना है। यदि उद्देश्य रिक्त और शून्य को आबाद करना है, तो "हटाना" डेटा केवल .shp / .shx से कम रिकॉर्ड के साथ एक dBase फ़ाइल का उत्पादन करेगा।
विन्स

वास्तव में, लेकिन हम केवल डेटा को हटा रहे हैं, कोई जोखिम नहीं है।
१२:०५ पर जुलाब्रेकड

नहीं, कार्य बहुभुजों को संरक्षित करना और संबंधित विशेषताओं को साफ करना है, इसलिए जोखिम बहुत अधिक है। कोई भी जवाब जो संभावित भ्रष्टाचार की चेतावनी नहीं देता है, जोखिम को गंभीरता से नहीं लेता है।
विन्स

मैं मानता हूं कि यह एक कठिन तरीका है यानी नियमित नहीं है लेकिन यह काम करता है। जाहिर है, यह मूल डेटा का बैकअप रखने के लिए स्वागत है।
लीहान

इस विशेष मामले में जोखिम इतना महान नहीं है क्योंकि सभी क्षेत्रों में सभी विशेषताओं को प्रारंभिक रूप से परिभाषित किया गया है। इसलिए यदि अभिलेखों का क्रम dbf फ़ाइल में बदल रहा है तो भी इससे कोई गड़बड़ी नहीं होगी क्योंकि सभी अभिलेखों में विशेषताओं में समान डेटा होता है। उपयोगकर्ता को अभी भी ध्यान रखना चाहिए कि .dbf में सुविधाओं की संख्या .shp जैसी ही है। हालाँकि, जैसा कि @Vince ने लिखा है, उपयोगकर्ताओं को चेतावनी दी जानी चाहिए कि a)। Db की पंक्तियों की संख्या को बदलकर b। पंक्तियों की संख्या आमतौर पर दूषित और अनुपयोगी आकृति के लिए अग्रणी है।
user30184

2

QGIS .dbf के बिना आकार की फाइलें खोल सकता है।

तो आप बस .dbf घटक को हटा सकते हैं और .shp में लोड कर सकते हैं, जो कि सिर्फ ज्यामिति में लाएगा।


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

1
हां, नाम बदलना एक सुरक्षित विकल्प हो सकता है।
HeikkiVesanto

2

शायद आप एक्सेल के साथ * .dbf फ़ाइल को संपादित कर सकते हैं।

फिर आप सभी फ़ील्ड को हटा देते हैं लेकिन जियोम वन।

अंत में बचाएं और छोड़ें।

ऐसा करने से पहले * .shp का एक संग्रह रखना उपयोगी होगा।


अर्थ स्कीमा को अक्षुण्ण रखना प्रतीत होता है, इसलिए केवल कुछ डिफ़ॉल्ट मान के लिए विशेषताओं का मान सेट किया जाना चाहिए। और आप एक्सेल के साथ dbf फॉर्मेट में सेव नहीं कर सकते।
user30184

2
ज्यामिति फ़ील्ड किसी आकृति आकृति के dBase घटक में मौजूद नहीं है।
विंस

जब एक्सेल के साथ dbf का संपादन होता है, तो कोई wkt फ़ील्ड नहीं होता है।
लीहन

FID फ़ील्ड .dbf में पंक्तियों को ज्यामिति से जोड़ती है, जो .shp में संग्रहीत होती है। वास्तव में, .dbf का ज्यामिति से कोई लेना-देना नहीं है। en.wikipedia.org/wiki/Shapefile
mr.adam

1

QGIS 2.8.x में आप विशिष्ट या सभी क्षेत्रों से भी छुटकारा पा सकते हैं। खुली विशेषता तालिका, टॉगल संपादन मोड, "कॉलम हटाएं" बटन पर क्लिक करें, अपनी सभी अवांछित विशेषताओं का चयन करें और "ओके" पर क्लिक करें। संपादन सहेजें।

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