🌠 Constellation Maps

Proposal

High-level goal

Develop a Shiny app that generates constellation maps that utilizes interactive elements, incorporating computational and visualization techniques.

Goal & Motivation

The primary objective of this project is to develop a Shiny app that not only generates interactive constellation maps but also prioritizes accessibility and personalization of these maps. By offering users the ability to input specific geographic locations, the app will provide personalized, contextually relevant constellation maps for each user. Individuals will be able to explore the night sky from different geographical locations by inputting latitude and longitudinal points to create visually provoking constellation maps. We hope to make stargazing more engaging and educational by personalizing the experience through various elements: color usage, map location, time zone, latitude/longitude location. Additionally, the app will be designed with a user-friendly interface to ensure accessibility with an aim to make it inclusive for people of all backgrounds and levels of astronomical knowledge. This will be achieved by using colorblind accessible palettes (avoiding bright and low-contrast colors) and providing annotations to provide readability and context for a wide range of users, including astronomy beginners.

Analysis Plan

  • Develop a Shiny app for personalized constellation maps with user input.
  • Enhance user engagement in stargazing from various locations time zones and even user bases.
  • Prioritize accessibility through a user-friendly interface and colorblind-friendly design.
  • Provide contextual annotations for users with different levels of astronomical knowledge.

Dataset

The datasets are available in GeoJSON (*.geojson) and GeoPackage (*.gpkg) formats, representing celestial objects’ positions as of the J2000 epoch. You can check out the dataset in here. They are roughly categorized into five sections: Asterisms, Constellations, DSOs (Deep-Sky Objects), Stars, and the Milky Way. Each of these astronomical object categories is further subdivided into s

We will be using three of the available data: the milkyway, the constellation lines, and the stars.

Milky Way

