रेगुलर एक्सप्रेशंस का उपयोग करके आसानी से विशेषता डेटा को कैसे संपादित करें?


30

मैं एमएससी छात्रों के लिए एक ट्यूटोरियल लिख रहा हूं जो QGIS का उपयोग करता है। कार्यों में से एक को विशेषता डेटा को संशोधित करने की आवश्यकता है ( यदि आवश्यक हो तो यहां ट्यूटोरियल का पीडीएफ ड्राफ्ट देखें )।

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

दुर्भाग्य से, समाधान अब काम नहीं करता है: लिबर ऑफिस (5.4.2) या ओपनऑफ़िस (3.4.1) में .dbf फ़ाइल को सहेजना, Calc QGIS के परिप्रेक्ष्य से डेटा को स्क्रैम्बल करता है (केवल विशेषता तालिका में यादृच्छिक पूर्णांक संख्या दिखाई देती है), और इसके बजाय एक अतिरिक्त .dbt फ़ाइल बनाता है।

इसलिए इस सवाल पर जाएं: मैं एमएससी के छात्रों की एक कक्षा को अगले सप्ताह ऐसा करने के लिए कैसे कहूं? मैंने निम्नलिखित विकल्पों पर विचार किया है:

  1. बजाय R का उपयोग करें (मेरे लिए बहुत अच्छा है, लेकिन छात्रों के लिए डरावना है)
  2. फ़ाइल को एक .csv के रूप में संपादित करें, और फिर टाइमस्टैम्प पर आधारित (ठीक है, लेकिन अत्यधिक जटिल लगता है, और 2 घंटे व्यावहारिक में अधिक त्रुटि का परिचय दे सकता है)
  3. एक वैकल्पिक कार्यक्रम का उपयोग करें: मैंने ग्नुमेरिक और एक्सेल की कोशिश की है, जिनमें से कोई भी जल्दी से अच्छे परिणाम उत्पन्न नहीं करता है।

इस प्रश्न का उत्तर देने में सहायता के लिए, मैंने एक उदाहरण योग्य उदाहरण बनाया है । QGIS में फ़ाइल "points.shp" खोलें, विशेषता तालिका को पास से देखें। LibreOffice में विशेषता तालिका "points.dbf" में कुछ कोशिकाओं को संपादित करें - सहेजें। QGIS में "points.shp" को फिर से खोलें और तले हुए विशेषता तालिका का निरीक्षण करें। .Zip फ़ोल्डर में अन्य शेपफाइल्स पहले से ही लिब्रे ऑफिस और ओपनऑफिस द्वारा दूषित हो चुके हैं, यह स्पष्ट करने के लिए कि समस्या मेरे लिए कैसी दिखती है।

संक्षेप में, मैं इस समस्या को कैसे हल करूं?


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

13
नियमित रूप से उपयोग करने के लिए सिफारिश करने के लिए एक शेपफाइल का .DBF हिस्सा सीधे संपादित करना बहुत खतरनाक है और इसे नौसिखियों द्वारा बिल्कुल भी उपयोग नहीं किया जाना चाहिए - कम से कम अगर किसी को डेटा की परवाह नहीं है। हालांकि, एक समान प्रकृति का अधिक विश्वसनीय समाधान उपलब्ध है: आकृति में एक विशिष्ट पहचानकर्ता क्षेत्र बनाए रखें। इसे कभी संपादित न करें। इसके बजाय, संबंधित तालिका में विशेषताओं को रखें (किसी भी प्रारूप में आपका जीआईएस पढ़ सकता है), उसी पहचानकर्ता में शामिल हो गया। अब, काफी हद तक, आप आकृति और विशेषता के बीच संबंध खोए बिना विशेषता तालिका को स्वतंत्र रूप से संपादित कर सकते हैं - जब तक आप पहचानकर्ता क्षेत्र की रक्षा करते हैं।
whuber

1
अजगर समाधान ठीक रहेगा, जब तक वे लागू करना और समझना आसान होता है ... एक पहचानकर्ता संख्या रखने के बारे में जो एक अच्छा विकल्प है - (मेरे प्रश्न में विकल्प 2) और शायद मेरा डिफ़ॉल्ट उत्तर। हालांकि, एक सरल "क्विक फिक्स" की उम्मीद कर रहा था जिसमें अतिरिक्त फाइलें शामिल नहीं हैं (5 प्रति
आकारfile

3
आपका क्या मतलब है, प्रति आकार 5 प्रति? 9 की कोशिश करो! :-) (अनुक्रमणिका फाइलें संचित हो सकती हैं, जिसके आधार पर जीआईएस का उपयोग किया जा रहा है।) एक बार जब आपको डेटा का एक सेट बनाए रखने के लिए एक से अधिक संबंधित फ़ाइल की आवश्यकता होती है - और आकार के लिए न्यूनतम तीन की आवश्यकता होती है - यह वास्तव में कोई अतिरिक्त परेशानी नहीं है। अतिरिक्त फ़ाइलों में फेंक दें। जब आप इस पर हों, तो मेटाडेटा फ़ाइल भी जोड़ें। :-) और एक बार जब आप ज्वाइन कर लेते हैं, तो क्या यह स्वचालित रूप से नहीं होता है? (मैं कैसे टाइमस्टैम्प, हालांकि में शामिल होने के लिए इस्तेमाल किया जा सकता नहीं दिख रहा है यही कारण है कि एक संस्करण नियंत्रण प्रणाली के लिए उपयोग किया जाएगा।।)
whuber

3
यदि आपके पास उन्हें डेटाबेस से परिचित कराने के लिए कोई झुकाव है, तो स्पैटियालाइट में OSM डेटा के लिए फ़ील्ड संपादन और कमांड लाइन टूल के लिए GUI है। तब आप थोड़ा सा एसक्यूएल शामिल कर सकते हैं और आपके छात्र निश्चित रूप से वक्र के आगे होंगे।
स्क्रो

जवाबों:


18

इसका सबसे सरल उत्तर मैंने पाया है, यह रायन गार्नेट की QGIS के भीतर करने की सलाह पर आधारित है:

Regexp_replace का उपयोग करें

यह क्षमता 1 साल पहले जुरगेन फिशर (जैसा कि इस बग की रिपोर्ट में दी गई है ) द्वारा फील्ड कैलकुलेटर में जोड़ा गया था । मैंने कुछ समय तक यह जानने की कोशिश की कि यह कैसे करना है, लेकिन "क्यूगी रेगेक्स" और अन्य अस्पष्ट शब्दों की खोज करने में विफल रहा।

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

regexp_replace ("नाम", 'Tesc। *', 'Tesco')

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

मुझे लगता है कि यह पायथोनिक नियमित अभिव्यक्ति कार्यक्षमता है, क्योंकि यह grep से थोड़ा अलग है, जिसे मैंने पहले इस्तेमाल किया है।

मुझे लगता है कि अधिक प्रलेखन ( क्यूजीआईएस वेबसाइट पर विस्तार कुछ शब्दों तक सीमित है) की आवश्यकता है कि यह कैसे काम करता है, इसलिए मैंने भविष्य के संदर्भ के लिए निम्नलिखित पृष्ठों को बुकमार्क किया है:

