I issued a problem while sharing web tool to a corporate ArcGis server.
I created a python script that works perfectly locally and passes preposting analysis but when I share it and try to run as a service, I get an error:
“line 98 SyntaxError: (unicode error) 'utf-8' codec can't decode byte 0xf1 in position 8: invalid continuation byte”
When I downloaded file from server’s directory I saw no syntaxis problems but I found out that in my code some strings replaced by “g_ESRI_variable_”s. That are:
1.Pathes to projected data – it was replaced correctly.
2.Field mapping string – long string and it have been replaced incorrectly. Part of a spring just disappeared.
#Field maping string to map fields while copy landplots
copy_class_map_field = 'GlobalID "GlobalID" false false true 38 GlobalID 0 0,First,#,DBO.Terra_landplots_Layer,GlobalID,-1,-1;id_accounted "id_accounted" true true false 4 Long 0 10,First,#,DBO.Terra_landplots_Layer,id_accounted,-1,-1;Kluster_name "Kluster_name" true true false 70 Text 0 0,First,#,DBO.Terra_landplots_Layer,Kluster_name,0,70;District "District" true true false 70 Text 0 0,First,#,DBO.Terra_landplots_Layer,District,0,70;Region "Region" true true false 70 Text 0 0,First,#,DBO.Terra_landplots_Layer,Region,0,70;Vilage_consil "Vilage_consil" true true false 100 Text 0 0,First,#,DBO.Terra_landplots_Layer,Vilage_consil,0,100;Vilage "Vilage" true true false 70 Text 0 0,First,#,DBO.Terra_landplots_Layer,Vilage,0,70;Square "Square" true true false 8 Double 8 38,First,#,DBO.Terra_landplots_Layer,Square,-1,-1;Square_second_cat "Square_second_cat" true true false 8 Double 8 38,First,#,DBO.Terra_landplots_Layer,Square_second_cat,-1,-1;In_of_field_persent "In_of_field_persent" true true false 8 Double 8 38,First,#,DBO.Terra_landplots_Layer,In_of_field_persent,-1,-1'
#Field maping string to map fields while perform spatial join cliped landplots and fields
spatial_join_map_field = 'GlobalID "GlobalID" true false false 38 GlobalID 0 0,First,#,memory\\worked,GlobalID,-1,-1;id_accounted " id_accounted " true true false 4 Long 0 10,First,#,memory\\worked,id_accounted,-1,-1;Kluster_name "Kluster_name " true true false 2147483647 Text 0 0,First,#,memory\\worked,Kluster_name,0,2147483647;District "District" true true false 2147483647 Text 0 0,First,#,memory\\worked,District,0,2147483647;Region "Region" true true false 2147483647 Text 0 0,First,#,memory\\worked,Region,0,2147483647;Vilage_consil "Vilage_consil" true true false 2147483647 Text 0 0,First,#,memory\\worked,Vilage_consil,0,2147483647;Vilage "Vilage" true true false 2147483647 Text 0 0,First,#,memory\\worked,Vilage,0,2147483647;Square "Square" true true false 8 Double 8 38,First,#,memory\\worked,Square,-1,-1;Square_second_cat "Square_second_cat" true true false 8 Double 8 38,First,#,memory\\worked,Square_second_cat,-1,-1;In_of_field_persent "In_of_field_persent" true true false 8 Double 8 38,First,#,memory\\worked,In_of_field_persent,-1,-1;ZD_1_GlobalID "ZD_1_GlobalID" true true false 38 Guid 0 0,First,#,memory\\worked,ZD_1_GlobalID,-1,-1;Name "Name" true true false 255 Text 0 0,First,#,C:\\Users\\d.lukash\\Documents\\ArcGIS\\Projects\\Landplot_manadgment\\T3ADF.sde\\T1.DBO.Fields_14,Name,0,255'
replaced by
# Esri start of added variables
g_ESRI_variable_1 = 'Terra_landplots_Layer,Square_second_cat,-1,-1;In_of_field_persent "In_of_field_persent" true true false 8 Double 8 38,First,#,DBO.Terra_landplots_Layer,In_of_field_persent,-1,-1'
g_ESRI_variable_2 = 'DBO.Fields_14,Name,0,255'
#Field maping string to map fields while copy landplots
copy_class_map_field = g_ESRI_variable_1
#Field maping string to map fields while perform spatial join cliped landplots and fields
spatial_join_map_field = g_ESRI_variable_2
I do not know if Syntax Error have something common with this replacement. Is there some documentation about it? What I should do to get my code runs correctly on server after sharing.
Thanks for help!
show the relevant portion of the code would be useful...
it sounds like something wasn't "raw" encoded, like a file path (eg r"c:\path\to\something") or similar
the little 'r' is to be used for raw encoding
You are right, with code looks better
No, it did not help(
The problem was in cyrillic letter. NEVER use cyrilic letters in the tool you are gonna publish as a GP service