Pergunta

Eu tenho 8 valores reais em uma tabela que eu gostaria de combinar em um polígono. Eu não tenho sido capaz de descobrir como criar um polígono usando esses valores embora. Eu continuo tentando variações

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

mas continuo recebendo erros sobre a função polígono não existente ou uma sintaxe de entrada inválida para o tipo de polígono. Alguém já fez isso antes?

Foi útil?

Solução

A sintaxe para uma postgres polígono regular é mais parecido com:

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

Onde 1 é algum ID ea entrada citado é o polígono. Eu esperaria que a consulta para ser semelhante, você provavelmente precisará parênteses etc para as coordenadas. Tipicamente para dados geoespaciais você quer coordenadas (Lon LAT). Postgis também leva declarações WKT como:

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

Outras dicas

Como mencionado por bvmou - GeomFromText irá funcionar bem. Vou apenas acrescentar uma atualização de sintaxe pequeno:

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

Este exemplo assume longitude e coordenadas de latitude de uma tabela e os converte em uma geometria. As dimensões de cada caixa são dadas como long_high, long_low, lat_high, e lat_low. Aqui, uma caixa de aproximadamente 500m por 500m.

  1. Adicionar uma nova coluna de geometria 'caixa' para a mesa

    SELECT AddGeometryColumn('public', 'predpol_raw', 'box', 2240, 'POLYGON', 2);
  2. Atualize o novo campo com esses 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
            );
    

Observe a transformação para uma referência espacial diferente. A palavra-chave POLYGON requer parênteses duplos '(())'.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top