About me
Hi, my name is Floyd Bull. I am the Senior GIS Analyst at Quanta Services. I assist the GIS team with requests, analysis, editing, data maintenance, automating tasks, quality control, documentation, and education. In my free time I enjoy golfing, mountain biking, video games, Magic the Gathering, cooking, and good company.
April, 2023 to Present
Hexvarium (acquired by Quanta Services in 2024)
January, 2021 to April, 2023
City of Kent, Kent, WA
September, 2019 to January 2021
City of Kent, Kent, WA
June, 2018 to September, 2019
City of Kirkland, Kirkland, WA
June, 2017 to June, 2018
City of Kent, Kent, WA
University of Washington Tacoma, Tacoma, WA
Central Washington University, Ellensburg, WA
Request/Purose:
The Parks Department requested a map to display restoration sites within the City of Kirkland.
Output:
Request/Purose:
The Emergency Operations Center requested a map of all elevated roadways and walkways within the City of Kirkland.
Output:
Request/Purose:
The out reach team requested a map off registered dog owneres within the City of Kirkland.
Output:
Request/Purose:
This analysis assesses the change in shadow area on the Cross Kirkland Corridor (CKC) if two building heights are increased from 55’ to 65’. The two buildings in question are on tax parcel 2826059231 and 2826059084. The dates used are the winter and summer solstice, as these are the shortest and longest days of the year. The results shows the total shadow area that intersect the CKC tax parcel and the CKC trails at difference times throughout the day.
Output:
Request/Purose:
The planning department wanted to know the height of the vegetation surrounding the Kingsgate Park and Ride.
Output:
Request/Purose:
This documentation shows users how to create a thumbnail for ArcGIS Online items.
Output:
Request/Purose:
This documentation demonstrates how to use the Survery123 app.
Output:
Request/Purose:
The script creates a list of all ArcGIS Online items that are missing metadata elements.
Output:
import csv
import datetime
from arcgis.gis import GIS
print(datetime.datetime.now())
date = datetime.datetime.now().strftime("%y-%m-%d")
#csvName = "M:\\IT\\Work\\FB\\Meta Data\\Documents\\AGOL Missing Meta data script output\\Missing Metadata_" + str(date) + ".csv"
csvName = "X:\\IT\\Work\\FB\\Meta Data\\Documents\\AGOL Missing Meta data script output\\Missing Metadata_" + str(date) + ".csv"
itemCount = 0
# Logging into AGOL
gis = GIS('https://kirklandwa.maps.arcgis.com', 'USerName', 'Password')
print('Logged in as ' + str(gis.properties.user.username))
# opening and writting to a csv
with open(csvName, mode='w') as csv_file:
fnames = ["Priority Level", "Item Name", "Item Owner", "Item Type", "Access", "Missing Element", "Comments"]
writer = csv.DictWriter(csv_file, fieldnames=fnames, lineterminator = '\n')
writer.writeheader()
# Searching for AGOL items
mysearch = gis.content.search('', '', max_items=10000)
for i in mysearch:
# Determining priority level of each item
if i.access == 'org' or i.access == 'public' or i.access == 'shared':
priorityLevel = 'High'
if i.access == 'private':
priorityLevel = 'Low'
# writing to the csv if the item is missing a description,summary, or both
if i.description == None and i.snippet == None:
writer.writerow({'Priority Level' : priorityLevel, 'Item Name' : i.title, 'Item Owner' : i.owner, 'Item Type' : i.type, "Access" : i.access, 'Missing Element' : 'Summary and Description'})
itemCount = itemCount + 1
elif i.description == None:
writer.writerow({'Priority Level' : priorityLevel, 'Item Name' : i.title, 'Item Owner' : i.owner, 'Item Type' : i.type, "Access" : i.access, 'Missing Element' : 'Description'})
itemCount = itemCount + 1
elif i.snippet == None:
writer.writerow({'Priority Level' : priorityLevel, 'Item Name' : i.title, 'Item Owner' : i.owner, 'Item Type' : i.type, "Access" : i.access, 'Missing Element' : 'Summary'})
itemCount = itemCount + 1
print("There are " + str(itemCount) + " items missing metadata elements")
print(datetime.datetime.now())
Request/Purose:
The EOC team regularly uses GIS. In case the network goes down, the EOC needs access to MXDS and GIS data. An external hard drive will contain backup MXDs and data. This script is used to update the external hard drive monthly.
Output:
import os, arcpy, datetime
class CopyMXDandData(object):
def __init__(self, FoldersContainingMXDtoCopy, PathwayToPasteData):
self.CopyPathway = FoldersContainingMXDtoCopy
self.PastePathway = PathwayToPasteData
self.externalPathway = self.PastePathway + "\\Backup GIS Data and MXDs"
self.dataFolder = self.externalPathway + "\\Data"
self.mxdFolder = self.externalPathway + "\\MXD"
self.docFolder = self.externalPathway + "\\Documents"
self.scriptFolder = self.externalPathway + "\\Scripts"
def configuringFolders(self):
# this method creates the folder schema
if os.path.exists(self.externalPathway) == False:
os.mkdir(self.externalPathway)
if os.path.exists(self.dataFolder) == True:
os.remove(self.dataFolder)
if os.path.exists(self.mxdFolder) == True:
os.remove(self.mxdFolder)
if os.path.exists(self.docFolder) == False:
os.mkdir(self.docFolder)
if os.path.exists(self.scriptFolder) == False:
os.mkdir(self.scriptFolder)
os.mkdir(self.dataFolder)
os.mkdir(self.mxdFolder)
print "Folders configured successfully"
def copyMXDs(self):
# This method copies all MXDs in the indicated folder into the new location. Two lists are compiled for the SDE and
# other data sources used in the MXDs. The list are returned.
datasourceList = []
sdepathwayList = []
# Finding the all of the mxd in the folder and copying them to the output location.
for fileName in [x for x in os.listdir(self.CopyPathway) if os.path.splitext(x)[1] == ".mxd"]:
newFullPath = self.mxdFolder + '\\' + fileName
fullPath = os.path.join(self.CopyPathway, fileName)
arcpy.Copy_management(fullPath, newFullPath)
# Finding all workspaces used in the mxd and appending them to the according datasource list
mapdoc = arcpy.mapping.MapDocument(newFullPath)
for lyr in arcpy.mapping.ListLayers(mapdoc):
if lyr.supports("SERVICEPROPERTIES"):
if lyr.serviceProperties["ServiceType"] == "SDE":
# Creating the workspace pathway for sde. If the SDE naming convention changes, so will this str
sdepathway = "Database Connections\\" + lyr.serviceProperties["UserName"] + "@" + \
lyr.serviceProperties["Database"] + "@" + lyr.serviceProperties["Server"]
if sdepathway not in sdepathwayList:
sdepathwayList.append(sdepathway)
if lyr.supports("DATASOURCE"):
dataSource = lyr.workspacePath
if dataSource.endswith(".sde") == False:
data = dataSource.rstrip('\\')
if data not in datasourceList:
datasourceList.append(data)
print "Copying MXDs successful"
return sdepathwayList, datasourceList
def createFolders(self, sdepathwayList, datasourceList):
# This method creates the data folder schema in the new folder location. For data sources that are not in a SDE, the
# folder schema will be created to replicate the original pathway. A dictionary is created of the original pathway
# and the corresponding new pathway.
gdbsandWorkspaces = {}
for sde in sdepathwayList:
# Creating the new name of the new gdb and creating new gdb
sdeGDBname = sde.split("@")
arcpy.CreateFileGDB_management(self.dataFolder, sdeGDBname[-1])
# Adding workspace pathway with the new gdb to the dictionary
if sde not in gdbsandWorkspaces:
gdbsandWorkspaces[sde + ".sde"] = [self.dataFolder + "\\" + sdeGDBname[-1]]
for d in datasourceList:
# Creating the new name of the new gdb and creating new gdb
newfolder = d.replace(":", "").replace(".sde", "").replace(".gdb", "").replace(".", "")
splitTest = newfolder.split("\\")
name = splitTest[-1]
os.makedirs(self.dataFolder + "\\" + newfolder)
if name == "":
name = splitTest[-2]
arcpy.CreateFileGDB_management(self.dataFolder + "\\" + newfolder, name)
# Adding workspace pathway with the new gdb to the dictionary
if d not in gdbsandWorkspaces:
gdbsandWorkspaces[d] = [self.dataFolder + "\\" + newfolder + "\\" + name]
print "Creating GDBs successful"
return gdbsandWorkspaces
def copyData(self, gdbsandWorkspacesDic):
# This method copies the data sources over to the new location. CAD files break the script, thus are not included.
for d in gdbsandWorkspacesDic:
# Setting the workspace to the original data pathway
arcpy.env.workspace = d
featureclasses = arcpy.ListFeatureClasses()
dataset = arcpy.ListDatasets()
tablelist = arcpy.ListTables()
try:
# Copying Datasets over
for data in dataset:
renameData = data
if data.startswith("sde") == True:
renameData = data.replace("sde_published.ARCADMIN.", "")
if data.endswith(".dwg") == False:
arcpy.Copy_management(data, gdbsandWorkspacesDic[d][0] + ".gdb\\" + renameData)
# Copying tables over
for table in tablelist:
arcpy.TableToGeodatabase_conversion(table, gdbsandWorkspacesDic[d][0] + ".gdb")
# Copying feature classes over
for fc in featureclasses:
arcpy.FeatureClassToGeodatabase_conversion(fc, gdbsandWorkspacesDic[d][0] + ".gdb")
except:
continue
print "Copying data successful"
def replacePathways(self, gdbsandWorkspace):
# This method replaces the data sources in all of the copied MXDs.
# iterating through all the MXDs
for fileName in [x for x in os.listdir(self.mxdFolder) if os.path.splitext(x)[1] == ".mxd"]:
fullPath = os.path.join(self.mxdFolder, fileName)
mxd = arcpy.mapping.MapDocument(fullPath)
for lyr in arcpy.mapping.ListLayers(mxd):
# iterating through
for datasource in gdbsandWorkspace:
# Replacing SDE data sources
if lyr.supports("SERVICEPROPERTIES"):
if lyr.serviceProperties["ServiceType"] == "SDE":
sdepathway = "Database Connections\\" + lyr.serviceProperties["UserName"] + "@" + \
lyr.serviceProperties["Database"] + "@" + lyr.serviceProperties["Server"] + \
'.sde'
if sdepathway == datasource:
try:
x = lyr.datasetName
y = x.split(".")
lyr.replaceDataSource(gdbsandWorkspace[datasource][0] + ".gdb", "FILEGDB_WORKSPACE",
y[-1])
except:
print 'Unable to replace the data source ' + lyr.workspacePath + "\\" + lyr.datasetName
continue
# Replacing non-SDE other data sources
if lyr.supports("DATASOURCE"):
datapath = lyr.workspacePath
x = lyr.datasetName
y = x.split(".")
if datapath.endswith(".sde") == False:
if lyr.workspacePath == datasource:
try:
x = lyr.datasetName
y = x.split(".")
lyr.replaceDataSource(gdbsandWorkspace[datasource][0] + ".gdb", "FILEGDB_WORKSPACE",
y[-1])
except:
# When shapefiles with a name starting with a number are copied over to a GDB, a
# "t" is added to the front of the feature class name. This replaces these cases.
try:
x = lyr.datasetName
y = x.split(".")
lyr.replaceDataSource(gdbsandWorkspace[datasource][0] + ".gdb", "FILEGDB_WORKSPACE",
"t" + y[-1])
except:
print 'Unable to replace the data source ' + datapath
mxd.save()
print "Replacing pathways successful"
def getDataSourceDictionary(self):
datasourceList = []
sdepathwayList = []
gdbsandWorkspaces = {}
for fileName in [x for x in os.listdir(self.mxdFolder) if os.path.splitext(x)[1] == ".mxd"]:
newFullPath = self.mxdFolder + '\\' + fileName
# Finding all workspaces used in the mxd and appending them to the according datasource list
mapdoc = arcpy.mapping.MapDocument(newFullPath)
for lyr in arcpy.mapping.ListLayers(mapdoc):
if lyr.supports("SERVICEPROPERTIES"):
if lyr.serviceProperties["ServiceType"] == "SDE":
# Creating the workspace pathway for sde. If the SDE naming convention changes, so will this str
sdepathway = "Database Connections\\" + lyr.serviceProperties["UserName"] + "@" + \
lyr.serviceProperties["Database"] + "@" + lyr.serviceProperties["Server"]
if sdepathway not in sdepathwayList:
sdepathwayList.append(sdepathway)
if lyr.supports("DATASOURCE"):
dataSource = lyr.workspacePath
if dataSource.endswith(".sde") == False:
if dataSource not in datasourceList:
datasourceList.append(dataSource)
for sde in sdepathwayList:
# Creating the new name of the new gdb and creating new gdb
sdeGDBname = sde.split("@")
# Adding workspace pathway with the new gdb to the dictionary
if sde not in gdbsandWorkspaces:
gdbsandWorkspaces[sde + ".sde"] = [self.dataFolder + "\\" + sdeGDBname[-1]]
for d in datasourceList:
# Creating the new name of the new gdb and creating new gdb
newfolder = d.replace(":", "").replace(".sde", "").replace(".gdb", "").replace(".", "")
splitTest = newfolder.split("\\")
name = splitTest[-1]
if name == "":
name = splitTest[-2]
# Adding workspace pathway with the new gdb to the dictionary
if d not in gdbsandWorkspaces:
gdbsandWorkspaces[d] = [self.dataFolder + "\\" + newfolder + "\\" + name]
return gdbsandWorkspaces
print "Starting at " + str(datetime.datetime.now())
folderToCopy = "M:\\IT\\Mxds"
outputFolder = "E:"
backup = CopyMXDandData(folderToCopy, outputFolder)
backup.configuringFolders()
sdePath, dataPath = backup.copyMXDs()
pathwayDic = backup.createFolders(sdePath, dataPath)
backup.copyData(pathwayDic)
backup.replacePathways(pathwayDic)
print "Ending at " + str(datetime.datetime.now())
Request/Purose:
This script takes data from King County and creates the City of Kent's parcel dataset.
Output:
import arcpy, datetime, csv
# Pathways used
Parcels_csv = "Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels\\EXTR_Parcel.csv"
Parcels_gdb = "Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb"
Real_Property_csv = "Z:\\gis\\work\\Parcels\\Data\\Processing\\Real Property\\Real_Property_Account_Extract.csv"
EXTR_AptComplex_csv = "Z:\\gis\\work\\Parcels\\Data\\Processing\\Apt\\EXTR_AptComplex.csv"
EXTR_CondoComplex_csv = "Z:\\gis\\work\\Parcels\\Data\\Processing\\Condo\\EXTR_CondoComplex.csv"
EXTR_Lookup_csv = "Z:\\gis\\work\\Parcels\\Data\\Processing\\Lookup\\EXTR_Lookup.csv"
Lookup_csv = "Z:\\gis\\work\\Parcels\\Data\\Processing\\Lookup\\EXTR_Lookup_102.csv"
Parcel_area = "Z:\\gis\\work\\Parcels\\Data\\Incoming\\propertyGDB\\KingCounty_GDB_property.gdb\\parcel_area"
parcel_address_area = "Z:\\gis\\work\\Parcels\\Data\\Incoming\\propertyGDB\\KingCounty_GDB_property.gdb\\parcel_address_area"
Select_Bnd_Harn = "Database Connections\Work.sde\WORK.DBO.Parcel_Process\WORK.DBO.Select_Bnd_Harn"
KENTGIS_DBO_citylimits = "Database Connections\\KentGIS.sde\\KENTGIS.DBO.AdminArea\\KENTGIS.DBO.citylimits"
KENTGIS_DBO_zone = "Database Connections\\KentGIS.sde\\KENTGIS.DBO.LandUsePlanning\\KENTGIS.DBO.zone"
KENTGIS_DBO_annex_hist = "Database Connections\\KentGIS.sde\\KENTGIS.DBO.AdminArea\\KENTGIS.DBO.annex_hist"
KENTGIS_DBO_comp_plan = "Database Connections\\KentGIS.sde\\KENTGIS.DBO.LandUsePlanning\\KENTGIS.DBO.comp_plan"
Mobile_Home = "Database Connections\\Work.sde\\WORK.DBO.MH_units"
# Pathways of created data
Parcels_AOI = "Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Parcels_AOI"
Parcels_AOI_SpatialJoin = "Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Parcels_AOI_SpatialJoin"
Test_address = "Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Test_address"
city_join = "Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\city_join"
ANNAX_join = "Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\ANNAX_join"
Zoning_join = "Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Zoning_join"
frequency = "Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\frequency"
Comp_join = "Z:\\gis\\work\\Parcels\\Data\\Output\\Parcels.gdb\\Parcels"
lookup = "Z:\\gis\\work\\Parcels\\Data\\Output\\Parcels.gdb\\LookUp"
print "Start"
currentDT = datetime.datetime.now()
print (str(currentDT))
# Creating a csv containing rows with only LUType equal to 102.
with open(EXTR_Lookup_csv, 'rb') as inp, open(Lookup_csv, 'wb') as out:
writer = csv.writer(out)
for row in csv.reader(inp):
if row[0] == "LUType":
writer.writerow(row)
if row[0] == "102":
writer.writerow(row)
# Creating GDB within the Processing and Output folders
# The Processing GDB stores all of the intermediate data
arcpy.CreateFileGDB_management("Z:\\gis\\work\\Parcels\\Data\\Processing", "Parcels_Processing")
arcpy.CreateFileGDB_management("Z:\\gis\\work\\Parcels\\Data\\Output", "Parcels")
# Creating an AOI containing parcel geometry
arcpy.Clip_analysis(Parcel_area, Select_Bnd_Harn, Parcels_AOI, "")
# Converting the parcels.csv into a GDB table
arcpy.TableToTable_conversion(Parcels_csv, Parcels_gdb, "Parcels", "", "Major \"Major\" true true false 6 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels\\EXTR_Parcel.csv,Major,-1,-1;Minor "
"\"Minor\" true true false 4 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels\\EXTR_Parcel.csv,Minor,-1,-1;PropName "
"\"PropName\" true true false 255 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels\\EXTR_Parcel.csv,PropName,-1,-1;PlatName "
"\"PlatName\" true true false 255 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels\\EXTR_Parcel.csv,PlatName,-1,-1;PropType "
"\"PropType\" true true false 255 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels\\EXTR_Parcel.csv,PropType,-1,-1;CurrentZoning "
"\"CurrentZoning\" true true false 255 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels\\EXTR_Parcel.csv,CurrentZoning,-1,-1;PresentUse "
"\"PresentUse\" true true false 4 Short 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels\\EXTR_Parcel.csv,PresentUse,-1,-1;SqFtLot "
"\"SqFtLot\" true true false 4 Long 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels\\EXTR_Parcel.csv,SqFtLot,-1,-1;WaterSystem "
"\"WaterSystem\" true true false 4 Long 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels\\EXTR_Parcel.csv,WaterSystem,-1,-1;SewerSystem "
"\"SewerSystem\" true true false 4 Long 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels\\EXTR_Parcel.csv,SewerSystem,-1,-1", "")
# Creating the PIN field within the parcels GDB table
arcpy.AddField_management("Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Parcels", "PIN","TEXT", "", "", "12", "", "NULLABLE", "NON_REQUIRED", "")
# Calculating the PIN field for the parcels GDB table
arcpy.CalculateField_management("Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Parcels", "PIN", "!Major! + !Minor!", "PYTHON", "")
# Converting the real property.csv into a GDB table
arcpy.TableToTable_conversion(Real_Property_csv, Parcels_gdb, "Real", "", "AcctNbr \"AcctNbr\" true true false 8000 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Real Property\\Real_Property_Account_Extract.csv,AcctNbr,-1,-1;Major "
"\"Major\" true true false 8000 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Real Property\\Real_Property_Account_Extract.csv,Major,-1,-1;Minor "
"\"Minor\" true true false 8000 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Real Property\\Real_Property_Account_Extract.csv,Minor,-1,-1;TaxpayerName "
"\"TaxpayerName\" true true false 255 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Real Property\\Real_Property_Account_Extract.csv,TaxpayerName,-1,-1;AttnLine "
"\"AttnLine\" true true false 255 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Real Property\\Real_Property_Account_Extract.csv,AttnLine,-1,-1;AddrLine "
"\"AddrLine\" true true false 255 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Real Property\\Real_Property_Account_Extract.csv,AddrLine,-1,-1;CityState "
"\"CityState\" true true false 255 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Real Property\\Real_Property_Account_Extract.csv,CityState,-1,-1;ZipCode "
"\"ZipCode\" true true false 255 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Real Property\\Real_Property_Account_Extract.csv,ZipCode,-1,-1;TaxStat "
"\"TaxStat\" true true false 255 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Real Property\\Real_Property_Account_Extract.csv,TaxStat,-1,-1;BillYr "
"\"BillYr\" true true false 255 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Real Property\\Real_Property_Account_Extract.csv,BillYr,-1,-1;ApprLandVal "
"\"ApprLandVal\" true true false 8000 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Real Property\\Real_Property_Account_Extract.csv,ApprLandVal,-1,-1;ApprImpsVal "
"\"ApprImpsVal\" true true false 8000 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Real Property\\Real_Property_Account_Extract.csv,ApprImpsVal,-1,-1;TaxableLandVal "
"\"TaxableLandVal\" true true false 8000 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Real Property\\Real_Property_Account_Extract.csv,TaxableLandVal,-1,-1;TaxableImpsVal "
"\"TaxableImpsVal\" true true false 8000 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Real Property\\Real_Property_Account_Extract.csv,TaxableImpsVal,-1,-1", "")
# Creating the PIN field within the real property GDB table
arcpy.AddField_management("Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Real", "PIN", "TEXT", "", "", "12", "", "NULLABLE", "NON_REQUIRED", "")
# Calculating the PIN for the real property GDB table
arcpy.CalculateField_management("Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Real", "PIN", "!Major! + !Minor!", "PYTHON", "")
# Joining real property GDB table with the Parcels AOI data
arcpy.JoinField_management(Parcels_AOI, "PIN", "Z:\gis\work\Parcels\Data\Processing\Parcels_Processing.gdb\Real", "PIN")
# Joining Parcels GDB table with the AOI parcels data
arcpy.JoinField_management(Parcels_AOI, "PIN", "Z:\gis\work\Parcels\Data\Processing\Parcels_Processing.gdb\Parcels", "PIN")
# Converting the Apts.csv into a GDB table
arcpy.TableToTable_conversion(EXTR_AptComplex_csv, Parcels_gdb, "Apt", "", "Major \"Major\" true true false 8000 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Apt\\EXTR_AptComplex.csv,Major,-1,-1;Minor "
"\"Minor\" true true false 8000 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Apt\\EXTR_AptComplex.csv,Minor,-1,-1;NbrUnits "
"\"NbrUnits\" true true false 4 Short 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Apt\\EXTR_AptComplex.csv,NbrUnits,-1,-1", "")
# Creating and calculating the PIN field within the Apts GDB table
arcpy.AddField_management("Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Apt", "PIN","TEXT", "", "", "12", "", "NULLABLE", "NON_REQUIRED", "")
arcpy.CalculateField_management("Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Apt", "PIN", "!Major! + !Minor!", "PYTHON", "")
# Altering the name of the "NbrUnits" in the Apt GDB table to "APT_UNITS"
arcpy.AlterField_management("Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Apt", "NbrUnits", "APT_UNITS", "APT_UNITS")
# Converting the Condo.csv into a GDB table
arcpy.TableToTable_conversion(EXTR_CondoComplex_csv, Parcels_gdb, "Condo", "", "Major \"Major\" true true false 8000 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Condo\\EXTR_CondoComplex.csv,Major,-1,-1;NbrUnits "
"\"NbrUnits\" true true false 4 Short 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Condo\\EXTR_CondoComplex.csv,NbrUnits,-1,-1", "")
# Changing the field name "NbrUnits" to "Condo_Units"
arcpy.AlterField_management("Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Condo", "NbrUnits", "CONDO_UNITS", "CONDO_UNITS")
# Joining Apt, Condos, and MH to the parcels AOI
arcpy.JoinField_management(Parcels_AOI, "PIN", "Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Apt", "PIN", "APT_UNITS")
arcpy.JoinField_management(Parcels_AOI, "Major", "Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Condo", "Major", "CONDO_UNITS")
arcpy.JoinField_management(Parcels_AOI, "PIN", Mobile_Home, "PIN")
# Spatially joining Parcels Address Area fields
arcpy.SpatialJoin_analysis(Parcels_AOI, parcel_address_area, Test_address, "JOIN_ONE_TO_ONE", "KEEP_ALL", "MAJOR \"MAJOR\" true true false 6 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Parcels_AOI,MAJOR,-1,-1;"
"MINOR \"MINOR\" true true false 4 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Parcels_AOI,MINOR,-1,-1;"
"PIN \"PIN\" true true false 10 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Parcels_AOI,PIN,-1,-1;"
"Shape_Length \"Shape_Length\" false true true 8 Double 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Parcels_AOI,Shape_Length,-1,-1;"
"Shape_Area \"Shape_Area\" false true true 8 Double 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Parcels_AOI,Shape_Area,-1,-1;"
"AcctNbr \"AcctNbr\" true true false 8000 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Parcels_AOI,AcctNbr,-1,-1;"
"TaxpayerName \"TaxpayerName\" true true false 255 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Parcels_AOI,TaxpayerName,-1,-1;"
"AttnLine \"AttnLine\" true true false 255 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Parcels_AOI,AttnLine,-1,-1;"
"AddrLine \"AddrLine\" true true false 255 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Parcels_AOI,AddrLine,-1,-1;"
"CityState \"CityState\" true true false 255 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Parcels_AOI,CityState,-1,-1;"
"ZipCode \"ZipCode\" true true false 255 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Parcels_AOI,ZipCode,-1,-1;"
"TaxStat \"TaxStat\" true true false 255 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Parcels_AOI,TaxStat,-1,-1;"
"BillYr \"BillYr\" true true false 255 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Parcels_AOI,BillYr,-1,-1;"
"ApprLandVal \"ApprLandVal\" true true false 8000 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Parcels_AOI,ApprLandVal,-1,-1;"
"ApprImpsVal \"ApprImpsVal\" true true false 8000 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Parcels_AOI,ApprImpsVal,-1,-1;"
"TaxableLandVal \"TaxableLandVal\" true true false 8000 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Parcels_AOI,TaxableLandVal,-1,-1;"
"TaxableImpsVal \"TaxableImpsVal\" true true false 8000 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Parcels_AOI,TaxableImpsVal,-1,-1;"
"PropName \"PropName\" true true false 255 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Parcels_AOI,PropName,-1,-1;"
"PlatName \"PlatName\" true true false 255 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Parcels_AOI,PlatName,-1,-1;"
"PropType \"PropType\" true true false 255 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Parcels_AOI,PropType,-1,-1;"
"CurrentZoning \"CurrentZoning\" true true false 255 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Parcels_AOI,CurrentZoning,-1,-1;"
"PresentUse \"PresentUse\" true true false 4 Short 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Parcels_AOI,PresentUse,-1,-1;"
"SqFtLot \"SqFtLot\" true true false 4 Long 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Parcels_AOI,SqFtLot,-1,-1;"
"WaterSystem \"WaterSystem\" true true false 4 Long 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Parcels_AOI,WaterSystem,-1,-1;"
"SewerSystem \"SewerSystem\" true true false 4 Long 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Parcels_AOI,SewerSystem,-1,-1;"
"APT_UNITS \"APT_UNITS\" true true false 4 Short 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Parcels_AOI,APT_UNITS,-1,-1;"
"CONDO_UNITS \"CONDO_UNITS\" true true false 4 Short 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Parcels_AOI,CONDO_UNITS,-1,-1;"
"MH_SPACES \"MH_SPACES\" true true false 4 Long 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Parcels_AOI,MH_SPACES,-1,-1;"
"Alias1 \"ADDRALIAS1\" true true false 60 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Incoming\\propertyGDB\\KingCounty_GDB_property.gdb\\parcel_address_area,Alias1,-1,-1;"
"Alias2 \"ADDRALIAS2\" true true false 60 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Incoming\\propertyGDB\\KingCounty_GDB_property.gdb\\parcel_address_area,Alias2,-1,-1;"
"ADDR_HN \"HouseNum\" true true false 10 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Incoming\\propertyGDB\\KingCounty_GDB_property.gdb\\parcel_address_area,ADDR_HN,-1,-1;"
"ADDR_PD \"PreDir\" true true false 2 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Incoming\\propertyGDB\\KingCounty_GDB_property.gdb\\parcel_address_area,ADDR_PD,-1,-1;"
"ADDR_PT \"PreType\" true true false 6 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Incoming\\propertyGDB\\KingCounty_GDB_property.gdb\\parcel_address_area,ADDR_PT,-1,-1;"
"ADDR_SN \"StreetName\" true true false 80 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Incoming\\propertyGDB\\KingCounty_GDB_property.gdb\\parcel_address_area,ADDR_SN,-1,-1;"
"ADDR_ST \"SufType\" true true false 6 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Incoming\\propertyGDB\\KingCounty_GDB_property.gdb\\parcel_address_area,ADDR_ST,-1,-1;"
"ADDR_SD \"SufDir\" true true false 2 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Incoming\\propertyGDB\\KingCounty_GDB_property.gdb\\parcel_address_area,ADDR_SD,-1,-1;"
"ADDR_NUM \"ADDR_NUM\" true true false 4 Long 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Incoming\\propertyGDB\\KingCounty_GDB_property.gdb\\parcel_address_area,ADDR_NUM,-1,-1;"
"ADDR_FULL \"FullAddr\" true true false 120 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Incoming\\propertyGDB\\KingCounty_GDB_property.gdb\\parcel_address_area,ADDR_FULL,-1,-1;"
"FULLNAME \"FullName\" true true false 120 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Incoming\\propertyGDB\\KingCounty_GDB_property.gdb\\parcel_address_area,FULLNAME,-1,-1;"
"ZIP5 \"ZIP5\" true true false 5 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Incoming\\propertyGDB\\KingCounty_GDB_property.gdb\\parcel_address_area,ZIP5,-1,-1;"
"PLUS4 \"PLUS4\" true true false 4 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Incoming\\propertyGDB\\KingCounty_GDB_property.gdb\\parcel_address_area,PLUS4,-1,-1;"
"CTYNAME \"CTYNAME\" true true false 28 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Incoming\\propertyGDB\\KingCounty_GDB_property.gdb\\parcel_address_area,CTYNAME,-1,-1;"
"POSTALCTYNAME \"POSTALCTYNAME\" true true false 28 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Incoming\\propertyGDB\\KingCounty_GDB_property.gdb\\parcel_address_area,POSTALCTYNAME,-1,-1;"
"LAT \"LAT\" true true false 8 Double 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Incoming\\propertyGDB\\KingCounty_GDB_property.gdb\\parcel_address_area,LAT,-1,-1;"
"LON \"LON\" true true false 8 Double 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Incoming\\propertyGDB\\KingCounty_GDB_property.gdb\\parcel_address_area,LON,-1,-1;"
"POINT_X \"POINT_X\" true true false 8 Double 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Incoming\\propertyGDB\\KingCounty_GDB_property.gdb\\parcel_address_area,POINT_X,-1,-1;"
"POINT_Y \"POINT_Y\" true true false 8 Double 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Incoming\\propertyGDB\\KingCounty_GDB_property.gdb\\parcel_address_area,POINT_Y,-1,-1;"
"COUNTY \"COUNTY\" true true false 12 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Incoming\\propertyGDB\\KingCounty_GDB_property.gdb\\parcel_address_area,COUNTY,-1,-1;"
"KROLL \"KROLL\" true true false 4 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Incoming\\propertyGDB\\KingCounty_GDB_property.gdb\\parcel_address_area,KROLL,-1,-1;"
"PLSS \"PLSS\" true true false 11 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Incoming\\propertyGDB\\KingCounty_GDB_property.gdb\\parcel_address_area,PLSS,-1,-1;"
"QTS \"QTS\" true true false 2 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Incoming\\propertyGDB\\KingCounty_GDB_property.gdb\\parcel_address_area,QTS,-1,-1;"
"SEC \"SEC\" true true false 2 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Incoming\\propertyGDB\\KingCounty_GDB_property.gdb\\parcel_address_area,SEC,-1,-1;"
"TWP \"TWP\" true true false 2 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Incoming\\propertyGDB\\KingCounty_GDB_property.gdb\\parcel_address_area,TWP,-1,-1;"
"RNG \"RNG\" true true false 2 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Incoming\\propertyGDB\\KingCounty_GDB_property.gdb\\parcel_address_area,RNG,-1,-1", "ARE_IDENTICAL_TO", "", "")
# Spatially joining the City fields
arcpy.SpatialJoin_analysis(Test_address, KENTGIS_DBO_citylimits, city_join, "JOIN_ONE_TO_ONE", "KEEP_ALL", "MAJOR \"MAJOR\" true true false 6 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Test_address,MAJOR,-1,-1;"
"MINOR \"MINOR\" true true false 4 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Test_address,MINOR,-1,-1;"
"PIN \"PIN\" true true false 10 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Test_address,PIN,-1,-1;"
"AcctNbr \"AcctNbr\" true true false 8000 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Test_address,AcctNbr,-1,-1;"
"TaxpayerName \"TaxpayerName\" true true false 255 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Test_address,TaxpayerName,-1,-1;"
"AttnLine \"AttnLine\" true true false 255 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Test_address,AttnLine,-1,-1;"
"AddrLine \"AddrLine\" true true false 255 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Test_address,AddrLine,-1,-1;"
"CityState \"CityState\" true true false 255 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Test_address,CityState,-1,-1;"
"ZipCode \"ZipCode\" true true false 255 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Test_address,ZipCode,-1,-1;"
"TaxStat \"TaxStat\" true true false 255 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Test_address,TaxStat,-1,-1;"
"BillYr \"BillYr\" true true false 255 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Test_address,BillYr,-1,-1;"
"ApprLandVal \"ApprLandVal\" true true false 8000 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Test_address,ApprLandVal,-1,-1;"
"ApprImpsVal \"ApprImpsVal\" true true false 8000 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Test_address,ApprImpsVal,-1,-1;"
"TaxableLandVal \"TaxableLandVal\" true true false 8000 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Test_address,TaxableLandVal,-1,-1;"
"TaxableImpsVal \"TaxableImpsVal\" true true false 8000 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Test_address,TaxableImpsVal,-1,-1;"
"PropName \"PropName\" true true false 255 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Test_address,PropName,-1,-1;"
"PlatName \"PlatName\" true true false 255 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Test_address,PlatName,-1,-1;"
"PropType \"PropType\" true true false 255 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Test_address,PropType,-1,-1;"
"CurrentZoning \"CurrentZoning\" true true false 255 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Test_address,CurrentZoning,-1,-1;"
"PresentUse \"PresentUse\" true true false 4 Short 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Test_address,PresentUse,-1,-1;"
"SqFtLot \"SqFtLot\" true true false 4 Long 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Test_address,SqFtLot,-1,-1;"
"WaterSystem \"WaterSystem\" true true false 4 Long 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Test_address,WaterSystem,-1,-1;"
"SewerSystem \"SewerSystem\" true true false 4 Long 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Test_address,SewerSystem,-1,-1;"
"APT_UNITS \"APT_UNITS\" true true false 4 Short 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Test_address,APT_UNITS,-1,-1;"
"CONDO_UNITS \"CONDO_UNITS\" true true false 4 Short 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Test_address,CONDO_UNITS,-1,-1;"
"MH_SPACES \"MH_SPACES\" true true false 4 Long 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Test_address,MH_SPACES,-1,-1;"
"Alias1 \"ADDRALIAS1\" true true false 60 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Test_address,Alias1,-1,-1;"
"Alias2 \"ADDRALIAS2\" true true false 60 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Test_address,Alias2,-1,-1;"
"ADDR_HN \"HouseNum\" true true false 10 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Test_address,ADDR_HN,-1,-1;"
"ADDR_PD \"PreDir\" true true false 2 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Test_address,ADDR_PD,-1,-1;"
"ADDR_PT \"PreType\" true true false 6 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Test_address,ADDR_PT,-1,-1;"
"ADDR_SN \"StreetName\" true true false 80 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Test_address,ADDR_SN,-1,-1;"
"ADDR_ST \"SufType\" true true false 6 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Test_address,ADDR_ST,-1,-1;"
"ADDR_SD \"SufDir\" true true false 2 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Test_address,ADDR_SD,-1,-1;"
"ADDR_NUM \"ADDR_NUM\" true true false 4 Long 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Test_address,ADDR_NUM,-1,-1;"
"ADDR_FULL \"FullAddr\" true true false 120 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Test_address,ADDR_FULL,-1,-1;"
"FULLNAME \"FullName\" true true false 120 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Test_address,FULLNAME,-1,-1;"
"ZIP5 \"ZIP5\" true true false 5 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Test_address,ZIP5,-1,-1;"
"PLUS4 \"PLUS4\" true true false 4 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Test_address,PLUS4,-1,-1;"
"CTYNAME \"CTYNAME\" true true false 28 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Test_address,CTYNAME,-1,-1;"
"POSTALCTYNAME \"POSTALCTYNAME\" true true false 28 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Test_address,POSTALCTYNAME,-1,-1;"
"LAT \"LAT\" true true false 8 Double 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Test_address,LAT,-1,-1;"
"LON \"LON\" true true false 8 Double 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Test_address,LON,-1,-1;"
"POINT_X \"POINT_X\" true true false 8 Double 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Test_address,POINT_X,-1,-1;"
"POINT_Y \"POINT_Y\" true true false 8 Double 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Test_address,POINT_Y,-1,-1;"
"COUNTY \"COUNTY\" true true false 12 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Test_address,COUNTY,-1,-1;"
"KROLL \"KROLL\" true true false 4 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Test_address,KROLL,-1,-1;"
"PLSS \"PLSS\" true true false 11 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Test_address,PLSS,-1,-1;"
"QTS \"QTS\" true true false 2 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Test_address,QTS,-1,-1;"
"SEC \"SEC\" true true false 2 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Test_address,SEC,-1,-1;"
"TWP \"TWP\" true true false 2 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Test_address,TWP,-1,-1;"
"RNG \"RNG\" true true false 2 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Test_address,RNG,-1,-1;"
"TAG \"TAG\" true true false 40 Text 0 0 ,First,#,Database Connections\\KentGIS.sde\\KENTGIS.DBO.AdminArea\\KENTGIS.DBO.citylimits,TAG,-1,-1", "HAVE_THEIR_CENTER_IN", "", "")
# Changing the name of "TAG" to "IN_CITY"
arcpy.AlterField_management(city_join, "TAG", "IN_CITY", "IN_CITY", "", "", "NON_NULLABLE", "false")
# Converts null values for "IN_CITY" field to "OUT"
arcpy.CalculateField_management(city_join, "IN_CITY", "calc ( !IN_CITY!)", "PYTHON", "def calc(limits):\\n if limits == \"IN\":\\n return \"IN\"\\n if limits == \"CITY_OF_KENT\":\\n return \"IN\"\\n else:\\n return \"OUT\"")
# Spatially joining Annex fields
arcpy.SpatialJoin_analysis(city_join, KENTGIS_DBO_annex_hist, ANNAX_join, "JOIN_ONE_TO_ONE", "KEEP_ALL", "MAJOR \"MAJOR\" true true false 6 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\city_join,MAJOR,-1,-1;"
"MINOR \"MINOR\" true true false 4 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\city_join,MINOR,-1,-1;"
"PIN \"PIN\" true true false 10 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\city_join,PIN,-1,-1;"
"AcctNbr \"AcctNbr\" true true false 8000 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\city_join,AcctNbr,-1,-1;"
"TaxpayerName \"TaxpayerName\" true true false 255 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\city_join,TaxpayerName,-1,-1;"
"AttnLine \"AttnLine\" true true false 255 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\city_join,AttnLine,-1,-1;"
"AddrLine \"AddrLine\" true true false 255 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\city_join,AddrLine,-1,-1;"
"CityState \"CityState\" true true false 255 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\city_join,CityState,-1,-1;"
"ZipCode \"ZipCode\" true true false 255 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\city_join,ZipCode,-1,-1;"
"TaxStat \"TaxStat\" true true false 255 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\city_join,TaxStat,-1,-1;"
"BillYr \"BillYr\" true true false 255 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\city_join,BillYr,-1,-1;"
"ApprLandVal \"ApprLandVal\" true true false 8000 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\city_join,ApprLandVal,-1,-1;"
"ApprImpsVal \"ApprImpsVal\" true true false 8000 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\city_join,ApprImpsVal,-1,-1;"
"TaxableLandVal \"TaxableLandVal\" true true false 8000 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\city_join,TaxableLandVal,-1,-1;"
"TaxableImpsVal \"TaxableImpsVal\" true true false 8000 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\city_join,TaxableImpsVal,-1,-1;"
"PropName \"PropName\" true true false 255 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\city_join,PropName,-1,-1;"
"PlatName \"PlatName\" true true false 255 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\city_join,PlatName,-1,-1;"
"CurrentZoning \"CurrentZoning\" true true false 255 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\city_join,CurrentZoning,-1,-1;"
"PropType \"PropType\" true true false 255 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\city_join,PropType,-1,-1;"
"PresentUse \"PresentUse\" true true false 4 Short 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\city_join,PresentUse,-1,-1;"
"SqFtLot \"SqFtLot\" true true false 4 Long 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\city_join,SqFtLot,-1,-1;"
"WaterSystem \"WaterSystem\" true true false 4 Long 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\city_join,WaterSystem,-1,-1;"
"SewerSystem \"SewerSystem\" true true false 4 Long 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\city_join,SewerSystem,-1,-1;"
"APT_UNITS \"APT_UNITS\" true true false 4 Short 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\city_join,APT_UNITS,-1,-1;"
"CONDO_UNITS \"CONDO_UNITS\" true true false 4 Short 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\city_join,CONDO_UNITS,-1,-1;"
"MH_SPACES \"MH_SPACES\" true true false 4 Long 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\city_join,MH_SPACES,-1,-1;"
"Alias1 \"ADDRALIAS1\" true true false 60 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\city_join,Alias1,-1,-1;"
"Alias2 \"ADDRALIAS2\" true true false 60 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\city_join,Alias2,-1,-1;"
"ADDR_HN \"HouseNum\" true true false 10 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\city_join,ADDR_HN,-1,-1;"
"ADDR_PD \"PreDir\" true true false 2 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\city_join,ADDR_PD,-1,-1;"
"ADDR_PT \"PreType\" true true false 6 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\city_join,ADDR_PT,-1,-1;"
"ADDR_SN \"StreetName\" true true false 80 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\city_join,ADDR_SN,-1,-1;"
"ADDR_ST \"SufType\" true true false 6 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\city_join,ADDR_ST,-1,-1;"
"ADDR_SD \"SufDir\" true true false 2 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\city_join,ADDR_SD,-1,-1;"
"ADDR_NUM \"ADDR_NUM\" true true false 4 Long 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\city_join,ADDR_NUM,-1,-1;"
"ADDR_FULL \"FullAddr\" true true false 120 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\city_join,ADDR_FULL,-1,-1;"
"FULLNAME \"FullName\" true true false 120 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\city_join,FULLNAME,-1,-1;"
"ZIP5 \"ZIP5\" true true false 5 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\city_join,ZIP5,-1,-1;"
"PLUS4 \"PLUS4\" true true false 4 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\city_join,PLUS4,-1,-1;"
"CTYNAME \"CTYNAME\" true true false 28 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\city_join,CTYNAME,-1,-1;"
"POSTALCTYNAME \"POSTALCTYNAME\" true true false 28 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\city_join,POSTALCTYNAME,-1,-1;"
"LAT \"LAT\" true true false 8 Double 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\city_join,LAT,-1,-1;"
"LON \"LON\" true true false 8 Double 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\city_join,LON,-1,-1;"
"POINT_X \"POINT_X\" true true false 8 Double 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\city_join,POINT_X,-1,-1;"
"POINT_Y \"POINT_Y\" true true false 8 Double 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\city_join,POINT_Y,-1,-1;"
"COUNTY \"COUNTY\" true true false 12 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\city_join,COUNTY,-1,-1;"
"KROLL \"KROLL\" true true false 4 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\city_join,KROLL,-1,-1;"
"PLSS \"PLSS\" true true false 11 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\city_join,PLSS,-1,-1;"
"QTS \"QTS\" true true false 2 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\city_join,QTS,-1,-1;"
"SEC \"SEC\" true true false 2 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\city_join,SEC,-1,-1;"
"TWP \"TWP\" true true false 2 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\city_join,TWP,-1,-1;"
"RNG \"RNG\" true true false 2 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\city_join,RNG,-1,-1;"
"IN_CITY \"IN_CITY\" true true false 40 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\city_join,IN_CITY,-1,-1;"
"TAG \"TAG\" true true false 40 Text 0 0 ,First,#,Database Connections\\KentGIS.sde\\KENTGIS.DBO.AdminArea\\KENTGIS.DBO.annex_hist,TAG,-1,-1;"
"ORDINANCE \"ORDINANCE\" true true false 6 Text 0 0 ,First,#,Database Connections\\KentGIS.sde\\KENTGIS.DBO.AdminArea\\KENTGIS.DBO.annex_hist,ORDINANCE,-1,-1;"
"YEAR \"YEAR\" true true false 4 Long 0 10 ,First,#,Database Connections\\KentGIS.sde\\KENTGIS.DBO.AdminArea\\KENTGIS.DBO.annex_hist,YEAR,-1,-1", "HAVE_THEIR_CENTER_IN", "", "")
# Changing the name of "TAG" to "ANNEX_NAME" and "YEAR" to "ANNEX_YEAR"
arcpy.AlterField_management(ANNAX_join, "TAG", "ANNEX_NAME", "ANNEX_NAME", "TEXT", "40", "NULLABLE", "false")
arcpy.AlterField_management(ANNAX_join, "YEAR", "ANNEX_YEAR", "ANNEX_YEAR", "LONG", "4", "NULLABLE", "false")
# Spatially joining the Zoning fields
arcpy.SpatialJoin_analysis(ANNAX_join, KENTGIS_DBO_zone, Zoning_join, "JOIN_ONE_TO_ONE", "KEEP_ALL", "MAJOR \"MAJOR\" true true false 6 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\ANNAX_join,MAJOR,-1,-1;"
"MINOR \"MINOR\" true true false 4 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\ANNAX_join,MINOR,-1,-1;"
"PIN \"PIN\" true true false 10 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\ANNAX_join,PIN,-1,-1;"
"AcctNbr \"AcctNbr\" true true false 8000 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\ANNAX_join,AcctNbr,-1,-1;"
"TaxpayerName \"TaxpayerName\" true true false 255 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\ANNAX_join,TaxpayerName,-1,-1;"
"AttnLine \"AttnLine\" true true false 255 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\ANNAX_join,AttnLine,-1,-1;"
"AddrLine \"AddrLine\" true true false 255 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\ANNAX_join,AddrLine,-1,-1;"
"CityState \"CityState\" true true false 255 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\ANNAX_join,CityState,-1,-1;"
"ZipCode \"ZipCode\" true true false 255 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\ANNAX_join,ZipCode,-1,-1;"
"TaxStat \"TaxStat\" true true false 255 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\ANNAX_join,TaxStat,-1,-1;"
"BillYr \"BillYr\" true true false 255 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\ANNAX_join,BillYr,-1,-1;"
"ApprLandVal \"ApprLandVal\" true true false 8000 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\ANNAX_join,ApprLandVal,-1,-1;"
"ApprImpsVal \"ApprImpsVal\" true true false 8000 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\ANNAX_join,ApprImpsVal,-1,-1;"
"TaxableLandVal \"TaxableLandVal\" true true false 8000 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\ANNAX_join,TaxableLandVal,-1,-1;"
"TaxableImpsVal \"TaxableImpsVal\" true true false 8000 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\ANNAX_join,TaxableImpsVal,-1,-1;"
"PropName \"PropName\" true true false 255 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\ANNAX_join,PropName,-1,-1;"
"PlatName \"PlatName\" true true false 255 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\ANNAX_join,PlatName,-1,-1;"
"PropType \"PropType\" true true false 255 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\ANNAX_join,PropType,-1,-1;"
"CurrentZoning \"CurrentZoning\" true true false 255 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\ANNAX_join,CurrentZoning,-1,-1;"
"PresentUse \"PresentUse\" true true false 4 Short 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\ANNAX_join,PresentUse,-1,-1;"
"SqFtLot \"SqFtLot\" true true false 4 Long 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\ANNAX_join,SqFtLot,-1,-1;"
"WaterSystem \"WaterSystem\" true true false 4 Long 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\ANNAX_join,WaterSystem,-1,-1;"
"SewerSystem \"SewerSystem\" true true false 4 Long 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\ANNAX_join,SewerSystem,-1,-1;"
"APT_UNITS \"APT_UNITS\" true true false 4 Short 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\ANNAX_join,APT_UNITS,-1,-1;"
"CONDO_UNITS \"CONDO_UNITS\" true true false 4 Short 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\ANNAX_join,CONDO_UNITS,-1,-1;"
"MH_SPACES \"MH_SPACES\" true true false 4 Long 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\ANNAX_join,MH_SPACES,-1,-1;"
"Alias1 \"ADDRALIAS1\" true true false 60 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\ANNAX_join,Alias1,-1,-1;"
"Alias2 \"ADDRALIAS2\" true true false 60 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\ANNAX_join,Alias2,-1,-1;"
"ADDR_HN \"HouseNum\" true true false 10 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\ANNAX_join,ADDR_HN,-1,-1;"
"ADDR_PD \"PreDir\" true true false 2 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\ANNAX_join,ADDR_PD,-1,-1;"
"ADDR_PT \"PreType\" true true false 6 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\ANNAX_join,ADDR_PT,-1,-1;"
"ADDR_SN \"StreetName\" true true false 80 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\ANNAX_join,ADDR_SN,-1,-1;"
"ADDR_ST \"SufType\" true true false 6 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\ANNAX_join,ADDR_ST,-1,-1;"
"ADDR_SD \"SufDir\" true true false 2 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\ANNAX_join,ADDR_SD,-1,-1;"
"ADDR_NUM \"ADDR_NUM\" true true false 4 Long 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\ANNAX_join,ADDR_NUM,-1,-1;"
"ADDR_FULL \"FullAddr\" true true false 120 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\ANNAX_join,ADDR_FULL,-1,-1;"
"FULLNAME \"FullName\" true true false 120 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\ANNAX_join,FULLNAME,-1,-1;"
"ZIP5 \"ZIP5\" true true false 5 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\ANNAX_join,ZIP5,-1,-1;"
"PLUS4 \"PLUS4\" true true false 4 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\ANNAX_join,PLUS4,-1,-1;"
"CTYNAME \"CTYNAME\" true true false 28 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\ANNAX_join,CTYNAME,-1,-1;"
"POSTALCTYNAME \"POSTALCTYNAME\" true true false 28 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\ANNAX_join,POSTALCTYNAME,-1,-1;"
"LAT \"LAT\" true true false 8 Double 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\ANNAX_join,LAT,-1,-1;"
"LON \"LON\" true true false 8 Double 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\ANNAX_join,LON,-1,-1;"
"POINT_X \"POINT_X\" true true false 8 Double 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\ANNAX_join,POINT_X,-1,-1;"
"POINT_Y \"POINT_Y\" true true false 8 Double 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\ANNAX_join,POINT_Y,-1,-1;"
"COUNTY \"COUNTY\" true true false 12 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\ANNAX_join,COUNTY,-1,-1;"
"KROLL \"KROLL\" true true false 4 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\ANNAX_join,KROLL,-1,-1;"
"PLSS \"PLSS\" true true false 11 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\ANNAX_join,PLSS,-1,-1;"
"QTS \"QTS\" true true false 2 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\ANNAX_join,QTS,-1,-1;"
"SEC \"SEC\" true true false 2 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\ANNAX_join,SEC,-1,-1;"
"TWP \"TWP\" true true false 2 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\ANNAX_join,TWP,-1,-1;"
"RNG \"RNG\" true true false 2 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\ANNAX_join,RNG,-1,-1;"
"IN_CITY \"IN_CITY\" true true false 40 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\ANNAX_join,IN_CITY,-1,-1;"
"ANNEX_NAME \"ANNEX_NAME\" true true false 40 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\ANNAX_join,ANNEX_NAME,-1,-1;"
"ORDINANCE \"ORDINANCE\" true true false 6 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\ANNAX_join,ORDINANCE,-1,-1;"
"ANNEX_YEAR \"ANNEX_YEAR\" true true false 4 Long 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\ANNAX_join,ANNEX_YEAR,-1,-1;"
"TAG \"TAG\" true true false 40 Text 0 0 ,First,#,Database Connections\\KentGIS.sde\\KENTGIS.DBO.LandUsePlanning\\KENTGIS.DBO.zone,TAG,-1,-1;"
"ZONE_DESC \"ZONE_DESC\" true true false 80 Text 0 0 ,First,#,Database Connections\\KentGIS.sde\\KENTGIS.DBO.LandUsePlanning\\KENTGIS.DBO.zone,ZONE_DESC,-1,-1", "HAVE_THEIR_CENTER_IN", "", "")
# Changing the name of "TAG" to "ZONE_KENT"
arcpy.AlterField_management(Zoning_join, "TAG", "ZONE_KENT", "ZONE_KENT", "", "", "NON_NULLABLE", "false")
# Spatially joining the Comp Plan fields
arcpy.SpatialJoin_analysis(Zoning_join, KENTGIS_DBO_comp_plan, Comp_join, "JOIN_ONE_TO_ONE", "KEEP_ALL", "MAJOR \"MAJOR\" true true false 6 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Zoning_join,MAJOR,-1,-1;"
"MINOR \"MINOR\" true true false 4 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Zoning_join,MINOR,-1,-1;"
"PIN \"PIN\" true true false 10 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Zoning_join,PIN,-1,-1;"
"AcctNbr \"AcctNbr\" true true false 8000 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Zoning_join,AcctNbr,-1,-1;"
"TaxpayerName \"TaxpayerName\" true true false 255 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Zoning_join,TaxpayerName,-1,-1;"
"AttnLine \"AttnLine\" true true false 255 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Zoning_join,AttnLine,-1,-1;"
"AddrLine \"AddrLine\" true true false 255 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Zoning_join,AddrLine,-1,-1;"
"CityState \"CityState\" true true false 255 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Zoning_join,CityState,-1,-1;"
"ZipCode \"ZipCode\" true true false 255 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Zoning_join,ZipCode,-1,-1;"
"TaxStat \"TaxStat\" true true false 255 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Zoning_join,TaxStat,-1,-1;"
"BillYr \"BillYr\" true true false 255 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Zoning_join,BillYr,-1,-1;"
"ApprLandVal \"ApprLandVal\" true true false 8000 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Zoning_join,ApprLandVal,-1,-1;"
"ApprImpsVal \"ApprImpsVal\" true true false 8000 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Zoning_join,ApprImpsVal,-1,-1;"
"TaxableLandVal \"TaxableLandVal\" true true false 8000 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Zoning_join,TaxableLandVal,-1,-1;"
"TaxableImpsVal \"TaxableImpsVal\" true true false 8000 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Zoning_join,TaxableImpsVal,-1,-1;"
"PropName \"PropName\" true true false 255 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Zoning_join,PropName,-1,-1;"
"PlatName \"PlatName\" true true false 255 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Zoning_join,PlatName,-1,-1;"
"PropType \"PropType\" true true false 255 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Zoning_join,PropType,-1,-1;"
"CurrentZoning \"CurrentZoning\" true true false 255 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Zoning_join,CurrentZoning,-1,-1;"
"PresentUse \"PresentUse\" true true false 4 Short 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Zoning_join,PresentUse,-1,-1;"
"SqFtLot \"SqFtLot\" true true false 4 Long 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Zoning_join,SqFtLot,-1,-1;"
"WaterSystem \"WaterSystem\" true true false 4 Long 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Zoning_join,WaterSystem,-1,-1;"
"SewerSystem \"SewerSystem\" true true false 4 Long 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Zoning_join,SewerSystem,-1,-1;"
"APT_UNITS \"APT_UNITS\" true true false 4 Short 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Zoning_join,APT_UNITS,-1,-1;"
"CONDO_UNITS \"CONDO_UNITS\" true true false 4 Short 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Zoning_join,CONDO_UNITS,-1,-1;"
"MH_SPACES \"MH_SPACES\" true true false 4 Long 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Zoning_join,MH_SPACES,-1,-1;"
"Alias1 \"ADDRALIAS1\" true true false 60 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Zoning_join,Alias1,-1,-1;"
"Alias2 \"ADDRALIAS2\" true true false 60 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Zoning_join,Alias2,-1,-1;"
"ADDR_HN \"HouseNum\" true true false 10 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Zoning_join,ADDR_HN,-1,-1;"
"ADDR_PD \"PreDir\" true true false 2 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Zoning_join,ADDR_PD,-1,-1;"
"ADDR_PT \"PreType\" true true false 6 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Zoning_join,ADDR_PT,-1,-1;"
"ADDR_SN \"StreetName\" true true false 80 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Zoning_join,ADDR_SN,-1,-1;"
"ADDR_ST \"SufType\" true true false 6 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Zoning_join,ADDR_ST,-1,-1;"
"ADDR_SD \"SufDir\" true true false 2 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Zoning_join,ADDR_SD,-1,-1;"
"ADDR_NUM \"ADDR_NUM\" true true false 4 Long 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Zoning_join,ADDR_NUM,-1,-1;"
"ADDR_FULL \"FullAddr\" true true false 120 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Zoning_join,ADDR_FULL,-1,-1;"
"FULLNAME \"FullName\" true true false 120 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Zoning_join,FULLNAME,-1,-1;"
"ZIP5 \"ZIP5\" true true false 5 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Zoning_join,ZIP5,-1,-1;"
"PLUS4 \"PLUS4\" true true false 4 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Zoning_join,PLUS4,-1,-1;"
"CTYNAME \"CTYNAME\" true true false 28 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Zoning_join,CTYNAME,-1,-1;"
"POSTALCTYNAME \"POSTALCTYNAME\" true true false 28 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Zoning_join,POSTALCTYNAME,-1,-1;"
"LAT \"LAT\" true true false 8 Double 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Zoning_join,LAT,-1,-1;"
"LON \"LON\" true true false 8 Double 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Zoning_join,LON,-1,-1;"
"POINT_X \"POINT_X\" true true false 8 Double 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Zoning_join,POINT_X,-1,-1;"
"POINT_Y \"POINT_Y\" true true false 8 Double 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Zoning_join,POINT_Y,-1,-1;"
"COUNTY \"COUNTY\" true true false 12 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Zoning_join,COUNTY,-1,-1;"
"KROLL \"KROLL\" true true false 4 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Zoning_join,KROLL,-1,-1;"
"PLSS \"PLSS\" true true false 11 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Zoning_join,PLSS,-1,-1;"
"QTS \"QTS\" true true false 2 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Zoning_join,QTS,-1,-1;"
"SEC \"SEC\" true true false 2 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Zoning_join,SEC,-1,-1;"
"TWP \"TWP\" true true false 2 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Zoning_join,TWP,-1,-1;"
"RNG \"RNG\" true true false 2 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Zoning_join,RNG,-1,-1;"
"IN_CITY \"IN_CITY\" true true false 40 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Zoning_join,IN_CITY,-1,-1;"
"ANNEX_NAME \"ANNEX_NAME\" true true false 40 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Zoning_join,ANNEX_NAME,-1,-1;"
"ORDINANCE \"ORDINANCE\" true true false 6 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Zoning_join,ORDINANCE,-1,-1;"
"ANNEX_YEAR \"ANNEX_YEAR\" true true false 4 Long 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Zoning_join,ANNEX_YEAR,-1,-1;"
"ZONE_KENT \"ZONE_KENT\" true true false 40 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Zoning_join,ZONE_KENT,-1,-1;"
"ZONE_DESC \"ZONE_DESC\" true true false 80 Text 0 0 ,First,#,Z:\\gis\\work\\Parcels\\Data\\Processing\\Parcels_Processing.gdb\\Zoning_join,ZONE_DESC,-1,-1;"
"TAG \"TAG\" true true false 40 Text 0 0 ,First,#,Database Connections\\KentGIS.sde\\KENTGIS.DBO.LandUsePlanning\\KENTGIS.DBO.comp_plan,TAG,-1,-1;"
"USE_DESC \"USE_DESC\" true true false 80 Text 0 0 ,First,#,Database Connections\\KentGIS.sde\\KENTGIS.DBO.LandUsePlanning\\KENTGIS.DBO.comp_plan,USE_DESC,-1,-1", "HAVE_THEIR_CENTER_IN", "", "")
# Altering the name of the attributes
arcpy.AlterField_management(Comp_join, "TAG", "USE_KENT", "USE_KENT", "", "", "NON_NULLABLE", "false")
# Deleting unwanted fields
arcpy.DeleteField_management(Comp_join, "Join_Count;TARGET_FID")
# Converting the lookup.csv to a GBD table
arcpy.TableToTable_conversion(Lookup_csv, Parcels_gdb, "LookUp")
# Joining lookup GDB table
arcpy.JoinField_management(Comp_join, "PresentUse","Z:\gis\work\Parcels\Data\Processing\Parcels_Processing.gdb\LookUp", "LUITEM", "LUDescription")
# Altering the field name from "LUDescription" to "USES_DESCRIPTION"
arcpy.AlterField_management(Comp_join, "LUDescription", "USE_DESCRIPTION", "Landuse Description","TEXT","255","NULLABLE", "false")
# Changing the data type from String to Double for LAND_VALUE field
arcpy.AddField_management(Comp_join, "LAND_VALUE", "DOUBLE", "", "", "8000", "LAND VALUE", "NULLABLE", "NON_REQUIRED", "")
arcpy.CalculateField_management(Comp_join, "LAND_VALUE", "!ApprlandVal!", "PYTHON", "")
# Changing the data type from String to Double for IMPROVED VALUE field
arcpy.AddField_management(Comp_join, "IMPROV_VALUE", "DOUBLE", "", "", "8000", "IMPROVED VALUE", "NULLABLE", "NON_REQUIRED", "")
arcpy.CalculateField_management(Comp_join, "IMPROV_VALUE", "!ApprImpsVal!", "PYTHON", "")
# Changing the data type from String to Double for TAXABLE LAND VALUE field
arcpy.AddField_management(Comp_join, "TAXLANDVAL", "DOUBLE", "", "", "8000", "TAXABLE LAND VALUE", "NULLABLE", "NON_REQUIRED", "")
arcpy.CalculateField_management(Comp_join, "TAXLANDVAL", "!TaxableLandVal!", "PYTHON", "")
# Changing the data type from String to Double for TAXABLE IMPROVED VALUE field
arcpy.AddField_management(Comp_join, "TAXIMPRVAL", "DOUBLE", "", "", "8000", "TAXABLE IMPROVED VALUE", "NULLABLE", "NON_REQUIRED", "")
arcpy.CalculateField_management(Comp_join, "TAXIMPRVAL", "!TaxableImpsVal!", "PYTHON", "")
# Deleting unneeded fields
arcpy.DeleteField_management(Comp_join, "ApprImpsVal")
arcpy.DeleteField_management(Comp_join, "ApprLandVal")
arcpy.DeleteField_management(Comp_join, "TaxableLandVal")
arcpy.DeleteField_management(Comp_join, "TaxableImpsVal")
# Changing the data type from Double to Short for the "HM_SPACES" field
arcpy.AddField_management(Comp_join, "SPACES", "Short", "", "", "10", "MOBILE HOME SPACES", "NULLABLE", "NON_REQUIRED", "")
arcpy.CalculateField_management(Comp_join, "SPACES", "!MH_SPACES!", "PYTHON", "")
arcpy.DeleteField_management(Comp_join, "MH_SPACES")
arcpy.AlterField_management(Comp_join, "SPACES", "MH_SPACES", "MOBILE HOME SPACES", "Short", "10", "NULLABLE", "false")
# Altering Field name
arcpy.AlterField_management(Comp_join, "PIN", "PARCEL_NUMBER", "PARCEL_NUMBER", "TEXT", "10", "NULLABLE", "false")
arcpy.AlterField_management(Comp_join, "AcctNbr", "ACCT_NBR", "ACCT_NBR", "TEXT", "255", "NULLABLE", "false")
arcpy.AlterField_management(Comp_join, "TaxpayerName", "TAXPAYER", "TAXPAYER", "TEXT", "255", "NULLABLE", "false")
arcpy.AlterField_management(Comp_join, "AttnLine", "ATTN_LINE", "ATTN_LINE", "TEXT", "255", "NULLABLE", "false")
arcpy.AlterField_management(Comp_join, "AddrLine", "TAXP_ADDR", "TAXP_ADDR", "TEXT", "255", "NULLABLE", "false")
arcpy.AlterField_management(Comp_join, "CityState", "TAXP_CITY", "TAXP_CITY", "TEXT", "255", "NULLABLE", "false")
arcpy.AlterField_management(Comp_join, "ZipCode", "TAXP_ZIP", "TAXP_ZIP", "TEXT", "255", "NULLABLE", "false")
arcpy.AlterField_management(Comp_join, "TaxStat", "TAX_STAT", "TAX_STAT", "TEXT", "255", "NULLABLE", "false")
arcpy.AlterField_management(Comp_join, "BillYr", "BILL_YR", "BILL_YR", "TEXT", "255", "NULLABLE", "false")
arcpy.AlterField_management(Comp_join, "PropName", "SITE_NAME", "SITE_NAME", "TEXT", "255", "NULLABLE", "false")
arcpy.AlterField_management(Comp_join, "PlatName", "PLAT_NAME", "PLAT_NAME", "TEXT", "255", "NULLABLE", "false")
arcpy.AlterField_management(Comp_join, "PropType", "PROP_TYPE", "PROP_TYPE", "TEXT", "255", "NULLABLE", "false")
arcpy.AlterField_management(Comp_join, "CurrentZoning", "ZONE_KNG", "ZONE_KNG", "TEXT", "255", "NULLABLE", "false")
arcpy.AlterField_management(Comp_join, "PresentUse", "USE_KNG", "Landuse Code King", "Short", "5", "NULLABLE", "false")
arcpy.AlterField_management(Comp_join, "SqFtLot", "LOT_AREA", "LOT_AREA", "LONG", "10", "NULLABLE", "false")
arcpy.AlterField_management(Comp_join, "WaterSystem", "WATER_SYSTEM", "WATER_SYSTEM", "LONG", "10", "NULLABLE", "false")
arcpy.AlterField_management(Comp_join, "SewerSystem", "SEWER_SYSTEM", "SEWER_SYSTEM", "LONG", "10", "NULLABLE", "false")
arcpy.AlterField_management(Comp_join, "Alias1", "Alias1", "Alternate Streetname", "TEXT", "60", "NULLABLE", "false")
arcpy.AlterField_management(Comp_join, "Alias2", "Alias2", "Alternate Streetname2", "TEXT", "60", "NULLABLE", "false")
arcpy.AlterField_management(Comp_join, "ADDR_NUM", "SITE_ADDR", "SITE_ADDR", "LONG", "10", "NULLABLE", "false")
arcpy.AlterField_management(Comp_join, "ADDR_FULL", "SITE_FULL", "SITE_FULL", "TEXT", "120", "NULLABLE", "false")
arcpy.AlterField_management(Comp_join, "FULLNAME", "STREET_NAME", "STREET_NAME", "TEXT", "120", "NULLABLE", "false")
arcpy.AlterField_management(Comp_join, "ZIP5", "SITE_ZIP5", "SITE_ZIP5", "TEXT", "5", "NULLABLE", "false")
arcpy.AlterField_management(Comp_join, "PLUS4", "ZIP_PLUS4", "ZIP_PLUS4", "TEXT", "4", "NULLABLE", "false")
arcpy.AlterField_management(Comp_join, "CTYNAME", "CTYNAME", "E-911 City Name", "TEXT", "28", "NULLABLE", "false")
arcpy.AlterField_management(Comp_join, "POSTALCTYNAME", "PO_CTYNAME", "PO_CTYNAME", "TEXT", "28", "NULLABLE", "false")
# Below is a section of code that calculates frequency on the PIN field. It is commented out because it add an additional
# 3 hours to the run time.
#arcpy.Frequency_analysis(Comp_join, frequency, "PIN", "")
#arcpy.AlterField_management(frequency, "FREQUENCY", "POLYGONS", "POLYGONS", "SHORT", "5", "NULLABLE", "false")
#arcpy.JoinField_management(Comp_join, "PIN", frequency, "PIN", "POLYGONS")
#Run the line below if we are not calculating polygons. If lines 516 - 518 are being used, comment out line 521.
arcpy.AddField_management(Comp_join, "POLYGONS", "SHORT", "", "", "5", "POLYGONS", "NULLABLE")
print "DONE"
currentDT = datetime.datetime.now()
print (str(currentDT))
Request/Purose:
Developed a StoryMap platform for the Planning department, enabling them to manage and update projects transparently, conduct training sessions for employees, and provide documentation for ongoing data maintenance and updates.
Output:
Request/Purose:
The City of Kirkland wanted a unique ArcGIS Online Homepage. I edited the HTML to give it a unique look.
Output:
City of Kirklands ArcGIS Online homepage
Request/Purose:
The City of Kirkland's EOC needed an application to collect damages assessments after a hazard event. A colleague and I created a Survey123 app for Police and Fire crews to collect data points.
Output:
Request/Purose:
This dashboard displays the results of the Windshield Survey in the EOC command center.
Output: