本文章向大家介紹使用python怎么將csv格式文件轉(zhuǎn)為asc格式文件的基本知識(shí)點(diǎn)總結(jié)和需要注意事項(xiàng),具有一定的參考價(jià)值,需要的朋友可以參考一下。
目前成都創(chuàng)新互聯(lián)已為上千多家的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)站空間、網(wǎng)站托管、企業(yè)網(wǎng)站設(shè)計(jì)、格爾木網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。Python主要用來(lái)做什么Python主要應(yīng)用于:1、Web開(kāi)發(fā);2、數(shù)據(jù)科學(xué)研究;3、網(wǎng)絡(luò)爬蟲(chóng);4、嵌入式應(yīng)用開(kāi)發(fā);5、游戲開(kāi)發(fā);6、桌面應(yīng)用開(kāi)發(fā)。
一、背景描述
csv格式文件是一種類似于excel的文件格式
asc格式文件是一種可以用text打開(kāi)的文本文件
csv轉(zhuǎn)asc本來(lái)可以用arcgis順利完成,但由于csv數(shù)據(jù)量太大(744萬(wàn)行),arcgis處理不了如此大的文本,所以需要通過(guò)寫(xiě)代碼實(shí)現(xiàn)(注:不是用python調(diào)用arcgis工具)
二、格式說(shuō)明
Csv格式:
asc圖片
說(shuō)明:第一列為id,第二列是值,第三第四列為值所在的行列號(hào);csv的數(shù)據(jù)共744萬(wàn)行,直接打開(kāi)無(wú)法全部加載
asc格式:
三、舉例
需要的是將csv對(duì)應(yīng)的某行某列的值prevalue,寫(xiě)成asc格式的文件,檢驗(yàn)是否成功轉(zhuǎn)換的方式:將轉(zhuǎn)成的asc文件加載到arcmap中進(jìn)行查看,如上面的aspect.asc在arcmap中是下圖所示:
四、附件說(shuō)明
附件中給出是一個(gè)用作示例的csv,以及上文提到的aspect.asc,用作參考
其實(shí)這個(gè)小程序的要求簡(jiǎn)單來(lái)說(shuō)就是把csv數(shù)據(jù)逐行讀取,然后對(duì)應(yīng)地寫(xiě)成asc格式的文件,關(guān)鍵在于對(duì)asc文件格式的理解,希望在看了上述說(shuō)明后,確定了解asc格式后再進(jìn)行下一步的操作。
注:在arcmap中,csv轉(zhuǎn)asc是這樣實(shí)現(xiàn)的:通過(guò)創(chuàng)建xy事件圖層,將csv轉(zhuǎn)shp(此時(shí)的csv中prevalue后面是xy坐標(biāo),這里我已經(jīng)將坐標(biāo)轉(zhuǎn)為行列號(hào)row、col了),隨后通過(guò)要素轉(zhuǎn)柵格工具,將shp轉(zhuǎn)為柵格,最后用柵格轉(zhuǎn)asc工具,將得到最終需要的asc
五、實(shí)現(xiàn)方式:
這里是按行依次讀取,所以需要通過(guò)excel操作將row所在列按順序依次排列
''' Created on 2017-3-21 @author: soundslow ''' #coding=utf-8 #python默認(rèn)使用ASKII碼保存文件,所以在文件開(kāi)頭需要聲明保存編碼的格式(例:#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這幾行是一樣的,因?yàn)閿?shù)據(jù)源是一致的 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) ''' 第一個(gè)for循環(huán)是為了提取出一個(gè)中間介質(zhì)row_num作為行數(shù)的表示, 由于從表格中提取的數(shù)據(jù)(行號(hào))并不是數(shù)字類型, 不能直接使用(1 == f_rows[2]進(jìn)行判斷,所以直接使用自身的類型。) (補(bǔ)充:應(yīng)該是字符串類型) ''' for i,f_rows_temp in enumerate(reader): if(i == 0): continue row_num = f_rows_temp[2] print(row_num) break #遍歷寫(xiě)入數(shù)據(jù),遍歷行數(shù)(即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() #強(qiáng)制IO刷新,寫(xiě)入文件數(shù)據(jù) print(f_rows[1]) #兩個(gè)打印是為了便于觀察數(shù)據(jù)運(yùn)行情況 print(f_rows) fw.close() fr.close()
以上就是小編為大家?guī)?lái)的使用python怎么將csv格式文件轉(zhuǎn)為asc格式文件的全部?jī)?nèi)容了,希望大家多多支持創(chuàng)新互聯(lián)!
網(wǎng)站題目:使用python怎么將csv格式文件轉(zhuǎn)為asc格式文件-創(chuàng)新互聯(lián)
URL分享:http://jinyejixie.com/article36/csogpg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制開(kāi)發(fā)、網(wǎng)站設(shè)計(jì)、全網(wǎng)營(yíng)銷推廣、動(dòng)態(tài)網(wǎng)站、品牌網(wǎng)站制作、關(guān)鍵詞優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容