DEFINITION MODULE CHCoord;
(*******************************************************************
Module CHCoord (Version 1.0)
Copyright (c) 1996-2006 by Dimitrios Gyalistras and ETH Zurich.
Purpose Conversion between Swiss coordinate system and
longitude-latitude coordinates.
Remarks Used is an oblique conformal cylindrical projection
(angles are preserved but areas are distorted).
Precision is for Switzerland in the order of 10-50 cm, for
other regions of the globe (different reference coordinates)
in the order of 50-100 m. Precision is always highest close
to the reference coordinates. Errors may become relatively
large at a distance of more than 300-500 km from the reference.
The module was based on the program "invchall1.p" provided
in Oct. 96 by Dr. Christoph Brandenberger, Kartographie/
Geodaetische Wissenschaften, ETH Zuerich.
Reference:
Bolliger, E. (1967). "Die Projektionen der Schweizerischen
Plan- und Kartenwerke", Verlag Druckerei Winterthur AG,
Winterthur.
Programming
o Design
Dimitrios Gyalistras 30/10/1996
o Implementation
Dimitrios Gyalistras 30/10/1996
ETH Zurich
Systems Ecology
CHN E 35.1
Universitaetstrasse 16
8092 Zurich
SWITZERLAND
URLs:
<mailto:RAMSES@env.ethz.ch>
<http://www.sysecol.ethz.ch>
<http://www.sysecol.ethz.ch/SimSoftware/RAMSES>
Last revision of definition: 31/10/1996 DG
*******************************************************************)
PROCEDURE GetRefCoordinates( VAR refLong, refLat : LONGREAL;
VAR scaleFctr, refX, refY : LONGREAL );
PROCEDURE SetRefCoordinates( refLong, refLat : LONGREAL;
scaleFctr, refX, refY : LONGREAL;
VAR errTxt : ARRAY OF CHAR ):BOOLEAN;
(*
Get/set reference coordinates of projection algorithm.
Expected units for refX/refY are [m]. To use a different unit
speficy "scaleFctr"<>1.0 (e.g. scaleFctr = 1000.0 for [km]).
For Swiss maps use:
refLong / refLat = 7.439537500 / 46.95219167
scaleF = 1.0
refX / refY = 600000.0 / 200000.0
For geodetical calculations in the Swiss territory use:
refLong / refLat = 7.439583333 / 46.95240556
scaleF = 1.0
refX / refY = 600000.0 / 200000.0
The first variant is the default.
*)
PROCEDURE LongLatToChCoord( long, lat : LONGREAL;
VAR x, y : LONGREAL );
PROCEDURE ChCoordToLongLat( x, y : LONGREAL;
VAR long, lat : LONGREAL );
END CHCoord.