2015-04-22 61 views
1

我有一個大的(> 1000)數量的文件,其中有包含定義爲文本字段的數字的字段。我需要將包含這些值的字段作爲數字。我可以添加新的字段,但是當我無法填充它們時。將字符串字段轉換爲弧形中的數字字段

我正在使用ArcGis 10.1。行的值可能在0-10之間,包括最多一位小數,或者它們可能對於變量(實際上是空白的,沒有佔位符)是空的。

下面是我用於兩個變量(N_CTN_CFY)的python腳本,以及我得到的錯誤。看起來我的問題是如何將文本值轉換爲Decimal轉換。

我不熟悉腳本,所以請原諒,如果我的描述或詞的選擇不清楚。

import arcpy, os, sys 
from arcpy import env 
from decimal import * 

arcpy.env.overwriteOutput = True 

env.workspace = "C:\Users\OuelletteMS\Desktop\Ice_Data_testarea" 

listFCs = arcpy.ListFeatureClasses("*") 
for fc in listFCs: 
    print str("processing " + fc) # displays the file that is currently being handled 

    strNCT = "N_CT" # the current, text version of the field    
    newNCT = "NCT" # the new, number version I want to create   
    strNCFY = "N_CFY" # the current, text version of the field   
    newNCFY = "NCFY" # the new, number version I want to create   

    arcpy.AddField_management(fc,newNCT,"DOUBLE") 
    arcpy.AddField_management(fc,newNCFY,"DOUBLE") 

    cursor = arcpy.UpdateCursor(fc) 
    for row in cursor: 
     row.setValue(newNCT, row.getValue(Decimal(strNCT))) 
     row.setValue(newNCFY, row.getValue(Decimal(strNCFY))) 
     cursor.updateRow(row) 

錯誤mesage:

運行時錯誤回溯(最近通話最後一個):文件 「」, 23行,在文件「C:\ Python27 \ ArcGIS10.1 \ LIB \小數。 py「, line 548,in new 」Decimal文字無效:%r「%value)_raise_error中的文件」C:\ Python27 \ ArcGIS10.1 \ Lib \ decimal.py「,第3844行,引發錯誤 (解釋)InvalidOperation:十進制字符無效:'N_CT'

+0

我意識到,我沒有這個職位的GIS論壇,我打算這樣做。有沒有辦法將它移動到該論壇? – markouellette

回答

0

你可以通過使用一個字符串值轉換爲浮動整數:

stringA = '12' 
# Convert string to integer: 
int(stringA) 
# Convert string to float 
float(stringA) 
+0

我真的需要保留小數,所以整數是out,並且float在保留一個精確的十進制值(3.3 vs 3.299999999997)方面不是很好。我真正的問題似乎是如何將字符串傳遞到Decimal函數。 – markouellette

+0

也許你可以看看這裏:: https://docs.python.org/2/library/decimal.html float()將保留點或逗號後面的所有數字。 – Tenzin

+0

我使用float的問題並不是它不會保留小數點後的所有數字,而是它添加的所有exra數字。有什麼理由我不應該使用Decimal函數嗎? – markouellette

相關問題