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 相关文章推荐
使用python的chardet库获得文件编码并修改编码
Jan 22 Python
python实现一次创建多级目录的方法
May 15 Python
Python中for循环和while循环的基本使用方法
Aug 21 Python
Python中利用Scipy包的SIFT方法进行图片识别的实例教程
Jun 03 Python
django2+uwsgi+nginx上线部署到服务器Ubuntu16.04
Jun 26 Python
Python-opencv 双线性插值实例
Jan 17 Python
Python 实现向word(docx)中输出
Feb 13 Python
Python猜数字算法题详解
Mar 01 Python
浅谈在django中使用redirect重定向数据传输的问题
Mar 13 Python
Python定时任务框架APScheduler原理及常用代码
Oct 05 Python
pycharm配置python 设置pip安装源为豆瓣源
Feb 05 Python
pandas中pd.groupby()的用法详解
Jun 16 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+Ajax 检测网络是否正常实例详解
2016/12/16 PHP
Thinkphp 框架扩展之Widget扩展实现方法分析
2020/04/23 PHP
基于javascript实现判断移动终端浏览器版本信息
2014/12/09 Javascript
jQuery实现移动端滑块拖动选择数字效果
2015/12/24 Javascript
Angular发布1.5正式版,专注于向Angular 2的过渡
2016/02/18 Javascript
浅析Bootstrip的select控件绑定数据的问题
2016/05/10 Javascript
浅谈JS中逗号运算符的用法
2016/06/12 Javascript
解析浏览器端的AJAX缓存机制
2016/06/21 Javascript
JS制作图形验证码实现代码
2020/10/19 Javascript
详解webpack多页面配置记录
2018/01/22 Javascript
深入了解query和params的使用区别
2019/06/24 Javascript
微信小程序-可移动菜单的实现过程详解
2019/06/24 Javascript
原生js添加一个或多个类名的方法分析
2019/07/30 Javascript
解析vue、angular深度作用选择器
2019/09/11 Javascript
浅谈TypeScript的类型保护机制
2020/02/23 Javascript
ES11屡试不爽的新特性,你用上了几个
2020/10/21 Javascript
在Python中操作列表之List.append()方法的使用
2015/05/20 Python
在PyCharm导航区中打开多个Project的关闭方法
2019/01/17 Python
对python:循环定义多个变量的实例详解
2019/01/20 Python
详解pandas库pd.read_excel操作读取excel文件参数整理与实例
2019/02/17 Python
python3.5安装python3-tk详解
2019/04/26 Python
Pytorch之contiguous的用法
2019/12/31 Python
python爬虫把url链接编码成gbk2312格式过程解析
2020/06/08 Python
8款使用 CSS3 实现超炫的 Loading(加载)的动画效果
2015/03/17 HTML / CSS
毕业自我评价范文
2013/11/17 职场文书
高中毕业自我鉴定
2013/12/13 职场文书
买房子个人收入证明
2014/01/16 职场文书
美术专业个人自我评价
2014/01/18 职场文书
大学生创业感言
2014/01/25 职场文书
祖国在我心中演讲稿(小学生)
2014/09/23 职场文书
2015年音乐教师个人工作总结
2015/05/20 职场文书
医院病假条范文
2015/08/17 职场文书
2016春季运动会开幕词
2016/03/04 职场文书
学生检讨书范文
2019/06/24 职场文书
Oracle表空间与权限的深入讲解
2021/11/17 Oracle
【海涛解说】暗牧也疯狂,牛蛙成配角
2022/04/01 DOTA