Я пытаюсь подсчитать площадь территории, которая находится менее чем в 500 единицах от кратчайшей линии, соединяющей завод А и станцию Б. Я пытаюсь запросить пространственную базу данных PostGIS в Python, но получаю сообщение об ошибке:
ValueError: Query missing geometry column 'geom'
Мой код:
sql = """SELECT ST_area(St_buffer(st_ShortestLine(factory.geom, station.geom), 500)) AS area FROM factory, station WHERE station.names='B' AND factory.name='A';"""
area = gpd.read_postgis(sql=sql, con=con, geom_col='geom')
Запрос отлично работает в PgAdmin.
Для фрейма данных geopandas требуется поле геометрии. У меня была та же проблема, которую я решил, добавив поле геометрии из таблицы, которую я хотел отфильтровать.
Параметр geom_col='geometry' позволяет указать имя этого столбца, которое нужно геопандам. В вашем случае геом.
Нужно добавить геометрию (ВЫБРАТЬ table_name.geom
).
Например:
SELECT your_query_with_out_geom, table_name.geom FROM table_name;