Geo pandas: как сделать пространственное соединение между кадрами данных геоанд? - PullRequest
0 голосов
/ 21 апреля 2020

У меня есть два geo pandas кадра данных. Один состоит из многоугольника, а другой - из точек.

grid.head()

                                            geometry  zone
0   POLYGON ((-71.11007 42.36766, -71.10957 42.367...   0
1   POLYGON ((-71.11007 42.36716, -71.10957 42.367...   1
2   POLYGON ((-71.11007 42.36666, -71.10957 42.366...   2
3   POLYGON ((-71.11007 42.36616, -71.10957 42.366...   3
4   POLYGON ((-71.11007 42.36566, -71.10957 42.365...   4

gdf.head()
                     geometry
0   POINT (-71.09000 42.36000)
1   POINT (-71.09000 42.36000)
2   POINT (-71.09477 42.36407)
3   POINT (-71.09000 42.36000)
4   POINT (-71.09477 42.36407)

Если я пытаюсь выполнить пространственное соединение, я получаю ошибку

from geopandas import sjoin
gdf = sjoin(grid, gdf)

AttributeError: 'NoneType' object has no attribute 'intersection'

Я пытался установить rtree

sudo python3.7 -m pip install "rtree>=0.8,<0.9"

1 Ответ

0 голосов
/ 21 апреля 2020

Похоже, что хотя бы одна из записей в столбце геометрии либо grid, либо gdf равна None. sjoin необходимо выполнить пространственные пересечения для всех геометрий, чего он не может сделать, если они None.

. Вы можете проверить, возвращает ли любое из следующих значений строки:

grid[grid.geometry.isnull()]
gdf[gdf.geometry.isnull()]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...