স্তর থেকে সমস্ত বৈশিষ্ট্য সাফ করার একটি বহু উপায় আছে তবে বহুভুজগুলি সেই জায়গায় রেখে দেওয়া আছে?


9

আমার বেশিরভাগ বহুভুজ সহ কিউজিআইএস ২.6-এ একটি শেফিল স্তর রয়েছে, যার প্রতিটিতে 100 টিরও বেশি ক্ষেত্রগুলিতে ডেটা রয়েছে। সমস্ত একই বহুভুজ সহ আমার একটি নতুন স্তর তৈরি করা দরকার, তবে তাদের সমস্ত ডেটা ক্ষেত্র ফাঁকা (0 তে সেট করুন, ক্ষেত্রের ধরণের উপর নির্ভর করে নাল বা খালি)। একবারে প্রতিটি বহুভুজের প্রতিটি ক্ষেত্রের মুছে ফেলার চাপ দেওয়ার চেয়ে কি আরও দ্রুত উপায় আছে, আমাকে এইভাবে 1000 বারের বেশি এটি করতে হবে।


1
জিআইএস সফ্টওয়্যার সংস্করণ এবং ডেটা ফর্ম্যাট (উদাহরণস্বরূপ, শেফফিল, এফজিডিবি, পোস্টজিআইএস, ..) অন্তর্ভুক্ত করতে দয়া করে প্রশ্নটি সম্পাদনা করুন
ভিন্স

উত্তর:


3

আপনি কেবল লেয়ার এক্স (একটি স্তর / শেফফিল / বৈশিষ্ট্য শ্রেণি / যা কিছু) এর কোনও বৈশিষ্ট্য নেই (ওআইডি এবং জ্যামিতি ছাড়াও ) আপনার ডেটা অনুলিপি করে আটকান এবং তারপরে এখন "খালি" জ্যামিতিটি অনুলিপি করে পেস্ট করতে পারবেন না? আপনার মূল স্তর মধ্যে?


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 এ পরীক্ষা করা হয়েছিল on


আপডেট :

@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 নয়; ১৯২ of এর যুগের কথা ভাবি তখন অনুমান করি
ভিন্স

3

আপনি এটিকে সহজেই একটি নতুন ফাইল হিসাবে সংরক্ষণ করতে পারেন এবং "হিসাবে সংরক্ষণ করুন ..." কথোপকথনে "এট্রিবিউট ক্রিয়েটিপ করুন" বক্সটিতে টিক দিতে পারেন। এটি যা বলে ঠিক তাই করে।

এফআইডি নামের একটি সংখ্যক কাউন্টার কলাম থাকবে, দৃশ্যত শেফিল ফর্ম্যাটের কমপক্ষে একটি বৈশিষ্ট্য প্রয়োজন? আপনি যদি পারেন তবে আরও ভাল কিছু, স্থানিক বা জিওপ্যাকেজ ব্যবহার করুন।


+1, কমপক্ষে একটি বৈশিষ্ট্য থাকতে হবে বলে আপনি ঠিক আছেন। কিন্তু এই একটি খুব সুন্দর এবং সহজ পদ্ধতি আপনি চালাতে পারে হিসাবে ফিল্ড ক্যালকুলেটর এবং Fid সব মান প্রতিস্থাপন NULL
জোসেফ

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

2

.Dbf ফাইলটি ওপেন অফিসে বা অন্যদের সাথে খুলুন এবং ডেটা সরান।
আপনি ফাইলগুলি লুপ করতে পাইথনটি ব্যবহার করতে পারেন এবং শিরোনামগুলি বাদ দিয়ে অন্য সবগুলি সরাতে dbf পাইথন মডিউলটি দেখুন


1
DBase ফাইল উপাদানটিতে শেফফাইল-অজ্ঞান সরঞ্জামগুলি ব্যবহার করা হলে শেফফাইল দুর্নীতির কারণ হতে পারে। যদি উদ্দেশ্যটি ফাঁকা এবং শূন্যগুলি জনবসতিপূর্ণ করা হয়, তবে ডেটা "অপসারণ" সম্ভবত ডাবাসে ফাইল তৈরি করবে যা .shp / .shx এর চেয়ে কম রেকর্ড রয়েছে।
ভিনস

আসলে, তবে আমরা কেবল ডেটা সরিয়ে দিচ্ছি, কোনও ঝুঁকি নেই।
জুলসব্রেকডাউন

