martedì 19 giugno 2018

arcpy: Accessing parameters in a script tool


The illustration below shows a script tool dialog box with three parameters: an input workspace, a clip feature class, and an output workspace. All feature classes in the input workspace are clipped to the clip feature class (using the Clip tool) and written to the output workspace.
Script tool parameters
In the illustration above, once parameter values have been entered on the tool dialog box and the OK button is clicked, the script reads the values of the parameters using GetParameterAsText(), as follows:
# Import arcpy site-package
#
import arcpy
from arcpy import env

# Read the parameter values:
#  1: input workspace
#  2: input clip features
#  3: output workspace
#
inWorkspace   = arcpy.GetParameterAsText(0)
clipFeatures  = arcpy.GetParameterAsText(1)
outWorkspace  = arcpy.GetParameterAsText(2)
env.workspace = inWorkspace

sys.argv and arcpy.GetParameterAsText

There are two methods for reading parameters: sys.argv and the arcpy function GetParameterAsText(). Either approach can be used. The example above could be rewritten to use sys.argv:
# Read the parameter values:
#  1: input workspace
#  2: input clip features
#  3: output workspace
#
inWorkspace   = sys.argv[1]
clipFeatures  = sys.argv[2]
outWorkspace  = sys.argv[3]
env.workspace = inWorkspace
sys.argv has limitations on the number of characters it can accept. GetParameterAsText() has no character limit. For this reason alone, it is recommended that you use GetParameterAsText.
sys.argv[0] returns the script file name.

martedì 5 giugno 2018

Python: Convert string to number/float

# consigliato
import re
a="PL Km 274+169 (Privato)" 
valore = str(re.sub("[^0-9,+]", "",a)).replace('+','.').replace(',','.')
print valore

result:
274.169

import string
a="PL Km 274+169 (Privato)" 
all=string.maketrans('+','.')
nodigs=all.translate(all, string.digits)
print  str(float(a.translate(all, nodigs)))

import re
a="PL Km 274+169 (Privato)" 
a.replace("+",".")
value = float(re.sub("[^0123456789\.]","",a))
print value

# consigliato
import re
def converti(a):
 valore = str(re.sub("[^0-9,+]", "",a)).replace('+','.')
 return float(valore)

import string
a="PL Km 274+169 (Privato)" 
all=string.maketrans('+','.')
nodigs=all.translate(all, string.digits)
print  str(float(a.translate(all, nodigs)))

result:
274.169

Best dns 2023

  Best Free & Public DNS Servers Provider Primary DNS Secondary DNS Google 8.8.8.8 8.8.4.4 Control D 76.76.2.0 76.76.10.0 Quad9 9.9.9.9 ...