Column Name Data Type Description
ID String Milky Way outlines in 5 brightness steps (ol1-ol5).
Geometry Line Object geometry lines for milky way
mw  |> formattable()
id geometry
ol1 MULTIPOLYGON (((178.558 -74…
ol2 MULTIPOLYGON (((-176.662 -6…
ol3 MULTIPOLYGON (((-174.067 -6…
ol4 MULTIPOLYGON (((-158.721 -6…
ol5 MULTIPOLYGON (((161.333 -59…

Stars

Column Name Data Type Description
ID Integer Short designator
Mag Double Apparent magnitude, 999 if n.a.
BV Float b-v color index.
BR Float Relative brightness to magnitude 0, computed as \(100^{-1 * mag / 5}\)
Name String Proper star name
Geometry Point Object around 40k stars point objects
id mag bv br name geometry
677 2.07 -0.038 0.1486 Alpheratz POINT (2.0969 29.0904)
746 2.28 0.380 0.1225 Caph POINT (2.2945 59.1498)
1067 2.83 -0.190 0.0738 Algenib POINT (3.309 15.1836)
1415 6.11 -0.151 0.0036 Pearce’s Star POINT (4.4294 51.4331)
1562 3.56 1.214 0.0377 Deneb Kaitos Shemali POINT (4.857 -8.8239)
2081 2.40 1.083 0.1096 Ankaa POINT (6.571 -42.306)
2920 3.69 -0.196 0.0334 Fulu POINT (9.2429 53.8969)
3179 2.24 1.170 0.1271 Shedar POINT (10.1268 56.5373)
3419 2.04 1.019 0.1528 Diphda POINT (10.8974 -17.9866)
3455 4.77 0.998 0.0124 Alnitham POINT (11.0475 -10.6096)

Constellation lines

Column Name Data Type Description
Geometry Line Object 89 constellation line objects
ID String 3-letter designator
Rank Integer 1-3 for differential name display by size/brightness
Name String full IAU name
id rank name geometry
And 1 Andromeda MULTILINESTRING ((14.3017 2…
Ant 3 Antlia MULTILINESTRING ((142.3113 …
Aps 3 Apus MULTILINESTRING ((-138.0345…
Aqr 2 Aquarius MULTILINESTRING ((-48.081 -…
Aql 1 Aquila MULTILINESTRING ((-63.4351 …
Ara 3 Ara MULTILINESTRING ((-98.6514 …
Ari 1 Aries MULTILINESTRING ((42.496 27…
Aur 1 Auriga MULTILINESTRING ((89.8822 4…
Boo 1 Boötes MULTILINESTRING ((-153.1844…
Cae 3 Caelum MULTILINESTRING ((67.7087 -…

These datasets originally feature interactive and adaptable constellation maps, initially curated by Olaf Frohn. However, some issues related to date lines and certain packages were identified in these datasets, and they were subsequently resolved by Dieghernan. You can explore the repository here.

Why did we choose this dataset?

As we explored various topics for a captivating visualization project using a Shiny app, we stumbled upon a fascinating reference that showcased creating city maps, which you can find here. Inspired by this, our interest evolved towards the idea of crafting a celestial map that would represent the skies above our location.
These datasets offer celestial visualizations based on longitude, latitude, and time parameters, granting us the ability to fashion dynamic and interactive sky maps.

Weekly “plan of attack”

Week Assigned Team members Weekly Tasks
Week 1-2: Understanding the Basics Megan Hokama, Tejashwini Kasa
  • Understand the basics of spatial manipulation with libraries like sf and s2.

  • Get familiarized with visualization using ggfx, and ggshadow.

  • Test out apps with Shiny and its usage for rendering real-time maps.

Week 3: Creating the basis for celestial maps Kiwoon Hong, Visalakshi Iyer
  • Create base functions for themes, loading datasets, parsing, and cleaning.

  • Since the maps need to be custom, we will also make functions that will work on variability. Some of the variables for the map will be background color, location input, glow intensity, names of the stars on the celestial map, and custom text on the map’s footer.

Week 4: Creating the Star Map Sai Madhuri Kandula, Tejashwini Kasa
  • Create basic maps using sf object and sperical geoms using s2.

  • Add scatterplot of the constellations on top of the prepared spherical geom.

  • Experiment with different locations, and test custom inputs in the plotting functions.

Week 5-6: Shiny App Development Megan Hokama, Visalakshi Iyer
  • Integrate star map code into a shiny app .

  • Work on the GUI elements to provide dynamic rendering.

  • Create workflow that provides size, theme, and customization of maps.

  • Create download functionality for the maps.

  • Test different parameters to identify edge cases.

Week 7: Testing and reviewing Kiwoon Hong, Sai Madhuri Kandula
  • Refine the app based on feedback.

  • Deploy the app.

  • Prepare presentation for the final showcase.

Repo Organization

  • .github: This directory contain files related to GitHub, such as workflows, issue templates, or other configurations.

  • _extra: Contains code, notes and other files used during experimentation. Contents of this folder is not a part of the final output.

  • _freeze: The folder created to store files generated during project render.

  • data/: This folder contains data files or datasets that are used in the project.

    • README.md : A readme file that describes the datasets in more detail.
  • images: This folder contains image files that are used in the project, such as illustrations, diagrams, or other visual assets.

  • analysis/: This folder contains the analysis scripts used to generate output for the project outline.

    • README.md: describes the steps to run and generate the results using scripts

    • functions_celestial_objects.qmd: Helper functions to generate celestial map for any given location and given time

    • imgs/: A folder containing the sample output of the plot generated from the code

  • starmapapp/: This folder contains the code for GUI built using Shiny App

    • app.R: This file contains the code for Shiny App UI and Server

    • data_transformation.R: This file contains the code to transform the dataset into relevant simple feature objects

    • helper_functions.R: This file contains the code to convert raw user input into celestial translation. For example converting date-time into MST lat-lon.

    • plot_graphs.R: This file contains the code for plotting functions

  • .gitignore: This file specifies which files or directories should be ignored by version control.

  • README.md: This file usually contains documentation or information about the project. It’s often the first thing someone reads when they visit the project repository.

  • _quarto.yml: This is a configuration file.

  • about.qmd : This quarto document contains the information about team members.

  • index.qmd : This quarto document contains the approach and analysis and results of the project.

  • presentation.qmd : It contains the slides for the presentation.

  • proposal.qmd : This quarto documents has the proposal of the project.

  • project-final.Rproj : This is an RStudio project file, which helps organize R-related files and settings for the project.