Найти максимальное значение в поле шейп-файла - PullRequest
0 голосов
/ 19 февраля 2019

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

from osgeo import ogr
import os

shapefile = "C:/Users/root/Python/mich_co.shp"
driver = ogr.GetDriverByName("ESRI Shapefile")
dataSource = driver.Open(shapefile, 0)
layer = dataSource.GetLayer()

for feature in layer:
    print(feature.GetField("pop"))
layer.ResetReading()

Приведенный выше код, однако, печатает только все значения поля «pop», как это:

10635.0
9541.0
112039.0
29234.0
23406.0
15477.0
8683.0
58990.0
106935.0
17465.0
156067.0
43868.0
135099.0

Я пытался:

print(max(feature.GetField("pop")))

но возвращает TypeError: объект 'float' не повторяется.Для этого я также попытался:

for feature in range(layer):

и он возвращает TypeError: объект «Слой» не может быть интерпретирован как целое число.1015 *

Спасибо тебе!

1 Ответ

0 голосов
/ 19 февраля 2019

max() нуждается в итерации, такой как список.Попробуйте построить список:

pops = [ feature.GetField("pop") for feature in layer ]
print(max(pops))
...