নিয়মিত এক্সপ্রেশন ব্যবহার করে কীভাবে সহজেই অ্যাট্রিবিউট ডেটা সম্পাদনা করা যায়?


30

আমি এমএসসি শিক্ষার্থীদের জন্য টিউটোরিয়াল লিখছি যা কিউজিআইএস ব্যবহার করে। কাজের মধ্যে একটিতে অ্যাট্রিবিউট ডেটাটি সংশোধন করা প্রয়োজন ( আগ্রহী হলে এখানে টিউটোরিয়ালটির পিডিএফ খসড়া দেখুন )।

প্রশ্নটি তাদের কীভাবে বিশিষ্ট ডেটা সম্পাদনা করতে হবে get আমি জানি যে এই প্রশ্নটি আগে জিজ্ঞাসা করা হয়েছিল , এবং উত্তরটি সহজ ব্যবহৃত হত: কেবলমাত্র লিবারঅফিস ক্যালকাকে এটি পরিবর্তন করতে ব্যবহার করুন এবং তারপরে এটি সংরক্ষণ করুন, সারি ক্রম এবং কলামের শিরোনাম একই থাকবে তা নিশ্চিত করে। আমি দুর্দান্ত ব্যবহারের আগে এই পদ্ধতির ব্যবহার করেছি।

দুর্ভাগ্যক্রমে, সমাধান আর কাজ করে না: .rebf ফাইল সংরক্ষণ করে, LibreOffice (5.4.2) বা ওপেন অফিসে (3.4.1) ক্যালক QGIS এর দৃষ্টিকোণ থেকে ডেটা স্ক্র্যাম্ব করে (কেবল এলোমেলো সংখ্যার অ্যাট্রিবিউট সারণীতে প্রদর্শিত হবে), এবং পরিবর্তে একটি অতিরিক্ত .dbt ফাইল তৈরি করে।

সুতরাং প্রশ্নটি পেতে: আমি কীভাবে এক সপ্তাহের এমএসসি শিক্ষার্থীদের এই কাজটি করতে বলব? আমি নিম্নলিখিত বিকল্পগুলি বিবেচনা করেছি:

  1. পরিবর্তে আর ব্যবহার করুন (আমার পক্ষে দুর্দান্ত তবে শিক্ষার্থীদের জন্য ভীতিকর)
  2. ফাইলটিকে .csv হিসাবে সম্পাদনা করুন এবং টাইমস্ট্যাম্পের ভিত্তিতে যোগদান করুন (সূক্ষ্ম, তবে অতিরিক্ত জটিল বলে মনে হচ্ছে এবং ২ ঘন্টা ব্যবহারিক ক্ষেত্রে আরও ত্রুটি প্রবর্তন করতে পারে)
  3. একটি বিকল্প প্রোগ্রাম ব্যবহার করুন: আমি জিনুমারিক এবং এক্সেল চেষ্টা করেছি, যার দুটিতেও ভাল ফলাফল খুব দ্রুত তৈরি হয়নি।

এই প্রশ্নের উত্তর দেওয়ার জন্য, আমি একটি প্রতিরূপ উদাহরণ তৈরি করেছি । কিউজিআইএস-এ "point.shp" ফাইলটি খুলুন, পর্যবেক্ষক বিশিষ্ট টেবিলটি তারপর বন্ধ করুন। LibreOffice- এ "point.dbf" এ্যাট্রিবিউট টেবিলের কয়েকটি কক্ষ সম্পাদনা করুন - সংরক্ষণ করুন। কিউজিআইএসে "point.shp" পুনরায় খুলুন এবং স্ক্র্যাম্বলেড অ্যাট্রিবিউট টেবিলটি পর্যবেক্ষণ করুন। আমার কাছে সমস্যাটি কেমন দেখায় তা বোঝানোর জন্য .zip ফোল্ডারে থাকা অন্যান্য আকার ফাইলগুলি ইতোমধ্যে LibreOffice এবং OpenOffice দ্বারা দূষিত করা হয়েছে been

