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实现文本去重且不打乱原本顺序
Jan 26 Python
启动targetcli时遇到错误解决办法
Oct 26 Python
用Python和WordCloud绘制词云的实现方法(内附让字体清晰的秘笈)
Jan 08 Python
python异步存储数据详解
Mar 19 Python
梅尔倒谱系数(MFCC)实现
Jun 19 Python
Python数学形态学实例分析
Sep 06 Python
解决pycharm上的jupyter notebook端口被占用问题
Dec 17 Python
python中with语句结合上下文管理器操作详解
Dec 19 Python
Python Pillow.Image 图像保存和参数选择方式
Jan 09 Python
Transpose 数组行列转置的限制方式
Feb 11 Python
python3利用Axes3D库画3D模型图
Mar 25 Python
python框架flask入门之路由及简单实现方法
Jun 07 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
法兰绒滤网冲泡
2021/03/03 冲泡冲煮
《PHP编程最快明白》第二讲 数字、浮点、布尔型、字符串和数组
2010/11/01 PHP
判断PHP数组是否为空的代码
2011/09/08 PHP
sae使用smarty模板的方法
2013/12/17 PHP
php中动态修改ini配置
2014/10/14 PHP
php新浪微博登录接口用法实例
2014/12/23 PHP
PHP、Java des加密解密实例
2015/04/27 PHP
php循环table实现一行两列显示的方法
2015/06/04 PHP
PHP输出缓冲控制Output Control系列函数详解
2015/07/02 PHP
PHP simplexml_load_file()函数讲解
2019/02/03 PHP
网页图片延时加载的js代码
2010/04/22 Javascript
JavaScript 错误处理与调试经验总结
2010/08/10 Javascript
Javascript在IE和FireFox中的不同表现简析
2012/12/03 Javascript
js借助ActiveXObject实现创建文件
2013/09/29 Javascript
JS中如何设置readOnly的值
2013/12/25 Javascript
JavaScript中Function()函数的使用教程
2015/06/04 Javascript
详解JavaScript中的blink()方法的使用
2015/06/08 Javascript
jQuery实现form表单基于ajax无刷新提交方法详解
2015/12/08 Javascript
javascript 组合按键事件监听实现代码
2017/02/21 Javascript
JS使用对象的defineProperty进行变量监控操作示例
2019/02/02 Javascript
python定时器(Timer)用法简单实例
2015/06/04 Python
python实现查找两个字符串中相同字符并输出的方法
2015/07/11 Python
python使用PyCharm进行远程开发和调试
2017/11/02 Python
如何在VSCode上轻松舒适的配置Python的方法步骤
2019/10/28 Python
Python爬虫headers处理及网络超时问题解决方案
2020/06/19 Python
Python模块常用四种安装方式
2020/10/20 Python
CSS3 二级导航菜单的制作的示例
2018/04/02 HTML / CSS
HTML5 Canvas绘制文本及图片的基础教程
2016/03/14 HTML / CSS
世界领先的电子书网站:eBooks.com(在线购买小说、非小说和教科书)
2019/03/30 全球购物
卡骆驰英国官网:Crocs英国
2019/08/22 全球购物
少先队入队活动方案
2014/02/08 职场文书
实习协议书范本
2014/04/22 职场文书
干部作风建设年活动剖析材料
2014/10/23 职场文书
公证书格式
2015/01/23 职场文书
2016年第29个世界无烟日宣传活动总结
2016/04/06 职场文书
JS精髓原型链继承及构造函数继承问题纠正
2022/06/16 Javascript