一、在这里我用到的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文件的更多相关文章

  1. -05 08:57 ARCGIS地统计学计算文件后缀名为.shp文件制作

    2011-07-05 08:57 ARCGIS地统计学计算文件后缀名为.shp文件制作 ARCAMP软件要进行地统计计算的文件后格式后缀名必须为.shp的文件,网上介绍的方法复杂难懂,那么制作.shp ...

  2. Android GIS开发系列-- 入门季(13)Gdal简单写个shp文件

    Gdal是用来读写栅格与矢量数据的,在Gdal官网,可以下载相关的资源进行平台的编译.其实Arcgis底层也是用Gdal来读取shp文件的,那在Android中可以直接读写shp文件吗,是可以的.这里 ...

  3. shp系列(一)——利用C++进行shp文件的读(打开)与写(创建)开言

    博客背景和目的 最近在用C++写一个底层的东西,需要读取和创建shp文件.虽然接触shp文件已经几年了,但是对于shp文件内到底包含什么东西一直是一知半解.以前使用shp文件都是利用软件(如ArcGI ...

  4. shp系列(七)——利用C++进行Shx文件的写(创建)

    之前介绍了Shp文件和Dbf的写(创建),最后来介绍一下Shx文件的写(创建).Shx文件是三者之中最简单的一个,原因有两个:第一是Shx文件的头文件与Shp文件的头文件几乎一样(除了FileLeng ...

  5. shp系列(二)——利用C++进行shp文件的读(打开)

    1.各数据类型及其字节数 BYTE 1;       char 1;    short 2;      int 4;    double 8; 2.位序big和little及其转换 对于位序是big的 ...

  6. (数据科学学习手札59)从抓取数据到生成shp文件并展示

    一.简介 shp格式的文件是地理信息领域最常见的文件格式之一,很好的结合了矢量数据与对应的标量数据,而在Python中我们可以使用pyshp来完成创建shp文件的过程,本文将从如何从高德地图获取矢量信 ...

  7. 第3章 文件I/O(2)_文件I/O系统调用及文件描述符

    2. 文件I/O系统调用及文件描述符 2.1 文件I/O系统调用 (1)主要函数 函数 功能 函数 功能 open() 打开文件 read() 读取文件 creat() 创建文件 write() 写入 ...

  8. 用JSmooth制作java jar文件的可运行exe文件教程【图文】

    这是我之前在个人博客3yj上面写的一篇文章,如今转载过来,原文地址 (这不是广告哦) 几年前,刚接触java的是,就想用一些方法把自己的劳动果实保护起来,曾经也用过非常多这种工具,有一个特别好用,今天 ...

  9. C#、C++用GDAL读shp文件(转载)

    C#.C++用GDAL读shp文件 C#用GDAL读shp文件 (2012-08-14 17:09:45) 标签: 杂谈 分类: c#方面的总结 1.目前使用开发环境为VS2008+GDAL1.81 ...

随机推荐

  1. AJ学IOS(34)UI之Quartz2D画画板的实现

    AJ分享,必须精品 效果: 实现过程: 首先用storyboard搭建界面,没有什么好说的. 然后就是注意的功能了,这里用了触摸事件来搭配Quartz2D的路径来画画. 思路就是把路径放到数组中 @p ...

  2. 复杂Excel转换与导入

    需求 把不同客户提供Excel 直接导入到系统中生成对应的收货单或是出货单.后端创建收货端和出货单的接口已经有现成的webservice或是标准的xml:这类需要做的就是把客户提供不同种类的Excel ...

  3. ios 中使用 animation-play-state: paused 属性失效的问题

    前言 因为要做一个播放器的播放图片旋转动画,像这样子 当音乐播放就转动,停止就暂停. 开始于是很自然地想到了使用Css3的 animation 动画属性CSS3 animation(动画) 属性 an ...

  4. 提升效率必备!8个超好用的Python内置函数

    文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: 吃着不想停 PS:如有需要Python学习资料的小伙伴可以加点击下方链接自 ...

  5. Jmeter接口测试、性能测试详细介绍

    下面主要就是讲一下Jmeter工具的用法,用法非常简单,比起loadrunner不知道简单多少,并且开源免费~~ 1.接口简介 接口定义 接口: 就是数据交互的入口和出口,是一套标准规范. 接口(硬件 ...

  6. 开始appium的第一个脚本

    设置DesiredCapabilities 存在于以下库中: org.openqa.selenium.remote.DesiredCapabilities Desired Capabilities告诉 ...

  7. Java 动态编译--DynamicCompiler

    java 动态编译自己写过程的机会比较少,记录一下: package com.xzlf.dynamicCompile; import java.io.IOException; import java. ...

  8. Win7+Linux双系统,完美解决删除Linux后出现的任何问题!

    首先,进入到Win7,安装MiniTool Partition Wizard Home Edition删除掉Linux分区, 点Yes 然后选中 这里选中这个,重写MBR,开机神马grub神马问题都没 ...

  9. ES6新增的 Set 和 WeakSet 是什么玩意?在此揭晓

    现在的章节内容会更加的紧密,如果大家看不懂可以先去看以前的文章,当然看了的忘了,也可以去看一下,这样学习后面的内容才会更加容易. 什么是Set结构 Set是ES6给开发者带来的一种新的数据结构,你可以 ...

  10. 如何在 Inno Setup 中执行命令行的命令

    Pascal Scripting: Exec Prototype: function Exec(const Filename, Params, WorkingDir: String; const Sh ...