আরকিপি ব্যবহার করে নির্বাচিত সারিগুলি কীভাবে মুছবেন?


10

আমি একটি বৈশিষ্ট্য শ্রেণীর সমস্ত সারি মুছে ফেলতে চাই তবে 1 থেকে 5 পর্যন্ত সারি থাকবে other অন্যদিকে আমি প্রথম পাঁচটি সারি থাকা এবং অন্যদের মুছতে চাই। আমি জানি যে আমাকে অনুসন্ধান কার্সার এবং আপডেট কার্সার ব্যবহার করতে হবে তবে আমি সেগুলি ব্যবহার করতে পারিনি। আমি কীভাবে আরকিপি ব্যবহার করে সারিগুলি মুছতে পারি?


1
"FID"> 4 বৈশিষ্ট্য দ্বারা নির্বাচন করুন এবং আরকিপি ব্যবহার করুন e ডিলিটফিটচার্স
ফেলিক্সআইপি

শুধু কুরোস্টি বাইরে, আপনি কার্সার ব্যবহার করতে পারেন না কেন?
ফাতিহ_দুর

@ ফাতিহ_দুর কারণ আমি আর্কপিতে প্রাথমিক
বিবিজি_জিআইএস

আরকিপি এফসি = আর'সি: c টেমপ্লেট \ টেস্ট.gdb \ tmp 'এক্সপ্রেশন = "আপত্তিযুক্ত> 5" সাথে আরসিপি.ডি.উপডেটকার্সার (fc, "OBJECTID", যেখানে_ক্লেজ = এক্সপ্রেশন) কার্সার হিসাবে: কার্সারে সারি জন্য: যদি সারি [0]> 5: कर्सर.ডিলিটরো ()
কুমার

উত্তর:


24

আপনি আপনার অবস্থার উপর ভিত্তি করে সারিগুলি মুছতে একটি আপডেট কার্সার ব্যবহার করতে পারেন । এই উদাহরণে, OBJECTID> 5 মুছে ফেলা সমস্ত সারি।

import arcpy

fc = r'C:\temp\test.gdb\tmp'

with arcpy.da.UpdateCursor(fc, "OBJECTID") as cursor:
    for row in cursor:
        if row[0] > 5:
            cursor.deleteRow()

বিকল্পভাবে, স্তর নির্বাচন করে অ্যাট্রিবিউট (ডেটা ম্যানেজমেন্ট) ব্যবহার করুন

import arcpy, os

fc = r'C:\temp\test.gdb\tmp'
outws = r'C:\temp\test.gdb'

# Make a layer from the feature class
arcpy.MakeFeatureLayer_management(fc, "fc_lyr")

# Use a SQL query to select OBJECTID 1 - 5
arcpy.SelectLayerByAttribute_management("fc_lyr", "", ' "OBJECTID" <= 5 ')

# Write the selected features to a new feature class
arcpy.CopyFeatures_management("fc_lyr", os.path.join(outws, "fc_out"))

সিস্টেমের সংস্থানগুলি যতক্ষণ অনুমতি দেয় ততক্ষণ মূল বৈশিষ্ট্যগুলি রাখার জন্য +1। একটি প্রশ্ন, যদি ওআইডিগুলি 1 থেকে শুরু না হয় এবং একটানা না হয় তবে কী হবে?
ফাতিহ_দুর

অ্যারন ধন্যবাদ "OBJECTID" নামের পরিবর্তে অবজেক্ট আইডি ফিল্ড টাইপ ব্যবহার করা কি সম্ভব? কারণ কিছু স্তরগুলিতে অবজেক্ট আইডির নাম আলাদা।
বিবিজি_জিআইএস

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

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