Other Use cases with Aladin are available here (and pages below): VESPA-CDS surface meeting

3D map of surface features

(Updated Aug 2017 with Aladin v9.6 and java 1.8, Stéphane Erard)

Use case by Sébastien Derrière, CDS (June 2015), enlarged with comments and implementation notes

Summary : Build a 3D spherical HiPS of Io, and overplot surface features from USGS catalogue.
This is an extension of Use Case #28 of Aladin Beta Test page (requires Aladin v9 and up):

• Planetary maps are available, for example from here:
or here

In this example, we work with Io:

• extract io_bjj_0dd.tif, convert to jpg

In the terminal, type:
    > convert io_bjj_0dd.tif io_bjj_0dd.jpg

• Load jpg image in Aladin as local file
Image size is 2880 x 1440
In the Frame drop menu (next to Location field), select Planet (will plot Lon-Lat coordinates, E-handed)

• Tie a coordinate frame to the image:
Click Image > Astrometrical calibration
And use parameters:
 Central pixel = 1440.0 720.0
 Pixel angular size = 7.5' (= 360/2880*60)
 Projection = CARTESIAN
 Rotation = 0°
 RA symmetry = False (default value, this is essential)

• Build a HiPS (Hierarchical Progressive Survey) from the image:
Tool > Generate a HiPS based on… > current image
It will plot after computation. Then overplot grid (Comm-G or bottom left icon), pan around, zoom in/out…
Projection is normally set to Spherical, but you can play with this also
Longitudes should be correctly set, ie increasing towards the east, but may display as xxE and xxW in the two hemispheres.

• Add catalogue features (but see alternative below):
Download USGS planetary nomenclature from
Extract nomenclature_all_feb2004.dbf
and convert to csv (e.g. using http://dbfconv.com/)

Remove EOL character <NULL> from csv file in TextMate or another handy editor
Load it in TOPCAT as csv file

• Select Io features only by creating a subset:
Click on red/violet icon (subsets), add a filter (Plus icon) with parameters (name: io, expression: SA=="io")
Then select "Row subset" io in TOPCAT main window
=> 221 lines out of 8395 in io subset
Broadcast to Aladin via SAMP (Interop > Send table to…)

• Right-click the catalogue plane in Aladin, select Column Information…
Define source for coordinates carefully by clicking the Coo column and selecting a value in the drop list:
LATITUDE (col 16) => DE
LONG360 (col 18) => RA
(we're telling Aladin to handle these columns as its usual DEC and RA, respectively)

• Create a dedicated filter in Catalog > Create new filter:
Select Advanced mode, and type / copy:
# scale is 113.3 arcsec/km
draw ellipse(113.3*${DIAM}, 113.3*${DIAM}, 0) rainbow(${AD},1979,2003)
draw ${NAME} rainbow(${AD},1979,2003)

Clicking Apply will display names and sizes of surface features, color-coded according to year of discovery
Play with the 3D model in Pan mode

• Double click on nomenclature in Aladin's stack to see the catalogue
Clicking an item will center it on the map
The feature under your pointer in the list or map in Aladin will be highlighted in the original TOPCAT table.

Alternative (from Trent Hare):

• Use more recent USGS catalogue from here:

and click the CSV link at the bottom of the page to retrieve file.
You may have to remove initial blank lines before entering TOPCAT

• Adapt the filter to this catalogue names as:
# scale is 113.3 arcsec/km
draw ellipse(113.3*${Diameter}, 113.3*${Diameter}, 0) rainbow(${Approval_Date},1979,2007)
draw ${Feature_Name} rainbow(${Approval_Date},1979,2007)

Feb 2016, Aladin 9

• Application by Mikhail Minin with Aladin Lite:


I guess we would like very much to have a Long/Lat option to plot the coordinates (in addition to J2000 and GAL).

E Long are the basic option.


Message from Pierre Fernique 10/3/2016

(copied from VESPA Slack: https://vespa-epn.slack.com/messages/jra2-tools/)

the method described by Sebastien Derriere can already be improved a little bit like this:
1) put one or several images of the planet (jpg or png) in a folder (yourFolder)
2) for each file, you will associate a xxx.hhh calibration file (same prefix name but .hhh extension).
These calibration files will contain the WCS header (*)
3) use Aladin/Hipsgen with this syntax: java -jar Aladin.jar -hipsgen in=yourFolder color=true
4) your HiPS will be generated in yourFolderHiPS directory that you can load directly in Aladin, 
and/or publish on your apache HTTP server.
With this method, your will be able to create and publish deep HiPS (at any resolution) rather that 
just a low resolution planet map.
Notice that you can already display your HiPS in various projections (SINUS, AITOFF, MOLLWEIDE, AITOFF, CAR, ...)
via the Propertie button in Aladin.
I will keep you inform of our progress in the Aladin code (inversion of longitude, ellipsoide projection...). 
Do not hesitate to signal the various problem that you see
(*) The WCS header is presently sky oriented and you will have to adapt WCS to your image collection. 
For instance, if you take this unique image http://i.stack.imgur.com/ojwD8.jpg (the earth in cartesian projection),
you may use this following calibration file ojwD8.hhh:
NAXIS1  = 2048
NAXIS2  = 1024
CRPIX1  = 1024.0
CRPIX2  = 512.0
EQUINOX = 2000.0
CRVAL1  = 0.0
CRVAL2  = 0.0
CD1_1   = -0.185546875
CD1_2   = -0.0



  • No labels


  1. Is there an XML-RPC command that can be sent to Aladin from HUB to generate HiPS?

  2. Anonymous

    Perhaps to save a couple steps for the GIS shapefile conversion you can download the Io names as CSV (comma) or Text (tab) delimited. We are putting REST calls on all our databases this year but currently you would need to click on the links at the bottom of the page. http://planetarynames.wr.usgs.gov/SearchResults?target=IO 


  3. Pierre's trick no longer work in Aladin v9 - gives an error "No available image found ! => Aborted"

  4. Pierre's trick does not seem to on work my side, either in v9 or v8beta (Mac, java 1.8.0_77)

    v9 says :

    java.lang.Exception: No available image found ! => Aborted

    ***  probably not a FITS file /Users/serard/venus/venus_magellan.jpg

     v8beta never stop computing (perhaps the image coverage is too small ?)

     +  parameter 'order' is required either way