You are on page 1of 2

1

E2: OGR Write File

บทนํา
ทดลองใช OGR ในการสรางขอมูลภูมิสารสนเทศประเภทเวกเตอรในรูปแบบตางๆ เพื่อใช
เปนการแสดงผลลัพธที่ไดจากการประมวลผล หรือสรางขอมูลเวกเตอรไฟลใหมจากการคัดกรอง
ดวยเงื่อนไขจากขอมูลเริ่มตน

วัตถุประสงค
1. เรียนรูการใชงาน OGR Class สําหรับจัดการไฟล
2. เขียนโปรแกรมคัดกรอง จําแนกขอมูลจากเงื่อนไขดวยขอมูลอธิบาย

วิธีการ
ทดลองเขียนโปรแกรมดังตอไปนี้

#เรียก package osgeo ที่ติดตัง้ และนําเขา OGR Class


from osgeo import ogr
driver = ogr.GetDriverByName('ESRI Shapefile')
import os
os.chdir('c:/data')

#เขาถึงไฟลตนแบบ
ds = driver.Open('c:\data\sites.shp', 0)
layer = ds.GetLayer(0)
feat = layer.GetFeature(0)
geom = feat.GetGeometryRef()
# ลบไฟลกรณีที่มีไฟลอยูกอนแลว
driver.DeleteDataSource('test.shp')
ds2 = driver.CreateDataSource('test.shp')
layer2 = ds2.CreateLayer('test', geom_type=ogr.wkbPoint)

ฝกอบรมการเขียนโปรแกรมการประมวผลขอมูลภูมิสารสนเทศ นาย ชัยภัทร เนื่องคํามา


2

# เขาถึง index ของฟลด ID


fieldDefn = feat.GetFieldDefnRef('id')
# แสดงผลสรุปและคาสถิติของการอานไฟล
#print fieldDefn.GetName()
#print fieldDefn.GetType()
# สราง field ใหมใน dbf
new_fieldDefn = ogr.FieldDefn('name',ogr.OFTString)
new_fieldDefn.SetWidth(30)

layer2.CreateField(fieldDefn)
layer2.CreateField(new_fieldDefn)
ds2.Destroy()

## Insert ขอมูล Geometry และขอมูลบรรยาย


ds2 = driver.Open('test.shp', 1) #point out the 1
layer2 = ds2.GetLayer()
# เขาถึง Feature Definition Class
featDefn = layer2.GetLayerDefn()
feat2 = ogr.Feature(featDefn)
# บรรจุขอมูลลงไป
feat2.SetGeometry(geom)
feat2.SetField('id', feat.GetField('id'))
feat2.SetField('name', 'pk')
layer2.CreateFeature(feat200)
ds2.Destroy()
print 'Create Layer Complete'

ฝกอบรมการเขียนโปรแกรมการประมวผลขอมูลภูมิสารสนเทศ นาย ชัยภัทร เนื่องคํามา

You might also like