'''(INTERNAL) Compute r(t). ''' return self._aF * pow(t, self._n) def _tdef(self, lat): '''(INTERNAL) Compute t(lat). ''' return max(0, tanPI_2_2(-lat) / self._pdef(lat)) def _xdef(self, t_x): '''(INTERNAL) Compute x(t_x). ''' return PI_2 - 2 * atan(t_x) # XXX + self._phi0 Conics = _NamedEnum('Conics', Conic) #: Registered conics. Conics._assert( # <https://SpatialReference.org/ref/sr-org/...> # AsLb = Conic(_LLEB(-14.2666667, 170, datum=Datums.NAD27), 0, 0, E0=500000, N0=0, name='AsLb', auth='EPSG:2155'), # American Samoa ... SP=1 ! Be08Lb=Conic(_LLEB(50.7978150, 4.359215833, datum=Datums.GRS80), 49.833333, 51.166667, E0=649328.0, N0=665262.0, name='Be08Lb', auth='EPSG:9802'), # Belgium Be72Lb=Conic(_LLEB(90, 4.3674867, datum=Datums.NAD83), 49.8333339, 51.1666672, E0=150000.013, N0=5400088.438, name='Be72Lb',
return self._aF * pow(t, self._n) def _tdef(self, a): '''(INTERNAL) Compute t(lat). ''' return max(_0_0, tanPI_2_2(-a) / self._pdef(a)) def _xdef(self, t_x): '''(INTERNAL) Compute x(t_x). ''' return PI_2 - 2 * atan(t_x) # XXX + self._phi0 Conic._name = Conic.__name__ Conics = _NamedEnum(Conic) # registered Conics Conics._assert( # <https://SpatialReference.org/ref/sr-org/...> # AsLb = Conic(_LLEB(-14.2666667, 170, datum=Datums.NAD27), _0_0, _0_0, # E0=_F(500000), N0=_0_0, name='AsLb', auth='EPSG:2155'), # American Samoa ... SP=1 ! Be08Lb=Conic(_LLEB(50.7978150, 4.359215833, datum=Datums.GRS80), _F(49.833333), _F(51.166667), E0=_F(649328.0), N0=_F(665262.0), name='Be08Lb', auth='EPSG:9802'), # Belgium Be72Lb=Conic(_LLEB(90, 4.3674867, datum=Datums.NAD83), _F(49.8333339), _F(51.1666672), E0=_F(150000.013), N0=_F(5400088.438),
if inverse: _xyz = -1, -x, -y, -z _s1 = self.s1 - 2 # == -(1 - s * 1e-6)) == -(1 - (s1 - 1)) else: _xyz = 1, x, y, z _s1 = self.s1 # x', y', z' = (.tx + x * .s1 - y * .rz + z * .ry, # .ty + x * .rz + y * .s1 - z * .rx, # .tz - x * .ry + y * .rx + z * .s1) r = Vector3Tuple(fdot(_xyz, self.tx, _s1, -self.rz, self.ry), fdot(_xyz, self.ty, self.rz, _s1, -self.rx), fdot(_xyz, self.tz, -self.ry, self.rx, _s1)) return self._xnamed(r) Transforms = _NamedEnum('Transforms', Transform) #: Registered transforms. # <https://WikiPedia.org/wiki/Helmert_transformation> from WGS84 Transforms._assert( BD72=Transform( 'BD72', tx=106.868628, ty=-52.297783, tz=103.723893, # <https://www.NGI.BE/FR/FR4-4.shtm> ETRS89 == WG84 # <https://GeoRepository.com/transformation_15929/BD72-to-WGS-84-3.html> sx=-0.33657, sy=-0.456955, sz=-1.84218, s=1.2727), Bessel1841=Transform('Bessel1841', tx=-582.0,
''' return self._epoch def toStr(self): # PYCHOK expected '''Return this reference frame as a text string. @return: This L{RefFrame}'s attributes (C{str}). ''' e = self.ellipsoid t = ('name=%r' % (self.name,), 'epoch=%s' % (fStrzs('%.3f' % (self.epoch,)),), 'ellipsoid=%s(name=%r)' % (classname(e), e.name)) return ', '.join(t) RefFrames = _NamedEnum('RefFrames', RefFrame) #: Registered reference frames. # <https://GitHub.com/chrisveness/geodesy/blob/master/latlon-ellipsoidal-referenceframe.js> RefFrames._assert( # ITRF2014AU = RefFrame(_F(2020.0), Ellipsoids.GRS80, _S('ITRF2014AU')), ITRF2014 = RefFrame(_F(2010.0), Ellipsoids.GRS80, _S('ITRF2014')), ITRF2008 = RefFrame(_F(2005.0), Ellipsoids.GRS80, _S('ITRF2008')), ITRF2005 = RefFrame(_F(2000.0), Ellipsoids.GRS80, _S('ITRF2005')), ITRF2000 = RefFrame(_F(1997.0), Ellipsoids.GRS80, _S('ITRF2000')), ITRF93 = RefFrame(_F(1988.0), Ellipsoids.GRS80, _S('ITRF93')), ITRF91 = RefFrame(_F(1988.0), Ellipsoids.GRS80, _S('ITRF91')), WGS84g1762 = RefFrame(_F(2005.0), Ellipsoids.WGS84, _S('WGS84g1762')), WGS84g1674 = RefFrame(_F(2005.0), Ellipsoids.WGS84, _S('WGS84g1674')), WGS84g1150 = RefFrame(_F(2001.0), Ellipsoids.WGS84, _S('WGS84g1150')), ETRF2000 = RefFrame(_F(2005.0), Ellipsoids.GRS80, _S('ETRF2000')), # ETRF2000(R08) NAD83 = RefFrame(_F(1997.0), Ellipsoids.GRS80, _S('NAD83')), # CORS96 GDA94 = RefFrame(_F(1994.0), Ellipsoids.GRS80, _S('GDA94')))
return self._epoch def toStr(self, **unused): # PYCHOK expected '''Return this reference frame as a text string. @return: This L{RefFrame}'s attributes (C{str}). ''' e = self.ellipsoid t = (Fmt.EQUAL(_name_, repr(self.name)), Fmt.EQUAL(_epoch_, self.epoch), Fmt.PAREN(Fmt.EQUAL(_ellipsoid_, classname(e)), Fmt.EQUAL(_name_, repr(e.name)))) return _COMMASPACE_.join(t) RefFrames = _NamedEnum(RefFrame) # registered reference frames # <https://GitHub.com/chrisveness/geodesy/blob/master/latlon-ellipsoidal-referenceframe.js> RefFrames._assert( # ITRF2014AU = RefFrame(_F(2020), Ellipsoids.GRS80, _S.ITRF2014AU), ITRF2014=RefFrame(_F(2010), Ellipsoids.GRS80, _S.ITRF2014), ITRF2008=RefFrame(_F(2005), Ellipsoids.GRS80, _S.ITRF2008), ITRF2005=RefFrame(_F(2000), Ellipsoids.GRS80, _S.ITRF2005), ITRF2000=RefFrame(_F(1997), Ellipsoids.GRS80, _S.ITRF2000), ITRF93=RefFrame(_F(1988), Ellipsoids.GRS80, _S.ITRF93), ITRF91=RefFrame(_F(1988), Ellipsoids.GRS80, _S.ITRF91), WGS84g1762=RefFrame(_F(2005), Ellipsoids.WGS84, _S.WGS84g1762), WGS84g1674=RefFrame(_F(2005), Ellipsoids.WGS84, _S.WGS84g1674), WGS84g1150=RefFrame(_F(2001), Ellipsoids.WGS84, _S.WGS84g1150), ETRF2000=RefFrame(_F(2005), Ellipsoids.GRS80, _S.ETRF2000), # ETRF2000(R08) NAD83=RefFrame(_F(1997), Ellipsoids.GRS80, _S.NAD83), # CORS96