Estou fazendo um projeto de astronomia. Quero que as informações sobre nossas imagens sejam armazenadas em um banco de dados ativado espacialmente. Penso que este deveria ser um caso especial muito fácil para as funções de SIG porque o céu pode ser tratado como perfeitamente esférico e não requer um tratamento elíptico como a superfície da Terra. Infelizmente, ainda não encontrei uma maneira de fazer isso e tenho me esquivado de minas com funções espaciais que usam uma terra elíptica. (Praticamente qualquer função que retorna metros em vez de graus pode estar usando um cálculo elíptico. Felizmente, muitas das funções do PostGIS que eu precisava parecem ter implementações incompletas, nas quais a documentação afirma explicitamente que os resultados retornados são para uma esfera e não para elipsóide. Mas isso pode mudar com versões futuras, o que é motivo de preocupação.)
Antecedentes: Atualmente, estou usando o PostgreSQL com as coordenadas PostGIS e WGS 84 (SRID = 4326). Isso funciona razoavelmente bem. Estou criando um POLÍGONO fechado a partir da ascensão reta e declinação dos quatro cantos da imagem. Eu tenho muitas imagens (10k ou mais), cobrindo uma grande área do céu. Cada imagem tem cerca de 1 grau quadrado. A partir do conjunto dessas imagens, estou criando mosaicos a partir de pequenos subconjuntos de 15 a 30 imagens. Cada mosaico tem cerca de 1,5 graus quadrados.
Atualmente, estou armazenando a geografia dos mosaicos como um MULTIPOLÍGONO que consiste em todos os POLÍGONOS correspondentes a cada imagem que foi inserida no mosaico. [Uma solução melhor seria criar um único POLÍGONO que descreva o perímetro da união de todos os polígonos individuais. Não sei se isso pode ser feito em coordenadas esféricas (ou seja, que o tipo de geografia). Essa também seria uma resposta interessante para mim.] A linha de data e os pólos celestes podem ser incluídos em uma imagem no conjunto de dados, evitando a projeção de coordenadas planas na medida do possível.
Qual sistema de coordenadas devo usar para coordenadas celestes com funções PostGIS?
Eu visitei http://spatialreference.org/, mas não encontrei nada até agora. O Google apareceu pouco. Estou perplexo. Basicamente, quero garantir que, se uma função retorna metros à distância, ela é metros ao longo de um grande círculo em uma esfera.
De maneira mais geral, alguns conselhos para o uso de coordenadas celestes em um banco de dados espacial também seriam apreciados.
Errei ao escolher o PostGIS?
Existem opções comerciais muito superiores?
Opções de software livre?
Estou usando o PostGIS 1.5.2. Ainda não experimentei o PostGIS 2.0. Estou curioso para saber se a função ST_CoveredBy funciona com um POLYGON e um MULTIPOLYGON do tipo geografia. Se alguém estiver executando o 2.0, você poderia me dizer se você receber o mesmo erro que este:
mydb=# select ST_CoveredBy(ST_GeographyFromText('MULTIPOLYGON(( (10.37795 -69.57926,8.9498 -69.54875,9.0178 -69.21643,10.4242 -69.24648,10.37795 -69.57926),(10.42436 -69.24618,9.01774 -69.2162, 9.08363 -68.88389,10.46914 -68.91344,10.42436 -69.24618)))'),ST_GeographyFromText('POLYGON((10.46915 -68.91315,9.08371 -68.88364,9.14755 -68.5513,10.5125 -68.58038,10.46915 -68.91315))'));
ERROR: geography_covers: only POLYGON and POINT types are currently supported
CONTEXT: SQL function "st_coveredby" statement 1
Eu tentei o PostGIS 2.0. Essa função ainda funciona apenas em pontos e polígonos, não em formas mais gerais.
fonte
Respostas:
Confira o pgsphere, que foi projetado especificamente para manipular dados astronômicos.
http://pgsphere.projects.postgresql.org/
fonte
É possível armazenar posições celestes no PostGIS - você só precisa criar seu próprio sistema de coordenadas!
O PostGIS obtém todas as informações do seu sistema de coordenadas e projeção da tabela
spatial_ref_sys
que normalmente é preenchida quando o banco de dados é inicializado. Mas não há nada que o impeça de adicionar suas próprias projeções - na verdade, é praticamente incentivado .Em comum com quase todos os produtos GIS / banco de dados espacial / mapeamento existentes, o PostGIS usa o Proj4 para atender às suas necessidades de projeção e, portanto, você precisa colocar uma sequência de Proj4 na
spatial_ref_sys
tabela. A SRS esférica simples em forma de Proj4 é:+proj=longlat +ellps=sphere +no_defs
. O PostGIS também requer uma versão WKT da projeção, mas acho que é usada apenas como um texto bonito.Você também precisará criar um SRID exclusivo para o seu novo SRS, além de uma "autoridade", mas isso pode ser o que você quiser.
Portanto, para inserir uma nova entrada
spatial_ref_sys
, basta executar este SQL:Observe que eu escolhi 40000 como o SRID - este é o número que você usa na sua tabela de objetos celestes. A authroity é "ME", mas pode ser seu nome, organização ou qualquer coisa com até 256 caracteres. O próximo número, 1, é apenas o seu identificador exclusivo para essa entrada, em relação à autoridade. Em teoria, você pode se referir a esta entrada como ME: 1, mas para todo o processamento PostGIS, é o SRID exclusivo que conta. A entrada WKT que eu gerei com GDAL e Python:
Agora as advertências:
fonte
LON = (RA*15) - 180
eLAT = DEC
?