আর্কজিআইএসে পাইথন টুলবক্স (.pyt) আয়োজনের জন্য গাইডলাইনস


17

আমার একটি কাজের জন্য আমাকে তিনটি সরঞ্জাম (পাইথন স্ক্রিপ্ট) দিয়ে একটি সরঞ্জামবাক্স তৈরি করতে হবে।

সাধারণ টিবিএক্সের পরিবর্তে আমি এটিকে পাইথন টুলবক্স (পাইট) হিসাবে লেখার সিদ্ধান্ত নিয়েছি।

কোডটি সংগঠিত করার জন্য "ভাল" উপায় বাদে সবকিছু পরিষ্কার।

যেহেতু আমার কাছে তিনটি সরঞ্জাম রয়েছে সেগুলি একটি ফাইলে (পিট) সংরক্ষণ করার পক্ষে ভাল উপায় নয়। সুতরাং, আমি সিদ্ধান্ত নিয়েছি প্রতিটি সরঞ্জামকে একটি পৃথক .py ফাইলে রাখব।

এখানে একটি সমস্যা: সার্ভারের জন্য আরকজিআইএসে বিতরণ বা স্থাপনার জন্য পিওয়াইটি দিয়ে বেশ কয়েকটি ফাইল সংগঠিত করার ভাল উপায় কী? আমি কি তাদের পিওয়াইটি ফাইলের সাথে একই স্তরে রেখেছি বা তাদের কোনও উপ-ডিরেক্টরিতে (যেমন "সরঞ্জাম") রেখেছি?

আপনি কি কোনও এসরি নির্দেশিকা বা রেফারেন্স "বিগ পিআইটি টুলবক্স" নমুনার প্রস্তাব দিতে পারেন?

আমি এই বিষয়ে কিছুই খুঁজে পাই না। সংস্করণ 10.0 এ আমি ব্যবহার করেছি যা ToolShare ফোল্ডার কাঠামো বলা হত।

এটি কোডিং শৈলীর আরও প্রশ্ন। কারণ 500-1000 বা আরও লাইন কোডের একটি পিওয়াইটি ফাইল তৈরি করার ধারণাটি আমার কাছে ভাল লাগেনি এবং আমি বিশ্বাস করি এটি "পাইথোনিক" উপায় নয়।


1
"500-1000 বা আরও বেশি কোডের লাইন দিয়ে একটি পিওয়াইটি ফাইল তৈরি করার ধারণাটি আমার কাছে ভাল লাগে না"। অ্যালেক্স তুমি একা নও আজ আমি তাত্ক্ষণিকভাবে বলেছি যে .pt অসুস্থ মনের একটি আবিষ্কার। এবং আমি আফসোস করব না।
রিমিগিজাস পান্কেভিয়াস

উত্তর:


17

আরকজিআইএস ফোরামে এই থ্রেডটি দেখুন । মূলত স্ট্যান্ডার্ড পাইথন মডিউল বা একটি প্যাকেজ কাঠামো ব্যবহার করুন এবং পাইথন টুলবক্সে আপনার সরঞ্জামগুলি আমদানি করুন।

কিছুটা এইরকম:

#  \--SomeDir
#     |  toolbox.pyt
#     \--toolpackage
#        |  __init__.py
#        |  script_a.py
#        |  script_b.py


#----------------------------
#The .pyt file
#----------------------------

import arcpy
import toolpackage.script_a.Tool1 as Tool1
import toolpackage.script_a.Tool2 as Tool2
import toolpackage.script_b.Tool3 as Tool3

class Toolbox(object):
    def __init__(self):
        """Define the toolbox (the name of the toolbox is the name of the
        .pyt file)."""
        self.label = "MultiTool Toolbox"
        self.alias = "mtt"

        # List of tool classes associated with this toolbox
        self.tools = [Tool1, Tool2, Tool3]

আমি খুঁজে পেয়েছি যে এটি আর্কজিআইএস ডেস্কটপে ঠিক আছে, তবে যখন কোনও অর্কিজিআইএস সার্ভারের উদাহরণে কোনও জিওপ্রসেসিং পরিষেবা প্রকাশের পরে এটি .pyt ফাইল বাদে সমস্ত স্ক্রিপ্ট এবং প্যাকেজ হারিয়ে ফেলে। স্ক্রিপ্টগুলি ম্যানুয়ালি মোতায়েনের মধ্যে ফেলে দেওয়া সম্ভব হতে পারে তবে এটি জটিলতা বাড়ে।
Gnat

3
@ গনাট হ্যাঁ, লূকের চিন্তাভাবনাগুলিও আমার অভিজ্ঞতা। ইএসআরআইয়ের প্রকাশনা পরিষেবাগুলি from x import yশৈলী আমদানির কোনওটিকেই স্বীকৃতি দেয় না । (এটি পুরোপুরি হাস্যকর, যাইহোক)) তবে আমি বিশ্বাস করি আপনি নিজের self.toolsসংজ্ঞাটি একা রেখে ব্যবহার করতে পারবেন import toolpackage.script_a.Tool1 as Tool1
jpmc26

1
উপনামটি সংক্ষিপ্ত হওয়া উচিত এবং কেবলমাত্র অক্ষর থাকতে হবে, যেমন স্ব.লিয়াস = "এমটিটি"
কার্টিস মূল্য

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

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