Я использую GeoPandas в python и имею действующий GeoDataframe из многоугольников.
0 POLYGON Z ((68.70999999999999 623.1 0, 35.71 6...
1 POLYGON Z ((221.33 645.02 0, 185.7 640.33 0, 1...
2 POLYGON Z ((150.3 650 0, 160.9 650 0, 150.58 6...
Я хочу получить новый фрейм данных, который имеет координаты ограничивающего прямоугольника для каждой строки в фрейме данных.
Теперь у меня странное поведение для GeoPandas.
Скажем, я назову GeoDataFrame gdf
, а затем использую код:
gdf.bounds
Получаю соответствующую ошибку. Я понятия не имею, что должна означать эта ошибка, поскольку я не передавал никаких значений в метод bounds
- они были переданы неявно.
ValueError: Shape of passed values is (1, 110042), indices imply (4, 110042)
Когда я пытаюсь: gdf.geometry.bounds
получаю то же ValueError...
Однако, сделав это таким образом, я получаю верный ответ:
gdf.head(10).bounds
я получил
minx miny maxx maxy
0 0.00 618.15 68.71 650.00
1 169.56 640.33 221.33 650.00
2 150.30 648.64 160.90 650.00
Итак, gdf
и gdf.head()
ничем не отличаются, но один дает мне ошибку, а другой нет. Кто-нибудь знает, как правильно получить ограничивающие прямоугольники, соответствующие каждой строке.
bounds
обнаруживает пустой многоугольник, то есть многоугольник win wkt POLYGON EMPTY, тогда он вылетает с этой ошибкой. Теперь я думаю, что POLYGON EMPTY - допустимая строка wkt, но она давала мне эту ValueError. Итак, после того, как я отфильтровал эти пустые полигоны, все заработало, как и ожидалось. - person krishnab   schedule 03.05.2018