7 votos

¿Es allí una operación inversa a ST_Shift_Longitude en PostGIS < 2.3?

ST_Shift_Longitude(geom) (cambia a ST_Shift_Longitude en PostGIS 2.2) añade 360 para longitudes inferiores a 0, con lo que (para lon-lat coordenadas como WGS84) mover la parte del mundo "izquierda" (oeste) de la 0-meridian a la "derecha" (este) de la "derecha" (oriental) antimeridian. Así que esto se convierte en un plano -180°...+180° mapa "split" alrededor de la línea de fecha internacional en un plano de 0°...+360° mapa "split" en Greenwich.

¿Hay alguna función que hace a la inversa (es decir, restando 360 de longitudes superiores a 180) para salir de un plano de 0°...+360° mapa "split" en Greenwich a una tv de -180°...+180° mapa "split" en el antimeridian?

En PostGIS ≥ 2.3 podía usar ST_WrapX(shifted_geom, 180, -360), supongo, pero en PostGIS 2.1 y 2.2 ST_WrapX no está disponible todavía.

He intentado ST_MakeValid(shifted_geom) y ST_Transform(shifted_geom, 4326), pero tanto el retorno de la shifted_geom sin cambios.

3voto

justryintohelp Puntos 11

Uso shifted_geom::geography a emitir el shifted_geometry a la geografía:

SELECT ST_AsText(
    'POLYGON(
        (
            176.792 -12.2085,
            182.1313 -12.2085,
            182.1313 -20.8999,
            176.792 -20.8999,
            176.792 -12.2085
        )
    )'::geometry
);
--                                              st_astext                                             
-- ---------------------------------------------------------------------------------------------------
--  POLYGON((176.792 -12.2085,182.1313 -12.2085,182.1313 -20.8999,176.792 -20.8999,176.792 -12.2085))
-- (1 row)

(Mike T respuesta a las Mejores prácticas de bases de datos y APIs con los datos geográficos que abarca el antimeridian me hizo consciente de que

[c]asting un EPSG:4326 la geometría a un tipo geography también normaliza las coordenadas

que resuelve esta muy bien.)

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X