টিওসি তে স্তর যুক্ত করতে পাইথন ব্যবহার করুন


13

আমি কিছু সময়ের জন্য টিওসি তে স্তর যুক্ত করার সাথে লড়াই করছি। আমি একক স্তরগুলিতে সংযোজন করেছি তবে একটি ফোল্ডারটি লুপ করে সমস্ত স্তর যুক্ত করতে হবে। শেপফাইলস আমি মোটেও যোগ করতে পারি না। শুধুমাত্র স্তর ফাইল। নীচে আমি যেখানে আছি তার কোড:

for layer in shp_List:
mxd = arcpy.mapping.MapDocument("CURRENT")
dataFrame = arcpy.mapping.ListDataFrames(mxd, "*")[0]

outlayer = lyr
layerfile = os.path.join(base_Folder, lyr + ".lyr")

arcpy.MakeFeatureLayer_management(layer, outlayer)
arcpy.SaveToLayerFile_management(outlayer, layerfile, "ABSOLUTE")
addlayer = arcpy.mapping.Layer(layerfile)
arcpy.mapping.AddLayer(dataFrame, addlayer, "BOTTOM")



#addLayer = arcpy.mapping.Layer(layer)
#arcpy.mapping.AddLayer(dataFrame, addLayer, "BOTTOM")
#arcpy.RefreshTOC()
#arcpy.RefreshActiveView()
del addlayer, mxd

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

উত্তর:


11

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

সুতরাং আমি এই কোডে সংশোধন করব:

mxd = arcpy.mapping.MapDocument("CURRENT")
dataFrame = arcpy.mapping.ListDataFrames(mxd, "*")[0]

for layer in shp_List:

    outlayer = layer + "_lyr" 
    layerfile = os.path.join(base_Folder, layer + ".lyr")

    arcpy.MakeFeatureLayer_management(layer, outlayer)
    arcpy.SaveToLayerFile_management(outlayer, layerfile, "ABSOLUTE")
    addlayer = arcpy.mapping.Layer(layerfile)
    arcpy.mapping.AddLayer(dataFrame, addlayer, "BOTTOM")



    #addLayer = arcpy.mapping.Layer(layer)
    #arcpy.mapping.AddLayer(dataFrame, addLayer, "BOTTOM")
arcpy.RefreshTOC()
arcpy.RefreshActiveView()
    #del addlayer, mxd

স্ক্রিপ্টের একই ফোল্ডারে এমএক্সডি ফাইলগুলির একটি তালিকা লুপ করতে আপনি এটি এটি করতে পারেন:

for mxd_name in mxd_names:
    mxd = arcpy.mapping.MapDocument(os.path.dirname(os.path.realpath(__file__))+"\\"+mxd_name+".mxd")
   dataFrame = arcpy.mapping.ListDataFrames(mxd, "*")[0]

2
আমি @ জিওজেকের মন্তব্য খুঁজছিলাম কিন্তু তারা অনুপস্থিত বলে মনে হচ্ছে। যে কোনও ইভেন্টে, যেমন তার সংশোধিত কোডটি দেখায়, আপনাকে আপনার স্তরগুলির মধ্য দিয়ে চলমান লুপের বাইরে ম্যাপডোকামেন্ট এবং ডেটা ফ্রেম অবজেক্ট তৈরি করতে হবে। অন্যথায় আপনি প্রতিবার আসল মানচিত্র দিয়ে শুরু করছেন।
পলিজিও

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

1
বুঝতে পারছি! ঠিক সব ইন্ডেন্টেশন? স্তরের নামগুলি প্রকাশিত হওয়া এখনও মীস তবে এটি কেবল নান্দনিকতা। আপনার সাহায্যের উঁকি দেওয়ার জন্য অনেক ধন্যবাদ!
অলিভার বুর্দেকিন

1
জিওজেক, এটি বেশ কয়েকটি এমএক্সডির জন্য কীভাবে করবে?
newGIS 11'15

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