Функция поворота Geopandas

Поздний ответ, но, возможно, кто-то найдет его полезным.

Во-первых, вам не нужно совершать (по крайней мере, промежуточные запросы, которые я предполагая, что вы спрашиваете). Второй запрос зависает бесконечно, потому что вы эффективно создаете два параллельных подключения к базе данных. Первый - это получение блокировки выбранных записей, затем вторая попытка изменения заблокированных записей. Поэтому он не может работать должным образом. (Кстати, в приведенном примере вы вообще не вызываете первый запрос, поэтому я предполагаю, что в ваших реальных тестах вы делали что-то вроде s.execute() где-то). Итак, для точечной работы нужно больше походить:

s = conn.execute(table.select(table.c.user=="test", for_update=True))
u = conn.execute(table.update().where(table.c.user=="test), {"email": "foo"})
conn.commit()

Конечно, в таком простом случае нет причин делать какие-либо блокировки, но я думаю, что это пример только, и вы планировали добавить некоторые дополнительные логика между этими двумя вызовами.

0
задан Jetman 18 January 2019 в 05:38
поделиться

1 ответ

Вы пытаетесь вращать shapely.Polygon, а не GeoPandas.GeoSeries, поэтому для этого вам нужно использовать стройную фигуру.

import geopandas as gpd
import shapely

p1 = shapely.geometry.Polygon([(0, 0), (1, 0), (1, 1), (0, 1)])
p2 = shapely.geometry.Polygon([(2, 0), (3, 0), (3, 1), (2, 1)])

g = gpd.GeoSeries([p1, p2])

gdf = gpd.GeoDataFrame(geometry=g)
gdf['angle'] = [25, 45]

for index, row in gdf.iterrows():
    rotated = shapely.affinity.rotate(row['geometry'], row['angle'])
    gdf.loc[index, 'geometry'] = rotated
0
ответ дан martinfleis 18 January 2019 в 05:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: