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 文件操作实现代码
Oct 07 Python
Python with用法实例
Apr 14 Python
Windows下使Python2.x版本的解释器与3.x共存的方法
Oct 25 Python
Python中将dataframe转换为字典的实例
Apr 13 Python
tensorflow实现逻辑回归模型
Sep 08 Python
用python生成1000个txt文件的方法
Oct 25 Python
新手入门Python编程的8个实用建议
Jul 12 Python
Python 使用list和tuple+条件判断详解
Jul 30 Python
在tensorflow中设置保存checkpoint的最大数量实例
Jan 21 Python
Python3.7将普通图片(png)转换为SVG图片格式(网站logo图标)动起来
Apr 21 Python
Python如何安装第三方模块
May 28 Python
Python 游戏大作炫酷机甲闯关游戏爆肝数千行代码实现案例进阶
Oct 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
ThinkPHP自动验证失败的解决方法
2011/06/09 PHP
PHP CURL模拟登录新浪微博抓取页面内容 基于EaglePHP框架开发
2012/01/16 PHP
php基于Fleaphp框架实现cvs数据导入MySQL的方法
2016/02/23 PHP
php生成条形码的图片的实例详解
2017/09/13 PHP
Script的加载方法小结
2011/01/12 Javascript
jQuery学习笔记之 Ajax操作篇(二) - 数据传递
2014/06/23 Javascript
jQuery实现带延迟效果的滑动菜单代码
2015/09/02 Javascript
jQuery实现图片轮播特效代码分享
2015/09/15 Javascript
jQuery常用知识点总结以及平时封装常用函数
2016/02/23 Javascript
Angularjs中UI Router的使用方法
2016/05/14 Javascript
AngularJS中$http服务常用的应用及参数
2016/08/22 Javascript
JavaScript SHA512加密算法详细代码
2016/10/06 Javascript
jQuery除指定区域外点击任何地方隐藏DIV功能
2017/11/13 jQuery
如何快速解决JS或Jquery ajax异步跨域的问题
2018/01/08 jQuery
vue中element组件样式修改无效的解决方法
2018/02/03 Javascript
vscode下的vue文件格式化问题
2018/11/28 Javascript
微信小程序转化为uni-app项目的方法示例
2020/05/22 Javascript
JS JQuery获取data-*属性值方法解析
2020/09/01 jQuery
js+cavans实现图片滑块验证
2020/09/29 Javascript
[44:47]Ti4 循环赛第三日 iG vs NaVi
2014/07/12 DOTA
python爬虫模拟浏览器的两种方法实例分析
2019/12/09 Python
python 操作hive pyhs2方式
2019/12/21 Python
Web时代变迁及html5与html4的区别
2016/01/06 HTML / CSS
实例讲解使用HTML5 Canvas绘制阴影效果的方法
2016/03/25 HTML / CSS
非洲NO.1网上商店:Jumia肯尼亚
2016/08/18 全球购物
香港交友网站:be2香港
2018/07/22 全球购物
园林资料员岗位职责
2013/12/30 职场文书
《云雀的心愿》教学反思
2014/02/25 职场文书
就业协议书范本
2014/04/11 职场文书
员工安全生产承诺书
2014/05/22 职场文书
幼儿园六一活动总结
2014/08/27 职场文书
招商引资工作汇报
2014/10/28 职场文书
2014年设计师工作总结
2014/11/25 职场文书
情侣之间的道歉短信
2015/05/12 职场文书
2016最新离婚协议书范本及程序
2016/03/18 职场文书
以下牛机,你有几个
2022/04/05 无线电