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

Ответить
Александр Мурый
Гуру
Сообщения: 5173
Зарегистрирован: 26 сен 2009, 16:26
Репутация: 793
Ваше звание: званий не имею
Откуда: Москва

[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()

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

Александр Мурый
Гуру
Сообщения: 5173
Зарегистрирован: 26 сен 2009, 16:26
Репутация: 793
Ваше звание: званий не имею
Откуда: Москва

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 байт) 377 скачиваний
Пример использования:

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

./ogr_flist.py regions2010_wgs.shp
AREA
PERIMETER
region
GOST779B
Universal
Последний раз редактировалось Александр Мурый 27 сен 2012, 20:45, всего редактировалось 1 раз.
Редактор материалов, модератор форума

Аватара пользователя
Максим Дубинин
MindingMyOwnBusiness
Сообщения: 9128
Зарегистрирован: 06 окт 2003, 20:20
Репутация: 747
Ваше звание: NextGIS
Откуда: Москва
Контактная информация:

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

Сообщение Максим Дубинин » 27 сен 2012, 18:36

я что ли велосипед изобрел вот тут в п.1, получается?

viewtopic.php?f=17&t=11387&p=71041#p71031
пристегивайтесь, турбулентность прямо по курсу

Александр Мурый
Гуру
Сообщения: 5173
Зарегистрирован: 26 сен 2009, 16:26
Репутация: 793
Ваше звание: званий не имею
Откуда: Москва

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

Сообщение Александр Мурый » 27 сен 2012, 20:45

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

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

Ответить

Вернуться в «GDAL/OGR»

Кто сейчас на конференции

Сейчас этот форум просматривают: Semrush [Bot] и 10 гостей