python实现csv格式文件转为asc格式文件的方法


Posted in Python onMarch 23, 2018

一、背景描述

csv格式文件是一种类似于excel的文件格式

asc格式文件是一种可以用text打开的文本文件

csv转asc本来可以用arcgis顺利完成,但由于csv数据量太大(744万行),arcgis处理不了如此大的文本,所以需要通过写代码实现(注:不是用python调用arcgis工具)

二、格式说明

Csv格式:

python实现csv格式文件转为asc格式文件的方法

asc图片

说明:第一列为id,第二列是值,第三第四列为值所在的行列号;csv的数据共744万行,直接打开无法全部加载

asc格式:

python实现csv格式文件转为asc格式文件的方法

三、举例

需要的是将csv对应的某行某列的值prevalue,写成asc格式的文件,检验是否成功转换的方式:将转成的asc文件加载到arcmap中进行查看,如上面的aspect.asc在arcmap中是下图所示:

python实现csv格式文件转为asc格式文件的方法

四、附件说明

附件中给出是一个用作示例的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格式文件的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
使用相同的Apache实例来运行Django和Media文件
Jul 22 Python
python生成验证码图片代码分享
Jan 28 Python
django轻松使用富文本编辑器CKEditor的方法
Mar 30 Python
Python实现将sqlite数据库导出转成Excel(xls)表的方法
Jul 17 Python
使用numba对Python运算加速的方法
Oct 15 Python
Pyinstaller打包.py生成.exe的方法和报错总结
Apr 02 Python
详解如何用TensorFlow训练和识别/分类自定义图片
Aug 05 Python
用python实现英文字母和相应序数转换的方法
Sep 18 Python
django 简单实现登录验证给你
Nov 06 Python
django执行数据库查询之后实现返回的结果集转json
Mar 31 Python
python如何调用百度识图api
Sep 29 Python
Python利用Turtle绘制哆啦A梦和小猪佩奇
Apr 04 Python
python字典快速保存于读取的方法
Mar 23 #Python
使用Python爬了4400条淘宝商品数据,竟发现了这些“潜规则”
Mar 23 #Python
python 将字符串转换成字典dict的各种方式总结
Mar 23 #Python
Python自定义线程类简单示例
Mar 23 #Python
python如何实现内容写在图片上
Mar 23 #Python
Python实现的自定义多线程多进程类示例
Mar 23 #Python
python爬取各类文档方法归类汇总
Mar 22 #Python
You might like
php对二维数组进行排序的简单实例
2013/12/19 PHP
php中getservbyport与getservbyname函数用法实例
2014/11/18 PHP
php+html5+ajax实现上传图片的方法
2016/05/14 PHP
php简单解析mysqli查询结果的方法(2种方法)
2016/06/29 PHP
PHP基于自定义函数生成笛卡尔积的方法示例
2017/09/30 PHP
PHP实现QQ、微信和支付宝三合一收款码实例代码
2018/02/19 PHP
Javascript读取cookie函数代码
2010/10/16 Javascript
jQuery Trim去除字符串首尾空字符的实现方法说明
2014/02/11 Javascript
JQuery控制div外点击隐藏而div内点击不会隐藏的方法
2015/01/13 Javascript
js支持键盘控制的左右切换立体式图片轮播效果代码分享
2015/08/26 Javascript
动态的9*9乘法表效果的实现代码
2016/05/16 Javascript
完美解决IE9浏览器出现的对象未定义问题
2016/09/29 Javascript
JavaScript获取键盘按键的键码(参照表)
2017/01/10 Javascript
基于React实现表单数据的添加和删除详解
2017/03/14 Javascript
前端把html表格生成为excel表格的实例
2017/09/19 Javascript
AngularJS使用ui-route实现多层嵌套路由的示例
2018/01/10 Javascript
vue.js实现标签页切换效果
2018/06/07 Javascript
eslint 的三大通用规则详解
2019/05/16 Javascript
Python判断Abundant Number的方法
2015/06/15 Python
详解Python中的Cookie模块使用
2015/07/06 Python
Django rest framework工具包简单用法示例
2018/07/20 Python
python 实现批量xls文件转csv文件的方法
2018/10/23 Python
Python3+Appium实现多台移动设备操作的方法
2019/07/05 Python
Python获取命令实时输出-原样彩色输出并返回输出结果的示例
2019/07/11 Python
Pytorch 抽取vgg各层并进行定制化处理的方法
2019/08/20 Python
python多线程使用方法实例详解
2019/12/30 Python
python如何删除列为空的行
2020/07/17 Python
html5.2 dialog简介详解
2018/02/27 HTML / CSS
Toppik顶丰增发纤维官网:解决头发稀疏
2017/12/30 全球购物
西班牙著名的珠宝首饰品牌:P D PAOLA
2018/09/15 全球购物
英国标准协会商店:BSI Shop
2019/02/25 全球购物
网络编辑岗位职责范本
2014/02/10 职场文书
会计员岗位职责
2014/03/15 职场文书
月度优秀员工获奖感言
2014/08/16 职场文书
个人授权委托书样本
2014/09/13 职场文书
Java Spring Lifecycle的使用
2022/05/06 Java/Android