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基于pygame实现图片代替鼠标移动效果
Nov 11 Python
详解Python装饰器由浅入深
Dec 09 Python
Python实现将数据库一键导出为Excel表格的实例
Dec 30 Python
python的Tqdm模块的使用
Jan 10 Python
Python使用SQLite和Excel操作进行数据分析
Jan 20 Python
python之matplotlib学习绘制动态更新图实例代码
Jan 23 Python
python3对拉勾数据进行可视化分析的方法详解
Apr 03 Python
python字典setdefault方法和get方法使用实例
Dec 25 Python
python matplotlib imshow热图坐标替换/映射实例
Mar 14 Python
Python request中文乱码问题解决方案
Sep 17 Python
python利用faker库批量生成测试数据
Oct 15 Python
python 制作一个gui界面的翻译工具
May 14 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
解析func_num_args与func_get_args函数的使用
2013/06/24 PHP
win7下memCache的安装过程(具体操作步骤)
2013/06/28 PHP
Java和PHP在Web开发方面对比分析
2015/03/01 PHP
浅析PHP开发规范
2018/02/05 PHP
PHP fprintf()函数用法讲解
2019/02/16 PHP
JavaScript 数组运用实现代码
2010/04/13 Javascript
仅IE不支持setTimeout/setInterval函数的第三个以上参数
2011/05/25 Javascript
Jquery Change与bind事件代码
2011/09/29 Javascript
javascript模拟命名空间
2015/04/17 Javascript
微信小程序实现缓存根据不同的id来进行设置和读取缓存
2017/06/12 Javascript
JS+CSS实现网页加载中的动画效果
2017/10/27 Javascript
详解Vue单元测试Karma+Mocha学习笔记
2018/01/31 Javascript
nodejs更改项目端口号的方法
2018/05/13 NodeJs
jQuery实现模糊搜索功能的方法分析
2018/06/29 jQuery
vue自动路由-单页面项目(非build时构建)
2019/04/30 Javascript
在pycharm中开发vue的方法步骤
2020/03/04 Javascript
使用python为mysql实现restful接口
2018/01/05 Python
Python 中Django安装和使用教程详解
2019/07/03 Python
Python3的高阶函数map,reduce,filter的示例详解
2019/07/23 Python
Python 格式化输出_String Formatting_控制小数点位数的实例详解
2020/02/04 Python
连卡佛中国官网:Lane Crawford中文站
2018/01/27 全球购物
英国50岁以上人群的交友网站:Ourtime
2018/03/28 全球购物
联强国际笔试题面试题
2013/07/10 面试题
介绍一下MD5加密算法
2016/11/12 面试题
LINUX下线程,GDI类的解释
2012/04/17 面试题
中专药剂专业应届毕的自我评价
2013/12/27 职场文书
大学生全国两会报告感想
2014/03/17 职场文书
司法所长先进事迹
2014/06/02 职场文书
企业安全生产责任书范本
2014/07/28 职场文书
学雷锋活动倡议书
2014/08/30 职场文书
超市创业计划书
2014/09/15 职场文书
2014年城管工作总结
2014/11/20 职场文书
简短清晨问候语
2015/11/10 职场文书
Go timer如何调度
2021/06/09 Golang
Golang MatrixOne使用介绍和汇编语法
2022/04/19 Golang
Golang获取List列表元素的四种方式
2022/04/20 Golang