读CSV文件并写arcgis shp文件
一、在这里我用到的csv文件是包含x,y坐标及高程、降雨量数据的文件。如下图所示。
二、SF简介
简单要素模型(Simple Feature,SF),是 OGC 国际组织定义的面向对象的矢量数据模
型。要素 Feature 包括几何对象和属性信息两部分。其中,几何对象有两种表示
方式 - WKT(Well Known Text)和 WKB(Well Known Binary),前者用于编程赋值,后者
用于数据库或二进制文件格式。
三、创建SF对象
from osgeo import ogr
#SF 对象的 WKT 表示格式
pnt_wkt = "POINT(1 1)"
lin_wkt = "LINESTRING(0 0,15 15) "
pol_wkt = "POLYGON((1 1,1 10,10 10,10 1,1 1),( 2 2,2 8,8 8,8 2,2 2)) "
#创建 SF 对象
pnt = ogr.CreateGeometryFromWkt(pnt_wkt)
lin = ogr.CreateGeometryFromWkt(lin_wkt)
pol = ogr.CreateGeometryFromWkt(pol_wkt)
四、读CSV文件并写arcgis shp文件
#读csv文件
filename='stations.csv'
fh=open(filename,'r')
#读csv文件头
title=fh.readline()
title=title.strip()
title=title.split(",")
#读取csv数据
vals=[]
datas=[]
val=fh.readline()
while val is not None:
val=val.strip()
if len(val) ==0:
break
for v in val.split(","):
v_=float(v)
vals.append(v_)
datas.append(vals)
vals=[]
val=fh.readline()
#写shp文件
from osgeo import ogr,osr
import os
filename = "stations.shp"
driver = ogr.GetDriverByName("ESRI Shapefile")
#判断shp文件名是否在当前文件夹中存在,如果存在则删除
if os.access(filename, os.F_OK ):
driver.DeleteDataSource(filename)
#创建shp文件
ds = driver.CreateDataSource(filename)
#定义投影
spatialref=osr.SpatialReference('LOCAL_CS["arbitrary"]')
#定义几何类型
geomtype=ogr.wkbPoint
#定义图层(此方法可以根据datas数据设定字符编码默认为utf-8编码。)
layer=ds.CreateLayer(filename[:-4],srs=spatialref,geom_type=geomtype)
#定义图层属性字段信息
fdx=ogr.FieldDefn(title[0],ogr.OFTReal)
fdx.SetPrecision(3)
fdy=ogr.FieldDefn(title[1],ogr.OFTReal)
fdy.SetPrecision(3)
fdz=ogr.FieldDefn(title[2],ogr.OFTReal)
fdz.SetPrecision(3)
fdp=ogr.FieldDefn(title[3],ogr.OFTReal)
fdp.SetPrecision(3)
layer.CreateField(fdx)
layer.CreateField(fdy)
layer.CreateField(fdz)
layer.CreateField(fdp)
#将几何对象及属性写入图层
for i in range(len(datas)):
d=datas[i]
#创建SF对象
wkt="POINT(%f %f %f)" % (d[0],d[1],d[2])
geom=ogr.CreateGeometryFromWkt(wkt)
#图层属性信息
feat=ogr.Feature(layer.GetLayerDefn())
feat.SetGeometry(geom)
feat.SetField(title[0],d[0])
feat.SetField(title[1],d[1])
feat.SetField(title[2],d[2])
feat.SetField(title[3],d[3])
layer.CreateFeature(feat)
#关闭文件
ds.Dsetroy()
读CSV文件并写arcgis shp文件的更多相关文章
- -05 08:57 ARCGIS地统计学计算文件后缀名为.shp文件制作
2011-07-05 08:57 ARCGIS地统计学计算文件后缀名为.shp文件制作 ARCAMP软件要进行地统计计算的文件后格式后缀名必须为.shp的文件,网上介绍的方法复杂难懂,那么制作.shp ...
- Android GIS开发系列-- 入门季(13)Gdal简单写个shp文件
Gdal是用来读写栅格与矢量数据的,在Gdal官网,可以下载相关的资源进行平台的编译.其实Arcgis底层也是用Gdal来读取shp文件的,那在Android中可以直接读写shp文件吗,是可以的.这里 ...
- shp系列(一)——利用C++进行shp文件的读(打开)与写(创建)开言
博客背景和目的 最近在用C++写一个底层的东西,需要读取和创建shp文件.虽然接触shp文件已经几年了,但是对于shp文件内到底包含什么东西一直是一知半解.以前使用shp文件都是利用软件(如ArcGI ...
- shp系列(七)——利用C++进行Shx文件的写(创建)
之前介绍了Shp文件和Dbf的写(创建),最后来介绍一下Shx文件的写(创建).Shx文件是三者之中最简单的一个,原因有两个:第一是Shx文件的头文件与Shp文件的头文件几乎一样(除了FileLeng ...
- shp系列(二)——利用C++进行shp文件的读(打开)
1.各数据类型及其字节数 BYTE 1; char 1; short 2; int 4; double 8; 2.位序big和little及其转换 对于位序是big的 ...
- (数据科学学习手札59)从抓取数据到生成shp文件并展示
一.简介 shp格式的文件是地理信息领域最常见的文件格式之一,很好的结合了矢量数据与对应的标量数据,而在Python中我们可以使用pyshp来完成创建shp文件的过程,本文将从如何从高德地图获取矢量信 ...
- 第3章 文件I/O(2)_文件I/O系统调用及文件描述符
2. 文件I/O系统调用及文件描述符 2.1 文件I/O系统调用 (1)主要函数 函数 功能 函数 功能 open() 打开文件 read() 读取文件 creat() 创建文件 write() 写入 ...
- 用JSmooth制作java jar文件的可运行exe文件教程【图文】
这是我之前在个人博客3yj上面写的一篇文章,如今转载过来,原文地址 (这不是广告哦) 几年前,刚接触java的是,就想用一些方法把自己的劳动果实保护起来,曾经也用过非常多这种工具,有一个特别好用,今天 ...
- C#、C++用GDAL读shp文件(转载)
C#.C++用GDAL读shp文件 C#用GDAL读shp文件 (2012-08-14 17:09:45) 标签: 杂谈 分类: c#方面的总结 1.目前使用开发环境为VS2008+GDAL1.81 ...
随机推荐
- ******Prometheus(二)***********
Prometheus的数据与安全模型: (1)Metric (度量)名字就是描述采集数据的名称——例如,website_visits_total 作为网站访问总数.名称可以包含ASCII字母.数字.下 ...
- Python 开发工具推荐
对于开发工具,仁者见仁智者见智,关键是自己喜欢,用着顺手就好,不用刻意去追求别人用的是什么工具. 这里给大家主要推荐三款工具,分别是PyCharm.Sublime Text 3.VS Code,因为这 ...
- OAuth - 四种方式
OAuth 2.0 的标准是 RFC 6749 文件.该文件先解释了 OAuth 是什么. OAuth 引入了一个授权层,用来分离两种不同的角色:客户端和资源所有者.......资源所有者同意以后,资 ...
- AJAX教程——检视阅读
AJAX教程--检视阅读 参考 AJAX 教程--菜鸟 AJAX 教程--w3cschool AJAX 教程--w3school.cn AJAX 教程--易百 AJAX = Asynchronous ...
- GitHub 热点速览 Vol.17:在?各家视频会员要不要?
作者:HelloGitHub-小鱼干 摘要:经济实用,用作上周的 GitHub 热点的横批再合适不过.先不说 GitHub Trending 上不止一个的会员共享项目,免你找好友刷脸要会员,这项目实在 ...
- kafka相关术语名词
Topic:标签名,一个消息队列的名称 Producer:生产者,发布消息 Consumer:消费者,订阅发布消息,进行处理的存在 Broker:kafka集群,有一个.多个Topic Partiti ...
- Ubuntu 搜索文件
1.whereis 文件名 特点:快速,但是是模糊查找 例如: whereis php #会把php,php.ini,php.*所在的目录都找出来. 2.find / -name 文件名 特点:准确, ...
- BIOS和CMOS区别
在网上看到一篇关于CMOS的文章,分享一下. 原文地址:http://jingyan.baidu.com/article/c843ea0b51155d77921e4a7a.html BIOS是什么? ...
- java中Future的使用
文章目录 创建Future 从Future获取结果 取消Future 多线程环境中运行 java中Future的使用 Future是java 1.5引入的一个interface,可以方便的用于异步结果 ...
- 阿里大牛带你深入分析spring事务传播行为
spring框架封装了很多有用的功能和组件,便于在项目开发中快速高效的调用,其中spring的事务使用非常简单,只需要在用到事务的地方加一行注解即可: 1@Transactional 但越是看起来简单 ...