Яку систему координат слід використовувати для зберігання географічних даних для небесних координат?


37

Я займаюся астрономічним проектом. Я хочу, щоб інформація про наші зображення зберігалася в просторово включеній базі даних. Думаю, це має бути дуже легким особливим випадком для функцій ГІС, оскільки небо можна розглядати як ідеально сферичне і не вимагає еліптичної обробки, як поверхня землі. На жаль, я ще не знайшов способу це зробити, і я ухилявся від мін з просторовими функціями, які використовують еліптичну землю. (Практично будь-яка функція, яка повертає метри замість градусів, може використовувати еліптичний обчислення. На щастя, багато потрібних мені функцій PostGIS мають неповні реалізації, де в документації прямо вказано, що повернені результати призначені для сфери, а не для але це може змінитися з майбутніми версіями, що викликає занепокоєння.)

Передумови: В даний час я використовую PostgreSQL з координатами PostGIS і WGS 84 (SRID = 4326). Це працює досить добре. Я створюю закритий ПОЛІГОН із правого підйому та скланення чотирьох кутів зображення. У мене дуже багато зображень (10k і більше), які охоплюють велику область неба. Кожне зображення становить приблизно 1 градус квадрата. З набору цих зображень я роблю мозаїки з невеликих підмножин від 15 до 30 зображень. Кожна мозаїка має площу близько 1,5 градусів.

В даний час я зберігаю географію мозаїк як МНОГОПОЛІГОН, що складається з усіх ПОЛІГОНІВ, що відповідають кожному зображенню, що ввійшло в мозаїку. [Кращим рішенням було б створити єдиний ПОЛІГОН, який описує периметр з'єднання всіх окремих многокутників. Я не знаю, чи можна це зробити за сферичними координатами (тобто типом географії). Це також буде цікавою відповіддю і для мене.] Рядок дати та небесні полюси можуть бути включені до зображення в наборі даних, тому я уникав проектувати плоскі координати наскільки це можливо.

Яку систему координат я повинен використовувати для небесних координат з функціями PostGIS?

Я переглянув http://spatialreference.org/, але поки що нічого не знайшов. Google мало піднявся. Я спотикався. В основному, я хочу переконатися, що якщо функція повертає метри як відстань, це метри вздовж великого кола на кулі.

Загалом, деякі поради щодо використання небесних координат у просторовій базі даних також будуть вдячні.

Я помилився, вибравши PostGIS?

Чи є куди найкращий комерційний вибір?

Вибір FOSS?


Я використовую PostGIS 1.5.2. Я ще не пробував PostGIS 2.0. Мені цікаво, якщо функція ST_CoveredBy працює з POLYGON та MULTIPOLYGON типу географії. Якщо хтось працює під управлінням 2.0, ви можете мені сказати, якщо ви отримуєте таку ж помилку, як ця:

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

Я спробував PostGIS 2.0. Ця функція все ще працює лише на точках і полігонах, не більш загальних форм.


Хіба це не схоже на те, що робить wcs2kml? Якщо так, можливо, ви могли б адаптувати частину коду для своїх потреб. code.google.com/p/wcs2kml
Кірк Куйкендалл

Я наткнувся на цю презентацію USGS, "ПЛАНЕТНИЙ ГІС 101", і коротко побачив, що є кілька слайдів на прогнозах, можливо, це допоможе тобі.
Jonatr

Замість того, щоб створювати багатополігони, чому б не створити кілька полігонів, які мають спільний ідентифікатор групування?
Рафаель

Відповіді:


17

Ознайомтеся з pgsphere, вона спеціально розроблена для обробки астрономічних даних.

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


Це дуже хороший матеріал. На жаль, схоже, він не підтримує жодного класу геометрії "мультиполі". Дякую за велику підтримку цього проекту.
Доктор Персона Особа II

1
Коли я намагаюся перейти за цим посиланням, я отримую "Заборонено у вас немає дозволу на доступ / на цьому сервері".
PolyGeo

12

Можна зберігати небесні позиції в PostGIS - вам просто потрібно створити власну систему координат!

PostGIS отримує всю свою систему координат та інформацію про проекцію з таблиці, spatial_ref_sysяка зазвичай заповнюється при ініціалізації бази даних. Але нічого не перешкоджає вам додавати власні прогнози - адже це практично рекомендується .

Як і майже кожен GIS / просторова база даних / виріб для картографування, PostGIS використовує Proj4 для своїх проекційних потреб, і тому вам потрібно помістити рядок Proj4 у spatial_ref_sysтаблицю. Проста сферична SRS в Proj4 формі: +proj=longlat +ellps=sphere +no_defs. PostGIS також вимагає WKT-версії проекції, але я думаю, що це просто використовується як гарний текст.

Вам також потрібно буде створити унікальний SRID для вашого нового SRS, а також "авторитет", але це може бути все, що завгодно.

Отже, щоб вставити новий запис у нього spatial_ref_sys, просто виконайте цей 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');

Зауважте, що я вибрав 40000 як SRID - це число, яке ви використовуєте у своїй таблиці небесних об'єктів. Автентичність - це "МЕН", але це може бути ваше ім'я, організація чи що-небудь дійсно до 256 символів. Наступний номер 1 - це лише ваш унікальний ідентифікатор для цього запису, що стосується повноважень. Теоретично ви могли б позначати цей запис як ME: 1, але для всієї обробки PostGIS - це унікальний SRID, який нараховується. Запис WKT, який я створив за допомогою GDAL та Python:

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

Тепер застереження:

  • Правильне сходження доведеться задавати в градусах, а не в кутових годинах.
  • Ряд функцій PostGIS не розроблений для непроектованих даних, але це та сама проблема, якщо у вас є наземні дані в WGS84 long / lat.
  • Як відомо, дані геоцентричні. Якщо ви хочете виконати з цим будь-яку спостережну роботу, пропоную скористатися чимось на зразок PyEphem .
  • Я не намагався створити будь-які дані в цій SRS, тому YMMV.
  • Мені зараз це дуже цікаво, тому, можливо, мені доведеться пограти з імпортом каталогу Hipparchos ... :)

2
+1. Ви можете добре розпочати картування неба, завантаживши версію бази даних HYG , помноживши правильне сходження на 15 і відніміть 180, щоб перетворити в стандартну "довготу" ГІС, та використовуючи будь-яку ідеально сферичну дату, яка вам подобається. Для відображення та картографування гномонічні та ортографічні проекції є досить стандартними.
whuber

@whuber: а широта? є ДЕК?
Magno C

@MagnoC Так, це правильно. Поля описані на веб-сайті, до якого я пов’язаний: просто прокрутіть трохи вниз. Щоб перевірити це, я скинув "малу" версію (всього 31 тис. Зірок) у програму тривимірного перегляду, перетворену на декартові координати (на одиничній небесній сфері, ігноруючи відстань), і склав їх: виглядає добре.
whuber

@whuber: "РА, грудень: правильне сходження та схилення зірки, для епохи 2000.0. Зірки, присутні лише у Каталозі Глізе, який використовує координати 1950.0, мали ці координати перероблені до 2000 року". Я не так зрозуміла щодо Лат / Лон. Отже, LON = (RA*15) - 180і LAT = DEC?
Magno C

@MagnoC Я знайшов, що en.wikipedia.org/wiki/Equatorial_coordinate_system є корисною для цього.
whuber
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.