6 votos

Arcpy: ¿Cómo puedo especificar la precisión y la escala de un nuevo campo?

Estoy queriendo crear un campo con un máximo de 1 decimal y, a continuación, calcular el valor de a es: (yo sé que todos mis valores son < 10)

arcpy.AddField_management('C:/shapefile.shp', 'myField', "FLOAT", 2, 1, "", "", "", "NON_REQUIRED", "")
arcpy.CalculateField_management('C:/shapefile.shp', 'myField', "[MEAN]", "VB", "")

Parece que no importa lo que intento no puedo obtener el número de posiciones decimales que yo quiera, puedo obtener el valor total del campo estoy calcular a partir de : [0.888889] y cuando veo las propiedades de campo acabo de ver a 0 para la precisión y el 0 de la escala. El contexto de datos ESRI shapefile. Y la alteración de los valores numéricos de las propiedades de campo no es una opción.

enter image description here

Alguien tiene alguna idea?

7voto

auramo Puntos 161

¿Cuál es su fuente de datos? La precisión y la escala sólo se aplican a los Dbms que les apoyan, como Oracle y SQL Server. De acuerdo con el Campo Agregar (Gestión de Datos) archivo de documentación y geodatabases personales no:

  • La precisión y la escala de un campo de describir el tamaño máximo y la precisión de los datos que pueden ser almacenados en el campo. La precisión indica el número de dígitos que pueden ser almacenados en el campo y la escala indica el número de decimales de los float y double campos. Por ejemplo, si el valor del campo es 54.234, a continuación, escala = 3 y precisión = 5. Utilice las siguientes directrices para una correcta selección de tipo de campo para una determinada precisión y escala:
    • Cuando se crea un float, double, o el entero campo y especifique 0 para la precisión y la escala, la herramienta intentará crear un archivo binario tipo de campo si el subyacente de la base de datos admite. Personal y las geodatabases de archivo de apoyo sólo de tipo binario campos, y la precisión y la escala son ignorados.
    • Cuando se crea float y double campos y especificar la precisión y la escala, si la precisión es mayor que 6, el uso de una doble; de lo contrario, el uso de un flotador. Si crea un doble campo y especifique una precisión de 6 o menos, un flotador de campo es creado. Si crea un flotador de campo y especifique una precisión mayor que 6, un doble campo es creado.
    • Si se especifica una escala de 0 y una precisión de 10 o menos, debe ser la creación de los campos de enteros. Cuando la creación de los campos de enteros, su precisión debe ser de 10 o menos, o su campo puede ser creado como doble.

Los Shapefiles, que el uso de dBASE tablas como la subyacente formato de almacenamiento de la tabla de atributos, que parecen apoyar la precisión y la escala. Yo era capaz de añadir un campo de tipo Flotante con Precisión 6 y la escala 4 y se muestra correctamente en la interfaz de usuario. Me hizo tanto a través de la interfaz de usuario y a través de arcpy (AddField):

arcpy.AddField_management(fc, "test3", "FLOAT", 6, 4)

Shapefile field properties with precision 6 and scale 4 visible

1voto

Roy Puntos 2884

Creo que arcpy está buscando el número en contraposición a una cadena. Si usted mira en la documentación:

field_precision (Opcional) indica el número de dígitos que pueden ser almacenados en el campo. Todos los dígitos que se cuentan no importa de qué lado de la coma decimal que se encuentran.

Si la tabla de entrada es personal o geodatabase de archivos en el campo valor de precisión será ignorado.

(Tipo De Datos) De Largo

Para comprobar que siempre se puede abrir modelo bulider, establecer una similar gp de flujo de trabajo y la exportación como una secuencia de comandos de python.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X