GeoPandas:如何获取地理数据框中每个几何体的边界框

时间:2018-04-20 19:56:26

标签: geospatial shapely geopandas

我在python中使用GeoPandas并且拥有一个有效的多边形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

所以gdfgdf.head()没有任何不同,但有一个给了我一个错误,一个没有。有没有人知道获取与每行对应的边界框的正确方法。

1 个答案:

答案 0 :(得分:2)

您也可以尝试以下方法

# remove empty geometry
valid_geom = gdf[gdf.geometry.map(lambda z: True if not z.is_empty else False)]
# get the bounds of each geometry
valid_geom.geometry.map(lambda z: z.exterior.xy)

# or in one line
gdf[gdf.geometry.map(lambda z: True if not z.is_empty else False)].geometry.map(lambda z: z.exterior.xy)

这将导致以下输出。你得到 (minx, miny, maxx, maxy) 作为一个列表。

0     ([346494.47052450513, 346512.1633455531, 34642...
1     ([347156.6195963654, 347140.5694171803, 347106...
2     ([347374.2493280142, 347343.280266067, 347331....
3     ([347752.9399173185, 347732.0804000348, 347699...
4     ([352462.7065634858, 352421.82634455897, 35239...
5     ([352398.84073305037, 352366.62657852937, 3523...
6     ([351619.2911484046, 351581.3489685701, 351559...
7     ([349298.04394918215, 349284.4299869118, 34926...
8     ([349402.6562116009, 349390.3714050767, 349364...
9     ([347447.35067824554, 347427.2888365253, 34740...
10    ([351038.9227137904, 351023.75894022046, 35101...
11    ([352360.8991716495, 352311.8060843693, 352289...
12    ([348053.8637179602, 348014.5578245763, 347995...
13    ([350854.3664365387, 350802.39711500367, 35075...
14    ([350661.291738528, 350539.01532645256, 350497...
15    ([349634.9936554617, 349617.43041924713, 34959...
16    ([346588.703008323, 346576.2541223159, 346560....
17    ([347323.7364982413, 347311.6537559405, 347289...
18    ([347592.9326738138, 347588.24603437353, 34757...
19    ([347871.4965194545, 347852.9032783319, 347846...
20    ([349503.7927385038, 349484.6946827946, 349482...
21    ([349917.505834857, 349907.19522809517, 349885...
22    ([350254.82670837734, 350243.1101097837, 35024...
dtype: object