Class AntennaKey


  • public class AntennaKey
    extends Object
    Key for antenna.
    Since:
    13.0
    Author:
    Luc Maisonobe
    • Constructor Detail

      • AntennaKey

        public AntennaKey​(String name,
                          String radomeCode,
                          String serialNumber)
        Simple constructor.

        The Sinex file specification uses a single 20 characters field named "Antenna type" and described as "Antenna name and model" (Antex specification is similar). In practice this field contains a variable length name and the last four characters are a radome code, which may be set to "NONE" for a catch-all entry. Here, we separate this field into its two components, so we can provide fuzzy matching by tweaking the radome code if needed.

        Parameters:
        name - antenna name
        radomeCode - radome code
        serialNumber - serial number
    • Method Detail

      • matchingCandidates

        public List<AntennaKey> matchingCandidates()
        Get candidates for fuzzy matching of this antenna key.

        Some Sinex files use specific keys in the SITE/ANTENNA block and catch-all keys in the SITE/GPS_PHASE_CENTER, SITE/GAL_PHASE_CENTER blocks. As an example, file JAX0MGXFIN_20202440000_01D_000_SOL.SNX contains the following entries related to antenna type ASH700936D_M:

         SITE/ANTENNA
         AMU2  A ---- P 00:000:00000 00:000:00000 ASH700936D_M    SCIS 13569
         ARTU  A ---- P 00:000:00000 00:000:00000 ASH700936D_M    DOME CR130
         DRAG  A ---- P 00:000:00000 00:000:00000 ASH700936D_M    SNOW CR143
         PALM  A ---- P 00:000:00000 00:000:00000 ASH700936D_M    SCIS CR141
         SITE/GPS_PHASE_CENTER
         ASH700936D_M    NONE -----  .0910  .0004 -.0003  .1204 -.0001 -.0001 igs14_%Y%m
         ASH700936D_M    SCIS -----  .0879  .0005 -.0001  .1192  .0001 -.0001 igs14_%Y%m
         ASH700936D_M    SNOW -----  .0909  .0003 -.0002  .1192  .0001  .0001 igs14_%Y%m
         

        Apart from the obvious formatting error of the last field in SITE/GPS_PHASE_CENTER, it appears there are no phase center data for the antenna used at ARTU site, because no radome code match "DOME". We consider here that a "close enough" entry would be to use "NONE" as the radome code, and "-----" as the serial number.

        Another example is file ESA0OPSFIN_20241850000_01D_01D_SOL.SNX which contains the following entries related to antenna type ASH701945G_M:

         SITE/ANTENNA
         FAIR  A    1 P 24:184:86382 24:185:86382 ASH701945G_M    JPLA CR520    0
         KOKB  A    1 P 24:184:86382 24:185:86382 ASH701945G_M    NONE CR620    0
         SUTH  A    1 P 24:184:86382 24:185:86382 ASH701945G_M    NONE CR620    0
         SITE/GPS_PHASE_CENTER
         ASH701945G_M    NONE CR520 0.0895 0.0001 -.0001 0.1162 -.0007 -.0001 IGS20_2317
         ASH701945G_M    NONE CR620 0.0895 0.0001 -.0001 0.1162 -.0007 -.0001 IGS20_2317
         ASH701945G_M    NONE CR620 0.0895 0.0001 -.0001 0.1162 -.0007 -.0001 IGS20_2317
         SITE/GAL_PHASE_CENTER
         ASH701945G_M    NONE CR520 0.0895 0.0001 -.0001 0.1162 -.0007 -.0001 IGS20_2317
         ASH701945G_M    NONE CR520 0.1162 -.0007 -.0001 0.1162 -.0007 -.0001 IGS20_2317
         ASH701945G_M    NONE CR520 0.1162 -.0007 -.0001                      IGS20_2317
         ASH701945G_M    NONE CR620 0.0895 0.0001 -.0001 0.1162 -.0007 -.0001 IGS20_2317
         ASH701945G_M    NONE CR620 0.1162 -.0007 -.0001 0.1162 -.0007 -.0001 IGS20_2317
         ASH701945G_M    NONE CR620 0.1162 -.0007 -.0001                      IGS20_2317
         ASH701945G_M    NONE CR620 0.0895 0.0001 -.0001 0.1162 -.0007 -.0001 IGS20_2317
         ASH701945G_M    NONE CR620 0.1162 -.0007 -.0001 0.1162 -.0007 -.0001 IGS20_2317
         ASH701945G_M    NONE CR620 0.1162 -.0007 -.0001                      IGS20_2317
         

        Here, the phase centers for serial number CR620 appear twice (fortunately with the same values). There are no phase center data for the antenna used at FAIR site, because no radome code match "JPLA". We consider here that a "close enough" entry would be to use "NONE", and keep the provided serial number.

        The logic we adopted is to use the following candidates:

        Antenna key matching candidates
        ordernameradome codeserial number
        first candidate getName()getRadomeCode() getSerialNumber()
        second candidate getName()getRadomeCode() "-----"
        third candidate getName()"NONE" getSerialNumber()
        fourth candidate getName()"NONE" "-----"
        Returns:
        candidates for matching instance key, sorted from stricter to looser match
      • getName

        public String getName()
        Get the antenna name.
        Returns:
        antenna name
      • getRadomeCode

        public String getRadomeCode()
        Get the radome code.
        Returns:
        radome code
      • getSerialNumber

        public String getSerialNumber()
        Get the serial number.
        Returns:
        serial number
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class Object