|
|
|
|
||
|
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.
|
||
|
|
|