Skip to content

What exactly does helioviewer.org assume about WCS? #494

@SalimHachemaoui

Description

@SalimHachemaoui

We are investigating a SPICE JP2 rendering issue in Helioviewer Web.

The tested SPICE JP2 is a valid 2D raster:

NAXIS  = 2
NAXIS1 = 192
NAXIS2 = 612

However, its WCS metadata is not a simple square-pixel, axis-aligned case:

CUNIT1 = deg
CUNIT2 = deg

CDELT1 = 0.0011111111111111 deg  ~= 4.0 arcsec/pixel
CDELT2 = 0.000305 deg            ~= 1.098 arcsec/pixel

It also contains a non-trivial PC matrix:

PC1_1 = -0.61227620057
PC1_2 = -0.217031764022
PC2_1 = 2.88030582543
PC2_2 = -0.61227620057

This raises a general question: what WCS assumptions does helioviewer.org make in 2D and 3D rendering?

Observed behavior

In Helioviewer Web:

  • SPICE can appear mis-scaled or vertically stretched in 2D.
  • In 3D, SPICE does not appear correctly overlaid on EUI.
  • The behavior differs from JHelioviewer, where SPICE appears to be rendered more consistently.

Main questions

  1. Does Helioviewer Web assume CDELT1 == CDELT2?
  2. Does Helioviewer Web assume that the image X axis, associated with CDELT1, is parallel to solar_x?
  3. Is CROTA2 used in 2D or 3D rendering?
  4. Is the PC matrix used in 2D or 3D rendering?
  5. Are CTYPE1/CTYPE2 projections, such as HPLN-TAN/HPLT-TAN, supported in Web rendering?
  6. Do 2D and 3D use the same WCS assumptions?
  7. Is general WCS support expected in helioviewer.org, or only simplified image positioning?

2D / 3D context

From code inspection, the 2D Web path appears to use the tiled rendering pipeline:

getClosestImage -> getTile -> PNG tiles positioned in CSS

The 3D Web path appears to use a separate pipeline:

resources/js/3d -> @helioviewer/sun -> getClosestImage/getJP2Header/downloadImage -> Three.js texture
Image

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions