Страница 1 из 1

[python+ogr] — вывести список полей

Добавлено: 27 сен 2012, 13:42
Александр Мурый
Задача: нужен небольшой питон-скрипт, чтобы выводить в стандартный вывод список полей шейпов (и прочих OGR-совместимых данных).

В общем, вот образец скрипта:

Код: Выделить всё


#!/usr/bin/env python
import sys, os.path
import osgeo.ogr as ogr

ogrData = ogr.Open( "regions2010_wgs.shp", False )
if ogrData is None:
print "ERROR: open failed"
sys.exit( 1 )

layer = ogrData.GetLayer( 0 )
if layer is None:
print "ERROR: can't access layer"
sys.exit( 1 )
layer.ResetReading()

featDef = layer.GetLayerDefn()
fieldDef = featDef.GetFieldDefn( 0 )
for i in range( featDef.GetFieldCount() ):
fieldDef = featDef.GetFieldDefn( i )
print fieldDef.GetNameRef()

ogrData.Destroy()

Вопрос: может быть, можно получить список полей как-то короче (спец. функция)? :)
Может, я чего не увидел здесь или здесь?

Re: [python+ogr] — вывести список полей

Добавлено: 27 сен 2012, 17:50
Александр Мурый
Вдогонку: то же, только скрипт принимает аргумент в виде пути к файлу.

Код: Выделить всё


#!/usr/bin/env python
# ogr_flist.py

import sys, os.path
import osgeo.ogr as ogr

try:
file = sys.argv[1]
except:
print "Usage: %s OGR-compatible-file" % sys.argv[0]
sys.exit(1)

ogrData = ogr.Open( file, False )
if ogrData is None:
print "ERROR: open failed"
sys.exit( 1 )

layer = ogrData.GetLayer( 0 )

if layer is None:
print "ERROR: can't access layer"
sys.exit( 1 )
layer.ResetReading()


featDef = layer.GetLayerDefn()
fieldDef = featDef.GetFieldDefn( 0 )
for i in range( featDef.GetFieldCount() ):
fieldDef = featDef.GetFieldDefn( i )
print fieldDef.GetNameRef()

ogrData.Destroy()

ogr_flist.py.zip
(456 байт) 415 скачиваний
Пример использования:

Код: Выделить всё

./ogr_flist.py regions2010_wgs.shp
AREA
PERIMETER
region
GOST779B
Universal

Re: [python+ogr] — вывести список полей

Добавлено: 27 сен 2012, 18:36
Максим Дубинин
я что ли велосипед изобрел вот тут в п.1, получается?

viewtopic.php?f=17&t=11387&p=71041#p71031

Re: [python+ogr] — вывести список полей

Добавлено: 27 сен 2012, 20:45
Александр Мурый
Максим Дубинин писал(а):я что ли велосипед изобрел вот тут в п.1, получается?

viewtopic.php?f=17&t=11387&p=71041#p71031
Ну, видимо, да. Больше велосипедов хороших и разных :)