ArcGIS'te Python Araç Kutularını (.pyt) düzenleme yönergeleri


17

Görevlerimden biri için üç araçla (Python komut dosyaları) bir Araç Kutusu oluşturmam gerekiyor.

Sıradan tbx yerine Python Toolbox (pyt) olarak yazmaya karar verdim.

Kodu düzenlemenin "iyi" yolu dışında her şey açıktır.

Üç aracım olduğu için bunları bir dosyada (pyt) saklamanın iyi bir yolu değil. Bu yüzden, her aracı ayrı bir .py dosyasında tutmaya karar verdim.

Sorun şu: ArcGIS for Server üzerinde dağıtım veya dağıtım için PYT ile birkaç dosya düzenlemenin iyi yolu nedir? Bunları PYT dosyasıyla aynı seviyede tutmalı mıyım yoksa bir alt dizine mi yerleştirmeliyim (yani "Araçlar")?

Herhangi bir Esri kılavuzu veya "büyük PYT araç kutusu" örneği önerebilir misiniz?

Bu konuda hiçbir şey bulamadım. 10.0 sürümünde kullandığım ToolShare klasör yapısı vardı.

Bu daha çok kodlama tarzı sorunudur. Çünkü 500-1000 veya daha fazla kod satırı ile bir PYT dosyası oluşturma fikri bana iyi gelmiyor ve bunun "pitonik" bir yol olmadığına inanıyorum.


1
"500-1000 veya daha fazla kod satırıyla bir PYT dosyası oluşturma fikri bana iyi gelmiyor". Yalnız değilsin Alex. Bugün derhal .pyt'nin hasta aklın bir icadı olduğunu söyledim. Ve pişman olmayacağım.
Remigijus Pankevičius

Yanıtlar:


17

ArcGIS forumundaki bu konuya bir göz atın . Temel olarak sadece standart python modülleri veya bir paket yapısı kullanın ve araçlarınızı python araç kutusuna alın.

Gibi bir şey:

#  \--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]

Bunun ArcGIS Desktop'ta işe yaradığını gördüm, ancak bir ArcGIS Server örneğine bir coğrafi işleme servisi yayınlarken .pyt dosyası dışında tüm komut dosyalarını ve paketleri kaybediyor. Komut dosyalarını el ile konuşlandırmaya bırakmak mümkün olabilir, ancak bu karmaşıklığı artırır.
Gnat

3
@Gnat Evet, Luke'un düşünceleri de benim deneyimim. ESRI'nin yayıncılık hizmetleri from x import ystil ithalatlarının hiçbirini tanımıyor . (Bu arada, bu tamamen saçma.) Ancak, self.toolstanımınızı yalnız bırakıp kullanabileceğinize inanıyorum import toolpackage.script_a.Tool1 as Tool1.
jpmc26

1
Takma ad kısa olmalı ve yalnızca harf içermelidir, yani self.alias = "mtt"
Curtis Price

2
Araç kodumda değişiklik yapmak için bir saat geçirdim ve Arcmap'deki araç gui'sine yansıtıldığı için bunu paylaşmak istiyorum. Kodunuzda pyt dosyasının dışında değişiklik yaparsanız ve kodun araç gui'sine yansıtıldığını görmek isterseniz ArcMap / Catalogue'u yeniden başlatmanız gerekir. Araç kutusunda yenile vurabilirsiniz, bu sadece pyt'ın kendisini yeniden yüklüyor gibi görünüyor. Diğer koddaki değişiklikleri bulamaz.
TurboGus

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.