Бештар

Танзими Параметри Python Toolbox ба Ҳеҷ, бе интихоби ҷории интихобкардашуда баъд аз он?

Танзими Параметри Python Toolbox ба Ҳеҷ, бе интихоби ҷории интихобкардашуда баъд аз он?


Ман як қуттиҳои асбобҳои python месозам ва он параметри вуруди навъи GPFeatureLayer дорад. Биёед ба он даъват кунемmy_param.

ДарupdateParametersкайmy_param. тағир дода шудааст, арзиши он ба ҷадвали арзишҳо илова карда мешавад. Пас ман мехоҳам танзим кунамmy_param.value = Ҳеҷ, то ки интихоб холӣ карда шавад ва ҳамон арзиш фавран дубора интихоб карда шавад.

Тавре ки он ҳоло истодааст, ғурубmy_param.value = Ҳеҷмаънои онро дорад, ки он қабат дубора интихоб карда намешавад.

Чаро ин ҳодиса рӯй медиҳад ва чӣ гуна ман метавонам ба он чизе, ки мекӯшам амалӣ шавам?

Инҳоянд якчанд намуна барои истифода:

def getParameterInfo (худ): my_param = Параметр (displayName = 'Param My', name = "my_param", datatype = "GPFeatureLayer", parameterType = "Optional", direction = "Input") return [my_param] def updateParameters (self, параметрҳо): my_param = параметрҳо [0] агар my_param.altered: (функсияе, ки my_param.value -ро ба ҷадвали дигар илова мекунад, барои ин мушкилот муҳим нест) my_param.value = Ҳеҷ чиз барнагардад

Ғайр аз санҷишитағир дода шудаастпарчам Ман инчунин арзиши параметрро арзёбӣ мекунам. Шумо метавонед истифода баредvalueAsTextёарзиш, аммоvalueAsTextкаме тезтар аст (хусусан, агар бо қабат кор карда шавад).

def updateParameters (худ, параметрҳо): my_param = параметрҳо [0] агар my_param.altered ва my_param.valueAsText: # (функсияе, ки my_param.value -ро ба ҷадвали дигар илова мекунад, барои ин мушкилот муҳим нест) my_param.value = "return

Акнун арзиши параметр танҳо дар ҳолати барқарор карда мешавад, агар параметр тағир дода шуда бошад ва холӣ набошад.


Ман фаҳмидам, ки чӣ гуна бо он мубориза бурдан лозим аст. Ин як ҳалли комил нест, аммо он кор мекунад. Ба ҷои 'GPFeatureLayer' параметрҳои datatype = 'GPString' -ро таъин кунед ва пас вақте ки шумо мехоҳед онро бо гузоштани арзиши = "холӣ кунед, пас шумо бояд my_param.filter.list = [(option1), (option2),…] -ро барқарор кунед. Ҳамин тавр, усули нависед, ки ҳамаи имконоти дилхоҳатонро дар рӯйхати сатрҳое, ки шумо метавонед my_param.filter.list-ро ба он баргардонед, бар мегардонад. Масалан, ин усули ман аст, ки ҳамаи номҳои қабати хусусиятҳои нуқтаро аз харита бармегардонад:

def point_feature_layer_names (худ): point_layer_names = [] mxd = MapDocument ('CURRENT') df = mxd.activeDataFrame барои lyr дар ListLayers (mxd, ", df): desc = Тавсиф кунед (lyr.name) агар desc.shapeType == ' Нуқта ': point_layer_names.append (lyr.name) del mxd return return point_layer_names

Видеоро тамошо кунед: Python in ArcGIS. Python Toolbox. Новый сезон