আর্কপি স্ক্রিপ্ট ব্যবহার করে বৈশিষ্ট্য স্তর সরানো হচ্ছে?


13

আমার একটি আরকিপি ভিত্তিক স্ক্রিপ্ট রয়েছে যেখানে আমি দুটি স্তরকে ছেদ করার চেষ্টা করছি যেখানে অন্য স্তরের একটি স্তরটির সেন্ট্রয়েড থাকতে হবে।

যেহেতু আমার জানা দরকার যে একটি স্তর (নীচে ফিচার_লায়ার) এর মধ্যে অন্যটির সেন্ট্রয়েড অন্তর্ভুক্ত রয়েছে, তাই আমি আরকিপি ব্যবহার করছি .সিলিটলায়ারবাইলোকেশন_ম্যানেজমেন্ট () সরঞ্জামটি।

আমার কোনও মানচিত্র ডকুমেন্ট (* .mxd) খোলা নেই তাই এটি করার জন্য, আমাকে এতে ফিড দেওয়ার জন্য মেক ফিচার লেয়ার ব্যবহার করতে হবে।

ডকুমেন্টেশনে উল্লেখ করা হয়েছে যে প্রোগ্রামটি প্রস্থান করার সাথে সাথে বৈশিষ্ট্য স্তরটি অদৃশ্য হয়ে যাবে, তবে নীচের মতো লুপে আমার কাছে এটি থাকায় এটি খুব শীঘ্রই অদৃশ্য হওয়া প্রয়োজন I

for feature_class in large_list_of_feature_classes:
    some_function(feature_class)

def some_function():
    feature = "{path to feature class}"
    feature_layer = "feature_layer"
    HUCs_layer = "all_HUCs" #HUCs being Hydrologic Unit Codes

    arcpy.MakeFeatureLayer_management(feature, feature_layer)
    arcpy.MakeFeatureLayer_management(feature, HUCs_layer)      
    arcpy.SelectLayerByLocation_management(HUCs_layer, "HAVE_THEIR_CENTER_IN", feature_layer, selection_type="NEW_SELECTION")

    arcpy.CopyFeatures_management(HUCs_layer, selection_name)

আমি বৈশিষ্ট্য স্তরগুলি মুছে ফেলার জন্য একটি ফাংশন সন্ধান করছি এবং আমি এটির সন্ধান করতে সক্ষম হইনি।

আমি উপলব্ধি করেছি যে আমি সেখানে কিছু প্রকার গণনা করতে পারি বা প্রোগ্রামটির ক্ষেত্রের মধ্যে প্রত্যেককে অনন্য করে তুলতে পারি, তবে বৈশিষ্ট্য স্তরগুলি সরানোর কোনও উপায় না থাকলে এটি আদর্শ নয়।

উত্তর:


21

মোছার সরঞ্জামটিকে টিওসি থেকে অপসারণ করতে কোনও বৈশিষ্ট্য স্তরের নামটি গ্রহণ করা উচিত।

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

এবং সিনট্যাক্স বিভাগের অধীনে ডেটা প্রকারগুলি তালিকাভুক্ত করা হয় যা মুছে ফেলা যায়:

ডেটা উপাদান; চিত্রলেখ; স্তর ; টেবিল দেখুন


বৈশিষ্ট্য স্তরটি সরানো হয়েছে কিনা তা নিশ্চিত হওয়ার জন্য কেন আমাকে মুছে ফেলতে সরঞ্জামটি দুটি বার ব্যবহার করা উচিত তা আমি জানি না এবং বৈশিষ্ট্য স্তরটি সত্যই সরানো না সত্ত্বেও কখনও কখনও এই ফাংশনটি গিমমে ত্রুটিগুলি হয়, যখন আমি বৈশিষ্ট্য স্তর মুছতে এবং তৈরি করার চেষ্টা করি তখন এই ত্রুটিগুলি ঘটে একই নাম সহ
জিওজেক

2
এটি সত্যিকারের সাথে সম্পর্কিত নয়, তবে এটি জিওপ্রেসেসিংয়ের কাজটি করে - এটি প্রতিটি স্তরের একটি অনন্য নাম প্রত্যাশা করে কারণ এটি তাদেরকে এভাবেই বোঝায়।
জেসন শিয়েরার

