Check Table Properties

631
2
01-12-2023 10:40 AM
Status: Closed
afrs10
by
New Contributor II

THE CUSTOMER SENDS A SHAPEFILE AND WE NEED TO VERIFY THAT ALL FIELDS MEET THE DEPARTMENT'S REQUIREMENTS (PDF ATTACHED), FOR LATER INSERTION IN THE DATABASE; NOTHING BETTER THAN A SCRIPT IN PYTHON !!!

import os, arcpy, sys
from arcpy import env

#PAR�METROS DA TOOLBOX
#inputFolder = arcpy.GetParameterAsText(0)
#arcpy.env.workspace = "D:\\ARCGIS\\UPAR\\INPUT\\"
shape = arcpy.GetParameterAsText(0)

# Create a Describe object from the table.
#list_shp = os.listdir(inputFolder)
#desc = arcpy.Describe(shape)
lstFields = arcpy.ListFields(shape)
fieldCount = len(lstFields)
field_name = [f.name for f in arcpy.ListFields(shape)]

#CRIA A FUN��O
def CHKPROP(shape):

mxd = arcpy.mapping.MapDocument("CURRENT")
df = arcpy.mapping.ListDataFrames(mxd)[0]
addLayer = arcpy.mapping.Layer(shape)
arcpy.mapping.AddLayer(df, addLayer, "TOP")
ext = addLayer.getExtent()
df.extent = ext
df.scale = 10000

for fieldname in ['UPT','n_UPT','ra','setor','quadra','conjunto','lote','end_cart','projeto','leg_proj','data_reg','area','norma','leg_nor','codigo_reg','padrao_cor','uos_setor']:
if not fieldname in field_name:
arcpy.AddError ('{0} - campo ausente!'.format(fieldname))

for field in lstFields:
if field.name == "FID":
arcpy.AddWarning ("FID_OK")
elif field.name == "Shape":
arcpy.AddWarning ("Shape_OK")
elif field.name == "UPT":
if field.name == "UPT" and field.type == "String" and field.length == 20:
arcpy.AddWarning ("Item 1 UPT OK")
else:
arcpy.AddError ("Item 1 UPT ERRO!!!")
elif field.name == "n_UPT":
if field.name == "n_UPT" and field.type == "String" and field.length == 10:
arcpy.AddWarning ("Item 2 n_UPT OK")
else:
arcpy.AddError ("Item 2 n_UPT ERRO!!!")
elif field.name == "ra":
if field.name == "ra" and field.type == "Double":
arcpy.AddWarning ("Item 3 ra OK")
else:
arcpy.AddError ("Item 3 ra ERRO!!!")
elif field.name == "setor":
if field.name == "setor" and field.type == "String" and field.length == 50:
arcpy.AddWarning ("Item 4 setor OK")
else:
arcpy.AddError ("Item 4 setor ERRO!!!")
elif field.name == 'quadra':
if field.name == "quadra" and field.type == "String" and field.length == 50:
arcpy.AddWarning ("Item 5 quadra OK")
else:
arcpy.AddError ("Item 5 quadra ERRO!!!")
elif field.name == "conjunto":
if field.name == "conjunto" and field.type == "String" and field.length == 50:
arcpy.AddWarning ("Item 6 conjunto OK")
else:
arcpy.AddError ("Item 6 conjunto ERRO!!!")
elif field.name == "lote":
if field.name == "lote" and field.type == "String" and field.length == 50:
arcpy.AddWarning ("Item 7 lote OK")
else:
arcpy.AddError ("Item 7 lote ERRO!!!")
elif field.name == "end_cart":
if field.name == "end_cart" and field.type == "String" and field.length == 180:
arcpy.AddWarning ("Item 8 end_cart OK")
else:
arcpy.AddError ("Item 8 end_cart ERRO!!!")
elif field.name == "projeto":
if field.name == "projeto" and field.type == "String" and field.length == 50:
arcpy.AddWarning ("Item 9 projeto OK")
else:
arcpy.AddError ("Item 9 projeto ERRO!!!")
elif field.name == "leg_proj":
if field.name == "leg_proj" and field.type == "String" and field.length == 150:
arcpy.AddWarning ("Item 10 leg_proj OK")
else:
arcpy.AddError ("Item 10 leg_proj ERRO!!!")
elif field.name == "situacao":
if field.name == "situacao" and field.type == "String" and field.length == 20:
arcpy.AddWarning ("Item 11 situacao OK")
else:
arcpy.AddError ("Item 11 situacao ERRO!!!")
elif field.name == "data_reg":
if field.name == "data_reg" and field.type == "String" and field.length == 10:
arcpy.AddWarning ("Item 12 data_reg OK")
else:
arcpy.AddError ("Item 12 data_reg ERRO!!!")
elif field.name == "area":
if field.name == "area" and field.type == "Double":
arcpy.AddWarning ("Item 13 area OK")
else:
arcpy.AddError ("Item 13 area ERRO!!!")
elif field.name == "norma":
if field.name == "norma" and field.type == "String" and field.length == 70:
arcpy.AddWarning ("Item 14 norma OK")
else:
arcpy.AddError ("Item 14 norma ERRO!!!")
elif field.name == "leg_nor":
if field.name == "leg_nor" and field.type == "String" and field.length == 120:
arcpy.AddWarning ("Item 15 leg_nor OK")
else:
arcpy.AddError ("Item 15 leg_nor ERRO!!!")
elif field.name == "codigo_reg":
if field.name == "codigo_reg" and field.type == "Integer" and field.length == 10:
arcpy.AddWarning ("Item 16 codigo_reg OK")
else:
arcpy.AddError ("Item 16 codigo_reg ERRO!!!")
elif field.name == "padrao_cor":
if field.name == "padrao_cor" and field.type == "String" and field.length == 20:
arcpy.AddWarning ("Item 17 padrao_cor OK")
else:
arcpy.AddError ("Item 17 padrao_cor ERRO!!!")
elif field.name == "uos_setor":
if field.name == "uos_setor" and field.type == "String" and field.length == 150:
arcpy.AddWarning ("Item 18 uos_setor OK")
else:
arcpy.AddError ("Item 18 uos_setor ERRO!!!")
CHKPROP(shape)

2 Comments
HannesZiegler
Status changed to: Needs Clarification

Thank you for sharing this script with us. It looks like it can be very useful in verifying the integrity of shapefiles before inserting them into the database.

We noticed that it checks for specific fields and their properties, is there an idea for a specific new feature that you're trying to ask for in this script?  

If so, we would be happy to hear more about it. Otherwise, if you are just wanting to share your script with others in case it would help fulfill their needs too, this is better suited for the Esri Community forum rather than here.

Either way, we appreciate your willingness to share your knowledge, it can be extremely helpful for us and others.

ShaunWalbridge
Status changed to: Closed