সংক্ষেপে, আমি কীভাবে এই সমস্যার সমাধান করব?


2
সাইটে স্বাগতম, আমি বলতে চাই এটি একটি সত্যই জিজ্ঞাসিত প্রশ্ন এবং আশা করি আমরা কার্যকর কিছু সমাধান পেতে পারি। আমি ধরে নিই এই ছাত্রদের কাছে অজগর কিছুটা প্রশ্নের বাইরে রয়েছে, যেমন আমি প্রথম উদাহরণে এই সমস্যাটির কাছে যাব ...
স্যাগ্রিভেভ

13
কোনও শেফফিলের সরাসরি .DBF অংশ সম্পাদনা করা রুটিন ব্যবহারের জন্য সুপারিশ করা খুব বিপজ্জনক এবং নোভিসরা মোটেই ব্যবহার করা উচিত নয় - কমপক্ষে কেউ যদি ডেটা সম্পর্কে চিন্তা না করে তবে তা নয়। তবে, অনুরূপ প্রকৃতির আরও নির্ভরযোগ্য সমাধান পাওয়া যায়: শেফফাইলে একটি অনন্য সনাক্তকারী ক্ষেত্র বজায় রাখুন। এটি কখনও সম্পাদনা করবেন না। পরিবর্তে, একই শনাক্তকরণের সাথে যুক্ত হয়ে কোনও সম্পর্কিত সারণীতে বৈশিষ্ট্যগুলি রাখুন (আপনার জিআইএস পড়তে পারে এমন কোনও ফর্ম্যাটে)। এখন, একটি দুর্দান্ত ডিগ্রীতে, আপনি আকার এবং বৈশিষ্ট্যের মধ্যে সংযোগটি না হারিয়ে আপনি অ্যাট্রিবিউট টেবিলটি নির্দ্বিধায় সম্পাদনা করতে পারবেন - যতক্ষণ না আপনি সনাক্তকারী ক্ষেত্রটি সুরক্ষিত করেন।
whuber

1
পাইথন সমাধানগুলি যথাযথ হবে, যতক্ষণ না তারা প্রয়োগ করা এবং বোঝার পক্ষে সহজ ... একটি সনাক্তকারী নম্বর রাখার বিষয়ে এটি একটি ভাল বিকল্প - (আমার প্রশ্নের বিকল্প 2) এবং সম্ভবত আমার ডিফল্ট উত্তর। তবে, একটি সহজ "দ্রুত সমাধানের" জন্য প্রত্যাশা করা হয়েছিল যা অতিরিক্ত ফাইলগুলিকে জড়িত করে না (প্রতি শেফফাইলে 5 যথেষ্ট পরিমাণে আইএমও!)
রবিনলওয়েলেস

3
শেফফাইল প্রতি 5 অর্থ কী? 9 চেষ্টা করুন! :-) (জিআইএস ব্যবহার করা হচ্ছে তার উপর নির্ভর করে সূচক ফাইলগুলি জমে উঠতে পারে)) একবার ডেটার সেট সেট বজায় রাখতে আপনার একাধিক সম্পর্কিত ফাইলের প্রয়োজন হয় - এবং শেফফায়ালের জন্য সর্বনিম্ন তিনজনের প্রয়োজন হয় - এটি আসলে কোনও অতিরিক্ত সমস্যা নয় অতিরিক্ত ফাইল নিক্ষেপ। আপনি যখন থাকবেন তখন একটি মেটাডেটা ফাইলও যুক্ত করুন। :-) এবং একবার আপনি যোগদানটি সেট আপ করার পরে, এটি স্বয়ংক্রিয়ভাবে ঘটে না? (আমি কিভাবে টাইমস্ট্যাম্প, যদিও যোগদানের জন্য ব্যবহার করা যেতে পারে কি দেখ না যে একটি সংস্করণ নিয়ন্ত্রণ ব্যবস্থা জন্য এর পরিবর্তে ব্যবহার করা হবে।।)
whuber

3
আপনার যদি ডাটাবেসে তাদের পরিচয় করিয়ে দেওয়ার কোনও প্রবণতা থাকে, তবে স্পেসিয়ালাইটের ফিল্ড সম্পাদনা এবং ওএসএম ডেটার জন্য কমান্ড লাইন সরঞ্জামগুলির জন্য একটি জিইউআই রয়েছে। তারপরে আপনি কিছুটা এসকিউএল জড়িত করতে পারেন এবং আপনার ছাত্ররা তর্কযোগ্যভাবে বক্ররেখার আগেই এগিয়ে যেতে পারে।
স্ক্রো

উত্তর:


18

রায়ান গারনেটকে কিউজিসআইএস-এ এটি করার পরামর্শের ভিত্তিতে আমি সবচেয়ে সহজ উত্তর পেয়েছি:

Regexp_replace ব্যবহার করুন

এই ক্ষমতাটি 1 বছর পূর্বে জার্গেন ফিশার দ্বারা ফিল্ড ক্যালকুলেটরে যুক্ত করা হয়েছিল ( এই বাগের প্রতিবেদনের দ্বারা চিত্রিত )। এটি কীভাবে করা যায় তা জানার জন্য আমি কিছুক্ষণ চেষ্টা করেছিলাম, তবে "কিগিস রিজেক্স" এবং অন্যান্য অস্পষ্ট শর্তাদি অনুসন্ধান করতে ব্যর্থ হয়েছি।

এটির কার্যকারিতা সম্ভবত "নাম" কলামের সমস্ত মানকে মানক করার প্রয়োজনের দ্বারা সর্বোত্তমভাবে ফুটিয়ে তোলা হয়েছে। উদাহরণস্বরূপ, "টেস্কো" এর সাথে "টেস্টক" প্যাটার্ন সম্বলিত সমস্ত কক্ষগুলিকে প্রতিস্থাপনের প্রয়োজন হলে "টেস্কো, ইনফার্মারি রোড" (ওএসএম সহযোগীরা প্রায়শই যুক্ত করে) এর মতো অতিরিক্ত অতিরিক্ত তথ্য মুছে ফেলা হলে, নিম্নলিখিত ফাংশনটি ব্যবহার করা যেতে পারে:

regexp_replace ("নাম", 'Tesc। *', 'টেস্কো')

এখানে চিত্র বর্ণনা লিখুন

আমি অনুমান করি এটি পাইথোনিক নিয়মিত প্রকাশের কার্যকারিতা, কারণ এটি গ্রেপ থেকে কিছুটা আলাদা, যা আমি আগে ব্যবহার করেছি।

আমি মনে করি এটি কীভাবে কাজ করে তার উপর আরও ডকুমেন্টেশন ( কিউজিআইএস ওয়েবসাইটে বিশদ কয়েকটি শব্দে সীমাবদ্ধ) প্রয়োজন, তাই আমি ভবিষ্যতের রেফারেন্সের জন্য নিম্নলিখিত পৃষ্ঠাগুলি বুকমার্ক করেছি:

এই সমাধানটির বেশ কয়েকটি সুবিধা রয়েছে:

  1. সরল: কোনও অতিরিক্ত প্রোগ্রাম বা অ্যাড-অনের দরকার নেই
  2. (পাইথোনিক?) ফাংশনগুলি ব্যবহার করে ("" "পাঠ্য উপস্থাপন করা" "আকর্ষণীয়: সতর্কতা:" বা কোনও প্রতীক ব্যর্থ হয় না) এবং কমান্ড-লাইন ফাংশনগুলি ব্যবহার করে শিক্ষার্থীদের নিয়মিত অভিব্যক্তিগুলির শক্তির সাথে পরিচয় করিয়ে দেয়।

আমার নিজের প্রশ্নের উত্তর দেওয়ার জন্য দুঃখিত, এবং আমাকে আলোর দিকে পরিচালিত করার জন্য অন্যকে অনেক ধন্যবাদ! আমি আশা করি যে এই প্রশ্ন থ্রেড একই ধরণের সমস্যার মুখোমুখি অন্যদের শিক্ষাগত কাজে আসবে।


