Parent

Class Index [+]

Quicksearch

Dnsruby::RR::LOC

Class for DNS Location (LOC) resource records. See RFC 1876 for details.

Constants

TypeValue
POWEROFTEN

Powers of 10 from 0 to 9 (used to speed up calculations).

REFERENCE_ALT

Reference altitude in centimeters (see RFC 1876).

REFERENCE_LATLON

Reference lat/lon (see RFC 1876).

CONV_SEC

Conversions to/from thousandths of a degree.

CONV_MIN
CONV_DEG
DEFAULT_MIN

Defaults (from RFC 1876, Section 3).

DEFAULT_SEC
DEFAULT_SIZE
DEFAULT_HORIZ_PRE
DEFAULT_VERT_PRE

Attributes

version[RW]

The version number of the representation; programs should always check this. Dnsruby currently supports only version 0.

size[RW]

The diameter of a sphere enclosing the described entity, in centimeters.

horiz_pre[RW]

The horizontal precision of the data, in centimeters.

vert_pre[RW]

The vertical precision of the data, in centimeters.

latitude[RW]

The latitude of the center of the sphere described by the size method, in thousandths of a second of arc. 2**31 represents the equator; numbers above that are north latitude.

longitude[RW]

The longitude of the center of the sphere described by the size method, in thousandths of a second of arc. 2**31 represents the prime meridian; numbers above that are east longitude.

altitude[RW]

The altitude of the center of the sphere described by the size method, in centimeters, from a base of 100,000m below the WGS 84 reference spheroid used by GPS.

Public Class Methods

precsize_ntoval(prec) click to toggle source
     # File lib/Dnsruby/resource/LOC.rb, line 247
247:       def self.precsize_ntoval(prec)
248:         mantissa = ((prec >> 4) & 0x0f) % 10;
249:         exponent = (prec & 0x0f) % 10;
250:         return mantissa * POWEROFTEN[exponent];
251:       end

Public Instance Methods

dms2latlon(deg, min, sec, hem) click to toggle source
    # File lib/Dnsruby/resource/LOC.rb, line 89
89:       def dms2latlon(deg, min, sec, hem)
90:         retval=0
91:         
92:         retval = (deg * CONV_DEG) + (min * CONV_MIN) + (sec * CONV_SEC).round;
93:         retval = -retval if ((hem != nil) && ((hem == "S") || (hem == "W")));
94:         retval += REFERENCE_LATLON;
95:         return retval;
96:       end
latlon() click to toggle source

Returns the latitude and longitude as floating-point degrees. Positive numbers represent north latitude or east longitude; negative numbers represent south latitude or west longitude.

    lat, lon = rr.latlon
    system("xearth", "-pos", "fixed #{lat} #{lon}")

     # File lib/Dnsruby/resource/LOC.rb, line 105
105:       def latlon
106:         retlat, retlon = nil
107:         
108:         if (@version == 0)
109:           retlat = latlon2deg(@latitude);
110:           retlon = latlon2deg(@longitude);
111:         end
112:         
113:         return retlat, retlon
114:       end
latlon2deg(rawmsec) click to toggle source
     # File lib/Dnsruby/resource/LOC.rb, line 116
116:       def latlon2deg(rawmsec)
117:         deg=0;
118:         
119:         deg = (rawmsec - reference_latlon) / CONV_DEG;
120:         return deg;
121:       end
latlon2dms(rawmsec, hems) click to toggle source
    # File lib/Dnsruby/resource/LOC.rb, line 71
71:       def latlon2dms(rawmsec, hems)
72:         # Tried to use modulus here, but Perl dumped core if

73:         # the value was >= 2**31.

74:         
75:         abs  = (rawmsec - REFERENCE_LATLON).abs;
76:         deg  = (abs / CONV_DEG).round;
77:         abs  -= deg * CONV_DEG;
78:         min  = (abs / CONV_MIN).round; 
79:         abs -= min * CONV_MIN;
80:         sec  = (abs / CONV_SEC).round;  # $conv_sec

81:         abs -= sec * CONV_SEC;
82:         msec = abs;
83:         
84:         hem = hems[(rawmsec >= REFERENCE_LATLON ? 0 : 1), 1]
85:         
86:         return sprintf("%d %02d %02d.%03d %s", deg, min, sec, msec, hem);
87:       end
precsize_valton(val) click to toggle source
     # File lib/Dnsruby/resource/LOC.rb, line 253
253:       def precsize_valton(val)
254:         exponent = 0;
255:         while (val >= 10)
256:           val /= 10;
257:           exponent+=1
258:         end
259:         return (val.round << 4) | (exponent & 0x0f);
260:       end

Disabled; run with --debug to generate this.

[Validate]

Generated with the Darkfish Rdoc Generator 1.1.6.