1
সম্ভবত মুছে ফেলুন টুল ব্যবহার একটি স্তর মুছে ফেলার জন্য থেকে TOC ভাল এ নথিভুক্ত করা যায়নি resources.arcgis.com/en/help/main/10.1/index.html#//... - এটা বলছেন লেয়ার যে কোনো ডেটা প্রকার মুছে ফেলা হবে, তবে স্তরগুলিতে অন্য কোনও রেফারেন্স তৈরি করা হয়নি এবং এর খোলার বাক্যটি "ডিস্ক থেকে স্থায়ীভাবে ডেটা মুছবে" অনেকগুলি ব্যবহারকারীকে একটি স্তর অপসারণ করতে মুছে ফেলার চেষ্টা থেকে দূরে সরিয়ে দেবে।
পলিজিও

7

আপনি টি.সি.সি থেকে একটি স্তর অপসারণ করতে আরকিপি.ম্যাপিং.কে সরান লেয়ারের আবেদন করতে পারেন।

মানচিত্র নথিতে (.mxd) একটি ডেটা ফ্রেমের মধ্যে একটি স্তর সরিয়ে ফেলার ক্ষমতা সরবরাহ করে।


এই পরামর্শের জন্য ধন্যবাদ - আমি স্পষ্ট করিনি যে আমি ম্যাপিং প্রসঙ্গে বাইরে এটি করার জন্য কিছু খুঁজছিলাম - এটি কেবল একটি বিশ্লেষণ স্ক্রিপ্ট এবং আমার কাছে একটি স্পষ্ট স্পষ্ট টিওসি নেই (বা কমপক্ষে জানি না)। নীচে জেসনের পরামর্শটি যদিও কাজ করেছে। ধন্যবাদ! এটি পরে আমার জন্য একটি দরকারী ফাংশন হবে।
নিক্সান

3

আমি স্তরগুলি অপসারণ করতে এটিই ব্যবহার করি।

আরসিপি.ম্যাপিং.রেভ লেয়ার ("ডেটাফ্রেম", "স্তর নাম")

বা লুপিং:

mxd = arcpy.mapping.MapDocument("CURRENT")
for df in arcpy.mapping.ListDataFrames(mxd):
    for lyr in arcpy.mapping.ListLayers(mxd, "", df):
        arcpy.mapping.RemoveLayer(df, lyr)

3

mxd.save()আপনি যদি কোনও মানচিত্র নথি ব্যবহার করেন CURRENTযা স্তরটি স্থির থাকে না তা নিশ্চিত করে না Use এছাড়াও, আপনার স্ক্রিপ্টে একটি মুদ্রণ বিবৃতি যুক্ত করুন:

mxd = arcpy.mapping.MapDocument("CURRENT")
df = arcpy.mapping.ListDataFrames(mxd)[0]

for i in arcpy.mapping.ListLayers(mxd , "TerraColor_SanFrancisco_US_15m.tif"):
    print "Deleting layer", i
    arcpy.mapping.RemoveLayer(df , i)

arcpy.RefreshActiveView()

এটি মুছে ফেলার জন্য কোনও স্তর খুঁজে পেয়েছে তা নিশ্চিত করার জন্য।


-1

এটা চেষ্টা কর:

import arcpy
from arcpy import env
env.workspace = r"F:\Projects\ohad\derech_atankim\gis"   
for mxdname in arcpy.ListFiles("*.mxd"):
    print mxdname 
    mxd = arcpy.mapping.MapDocument(r"F:\Projects\ohad\derech_atankim\gis\\" + mxdname)
    df = arcpy.mapping.ListDataFrames(mxd, "Layers")[0]
    for lyr in arcpy.mapping.ListLayers(mxd, "", df):
        if lyr.dataSource == r"F:\Projects\ohad\derech_atankim\gis\layers\roads.lyr":
            arcpy.mapping.RemoveLayer(df, lyr)
    mxd.save()
del mxd
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.