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语言技巧之三元运算符使用介绍
Mar 04 Python
Python help()函数用法详解
Mar 11 Python
Python中使用动态变量名的方法
May 06 Python
Python使用gensim计算文档相似性
Apr 10 Python
Python实现两个list对应元素相减操作示例
Jun 09 Python
python的paramiko模块实现远程控制和传输示例
Oct 13 Python
python模拟事件触发机制详解
Jan 19 Python
Django Celery异步任务队列的实现
Jul 24 Python
Python 自动登录淘宝并保存登录信息的方法
Sep 04 Python
pandas实现导出数据的四种方式
Dec 13 Python
如何使用flask将模型部署为服务
May 13 Python
PyTorch 如何检查模型梯度是否可导
Jun 05 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单字母函数使用指南
2016/05/08 PHP
ie和firefox不兼容的解决方法集合
2009/04/28 Javascript
JavaScript DOM 学习第三章 内容表格
2010/02/19 Javascript
DIV菜单层实现代码
2010/11/19 Javascript
jQuery 1.8 Release版本发布了
2012/08/14 Javascript
jquery实现marquee效果(文字或者图片的水平垂直滚动)
2013/01/07 Javascript
JS获取html对象的几种方式介绍
2013/12/05 Javascript
javascript数组输出的两种方式
2015/01/13 Javascript
javascript二维数组转置实例
2015/01/22 Javascript
javascript实现tab切换特效
2015/11/12 Javascript
jquery制作图片时钟特效
2020/03/30 Javascript
基于jquery实现省市区三级联动效果
2015/12/25 Javascript
IONIC自定义subheader的最佳解决方案
2016/09/22 Javascript
JS沙箱模式实例分析
2017/09/04 Javascript
iview通过Dropdown(下拉菜单)实现的右键菜单
2018/10/26 Javascript
Nuxt.js之自动路由原理的实现方法
2018/11/21 Javascript
vue-i18n结合Element-ui的配置方法
2019/05/20 Javascript
layui实现二维码弹窗、并下载到本地的方法
2019/09/25 Javascript
JavaScript 中的无穷数(Infinity)详解
2020/02/13 Javascript
解决vue 退出动画无效的问题
2020/08/09 Javascript
vue+iview分页组件的封装
2020/11/17 Vue.js
[02:38]DOTA2超级联赛专访Loda 认为IG世界最强
2013/05/27 DOTA
[11:33]DAC2018 4.5SOLO赛决赛 MidOne vs Paparazi第二场
2018/04/06 DOTA
深入讲解Python中的迭代器和生成器
2015/10/26 Python
发布你的Python模块详解
2016/09/15 Python
python之Socket网络编程详解
2016/09/29 Python
Python使用Socket实现简单聊天程序
2020/02/28 Python
python GUI库图形界面开发之PyQt5信号与槽事件处理机制详细介绍与实例解析
2020/03/08 Python
Django集成MongoDB实现过程解析
2020/12/01 Python
Linux如何修改文件和文件夹的权限
2012/06/27 面试题
小学教师岗位职责
2013/11/25 职场文书
聊城大学毕业生自荐书
2014/02/01 职场文书
美术指导求职信
2014/03/17 职场文书
会计学专业求职信
2014/07/17 职场文书
妇联领导班子剖析材料
2014/08/21 职场文书
详解Oracle数据库中自带的所有表结构(sql代码)
2021/11/20 Oracle