国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

python實(shí)現(xiàn)csv格式文件轉(zhuǎn)為asc格式文件的方法

2020-01-04 15:25:07
字體:
供稿:網(wǎng)友

一、背景描述

csv格式文件是一種類似于excel的文件格式

asc格式文件是一種可以用text打開的文本文件

csv轉(zhuǎn)asc本來可以用arcgis順利完成,但由于csv數(shù)據(jù)量太大(744萬行),arcgis處理不了如此大的文本,所以需要通過寫代碼實(shí)現(xiàn)(注:不是用python調(diào)用arcgis工具)

二、格式說明

Csv格式:

python,asc,csv

asc圖片

說明:第一列為id,第二列是值,第三第四列為值所在的行列號;csv的數(shù)據(jù)共744萬行,直接打開無法全部加載

asc格式:

python,asc,csv

三、舉例

需要的是將csv對應(yīng)的某行某列的值prevalue,寫成asc格式的文件,檢驗(yàn)是否成功轉(zhuǎn)換的方式:將轉(zhuǎn)成的asc文件加載到arcmap中進(jìn)行查看,如上面的aspect.asc在arcmap中是下圖所示:

python,asc,csv

四、附件說明

附件中給出是一個(gè)用作示例的csv,以及上文提到的aspect.asc,用作參考

其實(shí)這個(gè)小程序的要求簡單來說就是把csv數(shù)據(jù)逐行讀取,然后對應(yīng)地寫成asc格式的文件,關(guān)鍵在于對asc文件格式的理解,希望在看了上述說明后,確定了解asc格式后再進(jìn)行下一步的操作。

注:在arcmap中,csv轉(zhuǎn)asc是這樣實(shí)現(xiàn)的:通過創(chuàng)建xy事件圖層,將csv轉(zhuǎn)shp(此時(shí)的csv中prevalue后面是xy坐標(biāo),這里我已經(jīng)將坐標(biāo)轉(zhuǎn)為行列號row、col了),隨后通過要素轉(zhuǎn)柵格工具,將shp轉(zhuǎn)為柵格,最后用柵格轉(zhuǎn)asc工具,將得到最終需要的asc

五、實(shí)現(xiàn)方式:

這里是按行依次讀取,所以需要通過excel操作將row所在列按順序依次排列

'''Created on 2017-3-21@author: soundslow'''#coding=utf-8 #python默認(rèn)使用ASKII碼保存文件,所以在文件開頭需要聲明保存編碼的格式(例:#coding=utf-8)import sysfrom sys import argvimport csvargc = '1.asc'script ,filename = argc,argvfw = 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ù)(行號)并不是數(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 #遍歷寫入數(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刷新,寫入文件數(shù)據(jù) print(f_rows[1]) #兩個(gè)打印是為了便于觀察數(shù)據(jù)運(yùn)行情況 print(f_rows) fw.close() fr.close()

題解下載鏈接

以上這篇python實(shí)現(xiàn)csv格式文件轉(zhuǎn)為asc格式文件的方法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持VEVB武林網(wǎng)。


注:相關(guān)教程知識閱讀請移步到python教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 漯河市| 高雄县| 安宁市| 饶河县| 会同县| 象山县| 屯留县| 德钦县| 西城区| 孟连| 孝义市| 肇庆市| 石河子市| 思茅市| 无极县| 朔州市| 天全县| 永顺县| 佛学| 乐业县| 镇坪县| 峡江县| 蓝田县| 新巴尔虎左旗| 麻城市| 新化县| 溧水县| 古丈县| 夏邑县| 漳州市| 武宣县| 西峡县| 隆尧县| 南京市| 类乌齐县| 武功县| 柞水县| 横山县| 武功县| 武功县| 普定县|