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 web框架学习笔记
May 03 Python
python常用知识梳理(必看篇)
Mar 23 Python
python实现二分查找算法
Sep 21 Python
Python之列表的插入&替换修改方法
Jun 28 Python
Python3.7中安装openCV库的方法
Jul 11 Python
Python使用os.listdir()和os.walk()获取文件路径与文件下所有目录的方法
Apr 01 Python
python 自定义装饰器实例详解
Jul 20 Python
python dataframe NaN处理方式
Dec 26 Python
Python基于read(size)方法读取超大文件
Mar 12 Python
解决keras模型保存h5文件提示无此目录问题
Jul 01 Python
带你学习Python如何实现回归树模型
Jul 16 Python
pycharm debug 断点调试心得分享
Apr 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
完美解决令人抓狂的zend studio 7代码提示(content Assist)速度慢的问题
2013/06/20 PHP
基于simple_html_dom的使用小结
2013/07/01 PHP
ThinkPHP CURD方法之table方法详解
2014/06/18 PHP
phpstorm配置Xdebug进行调试PHP教程
2014/12/01 PHP
Jquery中获取iframe的代码
2011/01/11 Javascript
jQuery学习笔记(2)--用jquery实现各种模态提示框代码及项目构架
2013/04/08 Javascript
jquery固定底网站底部菜单效果
2013/08/13 Javascript
让新消息在网页标题闪烁提示的jQuery代码
2013/11/04 Javascript
JQuery表格拖动调整列宽效果(自己动手写的)
2014/09/01 Javascript
实例讲解JQuery中this和$(this)区别
2014/12/08 Javascript
纯css实现窗户玻璃雨滴逼真效果
2015/08/23 Javascript
JS 数字转换为大写金额的简单实例
2016/08/04 Javascript
jQuery实现在新增加的元素上添加事件方法案例分析
2017/02/09 Javascript
jQuery插件echarts实现的单折线图效果示例【附demo源码下载】
2017/03/04 Javascript
MUI  Scroll插件的使用详解
2017/04/13 Javascript
详解VueJs前后端分离跨域问题
2017/05/24 Javascript
Vue v2.4中新增的$attrs及$listeners属性使用教程
2018/01/08 Javascript
实例讲解Vue.js中router传参
2018/04/22 Javascript
原生JS实现手动轮播图效果实例代码
2018/11/22 Javascript
vue实现双向绑定和依赖收集遇到的坑
2018/11/29 Javascript
如何实现echarts markline标签名显示自己想要的
2020/07/20 Javascript
python3+PyQt5图形项的自定义和交互 python3实现page Designer应用程序
2020/07/20 Python
Python装饰器语法糖
2019/01/02 Python
使用k8s部署Django项目的方法步骤
2019/01/14 Python
PyCharm更改字体和界面样式的方法步骤
2019/09/27 Python
python numpy 反转 reverse示例
2019/12/04 Python
解决torch.autograd.backward中的参数问题
2020/01/07 Python
Python猜数字算法题详解
2020/03/01 Python
H5页面适配iPhoneX(就是那么简单)
2019/12/02 HTML / CSS
NBA欧洲商店(西班牙):NBA Europe Store ES
2019/04/16 全球购物
美国留学经济担保书
2014/05/20 职场文书
实习护士自荐信
2014/06/21 职场文书
夫妻双方自愿离婚协议书
2014/10/24 职场文书
我们的节日元宵节活动总结
2015/02/06 职场文书
Java框架入门之简单介绍SpringBoot框架
2021/06/18 Java/Android
TV动画「神渣☆爱豆」公开第一弹主视觉图
2022/03/21 日漫