การเรียกดูชื่อฟิวด์และประเภทของข้อมูล Shapefile ด้วย Python GDAL/OGR

หลายท่านคงเคยเจอปัญหาเช่นเดียวกันกับผมครับ เวลาเราต้องการที่จะทราบรายละเอียดของแต่ละฟิวด์(field) ซึ่งในโปรแกรม QGIS เราก็จะต้องคลิกขวา properties แล้วไปที่แถบเมนู Field เราก็จะพบกับรายละเอียดแต่ละฟิวด์ของข้อมูล shapefile ว่าเป็นประเภทอะไรบ้าง เช่น Real, Integer, String และ Date เป็นต้น ซึ่งการใช้งาน Python GDAL/OGR จะช่วยเราได้เยอะมากๆ ครับ โดยเราจะมีกี่ shapefile ก็ได้โดยเราเขียนคำสั่ง python โดยอาศัยการ import lib จาก ogr เข้าไปอ่าน class ของ layer แล้วเรียก GetLayerDefn ซึ่งตัวอย่างชุดคำสั่งนี้จะช่วยลดงานเราได้เยอะเลยครับ ลองนำไปประยุกต์ใช้ดูกันนะครับ

## Get Shapefile Fields and Types
## reference: https://pcjericks.github.io/py-gdalogr-cookbook/index.html
####################################################
from osgeo import ogr

location = r"C:\Workspace\amphoe.shp"

dataSource = ogr.Open(location)
lyr = dataSource.GetLayer(0)
lyrDefinition = lyr.GetLayerDefn()

print "Shapefile: " + location
print "FieldName  ->  Type  Width  Precision"

for i in range(lyrDefinition.GetFieldCount()):
    fieldName =  lyrDefinition.GetFieldDefn(i).GetName()
    fieldTypeCode = lyrDefinition.GetFieldDefn(i).GetType()
    fieldType = lyrDefinition.GetFieldDefn(i).GetFieldTypeName(fieldTypeCode)
    fieldWidth = lyrDefinition.GetFieldDefn(i).GetWidth()
    GetPrecision = lyrDefinition.GetFieldDefn(i).GetPrecision()

    print fieldName + " -> " + fieldType+ " " + str(fieldWidth) + " " + str(GetPrecision)

print ("\n")
print ("*")*60

2

Reference: https://pcjericks.github.io/py-gdalogr-cookbook/

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s