Pregunta

Tengo 8 valores reales en una mesa que me gustaría combinar en un polígono. No he sido capaz de averiguar cómo crear un polígono usando estos valores sin embargo. Sigo tratando de variaciones

SELECT polygon(lat1,lon1,lat2,lon2,lat3,lon3,lat4,lon4) FROM table;

pero obtengo errores acerca de la función polígono no existente o una sintaxis de entrada no válido para el tipo de polígono. Alguien ha hecho esto antes?

¿Fue útil?

Solución

La sintaxis de una postgres polígono regular es más como:

insert into geo_table values (1, '((2,2),(3,4),(3,6),(1,1))');

Donde 1 es un documento de identidad y la entrada es citado polígono. Yo esperaría que la consulta sea similar, es probable que tenga paréntesis, etc para las coordenadas. Típicamente para datos geoespaciales que desee (Lon Lat) coordina. Postgis también toma declaraciones WKT como:

GeomFromText('POLYGON((long1 lat1, long2 lat2, long3 lat3))')

Otros consejos

Según lo mencionado por bvmou - GeomFromText no tendrán ningún problema. Voy a añadir una actualización de sintaxis pequeña:

GeomFromText('POLYGON((long1 lat1, long2 lat2, long3 lat3))')

Este ejemplo toma longitud y latitud coordenadas de una tabla y las convierte en una geometría. Las dimensiones de cada cuadro se dan como long_high, long_low, lat_high, y lat_low. Aquí, una caja de unos 500 metros por 500 metros.

  1. Añadir una nueva columna de geometría 'caja' de la tabla

    SELECT AddGeometryColumn('public', 'predpol_raw', 'box', 2240, 'POLYGON', 2);
  2. Actualizar el nuevo campo con esos valores.

    UPDATE predpol_raw
    SET box =
            ST_Transform(
                ST_GeomFromText(
                    format('POLYGON((%s %s, %s %s, %s %s, %s %s, %s %s))',
                        long_high,lat_high, long_low,lat_high,
                        long_low,lat_low, long_high,lat_low,
                        long_high,lat_high
                    ),
                    4326
                ),
                2240
            );
    

Tenga en cuenta la transformación a una referencia espacial diferente. La palabra clave POLÍGONO requiere doble paréntesis '(())'.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top