时间:2021-05-22
一、背景描述
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 sysfrom sys import argvimport csvargc = '1.asc'script ,filename = argc,argvfw = 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格式文件的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
在UNIX/LINUX服务器端生成了csv格式文件之后,有时需要根据csv文件的数据画图。这时可以把csv格式文件传输到windows端,然后再用Excel来处
mdb格式文件可以通过mdbtools工具将内中包含的每张表导出到csv格式文件。由于access数据库和postgresQL数据库格式上会存在不通性,所以使用
本文实例为大家分享了java导出csv格式文件的具体代码,供大家参考,具体内容如下导出csv格式文件的本质是导出以逗号为分隔的文本数据importjava.io
本文实例为大家分享了三种方式使用python写数据到csv或xlsx文件,供大家参考,具体内容如下第一种:使用csv模块,写入到csv格式文件#-*-codin
OpenCSV是一个简单的用于解析CSV文件的java类库,它封装了CSV格式文件的输出和读入,可以自动处理CSV格式中的特殊字符,最重要的是OpenCSV可以