আর্কপি ব্যবহার করে প্রোগ্রামমেটে যোগদানের শনাক্ত করা হচ্ছে?


10

আমার কাছে কিছু পাইথন কোড রয়েছে যা একটি আর্কম্যাপ প্রকল্পের মধ্যে থেকে চালু করা হয়েছে। আমার কোডটি চালানোর জন্য ব্যবহারকারীরা প্রকল্পে তৈরি হওয়া যে কোনও ব্যক্তিকে অবশ্যই সরিয়ে ফেলতে হবে। দুর্ভাগ্যক্রমে, যে কোডটি একটি জোড়কে সরিয়ে দেয় ... আরকিপি.আরমিওজেইন_ম্যানেজমেন্ট ("স্তর 1", "স্তর 2") ... এছাড়াও আমার অ্যাপ্লিকেশনটির জন্য সমালোচিত কিছু স্তর বৈশিষ্ট্যগুলি ভেঙে দেয় (হাইলাইটেড ক্ষেত্রগুলি, কেবল পঠনযোগ্য ক্ষেত্রগুলি ইত্যাদি)।

যদি আর্কম্যাপে লেয়ারটি ডান ক্লিক করে এবং "যোগ যোগ করুন" নির্বাচন করে যোগ দেওয়াগুলি সরানো হয় তবে স্তর বৈশিষ্ট্য অক্ষত থাকবে।

যদি আমি সনাক্ত করতে পারি যে আমার কোডের মধ্যে থেকে একটি জয়েন উপস্থিত রয়েছে, আমি কেবল কোডটি প্রস্থান করব এবং একটি বার্তা প্রদর্শন করব যা কোডটি চালানোর চেষ্টা করার আগে ব্যবহারকারীকে ম্যানুয়ালি তাদের যোগদান করতে হবে। সুতরাং… প্রোগ্রামিং হিসাবে একটি যোগদান শনাক্ত করা যাবে?


আমি আরকিপির মাধ্যমে কীভাবে সরানযোনটি করা সমস্যার কারণ হিসাবে কিছুটা হারিয়েছি lost এটি কেবল পঠনযোগ্য ক্ষেত্রটিকে নষ্ট করার বিষয়ে কীভাবে চলছে? এছাড়াও, আরক্যাম্যাপে সরান যোগ সরঞ্জামটি ব্যবহার করা কি একই সমস্যার কারণ হয়ে দাঁড়ায়?
নাথানুস

সম্ভবত এটি মোকাবেলার আরেকটি উপায় হ'ল আপনার অজগর কোডটি যোগদানের সংবেদনশীল হতে হবে?
ড্যান এস

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

@ ড্যান এস - আমি আমার কোডে সন্নিবেশ কর্সার এবং এগুলি ব্যবহার করছি। আমি কীভাবে আমার কোডকে যোগদানের সাথে সংবেদনশীল তৈরি করতে যাব সে সম্পর্কে আমার কোনও ধারণা নেই।
ব্রায়ানপিসলি

1
ভাল, এটি জিজ্ঞাসা মূল্য ছিল। ;) forums.esri.com/Thread.asp?c=93&f=1729&t=293173 বোঝা যাচ্ছে যে আপনি একটি টেবিলের নাম অনুসারে কলামের নাম উপস্থাপন করে একটি যুক্ত টেবিলের মানগুলি আপডেট করতে সক্ষম হতে পারেন; সম্ভবত এটি একটি anোকান জুড়ে কাজ করবে?
ড্যান এস

উত্তর:


8

খুব খারাপ আরকি- লায়ার ক্লাসে জাস সম্পত্তি নেই । আমি মনে করি আপনি যদিও ক্ষেত্রের নামগুলি দেখেই একটি যোগদানের জন্য পরীক্ষা করতে পারেন। একটি ফাইল জিওডাটাবেজে ডেটা জন্য ধারণার একটি সহজ প্রমাণ এখানে:

import arcpy, arcpy.mapping as arc

def joinCheck(lyr):
  fList = arcpy.Describe(lyr).fields
  for f in fList:
    if f.name.find(lyr.datasetName) > -1:
      return True
  return False

arcpy.env.workspace = r'<path_to_your_gdb>'
mxd = arc.MapDocument(r'<path_to_your_mxd>')
lyrs = arc.ListLayers(mxd)
for lyr in lyrs:
  # ignore group layers
  if not lyr.isGroupLayer:
    hasJoin = joinCheck(lyr)
    if hasJoin:
      print '\nFound a join: %s.' % lyr.datasetName
    else:
      print '\nNo join found on %s.' % lyr.datasetName

এটি আশাব্যঞ্জক দেখাচ্ছে! এটি কী করছে তার গোশত আমি বুঝতে পারি না: "if f.name.find (lyr.datasetName)> -1:" তবে আমি কয়েক দিনের মধ্যে এটি চেষ্টা করে আবার রিপোর্ট করব (আমি তুষারপাত করতে চলেছি) ইন এবং শক্তি হারাবেন!) ... ধন্যবাদ!
ব্রায়ানপিসলি

সাহায্য করে আনন্দ পেলাম. পাইথন স্ট্রিংগুলির জন্য বিল্ট ইন ফাইন্ড পদ্ধতিটি দেখুন: ডকস.পিথথন.আর.লিবেরি / স্ট্রিং এইচটিটিএমএল এবং আরকি ক্ষেত্রের অবজেক্টগুলির জন্য ডক: হেল্প.কার্গিস.com / en / arcgisdesktop / 10.0 / help / index.html#/ ক্ষেত্র /… আমি বলব যে এই কোডটি আপনার ডেটা দিয়ে একটি শট দিন এবং দেখুন এটি কার্যকর হয় কিনা।
ডেরেক সুইংলে

1
আমি এইটির সাথে খুব অনুরূপ একটি ফাংশন ব্যবহার করে শেষ করেছি এবং এটি দুর্দান্ত কাজ করে ... আমার নথির প্রতিটি স্তরের জন্য, আমি ক্ষেত্রের তালিকার মধ্য দিয়ে লুপ করি এবং ক্ষেত্রের নামটিতে "ডট" আছে কিনা তা নির্ধারণ করার জন্য পাইথন ব্যবহার করি।
ব্রায়ানপিসলি

1

আমি মনে করি আপনি দেখতে পাবেন যে জিপি অবজেক্টগুলির সাথে এটি করার কোনও বুলেটপ্রুফ উপায় নেই, আপনাকে আরকোবজেক্টস এবং কমপাইট ব্যবহার করতে হবে। এখানে স্ট্যান্ডার্ড জিপি সরঞ্জাম / অবজেক্টের সাথে যোগদানের জন্য পরীক্ষা করতে অসুবিধা সম্পর্কে ESRI ফোরামগুলি থেকে কিছু আলোচনা করা হয়েছে: https://geonet.esri.com/thread/20317


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