摘要: Python与开源GIS教程的内容,开发了单独的内容,请打开 https://www.osgeo.cn/pygis/ 查看。 本页面的内容不再更新。 GIS数据除了图形要素之外,更重要的就是属性数据了。关于GIS 数据的属性,完全可以用关系型...
Python与开源GIS教程的内容,开发了单独的内容,请打开
https://www.osgeo.cn/pygis/
查看。
本页面的内容不再更新。
本页面的内容不再更新。
GIS数据除了图形要素之外,更重要的就是属性数据了。关于GIS 数据的属性,完全可以用关系型数据库的观点来看待。不过在这 个关系数据库中,专门一列索引值,并与数据库中的记录与图形 对象对应起来,而且,这种对应还是“一一对应”。我们可以给 那个矩形添加属性数据。
# -*- 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看一下,就可以看到结果了。
这里故意使用的中文的字段值。注意字符串的字段是有宽度的,如果超出宽度,显示的时候则会出现问题。另外还要注意的就 是定义字段的顺序。
返回目录:Python与开源GIS