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中执行shell命令的几个方法小结
Sep 18 Python
Python中if __name__ == "__main__"详细解释
Oct 21 Python
深入探究Python中变量的拷贝和作用域问题
May 05 Python
python通过socket查询whois的方法
Jul 18 Python
Python实现的字典排序操作示例【按键名key与键值value排序】
Dec 21 Python
python utc datetime转换为时间戳的方法
Jan 15 Python
利用anaconda作为python的依赖库管理方法
Aug 13 Python
python中如何使用insert函数
Jan 09 Python
python实现替换word中的关键文字(使用通配符)
Feb 13 Python
构建高效的python requests长连接池详解
May 02 Python
Python3-异步进程回调函数(callback())介绍
May 02 Python
Python接口自动化测试框架运行原理及流程
Nov 30 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多种序列化与反序列化的方法
2013/06/06 PHP
php使用glob函数快速查询指定目录文件的方法
2014/11/15 PHP
php中二维数组排序问题方法详解
2015/08/28 PHP
Joomla开启SEF的方法
2016/05/04 PHP
laravel自定义分页效果
2017/07/23 PHP
flash 得到自身url参数的代码
2009/11/15 Javascript
JS实现div内部的文字或图片自动循环滚动代码
2013/04/19 Javascript
JQueryiframe页面操作父页面中的元素与方法(实例讲解)
2013/11/19 Javascript
JS简单实现动画弹出层效果
2015/05/05 Javascript
KnockoutJS 3.X API 第四章之表单textInput、hasFocus、checked绑定
2016/10/11 Javascript
JS常用倒计时代码实例总结
2017/02/07 Javascript
Node.js 中exports 和 module.exports 的区别
2017/03/14 Javascript
layui获取选中行数据的实例讲解
2018/08/19 Javascript
详解webpack之图片引入-增强的file-loader:url-loader
2018/10/08 Javascript
node学习笔记之读写文件与开启第一个web服务器操作示例
2019/05/29 Javascript
Angular+ionic实现折叠展开效果的示例代码
2020/07/29 Javascript
如何搜索查找并解决Django相关的问题
2014/06/30 Python
用Python中的wxPython实现最基本的浏览器功能
2015/04/14 Python
Python cookbook(字符串与文本)在字符串的开头或结尾处进行文本匹配操作
2018/04/20 Python
python爬虫 爬取超清壁纸代码实例
2019/08/16 Python
selenium+PhantomJS爬取豆瓣读书
2019/08/26 Python
HTML5+CSS3模仿优酷视频截图功能示例
2017/01/05 HTML / CSS
英国第一的购买便宜玩具和游戏的在线购物网站:Bargain Max
2018/01/24 全球购物
Ancheer官方户外和运动商店:销售电动自行车
2019/08/07 全球购物
PHP中如何使用Cookie
2015/10/28 面试题
广州迈达威.net面试题目
2012/03/10 面试题
面向对象概念面试题(.NET)
2016/11/04 面试题
行政部岗位职责范本
2014/03/13 职场文书
三八红旗手先进事迹材料
2014/05/13 职场文书
校园广播稿精选
2014/10/01 职场文书
2014年稽查工作总结
2014/12/20 职场文书
西柏坡导游词
2015/02/05 职场文书
工作建议书范文
2019/07/08 职场文书
抖音短视频(douyin)去水印工具的实现代码
2021/03/30 Javascript
mysql中DCL常用的用户和权限控制
2022/03/31 MySQL
Python OpenCV实现图像模板匹配详解
2022/04/07 Python