Je fais un projet d'astronomie. Je souhaite que les informations sur nos images soient stockées dans une base de données activée spatialement. Je pense que cela devrait constituer un cas spécial très simple pour les fonctions SIG car le ciel peut être traité comme parfaitement sphérique et ne nécessite pas de traitement elliptique comme la surface de la Terre. Malheureusement, je n'ai pas encore trouvé le moyen de le faire et j'ai esquivé des mines avec des fonctions spatiales utilisant une terre elliptique. (Pratiquement toutes les fonctions qui renvoient des mètres au lieu de degrés utilisent un calcul elliptique. Heureusement, beaucoup de fonctions PostGIS dont j'ai besoin semblent avoir des implémentations incomplètes où la documentation indique explicitement que les résultats renvoyés sont pour une sphère et non pour. l’ellipsoïde. Mais cela pourrait changer avec les versions futures, ce qui est un sujet de préoccupation.)
Contexte: J'utilise actuellement PostgreSQL avec les coordonnées PostGIS et WGS 84 (SRID = 4326). Cela fonctionne assez bien. Je crée un POLYGONE fermé à partir de l'ascension droite et de la déclinaison des quatre coins de l'image. J'ai beaucoup d'images (10k ou plus), couvrant une grande partie du ciel. Chaque image correspond à environ 1 degré carré. À partir de l’ensemble de ces images, je réalise des mosaïques à partir de petits sous-ensembles de 15 à 30 images. Chaque mosaïque mesure environ 1,5 degré carré.
Actuellement, je stocke la géographie des mosaïques en tant que MULTIPOLYGONE qui comprend tous les POLYGONES correspondant à chaque image entrée dans la mosaïque. [Une meilleure solution serait de créer un POLYGONE unique décrivant le périmètre de l'union de tous les polygones individuels. Je ne sais pas si cela peut être fait en coordonnées sphériques (c'est-à-dire le type de géographie). Cela constituerait également une réponse intéressante pour moi aussi.] La ligne de date et les pôles célestes peuvent être inclus dans une image du jeu de données, de sorte que j'ai évité de projeter autant que possible vers des coordonnées planaires.
Quel système de coordonnées dois-je utiliser pour les coordonnées célestes avec les fonctions PostGIS?
J'ai regardé http://spatialreference.org/ mais je n'ai rien trouvé jusqu'à présent. Google a peu tourné. Je suis perplexe. En gros, je veux m'assurer que si une fonction renvoie des mètres en distance, elle parcourt des mètres le long d'un grand cercle sur une sphère.
Plus généralement, des conseils sur l'utilisation de coordonnées célestes dans une base de données spatiale seraient également appréciés.
Ai-je commis une erreur en choisissant PostGIS?
Y at-il des choix commerciaux de loin supérieurs?
Choix de logiciels libres?
J'utilise PostGIS 1.5.2. Je n'ai pas encore essayé PostGIS 2.0. Je suis curieux de savoir si la fonction ST_CoveredBy fonctionne avec un POLYGONE et un MULTIPOLYGONE de type geography. Si quelqu'un utilise la version 2.0, pouvez-vous me dire si vous obtenez la même erreur que celle-ci:
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
J'ai essayé PostGIS 2.0. Cette fonction ne fonctionne toujours que sur des points et des polygones, pas de formes plus générales.
la source
Réponses:
Découvrez pgsphere, il est spécialement conçu pour traiter des données astronomiques.
http://pgsphere.projects.postgresql.org/
la source
Il est possible de stocker des positions célestes dans PostGIS - il vous suffit de créer votre propre système de coordonnées!
PostGIS obtient toutes ses informations de système de coordonnées et de projection à partir de la table
spatial_ref_sys
qui est normalement remplie lorsque la base de données est initialisée. Mais rien ne vous empêche d’ajouter vos propres projections - en fait, cela est pratiquement encouragé .Comme presque tous les produits SIG / base de données spatiale / cartographie disponibles, PostGIS utilise Proj4 pour ses besoins de projection. Vous devez donc insérer une chaîne Proj4 dans la
spatial_ref_sys
table. Un SRS sphérique simple dans sa forme Proj4 est:+proj=longlat +ellps=sphere +no_defs
. PostGIS nécessite également une version WKT de la projection, mais je pense que c'est simplement utilisé comme joli texte.Vous aurez également besoin de créer un SRID unique pour votre nouveau SRS, ainsi qu'une "autorité", mais cela peut être ce que vous voulez.
Donc, pour insérer une nouvelle entrée dans
spatial_ref_sys
, il suffit d'exécuter ce SQL:Notez que j'ai choisi 40000 comme SRID - c'est le nombre que vous utilisez dans votre table d'objets célestes. L'autorité est "ME", mais cela peut être votre nom, votre organisation ou tout ce qui peut contenir jusqu'à 256 caractères. Le numéro suivant, 1, représente simplement votre identifiant unique pour cette entrée, par rapport à l'autorité. En théorie, vous pouvez vous référer à cette entrée par ME: 1, mais pour tous les traitements PostGIS, c'est le SRID unique qui compte. L'entrée WKT que j'ai générée avec GDAL et Python:
Maintenant les mises en garde:
la source
LON = (RA*15) - 180
etLAT = DEC
?