Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Postgres/contrib/earthdistance/   (Postgres Database Version 18.4©)  Datei vom 11.4.2026 mit Größe 2 kB image not shown  

Quelle  earthdistance--1.1--1.2.sql

  Sprache: SQL
 

/* contrib/earthdistance/earthdistance--1.1--1.2.sql */

-- complain if script is sourced in psql, rather than via ALTER EXTENSION
\echo Use "ALTER EXTENSION earthdistance UPDATE TO '1.2'" to load this file. \quit

CREATE OR REPLACE FUNCTION earth() RETURNS float8
LANGUAGE SQL IMMUTABLE PARALLEL SAFE
RETURN '6378168'::float8;

CREATE OR REPLACE FUNCTION sec_to_gc(float8)
RETURNS float8
LANGUAGE SQL
IMMUTABLE STRICT
PARALLEL SAFE
RETURN CASE
  WHEN $1 < '0'::float8 THEN '0'::float8
  WHEN $1 / ('2'::float8 * earth()) > '1'::float8 THEN pi() * earth()
  ELSE '2'::float8 * earth() * asin($1 / ('2'::float8 * earth()))
END;

CREATE OR REPLACE FUNCTION gc_to_sec(float8)
RETURNS float8
LANGUAGE SQL
IMMUTABLE STRICT
PARALLEL SAFE
RETURN CASE
  WHEN $1 < '0'::float8 THEN '0'::float8
  WHEN $1 / earth() > pi() THEN '2'::float8 * earth()
  ELSE '2'::float8 * earth() * sin($1 / ('2'::float8 * earth()))
END;

CREATE OR REPLACE FUNCTION ll_to_earth(float8, float8)
RETURNS earth
LANGUAGE SQL
IMMUTABLE STRICT
PARALLEL SAFE
RETURN @extschema:cube@.cube(@extschema:cube@.cube(@extschema:cube@.cube(
    earth() * cos(radians($1)) * cos(radians($2))),
    earth() * cos(radians($1)) * sin(radians($2))),
    earth() * sin(radians($1)))::earth;

CREATE OR REPLACE FUNCTION latitude(earth)
RETURNS float8
LANGUAGE SQL
IMMUTABLE STRICT
PARALLEL SAFE
RETURN CASE
  WHEN @extschema:cube@.cube_ll_coord($13) / earth() < '-1'::float8 THEN '-90'::float8
  WHEN @extschema:cube@.cube_ll_coord($13) / earth() > '1'::float8 THEN '90'::float8
  ELSE degrees(asin(@extschema:cube@.cube_ll_coord($13) / earth()))
END;

CREATE OR REPLACE FUNCTION longitude(earth)
RETURNS float8
LANGUAGE SQL
IMMUTABLE STRICT
PARALLEL SAFE
RETURN degrees(atan2(@extschema:cube@.cube_ll_coord($12),
                     @extschema:cube@.cube_ll_coord($11)));

CREATE OR REPLACE FUNCTION earth_distance(earth, earth)
RETURNS float8
LANGUAGE SQL
IMMUTABLE STRICT
PARALLEL SAFE
RETURN sec_to_gc(@extschema:cube@.cube_distance($1, $2));

CREATE OR REPLACE FUNCTION earth_box(earth, float8)
RETURNS @extschema:cube@.cube
LANGUAGE SQL
IMMUTABLE STRICT
PARALLEL SAFE
RETURN @extschema:cube@.cube_enlarge($1, gc_to_sec($2), 3);

Messung V0.5 in Prozent
C=96 H=100 G=97

¤ Dauer der Verarbeitung: 0.13 Sekunden  (vorverarbeitet am  2026-08-10) ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

PVS Prover

Isabelle Prover

NIST Cobol Testsuite

Cephes Mathematical Library

Vienna Development Method

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.