ArcGIS Geoprocessing Results penceresinde kullanıcıya yükseltilen hata mesajlarını mı görüntülüyorsunuz?


13

Özel bir kural dışı durumdan alınan yazdırma ifadeleri Coğrafi İşleme Sonuçları penceresinde görüntülenebilir mi?

Bir kullanıcıdan iki girdi alan, ilişkili özelliği bulan, daha sonra özelliğe zum yapan bulduğum bir komut dosyasını değiştirdim. Araç iyi çalışıyor. Girişleri otomatik olarak doğru miktarda karaktere sahip olacak şekilde biçimlendirerek daha kullanıcı dostu hale getirmeye çalışıyorum. Kullanıcıya giriş kutusunda çok fazla karakter olup olmadığını söyleyen bir ileti kutusu ekledim, ancak bunu oluşturmak için easygui kullandım (GUI'ler için bir Python kütüphanesi). Bunun yerine, mesajı görüntülemek için gp sonuçları penceresini kullanmak istiyorum. Ben zammı ve dışında ifadeleri doğru biçimlendirilmiş olduğunu düşündüm ama araç çalışır ve benim hata mesajı değil tamamlanmış bir sonuç elde. Esri'den arcpy yardımını denedim ve aradığım sonuçları alamadım.

class BadInputError(Exception):
    pass

# Import arcpy module
import arcpy, sys, string
from arcpy import env

try:
    def checkInput(inp):
        mNCount = len(inp)
        trigger = 0
        while trigger == 0:
            if  mNCount == 4:
                trigger = 1
            elif mNCount > 4:
                inp = ''
                trigger = -1
                raise BadInputError
            elif mNCount == 3:
                inp = '0' + inp
                trigger = 1
            elif mNCount == 2:
                inp = '00' + inp
                trigger = 1
            elif mNCount == 1:
                inp = '000' + inp
                trigger = 1
        return inp


    # Script arguments
    MapNumber = arcpy.GetParameterAsText(0)
    MapNumber = checkInput(MapNumber)
    ParcelNumber = arcpy.GetParameterAsText(1)
    ParcelNumber = checkInput(ParcelNumber)

    Expression = (""" "MAP" = '%s' AND "PARCEL" = '%s'""") %(MapNumber,ParcelNumber)

    # Local variables:
    GISData_GISDATA_CAD_PARCEL2009_WHOLE = "Database Connections\\GISUser.sde\\GISData.GISDATA.CAD_PARCEL2009_WHOLE"
    Output_Layer_Name = Expression
    Output_Layer = "ParcelSelection"

    # Process: Select Layer By Attribute
    arcpy.SelectLayerByAttribute_management("2009 Parcel Points", "NEW_SELECTION", Expression)

    # Zoom to Selected Features
    mxd = arcpy.mapping.MapDocument('CURRENT') 
    df = arcpy.mapping.ListDataFrames(mxd, "Layers") [0] 
    df.zoomToSelectedFeatures()
    df.scale = 8000
    arcpy.RefreshActiveView()

except BadInputError:
    print "Too many characters.  Run again"

except Exception, e:
    # If an error occurred, print line number and error message  
    import traceback, sys
    tb = sys.exc_info()[2]
    print "Line %i" % tb.tb_lineno
    print e.message

Yanıtlar:


13

Sanırım arcpy.AddMessage arıyorsunuz .

Mesaj yazmak için dört ArcPy işlevi aşağıdaki gibidir:

  • AddMessage ("mesaj") - Genel bilgilendirici mesajlar için (önem derecesi = 0).
  • AddWarning ("mesaj") - Uyarı için (önem derecesi = 1).
  • AddError ("mesaj") - Hatalar için (önem derecesi = 2).
  • AddIDMessage (MessageType, MessageID, AddArgument1, AddArgument2) —Hem hatalar hem de uyarılar için kullanılır (MessageType argümanı önem derecesini belirler).

1
İşte bu. Teşekkürler. Ben arcpy kullanacağımı düşünüyorum.AddError
joe
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.