Advertisement
Guest User

Untitled

a guest
Apr 30th, 2016
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.64 KB | None | 0 0
  1. import arcpy
  2.  
  3. class Toolbox(object):
  4. def __init__(self):
  5. self.label = "Station Offset toolbox"
  6. self.alias = "StationOffset"
  7.  
  8. # List of tool classes associated with this toolbox
  9. self.tools = [CalculateStationOffset]
  10.  
  11. class CalculateStationOffset(object):
  12. def __init__(self):
  13. self.label = "Calculate Station Offset"
  14. self.description = "Calculate Station Offset"
  15.  
  16. def getParameterInfo(self):
  17. #Define parameter definitions
  18.  
  19. # Input Features parameter
  20. in_features = arcpy.Parameter(
  21. displayName="Input Features",
  22. name="in_features",
  23. datatype="GPFeatureLayer",
  24. parameterType="Required",
  25. direction="Input")
  26.  
  27. in_features.filter.list = ["Point"]
  28.  
  29. # Alignment parameter
  30. in_alignment = arcpy.Parameter(
  31. displayName="Alignment",
  32. name="in_alignment",
  33. datatype="GPFeatureLayer",
  34. parameterType="Required",
  35. direction="Input")
  36.  
  37. in_alignment.filter.list = ["Polyline"]
  38.  
  39. # Derived Output Features parameter
  40. out_features = arcpy.Parameter(
  41. displayName="Output Features",
  42. name="out_features",
  43. datatype="GPFeatureLayer",
  44. parameterType="Derived",
  45. direction="Output")
  46.  
  47. out_features.parameterDependencies = [in_features.name]
  48. out_features.schema.clone = True
  49.  
  50. parameters = [in_features, in_alignment, out_features]
  51.  
  52. return parameters
  53.  
  54. def isLicensed(self):
  55. return True
  56.  
  57. def updateParameters(self, parameters):
  58. if parameters[0].altered:
  59. parameters[1].value = arcpy.ValidateFieldName(parameters[1].value, parameters[0].value)
  60. return
  61.  
  62. def updateMessages(self, parameters):
  63. return
  64.  
  65. def execute(self, parameters, messages):
  66. fc_pnt = parameters[0].valueAsText
  67. fc_line = parameters[1].valueAsText
  68.  
  69. # Fields
  70. fields = ['SHAPE@', 'MEAS', 'Distance', 'NEAR_X', 'NEAR_Y', 'Orient', 'POINT_X', 'POINT_Y', 'NEAR_ANGLE']
  71.  
  72. # Get line geometry - assumes only one feature in feature class
  73. polyline = arcpy.da.SearchCursor(fc_line, "SHAPE@").next()[0]
  74.  
  75. # Loop over the point feature class
  76. with arcpy.da.UpdateCursor(fc_pnt, fields) as cursor:
  77. for row in cursor:
  78. dist=polyline.queryPointAndDistance(row[0], False)
  79. row[1] = dist[1]
  80. row[2] = dist[2]
  81. row[3] = dist[0].centroid.X
  82. row[4] = dist[0].centroid.Y
  83. if dist[3] == 0:
  84. row[5]="Left"
  85. else:
  86. row[5]="Right"
  87. row[6] = row[0].centroid.X
  88. row[7] = row[0].centroid.Y
  89. print(dist)
  90. cursor.updateRow(row)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement