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备份目录及目录下的全部内容的实现方法
Jun 12 Python
Python selenium 三种等待方式解读
Sep 15 Python
Python 'takes exactly 1 argument (2 given)' Python error
Dec 13 Python
python 利用栈和队列模拟递归的过程
May 29 Python
Python 删除连续出现的指定字符的实例
Jun 29 Python
Django中使用Celery的方法示例
Nov 29 Python
DRF跨域后端解决之django-cors-headers的使用
Jan 27 Python
django框架model orM使用字典作为参数,保存数据的方法分析
Jun 24 Python
python 将字符串中的数字相加求和的实现
Jul 18 Python
一篇文章弄懂Python中的可迭代对象、迭代器和生成器
Aug 12 Python
Windows下python3安装tkinter的问题及解决方法
Jan 06 Python
python遍历路径破解表单的示例
Nov 21 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自动生成月历代码
2006/10/09 PHP
phpmailer在服务器上不能正常发送邮件的解决办法
2014/07/08 PHP
动态载入/删除/更新外部 JavaScript/Css 文件的代码
2010/07/03 Javascript
Fastest way to build an HTML string(拼装html字符串的最快方法)
2011/08/20 Javascript
js 实现浏览历史记录示例
2014/04/20 Javascript
IE中鼠标经过option触发mouseout的解决方法
2015/01/29 Javascript
Javascript中的高阶函数介绍
2015/03/15 Javascript
由ReactJS的Hello world说开来
2015/07/02 Javascript
JavaScript使用FileSystemObject对象写入文本文件内容的方法
2015/08/05 Javascript
Bootstrap每天必学之前端开发框架
2015/11/19 Javascript
javascript代码调试之console.log 用法图文详解
2016/09/30 Javascript
vue制作加载更多功能的正确打开方式
2016/10/12 Javascript
微信小程序 textarea 组件详解及简单实例
2017/01/10 Javascript
Vue2 Vue-cli中使用Typescript的配置详解
2017/07/24 Javascript
vue 指定组件缓存实例详解
2018/04/01 Javascript
如何实现小程序tab栏下划线动画效果
2019/05/18 Javascript
JavaScript 扩展运算符用法实例小结【基于ES6】
2019/06/17 Javascript
jQuery实现鼠标放置名字上显示详细内容气泡提示框效果的方法分析
2020/04/04 jQuery
uni-app使用微信小程序云函数的步骤示例
2020/05/22 Javascript
详解JavaScript 异步编程
2020/07/13 Javascript
vue 中this.$set 动态绑定数据的案例讲解
2021/01/29 Vue.js
Python随手笔记之标准类型内建函数
2015/12/02 Python
Python函数中*args和**kwargs来传递变长参数的用法
2016/01/26 Python
深入浅析python继承问题
2016/05/29 Python
手把手教你用python抢票回家过年(代码简单)
2018/01/21 Python
Pandas读取MySQL数据到DataFrame的方法
2018/07/25 Python
PyCharm配置mongo插件的方法
2018/11/30 Python
Python selenium爬取微博数据代码实例
2020/05/22 Python
最简单的matplotlib安装教程(小白)
2020/07/28 Python
Python使用socket模块实现简单tcp通信
2020/08/18 Python
Python爬虫中Selenium实现文件上传
2020/12/04 Python
父亲八十大寿答谢词
2014/01/23 职场文书
研究生毕业鉴定
2014/01/29 职场文书
小露珠教学反思
2014/04/30 职场文书
学校德育工作总结2015
2015/05/11 职场文书
sql注入教程之类型以及提交注入
2021/08/02 MySQL