Python与开源GIS:使用OGR定义矢量数据的字段
2012-06-16 04:00 作者:bukunu 来源:本站 浏览: 592 views我要评论 字号:大中小
摘要: GIS数据除了图形要素之外,更重要的就是属性数据了。关于GIS数据的属性,完全可以用关系型数据库的观点来看待。只不过在这个关系数据库中,专门一列索引值,并数据库中的记录与图形对象对应起来,而且,这种对应还是“一一对应”。我们可以给那个矩形添加属性数据。 ...
GIS数据除了图形要素之外,更重要的就是属性数据了。关于GIS数据的属性,完全可以用关系型数据库的观点来看待。只不过在这个关系数据库中,专门一列索引值,并数据库中的记录与图形对象对应起来,而且,这种对应还是“一一对应”。
我们可以给那个矩形添加属性数据。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# -*- coding:utf-8 -*-
from osgeo import ogr
import os,math
driver = ogr.GetDriverByName("ESRI Shapefile")
extfile = 'rect_field_demo.shp'
if os.access( extfile, os.F_OK ):
driver.DeleteDataSource( extfile )
extent = [400, 1100, 300, 600]
newds = driver.CreateDataSource(extfile)
layernew = newds.CreateLayer('rect',None,ogr.wkbPolygon)
fieldcnstr = ogr.FieldDefn("fd",ogr.OFTString)
fieldcnstr.SetWidth(32)
layernew.CreateField(fieldcnstr)
fieldf = ogr.FieldDefn("f",ogr.OFTReal)
layernew.CreateField(fieldf)
wkt = 'POLYGON ((%f %f,%f %f,%f %f,%f %f,%f %f))' % (extent[0],extent[3],
extent[1],extent[3], extent[1],extent[2],
extent[0],extent[2], extent[0],extent[3])
geom = ogr.CreateGeometryFromWkt(wkt)
feat = ogr.Feature(layernew.GetLayerDefn())
feat.SetField('fd',"这里是字段的值")
feat.SetGeometry(geom)
layernew.CreateFeature(feat)
newds.Destroy()
这个例子可以看到如何创建一个带属性的数据。要数据带属性表,就要首先定义表头,定义表头就要定义数个字段,而要定义一个字段就要定义一个字段描述描述,然后把这个字段描述创建到layer中。
有了表头,就可以在输入Feature时添加属性表的内容。方法就用SetField。 然后用QGIS打开ShapeFile看一下,就可以看到结果了。
这里故意使用的中文的字段值。注意字符串的字段是有宽度的,如果超出宽度,显示的时候则会出现问题。另外还要注意的就是定义字段的顺序。
0
标签:OGR,Python,开源GIS
本文链接:Python与开源GIS:使用OGR定义矢量数据的字段
版权所有: 非特殊声明均为本站原创文章,转载请注明出处:净月潭遥感实验站
订阅更新: 您可以通过RSS订阅我们的内容更新