Астрономия


Программный доступ к Астрономическим изображениям

Эта страничка содержит информацию для желающих программировать обработку астрономических изображений из интернета, чтобы удовлетворить благородное желание найти треугольный кратер, базу неопланетян или звезды расположенные сверхцивилизацией в Пифагоровом порядке 3-4-5. Исходый язык С++ но может быть легко адаптирован для других пристрастий. Пример случайно найденных изображений можно найти на https://finderbmap.blogspot.com/p/blog-page_13.htmlОколо астрономическая информация : https://finderbmap.blogspot.com/.

Изображения луны от Google


sprintf(FileName,"https://mw1.google.com/mw-planetary/lunar/lunarmaps_v1/clem_bw/%i/%i/%i.jpg",Zoom,x,y);
Zoom = 1…13
x,y – index of Lune tiles
Пример изображения:



Изображения  Неба от Google

sprintf(FileName,"https://mw1.google.com/mw-planetary/sky/skytiles_v1/%i_%i_%i.jpg",x,y,Zoom);

Пример изображения:


Изображения  Марса от Google

Выбор кодирования, не желая обидеть разработчиков, (не)много странный
sprintf(FileName  "https://mw1.google.com/mw-planetary/mars/visible/ t...q...r...s...jpg");

где количество r,t соответствуют Zoom, а также могут присутствовать q,s.
Оригинальный Google JS and C++ коды могут быть найдены здесь

Пример изображения:




Изображение в классическом оранжевом цвете


Изображения  Неба от Телескопа Hubble

По понятным причинам доступ к изображениям другее по сравнению с Google. Существует несколько уровней обработки изображений, результаты кторых могут быть загружены. С подробностями можно ознакомиться здесь
Для программной обработки лучше всего пользоваться изображениями которые ближе всего к RAW. Не располагая информацией о простом доступе вида .../Images/1.jpg 2.jpg 3.jpg , был 

Несколько слов о формате файлов, как известно это FITS. Различные версии библиотек широко распространены. Была использована следующая (отрывок из файла fitsio.h)

/*  The FITSIO software was written by William Pence at the High Energy             */
/*  Astrophysic Science Archive Research Center (HEASARC) at the NASA             */
/*  Goddard Space Flight Center.                                                                                     */

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

Загрузка изображений производится в 2 шага. На первом формируется запрос для получения списка файлов на втором загрузка собственно изображений.
sprintf(FileName,"https://archive.stsci.edu/hst/search.php?RA=%g&DEC=%g&radius=%g&max_records=170&outputformat=CSV&sci_instrume=WFC3,WFPC2,WFPC&action=Search",x,y,r);
x,y – Небесные координаты в градусах, r – радиус окрестности в долях градуса.
Остальные параметры ясны из контекста, за подробностями можно обратиться в
Из возвращенной таблицы используються 1 и 2 колонки содержащие ID файла и человечески-возпринимаемое название

