POST
|
Micah, Thank you, that did the trick! And thanks for the heads up on the Syntax highlighter, I will use it next time. Finally, what does "#" mean? Does this mean to ignore that parameter?
... View more
08-31-2017
11:49 AM
|
1
|
1
|
389
|
POST
|
I have AddJoined two tables as a table view. Now I want to remove very many fields. I want to operate on this table in memory before I export it because the table is very large and it takes a very long time to export. So, I am starting by reducing the number of fields. In the code below, I am using tiny little tables for testing. I understand "for field" loop. But I don't understand why it doesn't remove the fields. I print(field.name) as a sanity check. The joined fields of the table view are all there. Then, I export the addjoin table (TableToTable_conversion) to see if the fields really have been removed. They aren't. The exported table contains all original fields. The problem seems to be in the line: fieldmappings.removeFieldMap. Question: Does FieldMappings.RemoveFieldMap only work on "real" tables, and not on tableviews? Or perhaps it doesn't work on AddJoins? Thanks in advance for any suggestion. Best regards, Mike # Make the VAA table view mr_vaa_view = 'mr_vaa_table_view' arcpy.MakeTableView_management(mr_vaa, mr_vaa_view) # Join the VAA table to the flowlines # Must turn the VAA and Flowlines into a table view. # Because AddJoin only works on layers and views # Make the VAA table view# mr_vaa_view = 'mr_vaa_table_view' arcpy.MakeTableView_management(mr_vaa, mr_vaa_view) # Make the MR Flowlines table view# mr_fl_lyr = 'mr_flowlines_layer' arcpy.MakeTableView_management(mr_fl_table,mr_fl_lyr) # AddJoin the VAA table, (mr_vaa_view) to the Flowline table, (mr_fl_table)# addjoin = arcpy.AddJoin_management(mr_fl_lyr, 'Permanent_Identifier', mr_vaa_view, 'ComIDstr', 'KEEP_COMMON') # Reduce the number of fields to the essentials# fieldmappings = arcpy.FieldMappings() fieldmappings.addTable(addjoin) # Name fields I want to keep# keepers = ["ReachCode", "FlowFlowlineVAACopy_Hydroseq","COMstr"] # Remove fields I don't want# for field in fieldmappings.fields: print(field.name) if field.name not in keepers: fieldmappings.removeFieldMap(fieldmappings.findFieldMapIndex(field.name)) name = 'MR_VAA' out_folder = 'D:\output' outputGDB = 'output.gdb' mr_nhd_vaa = os.path.join(out_folder, outputGDB) arcpy.TableToTable_conversion(addjoin, mr_nhd_vaa, name)
... View more
08-31-2017
10:44 AM
|
0
|
3
|
580
|
POST
|
Thanks for sticking with the thread Dan. I'll go through examples. NHDFlowline = 'D:\Generalizer\output.gdb\NHDFlowline_0202'
HUC = 'D:\Generalizer\output.gdb\huc12_mn_ppt_0202'
arcpy.CalculateField_management(NHDFlowline,'THRESHOLD','!MEAN! * .01', 'PYTHON') This first one works. However, m is supposed to be an input parameter so... m = input("enter m")
NHDFlowline = 'D:\Generalizer\output.gdb\NHDFlowline_0202'
HUC = 'D:\Generalizer\output.gdb\huc12_mn_ppt_0202'
arcpy.CalculateField_management(NHDFlowline,'THRESHOLD','!MEAN! * m', 'PYTHON') This is the usual error I get, which is: NameError: name 'm' is not defined. Ok, lets use your first example: m = input("enter m")
expr = '!MEAN!' * {}.format(m)
NHDFlowline = 'D:\Generalizer\output.gdb\NHDFlowline_0202'
HUC = 'D:\Generalizer\output.gdb\huc12_mn_ppt_0202'
arcpy.CalculateField_management(NHDFlowline,'THRESHOLD','expr', 'PYTHON') Now the error says: expr = '!MEAN!' * {}.format(m) AttributeError: 'dict' object has no attribute 'format' It thinks that !MEAN! is a dictionary object... m = input("enter m")
expr = '!MEAN!' * {}.format(m)
NHDFlowline = 'D:\Generalizer\output.gdb\NHDFlowline_0202'
HUC = 'D:\Generalizer\output.gdb\huc12_mn_ppt_0202'
arcpy.CalculateField_management(in_table=NHDFlowline,field='THRESHOLD',expression='expr',expression_type='PYTHON',code_block="") This one has the same error: expr = '!MEAN!' * {}.format(m) AttributeError: 'dict' object has no attribute 'format'
... View more
05-15-2017
03:30 PM
|
0
|
3
|
1336
|
POST
|
Gentlemen, thanks for your feedback. Been offline couple of days. Here are the relevant lines of the "real" script in question slope = arcpy.GetParameterAsText(2) m = float(slope) arcpy.CalculateField_management(NHDFlowline,'THRESHOLD', '!MEAN! * m', 'PYTHON') Where NHDFlowline is an existing table in an output gdb (set as the working environment). A couple fields I have added to this table are THRESHOLD and MEAN. I am attempting to field calculate THRESHOLD by multiplying (MEAN * m) where m is the slope of a regression line.
... View more
05-15-2017
10:15 AM
|
0
|
0
|
1336
|
POST
|
No, it doesn't. However, it is a parameter input by the user.
... View more
05-12-2017
07:04 AM
|
0
|
4
|
1336
|
POST
|
Somehow, the variable m is not being passed. CalculateField doesn't seem to know anything about the variable m. So...how to pass it?
... View more
05-12-2017
06:35 AM
|
0
|
6
|
2522
|
POST
|
Joshua, thank you. However, the error now says: Parameters are not valid. ERROR 000800: The value is not a member of VB | PYTHON | PYTHON_9.3. Failed to execute (CalculateField).
... View more
05-12-2017
06:16 AM
|
0
|
8
|
2522
|
POST
|
Thanks Dan. I tried that earlier! The result is: "SyntaxError: non-keyword arg after keyword arg"
... View more
05-11-2017
09:19 PM
|
0
|
11
|
2522
|
POST
|
Thanks for your response. If I try: arcpy.CalculateField_management(table, 'FIELD_B', '!FIELD_A! ' * m, 'PYTHON 9.3') The error is different. It states: "can't multiply sequence by non-int type of float"
... View more
05-11-2017
09:05 PM
|
0
|
1
|
2522
|
POST
|
Hello, Why am I getting a NameError here? Here is the basic python: table = r'D:\output.gdb\table' m = 0.01 arcpy.CalculateField_management(table, 'FIELD_B', '!FIELD_A! * m', 'PYTHON') The error states: NameError: name 'm' is not defined How is this so, as I have just defined m right above? Thanks much for your help! Best regards, Mike
... View more
05-11-2017
08:15 PM
|
0
|
20
|
5459
|
Title | Kudos | Posted |
---|---|---|
1 | 08-31-2017 11:49 AM |
Online Status |
Offline
|
Date Last Visited |
12-10-2021
06:29 PM
|