当前位置:文档之家› Python与开源GIS:使用OGR定义矢量数据的字段

Python与开源GIS:使用OGR定义矢量数据的字段

1 2 3 4 5 6 7 8 9

10

11

12

13

14

15

16

17 # -*- 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],

18

19

20

21

22

23

24 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看一下,就可以看到结果了。

这里故意使用的中文的字段值。注意字符串的字段是有宽度的,如果超出宽度,显示的时候则会出现问题。另外还要注意的就是定义字段的顺序。

相关主题
文本预览
相关文档 最新文档