Advertisement
wtgeographer

ArcPY add on

Feb 13th, 2016
104
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 5.90 KB | None | 0 0
  1. import arcpy
  2. import pythonaddins
  3.  
  4. class Add(object):
  5.     """Implementation for AP_Zoom_addin.button_0 (Button)"""
  6.     def __init__(self):
  7.         self.enabled = True
  8.         self.checked = False
  9.     def onClick(self):
  10.         mapdoc = "CURRENT"
  11.         mxd = arcpy.mapping.MapDocument(mapdoc)
  12.  
  13.         for df in arcpy.mapping.ListDataFrames(mxd):
  14.             for reflayer in arcpy.mapping.ListLayers(mxd,"Ap_Map_Numbers", df):
  15.                 symbologyLayer = r'G:\Texas\Potter-Randall\Database\Ownership.lyr'
  16.                 hazards = arcpy.mapping.ListLayers(mxd, "Zones_A_AE", df)[0]
  17.                 #create a search cursor to get relevant information about a parcel
  18.                 sc = arcpy.SearchCursor(reflayer)
  19.                 #for loop to get the selected data
  20.                 for row in sc:
  21.                     #select the relevant fields to be put on the map
  22.                     ap = row.getValue("MAP_NUMBER")
  23.                     insertLayer = arcpy.mapping.Layer(r'G:\Texas\Potter-Randall\Database' + '\\' + str(ap) + '\\' + str(ap) + ".gdb" + '\\' + str(ap))
  24.                     arcpy.env.addOutputsToMap = False
  25.                     arcpy.ApplySymbologyFromLayer_management(insertLayer, symbologyLayer)
  26.                     arcpy.mapping.InsertLayer(df, reflayer, insertLayer, "BEFORE")
  27.                     hazards.visible = True
  28.                     df.zoomToSelectedFeatures()
  29.                     arcpy.RefreshActiveView()
  30.  
  31. class Layout(object):
  32.     """Implementation for ParcelMapperAddin_addin.Layout (Button)"""
  33.     def __init__(self):
  34.         self.enabled = True
  35.         self.checked = False
  36.     def onClick(self):
  37.         #set the map document reference
  38.         mxd = arcpy.mapping.MapDocument("CURRENT")
  39.         #set the dataframe reference using the map document and the first data frame in the list
  40.         df = arcpy.mapping.ListDataFrames(mxd)[0]
  41.         #set the layer reference using the map document reference and the first layer in the list of layers
  42.         layer = arcpy.mapping.ListLayers(mxd)[0]
  43.         #heading of the map
  44.         map_title = "Ap_Map"
  45.         #create a search cursor to get relevant information about a parcel
  46.         sc = arcpy.SearchCursor(layer)
  47.         #for loop to get the selected data
  48.         for row in sc:
  49.             #select the relevant fields to be put on the map
  50.             Block_Number = row.getValue("BLOCK_NUMB")
  51.             Lot_number = row.getValue("LOT_NUMBER")
  52.             Job_Number = row.getValue("Job_Num")
  53.             Job_Number2 = row.getValue("Job_Num2")
  54.             Job_Number3 = row.getValue("Job_Num3")
  55.             Address =row.getValue("ADDRESS_1")
  56.             City =row.getValue("m_city")
  57.             State =row.getValue("m_state")
  58.             Zip =row.getValue("m_zip")
  59.  
  60.         #text element of the map
  61.         elm = arcpy.mapping.ListLayoutElements(mxd, "TEXT_ELEMENT", "Heading")[0]
  62.         elmBlockNumber = arcpy.mapping.ListLayoutElements(mxd, "TEXT_ELEMENT", "BlockNumber")[0]
  63.         elmLotNumber = arcpy.mapping.ListLayoutElements(mxd, "TEXT_ELEMENT", "LotNumber")[0]
  64.         elmJob_Number = arcpy.mapping.ListLayoutElements(mxd, "TEXT_ELEMENT", "JobNumber")[0]
  65.         elmJob_Number2 = arcpy.mapping.ListLayoutElements(mxd, "TEXT_ELEMENT", "JobNumber2")[0]
  66.         elmJob_Number3 = arcpy.mapping.ListLayoutElements(mxd, "TEXT_ELEMENT", "JobNumber3")[0]
  67.         elmAddress = arcpy.mapping.ListLayoutElements(mxd, "TEXT_ELEMENT", "Address")[0]
  68.         elmCity = arcpy.mapping.ListLayoutElements(mxd, "TEXT_ELEMENT", "City")[0]
  69.         elmState = arcpy.mapping.ListLayoutElements(mxd, "TEXT_ELEMENT", "State")[0]
  70.         elmZip = arcpy.mapping.ListLayoutElements(mxd, "TEXT_ELEMENT", "Zip")[0]
  71.  
  72.         #font of the heading
  73.         elm.text = '<FNT name ="Arial" size="32">' +  map_title + '</FNT>'
  74.         elmBlockNumber.text = '<FNT name ="Arial" size="14">' + 'Block Number: ' + Block_Number + '</FNT>'
  75.         elmLotNumber.text = '<FNT name ="Arial" size="14">' + 'Lot Number: ' + Lot_number + '</FNT>'
  76.         elmJob_Number.text = '<FNT name ="Arial" size="14">' + 'Job Number: ' + Job_Number + '</FNT>'
  77.         elmJob_Number2.text = '<FNT name ="Arial" size="14">' + 'Job Number 2: ' + Job_Number2 + '</FNT>'
  78.         elmJob_Number3.text = '<FNT name ="Arial" size="14">' + 'Job Number 3: ' + Job_Number3 + '</FNT>'
  79.         elmCity.text = '<FNT name ="Arial" size="14">' + City + '</FNT>'
  80.         elmAddress.text = '<FNT name ="Arial" size="14">' + Address + '</FNT>'
  81.         elmState.text = '<FNT name ="Arial" size="14">' + State + '</FNT>'
  82.         elmZip.text = '<FNT name ="Arial" size="14">' + Zip + '</FNT>'
  83.         #Change the view to layout view
  84.         arcpy.mapping.MapDocument("CURRENT").activeView = "PAGE_LAYOUT"
  85.         #refresht the active view
  86.         arcpy.RefreshActiveView()
  87.         #delete search cursor and row variables
  88.         del sc
  89.         del row
  90.  
  91.  
  92. class Remove(object):
  93.     """Implementation for AP_Zoom_addin.button_1 (Button)"""
  94.     def __init__(self):
  95.         self.enabled = True
  96.         self.checked = False
  97.     def onClick(self):
  98.  
  99.         #set the map document reference
  100.         mxd = arcpy.mapping.MapDocument("CURRENT")
  101.         for df in arcpy.mapping.ListDataFrames(mxd):
  102.             for lyr in arcpy.mapping.ListLayers(mxd, "AP_Map_Numbers", df):
  103.                 #create a search cursor to get relevant information about a parcel
  104.                 sc = arcpy.SearchCursor(lyr)
  105.                 for row in sc:
  106.                     #select the relevant fields to be put on the map
  107.                     ap = row.getValue("MAP_NUMBER")
  108.                     removeLayer = arcpy.mapping.Layer(ap)
  109.                     arcpy.mapping.RemoveLayer(df, removeLayer)
  110.                 if lyr.isFeatureLayer:
  111.                     arcpy.SelectLayerByAttribute_management(lyr, "CLEAR_SELECTION")
  112.                     df.extent = lyr.getSelectedExtent()
  113.                     df.scale *= 1.5
  114.         arcpy.RefreshActiveView()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement