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 BeautifulSoup使用方法详解
Nov 21 Python
深入浅析python中的多进程、多线程、协程
Jun 22 Python
Python中常用的内置方法
Jan 28 Python
Python如何爬取实时变化的WebSocket数据的方法
Mar 09 Python
python 3.6.7实现端口扫描器
Sep 04 Python
基于Python获取照片的GPS位置信息
Jan 20 Python
python字符串判断密码强弱
Mar 18 Python
PyCharm 2020 激活到 2100 年的教程
Mar 25 Python
解决Alexnet训练模型在每个epoch中准确率和loss都会一升一降问题
Jun 17 Python
python plt.plot bar 如何设置绘图尺寸大小
Jun 01 Python
Python帮你解决手机qq微信内存占用太多问题
Feb 15 Python
分享3个非常实用的 Python 模块
Mar 03 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和editplus正则表达式去除空白行
2015/04/17 PHP
PHP实现RTX发送消息提醒的实例代码
2017/01/03 PHP
PHP基于新浪IP库获取IP详细地址的方法
2017/05/04 PHP
php中的explode()函数实例介绍
2019/01/18 PHP
更正确的asp冒泡排序
2007/05/24 Javascript
实测jquery data()如何存值
2013/08/18 Javascript
javascript框架设计读书笔记之数组的扩展与修复
2014/12/02 Javascript
JavaScript实现的多种鼠标拖放效果
2015/11/03 Javascript
jQuery实现form表单基于ajax无刷新提交方法详解
2015/12/08 Javascript
JavaScript函数中关于valueOf和toString的理解
2016/06/14 Javascript
jQuery插件HighCharts实现的2D对数饼图效果示例【附demo源码下载】
2017/03/09 Javascript
Angular2实现组件交互的方法分析
2017/12/19 Javascript
vue 全局封装loading加载教程(全局监听)
2020/11/05 Javascript
深入探究Python中变量的拷贝和作用域问题
2015/05/05 Python
利用python实现xml与数据库读取转换的方法
2017/06/17 Python
利用python为运维人员写一个监控脚本
2018/03/25 Python
python实战之实现excel读取、统计、写入的示例讲解
2018/05/02 Python
Python中的Socket 与 ScoketServer 通信及遇到问题解决方法
2019/04/01 Python
解决Python找不到ssl模块问题 No module named _ssl的方法
2019/04/29 Python
在python下使用tensorflow判断是否存在文件夹的实例
2019/06/10 Python
python项目对接钉钉SDK的实现
2019/07/15 Python
对YOLOv3模型调用时候的python接口详解
2019/08/26 Python
python实现复制文件到指定目录
2019/10/16 Python
Python求解排列中的逆序数个数实例
2020/05/03 Python
Python容器类型公共方法总结
2020/08/19 Python
基于Python的接口自动化读写excel文件的方法
2021/01/15 Python
美国室内和室外装饰花盆购物网站:ePlanters
2019/03/22 全球购物
《卖木雕的少年》教学反思
2014/04/11 职场文书
产品委托授权书范本
2014/09/16 职场文书
工会经费申请报告
2015/05/15 职场文书
暑假生活随笔
2015/08/15 职场文书
2016大学生毕业实习心得体会
2016/01/23 职场文书
详解如何用Python实现感知器算法
2021/06/18 Python
Django实现drf搜索过滤和排序过滤
2021/06/21 Python
企业开发CSS命名BEM代码规范实践
2022/02/12 HTML / CSS
详解如何使用Nginx解决跨域问题
2022/05/06 Servers