¿Qué sistema de coordenadas se debe usar para almacenar datos geográficos para las coordenadas celestes?

37

Estoy haciendo un proyecto de astronomía. Quiero tener la información sobre nuestras imágenes almacenadas en una base de datos habilitada espacialmente. Creo que este debería ser un caso especial muy fácil para las funciones de SIG, ya que el cielo se puede tratar como perfectamente esférico y no requiere un tratamiento elíptico como la superficie de la tierra. Desafortunadamente, no he encontrado una manera de hacer esto todavía y he estado esquivando minas con funciones espaciales que usan una tierra elíptica. (Casi cualquier función que devuelva medidores en lugar de grados puede estar usando un cálculo elíptico. Afortunadamente, muchas de las funciones PostGIS que he necesitado parecen tener implementaciones incompletas donde la documentación indica explícitamente que los resultados obtenidos son para una esfera y no para el elipsoide. Pero eso puede cambiar con las versiones futuras, lo cual es un motivo de preocupación.)

Antecedentes: Actualmente estoy usando PostgreSQL con las coordenadas PostGIS y WGS 84 (SRID = 4326). Esto funciona bastante bien. Estoy creando un POLÍGONO cerrado desde la ascensión y declinación correctas de las cuatro esquinas de la imagen. Tengo muchas imágenes (10k o más) que cubren una gran área del cielo. Cada imagen es de aproximadamente 1 grado cuadrado. Del conjunto de estas imágenes, estoy haciendo mosaicos de pequeños subconjuntos de 15 a 30 imágenes. Cada mosaico es de aproximadamente 1,5 grados cuadrados.

Actualmente, estoy almacenando la geografía de los mosaicos como un MULTIPOLÍGONO que consta de todos los POLÍGONOS correspondientes a cada imagen que se incluyó en el mosaico. [Una solución mejor sería crear un solo POLÍGONO que describa el perímetro de la unión de todos los polígonos individuales. No sé si esto se puede hacer en coordenadas esféricas (es decir, que es el tipo de geografía). Esta también sería una respuesta interesante para mí.] La línea de fecha y los polos celestes pueden incluirse en una imagen en el conjunto de datos, por lo que he estado evitando proyectar coordenadas planas en la medida de lo posible.

¿Qué sistema de coordenadas debo usar para coordenadas celestes con las funciones de PostGIS?

He consultado enlace pero no he encontrado nada hasta ahora. Google ha aparecido poco. Estoy perplejo. Básicamente, quiero asegurarme de que si una función devuelve metros como una distancia, está a lo largo de un gran círculo en una esfera.

Más generalmente, también se agradecería algún consejo para usar coordenadas celestes en una base de datos espacial.

¿Me he equivocado al elegir PostGIS?

¿Hay opciones comerciales muy superiores?

Opciones de FOSS?

Estoy usando PostGIS 1.5.2. Todavía no he probado PostGIS 2.0. Tengo curiosidad por saber si la función ST_CoveredBy funciona con un POLYGON y un MULTIPOLYGON de tipo geografía. Si alguien está ejecutando 2.0, ¿podría decirme si se produce el mismo error 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

He intentado PostGIS 2.0. Esta función aún funciona solo en puntos y polígonos, no en formas más generales.

    
pregunta Dr. Person Person II 09.10.2010 - 08:01

2 respuestas

17

Echa un vistazo a pgsphere, está diseñado específicamente para manejar datos astronómicos.

enlace

    
respondido por el Paul Ramsey 19.10.2010 - 03:35
12

Es posible almacenar posiciones celestes en PostGIS. ¡Solo necesitas crear tu propio sistema de coordenadas!

PostGIS obtiene todo su sistema de coordenadas e información de proyección de la tabla spatial_ref_sys que normalmente se llena cuando se inicializa la base de datos. Pero no hay nada que le impida agregar sus propias proyecciones; de hecho, es prácticamente alentado .

Al igual que casi todos los productos de mapas / bases de datos espaciales / GIS que hay por ahí, PostGIS usa Proj4 para sus necesidades de proyección, por lo que debe colocar una cadena Proj4 en la tabla spatial_ref_sys . Un SRS esférico simple en forma de Proj4 es: +proj=longlat +ellps=sphere +no_defs . PostGIS también requiere una versión WKT de la proyección, pero creo que solo se usa como texto bonito.

También deberá crear un SRID exclusivo para su nuevo SRS, así como una "autoridad", pero esto puede ser lo que quiera.

Entonces, para insertar una nueva entrada en spatial_ref_sys , simplemente realice 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');

Tenga en cuenta que elegí 40000 como SRID: este es el número que usa en la tabla de objetos celestes. La autenticidad es "YO", pero este podría ser su nombre, organización o cualquier cosa realmente de hasta 256 caracteres. El siguiente número, 1, es solo su identificador único para esa entrada, relativo a la autoridad. En teoría, podría referirse a esta entrada como ME: 1, pero para todo el procesamiento de PostGIS, es el único SRID que cuenta. La entrada WKT que generé con GDAL y Python:

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

Ahora las advertencias:

  • La ascensión recta debe especificarse en grados en lugar de en ángulos de hora.
  • Algunas funciones de PostGIS no están diseñadas para datos no proyectados, pero es el mismo problema si tiene datos terrestres en WGS84 long / lat.
  • En su forma actual, los datos son geocéntricos. Si quieres hacer un trabajo de observación con él, sugiero usar algo como PyEphem .
  • No he intentado crear ningún dato en este SRS, así que YMMV.
  • Estoy bastante interesado en esto ahora, así que es posible que tenga que jugar con importar el catálogo de Hipparchos ... :)
respondido por el MerseyViking 24.08.2011 - 19:31

Lea otras preguntas en las etiquetas