您好,登錄后才能下訂單哦!
本文章向大家介紹使用python怎么將csv格式文件轉為asc格式文件的基本知識點總結和需要注意事項,具有一定的參考價值,需要的朋友可以參考一下。
Python主要應用于:1、Web開發;2、數據科學研究;3、網絡爬蟲;4、嵌入式應用開發;5、游戲開發;6、桌面應用開發。
一、背景描述
csv格式文件是一種類似于excel的文件格式
asc格式文件是一種可以用text打開的文本文件
csv轉asc本來可以用arcgis順利完成,但由于csv數據量太大(744萬行),arcgis處理不了如此大的文本,所以需要通過寫代碼實現(注:不是用python調用arcgis工具)
二、格式說明
Csv格式:
asc圖片
說明:第一列為id,第二列是值,第三第四列為值所在的行列號;csv的數據共744萬行,直接打開無法全部加載
asc格式:
三、舉例
需要的是將csv對應的某行某列的值prevalue,寫成asc格式的文件,檢驗是否成功轉換的方式:將轉成的asc文件加載到arcmap中進行查看,如上面的aspect.asc在arcmap中是下圖所示:
四、附件說明
附件中給出是一個用作示例的csv,以及上文提到的aspect.asc,用作參考
其實這個小程序的要求簡單來說就是把csv數據逐行讀取,然后對應地寫成asc格式的文件,關鍵在于對asc文件格式的理解,希望在看了上述說明后,確定了解asc格式后再進行下一步的操作。
注:在arcmap中,csv轉asc是這樣實現的:通過創建xy事件圖層,將csv轉shp(此時的csv中prevalue后面是xy坐標,這里我已經將坐標轉為行列號row、col了),隨后通過要素轉柵格工具,將shp轉為柵格,最后用柵格轉asc工具,將得到最終需要的asc
五、實現方式:
這里是按行依次讀取,所以需要通過excel操作將row所在列按順序依次排列
''' Created on 2017-3-21 @author: soundslow ''' #coding=utf-8 #python默認使用ASKII碼保存文件,所以在文件開頭需要聲明保存編碼的格式(例:#coding=utf-8) import sys from sys import argv import csv argc = '1.asc' script ,filename = argc,argv fw = open(argc, 'w') # string為:從ncols到NODATA_value這幾行是一樣的,因為數據源是一致的 string = ("ncols 4800\nnrows 1550\nxllcorner 284687.500000\nyllcorner 2412912.500000\ncellsize 25.000000\nNODATA_value -9999.000000\n") fw.write(string) fr = open(argc, 'r') with open('result_50_1.csv') as f: reader = csv.reader(f) ''' 第一個for循環是為了提取出一個中間介質row_num作為行數的表示, 由于從表格中提取的數據(行號)并不是數字類型, 不能直接使用(1 == f_rows[2]進行判斷,所以直接使用自身的類型。) (補充:應該是字符串類型) ''' for i,f_rows_temp in enumerate(reader): if(i == 0): continue row_num = f_rows_temp[2] print(row_num) break #遍歷寫入數據,遍歷行數(即csv文件第三列f_rows[2]) for i,f_rows in enumerate(reader): if(i == 0): continue if(f_rows[2] != row_num): # 判斷是否換行 fw.write('\n') row_num = f_rows[2] fw.write(f_rows[1]) fw.write(' ') sys.stdout.flush() #強制IO刷新,寫入文件數據 print(f_rows[1]) #兩個打印是為了便于觀察數據運行情況 print(f_rows) fw.close() fr.close()
以上就是小編為大家帶來的使用python怎么將csv格式文件轉為asc格式文件的全部內容了,希望大家多多支持億速云!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。