Я написал некоторый код в psycopg2, который вычисляет точки внутри пересечения двух многоугольников в PostgreSQL / PostGIS.
Код, который я использую:
for i in range(len(linesreplace) - 1):
intersect = """select
ST_Contains(
ST_Intersection(
ST_GeometryFromText('SRID=4326; POLYGON((10.9204102 40.2292182,10.5688477 36.4389612,14.3041992 36.4389612,13.4033203 40.2627607,10.9204102 40.2292182))'),
ST_MakeValid(
ST_GeometryFromText('SRID=4326; POLYGON((8.503418 39.1300602,8.2177734 36.8620427,15.4467773 36.9323301,15.1391602 39.1811753,8.503418 39.1300602))')
)
),
the_geom
),
vessel_hash,
the_geom
from samplecol as col WHERE col.timestamp > """ + linesreplace[i] + """ and col.timestamp < """ + \
linesreplace[i + 1]
cursor.execute(intersect)
pointsINtw = cursor.fetchall()
Код работает нормально, но время выполнения слишком медленное. Кто-нибудь знает, как ускорить запрос?