Qual sistema de coordenadas deve ser usado para armazenar dados geográficos para coordenadas celestes?

37

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.

Dr. Pessoa Pessoa II
fonte
Isso não é semelhante ao que o wcs2kml faz? Nesse caso, talvez você possa adaptar parte do código para seus usos. code.google.com/p/wcs2kml
Kirk Kuykendall 9/10/10
Encontrei esta apresentação do USGS, "PLANETARY GIS 101", e vi brevemente alguns slides das projeções, talvez isso o ajude.
jonatr
Em vez de criar multipolígonos, por que não criar vários polígonos que compartilham um ID de agrupamento?
Raphael #

Respostas:

17

Confira o pgsphere, que foi projetado especificamente para manipular dados astronômicos.

http://pgsphere.projects.postgresql.org/

Paul Ramsey
fonte
Isso é muito bom. Infelizmente, parece não suportar nenhuma classe de geometria "smultipoly". Obrigado pelo ótimo aviso sobre esse projeto.
Person Person II
11
Quando tento seguir este link, recebo "Proibido Você não tem permissão para acessar / neste servidor".
PolyGeo
12

É 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_sysque 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_systabela. 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:

insert into spatial_ref_sys values(40000, 'ME', 1, 
'GEOGCS["Normal Sphere (r=6370997)",DATUM["unknown",SPHEROID["sphere",6370997,0]],PRIMEM["Greenwich",0],UNIT["degree",0.0174532925199433]]',
'+proj=longlat +ellps=sphere +no_defs');

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:

import osgeo.osr as osr
srs = osr.SpatialReference()
srs.ImportFromProj4('+proj=longlat +ellps=sphere +no_defs')
srs.ExportToWkt()

Agora as advertências:

  • A ascensão reta terá que ser especificada em graus, em vez de ângulos de hora.
  • Várias funções PostGIS não foram projetadas para dados não projetados, mas é o mesmo problema se você tiver dados terrestres no WGS84 long / lat.
  • Como estão, os dados são geocêntricos. Se você quiser fazer algum trabalho de observação, sugiro usar algo como PyEphem .
  • Eu não tentei criar nenhum dado neste SRS, então YMMV.
  • No entanto, estou bastante interessado nisso agora, por isso talvez precise importar o catálogo Hipparchos ... :)
MerseyViking
fonte
2
+1. Você pode começar bem o mapeamento dos céus carregando uma versão do banco de dados HYG , multiplicando a ascensão reta por 15 e subtraindo 180 para converter em uma "longitude" GIS padrão e usando qualquer dado perfeitamente esférico que desejar. Para exibição e mapeamento, as projeções gnomônicas e ortográficas são bastante padrão.
whuber
@ whuber: e a latitude? é o DEC?
Magno C
@ MagnoC Sim, está correto. Os campos estão descritos no site ao qual vinculei: basta rolar um pouco para baixo. Para checar, joguei a versão "pequena" (apenas 31 mil estrelas) em um programa de visualização em 3D, converti em coordenadas cartesianas (em uma unidade de esfera celeste, ignorando a distância) e as plotei: parece bom.
whuber
@whuber: "RA, dez: a ascensão reta e declinação da estrela, para a época 2000.0. As estrelas presentes apenas no Catálogo Gliese, que usa coordenadas 1950.0, tiveram essas coordenadas pré-precedidas para 2000". Não é tão claro sobre Lat / Lon. Então LON = (RA*15) - 180e LAT = DEC?
Magno C
@ MagnoC Eu achei o en.wikipedia.org/wiki/Equatorial_coordinate_system útil para resolver isso.
whuber