tutorial examples descargar database postgresql gis postgis

database - examples - ¿Cómo convierto un par de latitud/longitud en un tipo de geografía PostGIS?



postgis qgis (3)

...suspiro. Estupidez de mi parte Aparentemente, el orden correcto es longitud, latitud. Me engañaron y pensé que ambas coordenadas tenían el mismo rango (-180 a 180), así que pensé que algo más sutil estaba ocurriendo.

Estoy intentando cargar un grupo de pares de latitud / longitud en un tipo de geografía PostGIS para poder consultar por ubicación.

En particular, tengo una tabla con columnas de latitud y longitud de flotador y una columna de geography(Point, 4326) . me gustaría hacer

update mytable set geography = ???

La documentación parece sugerir que lo siguiente debería funcionar:

update mytable set geography = ST_GeogFromText(''POINT('' || latitude || '' '' || longitude || '')'');

No es así No sé lo que está interpretando este punto como significado, pero solo permite que la longitud se encuentre entre -90 y 90, por lo que claramente no es una longitud.

¿Entonces qué hago?


Para realizar el intercambio entre lat y lng, puede usar:

update mytable set geography = ST_GeographyFromText(''SRID=4326;POINT('' || st_x(geom) || '' '' || st_y(geom) || '')'');

con o sin srid.


Aquí hay algunas maneras de hacer tipos de geografía:

  1. Convierta columnas numéricas long y lat a un tipo geog geográfico:

    UPDATE mytable SET geog = ST_SetSRID(ST_MakePoint(long, lat), 4326)::geography

  2. Convierta una columna de geometría geom ( SRID = 4326 ) en un tipo geog geográfico usando un molde simple:

    UPDATE mytable SET geog = geom::geography

  3. Transforme una columna de geometría geom proyectada a un tipo de geog geográfico:

    UPDATE mytable SET geog = ST_Transform(geom, 4326)::geography

Tenga en cuenta que los dos últimos ejemplos funcionan en cualquier tipo de geometría. Además, la conversión de la geometría a la geografía es a menudo implícita, y estos ejemplos funcionan sin ::geography , sin embargo, los moldes explícitos suelen ser una buena práctica para estas cosas.