Найти точки внутри пересечения многоугольников в PostgreSQL / PostGIS слишком медленно - PullRequest
0 голосов
/ 07 июля 2019

Я написал некоторый код в 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()

Код работает нормально, но время выполнения слишком медленное. Кто-нибудь знает, как ускорить запрос?

...