3
চিন্তা করবেন না, আপনার নিজের প্রশ্নের উত্তর দেওয়া কোনও সমস্যা নয়।
underdark

আমি খুশি যে আপনি এমন কিছু খুঁজে পেয়েছেন যা আপনাকে সাহায্য করবে। ভাগ করে নেওয়ার জন্য আপনাকে ধন্যবাদ, আমি জানি আমি এটি ব্যবহার করব।
রায়ান গারনেট

1
আমি কিউআইজিআইএস ডিভাসকে জিজ্ঞাসা করেছি, এটি কিউটি রেজেক্স qt-project.org/doc/qt-4.8/qregexp.html
ওয়াইল্ডইনটেলেক্ট

9

এটি মূ answer় উত্তর হতে পারে, কারণ এটি গ্রেড শিক্ষার্থীদের জন্য শেখার উদ্দেশ্য হতে পারে, তবে ফিল্ড ক্যালকুলেটর ব্যবহার করে আপনি কিউজিআইএস-এ বৈশিষ্ট্যগুলি সম্পাদনা করছেন না এমন কোনও কারণ আছে কি? কিউজিআইএস-এর পূর্ববর্তী সংস্করণগুলিতে (কিউআইএসের পূর্ববর্তী 1.7) পূর্ববর্তী সংস্করণে কিউজিসের মধ্যে সরাসরি সম্পাদনা বৈশিষ্ট্যগুলি সম্ভব ছিল না; সুতরাং ওপেন অফিসে .DBF ফাইলগুলি সম্পাদনা করার প্রয়োজন etc.

1.7 এবং 1.8 হিসাবে আপনি শর্তসাপেক্ষ অভিব্যক্তি সম্পাদন করার ক্ষমতা সহ সরাসরি ফিল্ড ক্যালকুলেটরটিতে অ্যাট্রিবিউট ডেটা সম্পাদনা করতে পারবেন। পাইথন অ্যাট্রিবিউট প্লাগইনও উপলব্ধ রয়েছে যা বৈশিষ্ট্য সম্পাদনা করার জন্য অতিরিক্ত বিকল্প সরবরাহ করতে পারে। এটি আপনার টিউটোরিয়ালের জন্য একটি সমাধান হতে পারে এবং অথবা option

পূর্ববর্তী মাস্টার্সের ছাত্র এবং এখন একজন বিশ্ববিদ্যালয়ের কর্মচারী হিসাবে, আমি এই সমস্যাটি বুঝতে পেরেছি, কিউআইজিআইএসের বাইরে এটি সম্পাদনের পূর্বের প্রয়োজনীয়তা এবং এখন কিউজিআইএস-এর সমস্ত বৈশিষ্ট্য সম্পাদনা সম্পাদনের দক্ষতার প্রশংসা করি। আপনি যদি চান তবে আমি আপনাকে এই আরও সাহায্য করার জন্য খুশি হব।


1
হাই রায়ান, হ্যাঁ এটিই আদর্শ সমাধান হবে। অদৃশ্য টেবিলের পাঠ্য অনুসন্ধান এবং প্রতিস্থাপনের যোগ্য, অগোছালো ওএসএম নামগুলিকে মানিক করে তোলার জন্য, এটি আমাকে .dbf ফাইলটি সরাসরি সম্পাদনা করার জন্য চেষ্টা করছে push আমি বরং এটি কিউজিআইএস-এর মধ্যে সম্পাদনা করব। পাইথন অ্যাট্রিবিউট প্লাগইন চেষ্টা করবে - ধারণা সমাধান হতে পারে। আমি সত্যিকারের রেগেক্স অনুসন্ধানের সন্ধান করছি / প্রশ্নের উত্তর সক্ষমতা পরিষ্কার করে দেওয়া উচিত ছিল।
রবিনলভলেস

@ user1694378 আপনি এখনও আপনার প্রশ্নটি পরিষ্কার করতে পারেন।
underdark

