পাইথন / আরকপাই ব্যবহার করে আর্কজিআইএস ডেস্কটপে লেয়ার হিসাবে শেফফাইল বা ফিচার ক্লাস যুক্ত করা হচ্ছে?


20

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

সেরা আমি এতদূর কি করতে পারেন একটি যোগ হয় লেয়ার বর্তমান মানচিত্র ফাইল নিম্নলিখিত ব্যবহার ( "addLayer" একটি স্তর ফাইল অবজেক্ট):

def AddLayerFromLayerFile(addLayer):
 import arcpy
 mxd = arcpy.mapping.MapDocument("CURRENT")
 df = arcpy.mapping.ListDataFrames(mxd, "Layers")[0]
 arcpy.mapping.AddLayer(df, addLayer, "AUTO_ARRANGE")
 arcpy.RefreshActiveView()
 arcpy.RefreshTOC()
 del mxd, df, addLayer

যাইহোক, আমার কাঁচা ডেটা সর্বদা শেফফাইল হতে চলেছে, তাই এগুলি খুলতে আমার সক্ষম হওয়া দরকার। (সমতুল্য: কোনও শেপফাইলটি একটি স্তর ফাইলকে না খোলায় রূপান্তর করুন, তবে আমি এটি না করতে পছন্দ করব)।

উত্তর:


30

আমি যা কাজ পেয়েছি তা এখানে:

import arcpy
from arcpy import env

# get the map document
mxd = arcpy.mapping.MapDocument("CURRENT")

# get the data frame
df = arcpy.mapping.ListDataFrames(mxd,"*")[0]

# create a new layer
newlayer = arcpy.mapping.Layer(path_to_shapefile_or_feature_class)

# add the layer to the map at the bottom of the TOC in data frame 0
arcpy.mapping.AddLayer(df, newlayer,"BOTTOM")

এই কোডটি নতুন কোডটি যে ডাটাফ্রেমে (ভেরিয়েবল ডিএফ) রাখবে তা হ'ল মানচিত্র নথির প্রথম ডাটাফ্রেম। এছাড়াও নোট করুন যে এই কোডটি টিওসির নীচে একটি নতুন স্তর হিসাবে ডেটা যুক্ত করে। আপনি অন্যান্য ব্যবস্থা বিকল্পগুলিও ব্যবহার করতে পারেন যা "AUTO_ARRANGE" এবং "শীর্ষ"।


2
ডেটাফ্রেম নির্দিষ্ট করার জন্য আরেকটি বিকল্প হ'ল সক্রিয় ডাটাফ্রেমটি ব্যবহার করা: ডিএফ = আরসিপি.ম্যাপিংয়ের পরিবর্তে ডিএফ = এমএক্সডি.একটিভ ডেটা ফ্রেম ..লিস্টডাটা ফ্রেমস (এমএক্সডি) [0] - এছাড়াও, আপনাকে তালিকাডেটফ্রেমে কলটিতে "*" দরকার নেই ।
জবল্ক

10

মেক বৈশিষ্ট্য লেয়ার (তথ্য ম্যানেজমেন্ট) http://help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#//00170000006p000000.htm

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

arcpy.MakeFeatureLayer_management('r:/temp/a.shp','test') বিকল্প পাঠ


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

আপনি কি এসপি 1 ইনস্টল করেছেন?
জেসন শায়িয়ার 21

1
@ টম ডাব্লু: আমি অজগর এবং আরকি নিয়ে বেশ সুন্দর। তবে আমি মনে করি না একটি স্তর ফাইলটি শারীরিকভাবে তৈরি করা হয়েছে। আপনি যদি একটি স্তর ফাইল চান, আপনাকে এটি তৈরি করতে হবে এবং পরামিতি হিসাবে স্তরটির নামটি পাস করতে হবে: arcpy.SaveToLayerFile_management('test', 'r:/temp/evilmonkey.lyr', 'ABSOLUTE') আপনি যদি স্তরটি সংরক্ষণ করতে না চান এবং আপনি কেবল এটি চলে যেতে চান arcpy.Delete_management('test'),।
জে কামিনস

@ টম ডাব্লু: আপনার মন্তব্যটি কেবল পুনরায় পড়ুন। আপনি কি পৃথক অজগর শেল (তাত্ক্ষণিক উইন্ডো নয়) থেকে আর্কম্যাপে একটি স্তর যুক্ত করার চেষ্টা করছেন? আমি ভাবিনি যে আপনি এটি করতে পারবেন (তবে আমি এটির কোনও অধিকার নেই ... সম্ভবত আপনি পারেন)।
জে কামিন্স

1
@ টম ডাব্লু: আমি সেই স্তর বাগ সম্পর্কে জানি, যে কারণে এসপি 1 ইনস্টল করা হয়েছে কিনা তা নিশ্চিত করেছিলাম। আপনি বর্ণনার সাথে সাথে টিওটিতে লেয়ার যুক্ত করতে আপনার স্ক্রিপ্টের একটি উত্পন্ন আউটপুট বৈশিষ্ট্য স্তর থাকতে হবে এবং আপনার তৈরি স্তরের নামের মান নির্ধারণ করতে হবে। আর্কম্যাপে জিপি সরঞ্জামগুলি জিপি সরঞ্জামগুলিতে স্পিউরিয়াস স্তরগুলি (টেম্প এফসি ইত্যাদি) থেকে টিওকে রক্ষা করার চেষ্টা করে যাতে আপনাকে স্ক্রিপ্ট সরঞ্জামটির প্যারামগুলিতে এমন সংজ্ঞা দেওয়া দরকার যে আপনার নতুন বৈশিষ্ট্য স্তরটি টিওসিতে থাকার সময় চলছে। স্তরটি যেখানে ডিস্কে বাস করছে সম্ভবত এফসির ডেটা উত্স, সুতরাং আপনার কর্মক্ষেত্রের লেয়ারের মতো একটি বৈশিষ্ট্যযুক্ত ক্লাস।
জেসন শিয়েরার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.