इस समाधान के कुछ फायदे हैं:

  1. सरल: कोई अतिरिक्त कार्यक्रम या ऐड-ऑन की आवश्यकता नहीं है
  2. छात्रों को नियमित अभिव्यक्ति की शक्ति का परिचय देता है, (पायथोनिक) कार्यों का उपयोग करके ("'" पाठ का प्रतिनिधित्व करना दिलचस्प है। चेतावनी: "या कोई प्रतीक विफल नहीं होता है) और कमांड-लाइन फ़ंक्शन।

मेरे स्वयं के प्रश्न का उत्तर देने के लिए क्षमा याचना, और प्रकाश की ओर मार्गदर्शन करने के लिए दूसरों को धन्यवाद! मुझे आशा है कि यह प्रश्न सूत्र समान समस्याओं का सामना करने वाले अन्य लोगों के लिए शैक्षिक उपयोग का होगा।


3
चिंता न करें, अपने सवालों का जवाब देना कोई समस्या नहीं है।
UnderDark

मुझे खुशी है कि आपको कुछ ऐसा मिला जो आपकी मदद करेगा। साझा करने के लिए धन्यवाद, मुझे पता है कि मैं इसका उपयोग करूंगा।
रयान गार्नेट

1
मैंने QGIS देवों से
wildintellect

9

यह एक मूक जवाब हो सकता है, क्योंकि यह ग्रेड छात्रों के लिए एक सीखने का उद्देश्य हो सकता है, लेकिन क्या एक कारण है कि आप फील्ड कैलकुलेटर के उपयोग के साथ क्यूजीआईएस में विशेषताओं का संपादन क्यों नहीं कर रहे हैं? QGIS के पिछले संस्करणों (पूर्व 1.7) में QGIS के भीतर सीधे संपादन विशेषताएँ संभव नहीं थीं; इसलिए संपादन की आवश्यकता है। ओपनऑफिस में .DBF फाइलें आदि।

1.7 और 1.8 के रूप में आप सशर्त अभिव्यक्ति करने की क्षमता के साथ सीधे फील्ड कैलकुलेटर में विशेषता डेटा संपादित कर सकते हैं। इसमें पायथन एट्रीब्यूट प्लगइन्स भी उपलब्ध हैं, जो कि विशेषता संपादन के लिए अतिरिक्त विकल्प प्रदान कर सकते हैं। यह एक समाधान हो सकता है, और या, आपके ट्यूटोरियल के लिए एक विकल्प।

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


1
हाय रयान, हाँ यह आदर्श समाधान होगा। यह गंदी OSM नामों को मानकीकृत करने के लिए विशेषता तालिका में पाठ को खोजने और बदलने की क्षमता है, जो मुझे सीधे .dbf फ़ाइल को संपादित करने और संपादित करने के लिए प्रेरित कर रही है। मैं इसे QGIS के भीतर संपादित करूंगा। पायथन एट्रीब्यूट प्लगइन की कोशिश करेगा - विचार समाधान हो सकता है। तथ्य यह है कि मैं regex खोज के लिए देख रहा हूँ / प्रश्न में क्षमता को स्पष्ट करना चाहिए बनाया है।
रॉबिनवेल्स

@ user1694378 आप अभी भी अपने प्रश्न को स्पष्ट कर सकते हैं।
UnderDark

धन्यवाद मुझे ऐसा करने के लिए रेखांकित करने के लिए - बेहतर यह दर्शाता है कि मैं वास्तव में क्या करना चाहता था।
रॉबिनवेल्स

3

आप अपनी dbf फ़ाइलों को संशोधित करने के लिए लिब्रे ऑफिस के बेस का उपयोग कर सकते हैं ।

  1. ओपन बेस (मेन मेन्यू प्राप्त करें)
  2. "एक मौजूदा डेटाबेस से कनेक्ट करें" चुनें और "dBASE" टाइप करें।
  3. अपने dbf फ़ाइलों के साथ फ़ोल्डर का चयन करें।
  4. वांछित और "समाप्त" के रूप में अंतिम विकल्प चुनें।
  5. अपनी डेटाबेस कनेक्शन फ़ाइल को नाम दें जो भी आप चाहते हैं (जैसे "MyxBasefiles.odb) और इसे कहीं पर सहेजें। इसलिए इस फ़ाइल पर क्लिक करके अपनी डेटाबेस फ़ाइलों तक पहुंचें। ooOoo, Nice
  6. बाएं पैनल पर "टेबल्स" का चयन करें, और आपकी डेटा फाइलें (जिन्हें "टेबल" कहा जाता है) हैं। उनके साथ मेस करें।

अब आप उन्हें संपादित करना शुरू कर सकते हैं। उम्मीद है कि आपके उद्देश्यों के लिए पर्याप्त होना चाहिए।

आप DBF एक्सप्लोरर की कोशिश कर सकते हैं, हालांकि यह केवल विंडोज है। हालांकि इसकी खोज और प्रतिस्थापन है।

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


1
हाय आरके शीघ्र उत्तर के लिए धन्यवाद: .dbf फ़ाइलों को संपादित करने के लिए एक विश्वसनीय और सुरक्षित तरीका लगता है। मैंने सिर्फ वही कहा जो आपने कहा था और मुझे यह कहते हुए खुशी हो रही है कि यह काम करता है।
रॉबिनवेल्स

जानकार अच्छा लगा। आपके पास अच्छा सबक है। :)
आरके

लेकिन ... मैंने बस कोशिश की कि आपने क्या कहा और मुझे यह कहते हुए खुशी हो रही है कि यह व्यक्तिगत कोशिकाओं के लिए काम करता है। दुर्भाग्य से यह इस विशेष एप्लिकेशन के लिए 100% समाधान नहीं है, क्योंकि ऐसा प्रतीत होता है कि OOBase में एक [बग] ( lists.freedesktop.org/archives/libreoffice.bugs/2010 ) के कारण ट्यूटोरियल के लिए आवश्यक खोज-प्रतिस्थापित कार्यक्षमता नहीं है -डिजाइन /… )। निश्चित रूप से हालांकि व्यक्तिगत कोशिकाओं पर काम किया गया: परीक्षण किया गया। इसलिए, जब तक मैंने खोज-प्रतिकृति कार्यक्षमता को याद नहीं किया, सेल-बाय-सेल संपादन के लिए 90% समाधान है। किसी भी विचार कैसे "टेस्को" के साथ सभी "Tesc।" प्रविष्टियों को प्रतिस्थापित करने के लिए?
रॉबिनवेल्स

OO बेस बग के लिए बेहतर लिंक: bugs.freedesktop.org/show_bug.cgi?id=32506
RobinLovelace

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