আমাকে এটি করতে সম্মতি জানাতে ধন্যবাদ আন্ডার ডার্ক - আমি আসলে যা করতে চেয়েছিলাম তা আরও ভাল প্রতিফলিত করে।
রবিনলভেলস

3

আপনি আপনার ডিবিএফ ফাইলগুলি সংশোধন করতে লিব্রেঅফিসের বেস ব্যবহার করতে পারেন ।

  1. ওপেন বেস (মূল মেনু পান)
  2. "একটি বিদ্যমান ডাটাবেসে সংযুক্ত করুন" নির্বাচন করুন এবং "ডিবিএএসই" টাইপ করুন।
  3. আপনার ডিবিএফ ফাইলগুলির সাথে ফোল্ডারটি নির্বাচন করুন।
  4. পছন্দসই হিসাবে চূড়ান্ত বিকল্প নির্বাচন করুন এবং "সমাপ্তি"।
  5. আপনি যা চান আপনার ডাটাবেস সংযোগ ফাইলটির নাম দিন (উদাহরণস্বরূপ "MyxBasefiles.odb) এবং এটিকে কোথাও সংরক্ষণ করুন Hence এই ফাইলটি ক্লিক করে আপনার ডাটাবেস ফাইলগুলিতে অ্যাক্সেস করুন ooOoo, Nice।
  6. বাম প্যানেলে "টেবিলগুলি" নির্বাচন করুন এবং সেখানে আপনার ডেটা ফাইল রয়েছে ("টেবিলগুলি বলা হয়)। তাদের সাথে মেস।

আপনি এখন এগুলি সম্পাদনা শুরু করতে পারেন। আশা করি এটি আপনার উদ্দেশ্যগুলির জন্য যথেষ্ট ভাল হওয়া উচিত।

আপনি ডিবিএফ এক্সপ্লোরার চেষ্টা করতে পারেন যদিও এটি কেবল উইন্ডোজ। এটি অনুসন্ধান এবং প্রতিস্থাপন আছে যদিও।

এখানে চিত্র বর্ণনা লিখুন


1
হাই আর কে প্রম্পট উত্তরের জন্য ধন্যবাদ: .dbf ফাইলগুলি সম্পাদনা করার জন্য একটি নির্ভরযোগ্য এবং নিরাপদ উপায় বলে মনে হচ্ছে। আপনি যা বলেছিলেন তা আমি কেবল চেষ্টা করেছি এবং এটি কাজ করে বলে আমি সন্তুষ্ট।
রবিনলভলেস

জানা ভাল. আপনি সেখানে দুর্দান্ত পাঠ। :)
আর কে

তবে ... আপনি যা বলেছিলেন তা আমি কেবল চেষ্টা করেছি এবং এটি পৃথক কোষের জন্য কাজ করে বলে আমি সন্তুষ্ট। দুর্ভাগ্যক্রমে এটি এই বিশেষ অ্যাপ্লিকেশনটির জন্য 100% সমাধান নয়, কারণ এটি প্রদর্শিত হয় যে কোনও [বাগ] এর কারণে টিউটোরিয়ালের জন্য প্রয়োজনীয় ওববেসে অনুসন্ধান-প্রতিস্থাপন কার্যকারিতা নেই ( list.freedesktop.org/archives/libreoffice-bugs/2010 -ডিসেম্বার /… )। অবশ্যই পৃথক কোষে কাজ করেছেন: পরীক্ষিত। সুতরাং এটি সেল-বাই-সেল সম্পাদনা করার জন্য 90% সমাধান, যদি না আমি অনুসন্ধান-রিপ্ল্যাক কার্যকারিতা মিস করি। উদাহরণস্বরূপ, "টেস্কো" দিয়ে সমস্ত "টেস্ক। *" এন্ট্রিগুলি কীভাবে প্রতিস্থাপন করবেন কোনও ধারণা?
রবিনলাওলেস

ওও বেস বাগের জন্য আরও ভাল লিঙ্ক: bugs.freedesktop.org/show_bug.cgi?id=32506
রবিনলয়েস

আমার উত্তর আপডেট।
আর কে
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.