Если мы взглянем на Небо в случайном порядке со следующими координатами
y=-90+Rand(180.0);
x=Rand(360.0);
r=10;
где Rand нормализованная функция стандартного С++ рандомизатора VS2008
#define Rand(Range)    (rand()*(double)(Range)/RAND_MAX)
То на 158 шаге получим слудующий адрес и таблицу
Dataset,Target Name,RA (J2000),Dec (J2000),Ref,Start Time,Stop Time,Exp Time,Instrument,Apertures,Filters/Gratings,Central Wavelength,Proposal ID,Release Date,Preview Name,Scan Type,High-Level Science Products,Ang Sep (')
string,string,ra,dec,integer,datetime,datetime,float,string,string,string,float,integer,datetime,string,string,integer,float
U66B0401R,NGC6741,19 02 38.928,-00 26 49.26,20,2001-04-11 19:38:14,2001-04-11 19:43:14,300.000,WFPC2 ,PC1-FIX,F502N,5012.000,8773,2002-04-12 03:26:40,U66B0401R,,,8.264
U66B0402R,NGC6741,19 02 38.928,-00 26 49.26,20,2001-04-11 19:45:14,2001-04-11 19:50:14,300.000,WFPC2 ,PC1-FIX,F502N,5012.000,8773,2002-04-12 04:06:01,U66B0402R,,,8.264
U66B0403R,NGC6741,19 02 38.928,-00 26 49.26,20,2001-04-11 19:52:14,2001-04-11 19:55:34,200.000,WFPC2 ,PC1-FIX,F502N,5012.000,8773,2002-04-12 04:06:54,U66B0403R,,,8.264
Информация о файл ID может быть найдена здесь
или на верхнеперечисленных сайтах, вторая колонка говорит сама за себя.


Теперь можно считывать файл изображений в формате FITS. Для этого используеться следующий адрес, смысл суффикса "_c0m" можно найти в информации об ID, остальное ясно из контекста.
Полученный файл включает 4 изображения 800х800 в 32 bit float формате, соответсвующие 4 CCD инструмента, 3 из которых так скажем крупнозернистые, одно мелкозернистое. 

Следующий шаг это очистка изображения от "артефактов". В данном случае это "нерабочие" зоны CCD удаляемые вехне-левым офсетом в 100 пикселов. Кроме то-го в FITS файлах могут встречаютья пропущенные или пустые точки, помечаемые как NaN. Эти точки можно заменить 0 или что более корректно уровнем background, который находиться в параметрах данных. Проверка NaN в С++ может быть осуществлена одним из самых "логичных" в этом языке способов:
float Val ; if (Val==Val) then хорошая точка; else плохая точка;
 что сравнимо с непоставлением "; " перед "else" в Pascal.
Можно также минимизировать данные этим уровнем, полагая что опуститься ниже сигнал уже не может. Если зделать какой-нибудь статистический Autoscale в jpeg, то может получиться примерно такое изобажение. Данные готовы к собственно processing.




Некоторая дополнительная информация. Файл FITS содержит параметры данных, большинство из которых связаны с обстоятельствами наблюдения. Один из них background упомянут в предыдущем тексте. Извлечение параметров можно осуществить следующим образом                                   
ffgkyd(infptr, "BACKGRND", &ValNULL, &status);
Итерирование параметров:
fits_read_record(infptr, i, card, &status);

Полный список на обычных сайтах.
Кроме того включена информция об использовании изображений
"Based on observations made with the NASA/ESA Hubble Space Telescope,  and obtained from the Hubble Legacy Archive, which is a collaboration between the Space Telescope Science Institute (STScI/NASA), the Space Telescope European Coordinating Facility (ST-ECF/ESA) and the Canadian Astronomy Data Centre (CADC/NRC/CSA). One copy of each paper resulting from data obtained from the HLA should be sent to the STScI."
Существуют также функции для координатных преобразований

ffgicsffxypxffwldp etc.


Изображения  Неба от Обсерватории ESO

Изображения от Обсерватории ESO, затерянной в пустыне под южным солнцем, где как известно немного жарко но несказанно приятно, получаються сходным способом. Первый запрос теперь выглядит так
"http://archive.eso.org/wdb/wdb/eso/eso_archive_main/query?wdbo=csv%2fdisplay&max_rows_returned=200&instrument=&target=&resolver=simbad&ra=RARA&dec=DECDEC&box=00%20RADRAD%2000&degrees_or_hours=degrees&tab_target_coord=on&format=DecimDeg&wdb_input_file=&night=&stime=&starttime=12&etime=&endtime=12&tab_prog_id=on&prog_id=&gto=&pi_coi=&obs_mode=&title=&image[]=FORS2%3b%27IMA%25%27&image[]=HAWKI%3b%27IMA%25%27&image[]=VIMOS%3b%27IMA%25%27&tab_dp_cat=on&dp_cat=SCIENCE&tab_dp_type=on&dp_type=&dp_type_user=&tab_dp_tech=on&dp_tech=&dp_tech_user=&tab_dp_id=on&dp_id=&origfile=&tab_rel_date=on&rel_date=&obs_name=&ob_id=&tab_tpl_start=on&tpl_start=&tab_tpl_id=on&tpl_id=&tab_exptime=on&exptime=&tab_filter_path=on&filter_path=&gris_path=&grat_path=&slit_path=&tab_instrument=on&add=((ins_id%20like%20%27FORS2%25%27%20AND%20(dp_tech%20like%20%27IMA%25%27))%20or%20(ins_id%20like%20%27HAWKI%25%27%20AND%20(dp_tech%20like%20%27IMA%25%27))%20or%20(ins_id%20like%20%27VIMOS%25%27%20AND%20(dp_tech%20like%20%27IMA%25%27)))&tab_tel_airm_start=on&tab_stat_instrument=on&tab_ambient=on&tab_stat_exptime=on&tab_HDR=on&tab_mjd_obs=on&aladin_colour=aladin_instrument&tab_stat_plot=on&order=&"
Где RARA,DECDEC,RADRAD заменяються на соответствующие величины.
Остальные параметры если не ясны из контекста, представлены на


Если мы Демократически, без изменений применим туже случайную проседуру, то на 2059 шаге получим слудующий адрес и таблицу

http://archive.eso.org/wdb/wdb/eso/eso_archive_main/query?wdbo=csv%2fdisplay&max_rows_returned=200&instrument=&target=&resolver=simbad&ra=189.048&dec=25.9532&box=00%2010%2000&degrees_or_hours=degrees&tab_target_coord=on&format=DecimDeg&wdb_input_file=&night=&stime=&starttime=12&etime=&endtime=12&tab_prog_id=on&prog_id=&gto=&pi_coi=&obs_mode=&title=&image[]=FORS2%3b%27IMA%25%27&image[]=HAWKI%3b%27IMA%25%27&image[]=VIMOS%3b%27IMA%25%27&tab_dp_cat=on&dp_cat=SCIENCE&tab_dp_type=on&dp_type=&dp_type_user=&tab_dp_tech=on&dp_tech=&dp_tech_user=&tab_dp_id=on&dp_id=&origfile=&tab_rel_date=on&rel_date=&obs_name=&ob_id=&tab_tpl_start=on&tpl_start=&tab_tpl_id=on&tpl_id=&tab_exptime=on&exptime=&tab_filter_path=on&filter_path=&gris_path=&grat_path=&slit_path=&tab_instrument=on&add=((ins_id%20like%20%27FORS2%25%27%20AND%20(dp_tech%20like%20%27IMA%25%27))%20or%20(ins_id%20like%20%27HAWKI%25%27%20AND%20(dp_tech%20like%20%27IMA%25%27))%20or%20(ins_id%20like%20%27VIMOS%25%27%20AND%20(dp_tech%20like%20%27IMA%25%27)))&tab_tel_airm_start=on&tab_stat_instrument=on&tab_ambient=on&tab_stat_exptime=on&tab_HDR=on&tab_mjd_obs=on&aladin_colour=aladin_instrument&tab_stat_plot=on&order=&
OBJECT,RA,DEC,Program_ID,Instrument,Category,Type,Mode,Dataset ID,Release_Date,TPL ID,TPL START,Exptime,Exposure,Filter,MJD-OBS,Airmass,DIMM Seeing at Start
FORS OBJECT,189.087042,25.987556,60.A-9203(E),FORS2,SCIENCE,OBJECT,IMAGE,FORS2.2000-02-01T08:33:37.817,Jan 24 2001,FORS2_img_obs_exp,,   180.000,180.000,B_BESS,51575.356688,1.573,0.61
FORS OBJECT,189.087042,25.987556,60.A-9203(E),FORS2,SCIENCE,OBJECT,IMAGE,FORS2.2000-02-01T08:37:40.636,Jan 24 2001,FORS2_img_obs_exp,,    89.991,89.991,V_BESS,51575.359498,1.573,0.62
FORS OBJECT,189.087042,25.987556,60.A-9203(E),FORS2,SCIENCE,OBJECT,IMAGE,FORS2.2000-02-01T08:40:13.157,Jan 24 2001,FORS2_img_obs_exp,,    59.993,59.993,R_SPECIAL,51575.361263,1.574,0.53
...
Теперь используеться колонка 0 для имени и 8 для файла. Имя файла получается добавлением префикса "https://dataportal.eso.org/dataportal_new/file/"  :
Возвращаемый файл ("FORS2.2000-02-01T08_33_37.817.fits.Z" в данном случае) может быть празднично упакован сначала компрессором FITS в .fz(иногда мнимым) затем UNIX в Z. Рекомендуется во всех сходных действиях соблюдать размер букв, поскольку если Вы звучите не в том регистре щепетильный сервер может не отдать файл. Распаковку можно сделать командной линией 7z и funpack.c для FTIS

Результат может выглядеть следующим образом :


Изображения  Неба от Обсерватории Gemini

Доступ к изображениям осуществляетсся аналогично. Файл таблицы:

sprintf(TableName, "https://archive.gemini.edu/jsonsummary/NotFail/ra=%g/notengineering/not_site_monitoring/dec=%g/OBJECT/imaging/science/canonical/present/sr=900",x,y);

Возвращаемая json "вертикальная" таблица содержит в 0 "колонке" ID файла в 25 название. Подробности в

https://archive.gemini.edu/searchform

Изображение возвращается по этому запросу

sprintf(Image,"https://archive.gemini.edu/file/%s",ID);

Если мы применим ту же рандомизированную проседуру то на 40 и 437 шаге получим

https://archive.gemini.edu/file/N20051126S0187.fits

https://archive.gemini.edu/file/N20121109S0200.fits

содержшие изображение Астрономического обьекта известного типа на первом и случайно снятую летающую тарелку на втором.





Изображения  Неба от "Обсерватории" HiPS

Это универсальный способ доступа к Астрономическим изображениям с различной степенью разрешения. Данные возвращаються в виде отдельных тайликов с фиксированными координатами. Подробности можно узнать здесь:

http://www.ivoa.net/documents/HiPS/20170519/index.html

Файл получается за один шаг

long Numb;

ang2pix_nest(pow(2.0,Zoom) , (90-y)* PI/180, x* PI/180, &Numb);

int Dir=(Numb/10000)*10000;

sprintf(Image, "%s/Norder%i/Dir%i/Npix%i.fits",URL,Zoom,Dir,Numb);

Функцию ang2pix_nest можно найти в HealPix файлах.

Обширный список URL серверов раздающих Астрономические знания можно посмотреть здесь

https://aladin.u-strasbg.fr/hips/list

Данные изображения, по крайне мере в большинстве случаев, это не RAW.

Пример x=185.74009704589844, y= 15.820810317993164, Zoom=10

http://alasky.u-strasbg.fr/SDSS/DR9/band-g/Norder10/Dir7170000/Npix7176964.fits


Изображения  Неба от NASA

Используеться протокол SIA, подробности можно найти здесь

https://heasarc.gsfc.nasa.gov/vo/summary/navo_services.html

Таблица (XML) получается следующим запросом

sprintf(TableName,"http://archive.stsci.edu/siap/search.php?POS=%g,%g&SIZE=10&FORMAT=FITS",x,y);

Имя файла находится в 4 "колонке"





Комментариев нет:

Отправить комментарий

  Знаменитый вор-джельтемен Арсен Люпан арестован ! Камера наблюдения ювелирного магазина на рю Риволи зафиксировала во время ограбления хар...