না, কাজটি বহুভুজ সংরক্ষণ করা এবং সংশ্লিষ্ট বৈশিষ্ট্যগুলি পরিষ্কার করা, তাই ঝুঁকি খুব বেশি। সম্ভাব্য দুর্নীতির বিষয়ে সতর্ক করে না এমন কোনও উত্তর ঝুঁকিটিকে যথেষ্ট গুরুত্বের সাথে গ্রহণ করে না।
ভিনস

আমি স্বীকার করি এটি একটি শক্ত উপায়, নিয়মিত নয় তবে এটি কার্যকর। স্পষ্টতই, মূল তথ্যটির ব্যাকআপ রাখা স্বাগত।
লিহান

এই বিশেষ ক্ষেত্রে ঝুঁকি এত বড় নয় কারণ সমস্ত ক্ষেত্রে সমস্ত বৈশিষ্ট্য সূচনা করা হয়েছে। অতএব যদি রেকর্ডার ক্রমটি ডিবিএফ ফাইলে পরিবর্তিত হয় তবে এটি কোনও বিশৃঙ্খলা তৈরি করবে না কারণ সমস্ত রেকর্ডের বৈশিষ্ট্যে একই ডেটা রয়েছে। ব্যবহারকারীকে এখনও যত্ন নিতে হবে যে .dbf এর বৈশিষ্ট্যগুলির সংখ্যা .shp এর মতো। যাইহোক, @ ভিনস যেমন লিখেছেন, ব্যবহারকারীদের সতর্ক করা উচিত যে ক) ড সারিগুলির ক্রম পরিবর্তন করে .dbf এ সারি সংখ্যা সাধারণত দুর্নীতিগ্রস্থ এবং অব্যবহৃত শেফফিলের দিকে পরিচালিত করে।
ব্যবহারকারী 30184

2

কিউজিআইএস .dbf ছাড়াই শেপ ফাইল খুলতে পারে।

সুতরাং আপনি কেবল .dbf উপাদান মুছতে এবং .shp এ লোড করতে পারেন, যা কেবল জ্যামিতি নিয়ে আসবে।


এটি একটি ভাল পরামর্শ যদিও আমি ব্যক্তিগতভাবে কোনও সম্পর্কিত ফাইল মুছে ফেলার জন্য নিজেকে বিরত রাখি :)
জোসেফ

1
হ্যাঁ, নামকরণ করা একটি নিরাপদ বিকল্প হতে পারে।
হাইক্কি ওয়েসেন্টো

2

সম্ভবত আপনি এক্সেল দিয়ে * .dbf ফাইলটি সম্পাদনা করতে পারেন।

তারপরে আপনি সমস্ত ক্ষেত্র মুছুন তবে একটি ভূত।

অবশেষে সংরক্ষণ করুন এবং ছেড়ে দিন।

এটি করার আগে * .shp এর সংরক্ষণাগারটি রাখা দরকারী হবে।


অর্থটি স্কিমাটি অক্ষত রাখা বলে মনে হচ্ছে সুতরাং কেবলমাত্র বৈশিষ্ট্যের মানগুলি কোনও ডিফল্ট মানতে সেট করা উচিত। এবং আপনি এক্সেলের সাথে ডিবিএফ ফর্ম্যাটে সংরক্ষণ করতে পারবেন না।
ব্যবহারকারী 30184

2
জ্যামিতি ক্ষেত্রটি কোনও শেফফিলের ডিবেস উপাদানটিতে নেই।
ভিনস

এক্সেল দিয়ে ডিবিএফ সম্পাদনা করার সময় ডাব্লুপিটি ক্ষেত্র নেই।
লিহান

এফআইডি ক্ষেত্রটি .dbf এর সারিগুলিকে জ্যামিতির সাথে সংযুক্ত করে, যা .shp এ সঞ্চিত থাকে। সত্যই, .dbf এর জ্যামিতির সাথে কোন সম্পর্ক নেই। en.wikipedia.org/wiki/Shapefile
mr.adam

1

কিউজিআইএস ২.৮.x এ আপনি নির্দিষ্ট বা সমস্ত ক্ষেত্র থেকেও মুক্তি পেতে পারেন। বৈশিষ্ট্য সারণী খুলুন, সম্পাদনা মোড টগল করুন, "কলাম মুছুন" বোতামটি ক্লিক করুন, আপনার সমস্ত অযাচিত বৈশিষ্ট্য নির্বাচন করুন এবং "ওকে" ক্লিক করুন। সম্পাদনাগুলি সংরক্ষণ করুন।

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