Python与开源GIS:使用OGR生成几何要素对象_第1页
Python与开源GIS:使用OGR生成几何要素对象_第2页
Python与开源GIS:使用OGR生成几何要素对象_第3页
Python与开源GIS:使用OGR生成几何要素对象_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Python与开源GIS :使用OGR生成几何要素对象2012-05-1107:30作者:bukunu来源:本站浏览:757views我要评论字号:大中小摘要:前面部分我们详细地介绍了如何读取矢量数据,包括数据源、图层、要素、几何形状、 字段属性等各个部分。下面来看一下如何使用OGR来创建矢量数据,亦即使用OGR写GIS 矢量文件。首先先看一下写文件的示意。在这里先不对这个图做太多的解释,但是在后面介绍各 个部分的时候,前面部分我们详细地介绍了如何读取矢量数据,包括数据源、图层、要素、几何形状、 字段属性等各个部分。下面来看一下如何使用OGR来创建矢量数据,亦即使用OGR写GIS矢量文件。首先

2、 先看一下写文件的示意。在这里先不对这个图做太多的解释,但是在后面介绍各个部分的时 候,请自行参考此图。建立空的geometry对象:1 org.Geometryogr 中提供了不同的类型,常用的有:ogr.wkbPoint, ogr.wkbLineString , ogr.wkbPolygon。定义各种不同的geometry使用的方法是不一样的。在构建这三种不同的要素时,要注 意使用的格式。创建点要素下面我们先来看一下如何创建一个点。注意,此时只是在内存中将对象创建出来,跟文 件没有关系。All# -*- coding: utf-8 -*-from osgeo import ogrpoint

3、 = ogr.Geometry(ogr.wkbPoint)point.AddPoint(10,20)print(type(point)print(point)注意,向point中添加多个点,并不会出错,但最后的结果只会用最后添加的点。创建线要素新建Line的方法与点基本一致。与点不同的是,线需要添加多个点。LLJfrom osgeo import ogrline = ogr.Geometry(ogr.wkbLineString)line.AddPoint(10,20)line.AddPoint(20,30)line.AddPoint(10,30) 6 print(type(line)7 pri

4、nt(line)可以使用线对象的SetPoint方法来修改点的坐标,譬如LJline.SetPoint(1,50,50)print(line)另外,还有其他一些有用的函数统计所有点的数目:1 print line.GetPointCount()读取0号点的x坐标和y坐标LIprint line.GetX(0)print line.GetY(0)创建多边形要素创建多边形要素与创建点和线的方法的区别就比较大了。新建多边形,首先要新建环(ring),然后把环添加到多边形对象中。那么怎样创建一个ring呢?这个与创建线比较类似:先新建一个ring对象,然后向里 面逐个添加点。Llj /from osg

5、eo import ogrring = ogr.Geometry(ogr.wkbLinearRing)ring.AddPoint(10,10)ring.AddPoint(50,0)ring.AddPoint(50,50)ring.AddPoint(0,10)与创建线不同的是,ring是需要封闭的,这可以使用CloseRings()方法,或者将最后一个点的坐标设置成与第一个点相同。一般情况下,最好是使用CloseRings()方法。IIS1 ring.CloseRings()然后,使用下面的语句,将ring对象添加到多边形中。polygon = ogr.Geometry(ogr.wkbPolygon)polygon.AddGeometry(outring)polygon.AddGeometry(inring)对于polygon对象,没法直接打印它里面的坐标,而是需要先获取它其中的几何对象,也就是ring。I

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论