37 votos

Elección del sistema de coordenadas para almacenar los datos geográficos de las coordenadas celestes

Estoy haciendo un proyecto de astronomía. Quiero que la información sobre nuestras imágenes se almacene en una base de datos con capacidad espacial. Esto, pensaría, debería ser un caso especial muy fácil para las funciones GIS porque el cielo puede ser tratado como perfectamente esférico, y no requiere un tratamiento elíptico como la superficie de la tierra. Desgraciadamente, todavía no he encontrado la manera de hacerlo y he estado esquivando minas con funciones espaciales que utilizan una tierra elíptica. (Prácticamente cualquier función que devuelva metros en lugar de grados puede estar utilizando un cálculo elíptico. Por suerte, muchas de las funciones de PostGIS que he necesitado parecen tener implementaciones incompletas en las que la documentación indica explícitamente que los resultados devueltos son para una esfera y no para el elipsoide. Pero eso puede cambiar con futuras versiones, lo que es motivo de preocupación).

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

Actualmente, estoy almacenando la geografía de los mosaicos como un MULTIPOLÍGONO que consiste en todos los POLÍGONOS correspondientes a cada imagen que entró en el mosaico. [Una mejor solución sería crear un único 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 el tipo de geografía). Esto también sería una respuesta interesante para mí también]. La línea de la fecha y los polos celestes pueden estar incluidos en una imagen en el conjunto de datos, por lo que he estado evitando proyectar a coordenadas planas en la medida de lo posible.

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

He mirado http://spatialreference.org/ pero no he encontrado nada hasta ahora. En Google se ha encontrado poco. Estoy perplejo. Básicamente, quiero asegurarme de que si una función devuelve metros como distancia, son metros a lo largo de un gran círculo en una esfera.


Estoy utilizando 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 POLÍGONO y un MULTIPOLÍGONO de tipo geográfico. Si alguien está ejecutando la versión 2.0, podría decirme si obtiene 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 probado PostGIS 2.0. Esta función sigue funcionando sólo con puntos y polígonos, no con formas más generales.

18voto

NilObject Puntos 7874

Mira pgsphere, está diseñado específicamente para manejar datos astronómicos.

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

12voto

Symmetric Puntos 158

Es posible almacenar posiciones celestes en PostGIS - ¡sólo tienes que crear tu propio sistema de coordenadas!

PostGIS obtiene toda la información sobre el sistema de coordenadas y la proyección de la tabla spatial_ref_sys que normalmente se rellena cuando se inicializa la base de datos. Pero no hay nada que le impida añadir sus propias proyecciones - de hecho es prácticamente alentó .

Al igual que casi todos los productos de SIG, bases de datos espaciales y cartografía, PostGIS utiliza Proj4 para sus necesidades de proyección, por lo que es necesario introducir una cadena Proj4 en el archivo spatial_ref_sys mesa. 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 sólo se utiliza como texto bonito.

También tendrás que crear un SRID único para tu nuevo SRS, así como una "autoridad", pero ésta puede ser la que tú quieras.

Así que para insertar una nueva entrada en spatial_ref_sys , sólo hay que realizar 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 he elegido 40000 como el SRID - este es el número que utiliza en su tabla de objetos celestes. La autenticidad es "ME", pero esto podría ser su nombre, organización, o cualquier cosa realmente hasta 256 caracteres. El siguiente número, el 1, es sólo su identificador único para esa entrada, en relación con la autoridad. En teoría, podría referirse a esta entrada como ME:1, pero para todo el procesamiento de PostGIS, lo que cuenta es el SRID único. 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 deberá especificarse en grados y no en ángulos horarios.
  • Varias funciones de PostGIS no están diseñadas para datos no proyectados, pero es el mismo problema si tienes datos terrestres en WGS84 long/lat.
  • Tal y como están las cosas, los datos son geocéntricos. Si quieres hacer algún trabajo de observación con ellos, te sugiero que utilices algo como PyEphem .
  • No he probado a crear ningún dato en este SRS, así que YMMV.
  • Sin embargo, ahora estoy bastante interesado en esto, así que puede que tenga que jugar con la importación del catálogo de Hipparchos... :)

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X