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中input和raw_input的一点区别
Oct 21 Python
PyQt5实现简易电子词典
Jun 25 Python
简单了解python变量的作用域
Jul 30 Python
Python Web框架之Django框架文件上传功能详解
Aug 16 Python
python+selenium select下拉选择框定位处理方法
Aug 24 Python
python协程gevent案例 爬取斗鱼图片过程解析
Aug 27 Python
详解python uiautomator2 watcher的使用方法
Sep 09 Python
python3的pip路径在哪
Jun 23 Python
给Django Admin添加验证码和多次登录尝试限制的实现
Jul 26 Python
sublime3之内网安装python插件Anaconda的流程
Nov 10 Python
pytorch 两个GPU同时训练的解决方案
Jun 01 Python
python在package下继续嵌套一个package
Apr 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
Zend公司全球首推PHP认证
2006/10/09 PHP
php+javascript的日历控件
2009/11/19 PHP
PHPnow安装服务[apache_pn]失败的问题的解决方法
2010/09/10 PHP
php 操作符与控制结构
2012/03/07 PHP
php猜单词游戏
2015/09/29 PHP
laravel项目利用twemproxy部署redis集群的完整步骤
2018/05/11 PHP
PHP时间类完整代码实例
2021/02/26 PHP
Javascript和Ajax中文乱码吐血版解决方案
2009/12/21 Javascript
多浏览器支持的右下角浮动窗口
2010/04/01 Javascript
javascript语言结构小记(一)
2011/09/10 Javascript
用JQuery实现表格隔行变色和突出显示当前行的代码
2012/02/10 Javascript
JS 控件事件小结
2012/10/31 Javascript
JQuery调用绑定click事件的3种写法
2015/03/28 Javascript
JavaScript+canvas实现七色板效果实例
2016/02/18 Javascript
Bootstrap fileinput组件封装及使用详解
2017/03/10 Javascript
详解打造 Vue.js 可复用组件
2017/03/24 Javascript
vue实现的网易云音乐在线播放和下载功能案例
2019/02/18 Javascript
JS事件绑定的常用方式实例总结
2019/03/02 Javascript
微信小程序的注册页面包含倒计时验证码、获取用户信息
2019/05/22 Javascript
[01:38]DOTA2辉夜杯 欢乐的观众现场采访
2015/12/26 DOTA
[01:06]欢迎来到上海,TI9
2018/08/26 DOTA
Python读取图片为16进制表示简单代码
2018/01/19 Python
python自动化报告的输出用例详解
2018/05/30 Python
使用pyqt 实现重复打开多个相同界面
2019/12/13 Python
10 套华丽的CSS3 按钮小结
2012/10/03 HTML / CSS
HTML5添加鼠标悬浮音响效果不使用FLASH
2014/04/23 HTML / CSS
租租车:国际租车、美国租车、欧洲租车、特价预订国外租车(中文服务)
2018/03/28 全球购物
泰国时尚电商:POMELO Fashion
2020/03/11 全球购物
自学考试自我鉴定范文
2013/09/26 职场文书
学雷锋志愿服务月活动总结
2014/03/09 职场文书
函授本科个人自我鉴定
2014/03/25 职场文书
职务聘任书范文
2014/03/29 职场文书
交通安全横幅标语
2014/10/07 职场文书
出纳2015年度工作总结范文
2015/10/14 职场文书
Python中如何处理常见报错
2022/01/18 Python
使用Cargo工具高效创建Rust项目
2022/08/14 Javascript