python實現(xiàn)csv格式文件轉為asc格式文件的方法
一、背景描述
csv格式文件是一種類似于excel的文件格式
asc格式文件是一種可以用text打開的文本文件
csv轉asc本來可以用arcgis順利完成,但由于csv數(shù)據(jù)量太大(744萬行),arcgis處理不了如此大的文本,所以需要通過寫代碼實現(xiàn)(注:不是用python調用arcgis工具)
二、格式說明
Csv格式:

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

三、舉例
需要的是將csv對應的某行某列的值prevalue,寫成asc格式的文件,檢驗是否成功轉換的方式:將轉成的asc文件加載到arcmap中進行查看,如上面的aspect.asc在arcmap中是下圖所示:

四、附件說明
附件中給出是一個用作示例的csv,以及上文提到的aspect.asc,用作參考
其實這個小程序的要求簡單來說就是把csv數(shù)據(jù)逐行讀取,然后對應地寫成asc格式的文件,關鍵在于對asc文件格式的理解,希望在看了上述說明后,確定了解asc格式后再進行下一步的操作。
注:在arcmap中,csv轉asc是這樣實現(xiàn)的:通過創(chuàng)建xy事件圖層,將csv轉shp(此時的csv中prevalue后面是xy坐標,這里我已經(jīng)將坐標轉為行列號row、col了),隨后通過要素轉柵格工具,將shp轉為柵格,最后用柵格轉asc工具,將得到最終需要的asc
五、實現(xiàn)方式:
這里是按行依次讀取,所以需要通過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這幾行是一樣的,因為數(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)
'''
第一個for循環(huán)是為了提取出一個中間介質row_num作為行數(shù)的表示,
由于從表格中提取的數(shù)據(jù)(行號)并不是數(shù)字類型,
不能直接使用(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
#遍歷寫入數(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() #強制IO刷新,寫入文件數(shù)據(jù)
print(f_rows[1]) #兩個打印是為了便于觀察數(shù)據(jù)運行情況
print(f_rows)
fw.close()
fr.close()
以上這篇python實現(xiàn)csv格式文件轉為asc格式文件的方法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Python環(huán)境搭建以及Python與PyCharm安裝詳細圖文教程
PyCharm是一種PythonIDE,帶有一整套可以幫助用戶在使用Python語言開發(fā)時提高其效率的工具,這篇文章主要給大家介紹了關于Python環(huán)境搭建以及Python與PyCharm安裝的詳細圖文教程,需要的朋友可以參考下2024-03-03
Python HTTP下載文件并顯示下載進度條功能的實現(xiàn)
這篇文章主要介紹了Python HTTP下載文件并顯示下載進度條功能,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-04-04
Anaconda+Pycharm+Pytorch虛擬環(huán)境創(chuàng)建(各種包安裝保姆級教學)
相信很多時候大家都會用到虛擬環(huán)境,他具有可以讓你快速切換不同的python版本,本文主要介紹了Anaconda+Pycharm+Pytorch虛擬環(huán)境創(chuàng)建,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-10-10
python人工智能human?learn繪圖創(chuàng)建機器學習模型
這篇文章主要為大家介紹了python人工智能human?learn繪圖就可以創(chuàng)建機器學習模型的示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助2021-11-11
Python實現(xiàn)將Markdown文檔轉為EPUB電子書文件
這篇文章主要為大家詳細介紹了Python如何實現(xiàn)將Markdown文檔轉為EPUB電子書文件,文中的示例代碼講解詳細,感興趣的小伙伴可以了解一下2023-06-06

