forsyth20121205-174063a80cc13 years agoHistory
58 lines · 1.8 KB · Objective-C
RawDownload
Geodesy: module{	PATH: con "/dis/math/geodesy.dis"; 	# easting, northing in metres	Eano: adt{		e: real;		n: real;	}; 	# latitude, longitude in radians	Lalo: adt{		la: real;		lo: real;	}; 	# datums	# WGS84 and ITRS2000 effectively the same	OSGB36, Ireland65, ED50, WGS84, ITRS2000, ETRS89: con iota; 	# transverse Mercator projections	Natgrid, IrishNatgrid, UTMEur, UTM: con iota; 	# call first	# d specifies the datum (default WGS84)	# t specifies the transverse Mercator projection (default Natgrid)	# z specifies the UTM zone if relevant (default 30)	# calls format below	init: fn(d: int, t: int, z: int); 	# alters the current datum, transverse Mercator projection and UTM zone	# use a negative value to leave unaltered	format: fn(d: int, t: int, z: int); 	# OS string to (easting, northing) and back	# formats XYen, XYeenn, XYeeennn, XYeeeennnn, XYeeeeennnnn or	# formats eenn, eeennn, eeeennnn, eeeeennnnn, eeeeeennnnnn	os2en: fn(s: string): (int, Eano);	# returns (0, ...) if bad string format	en2os: fn(en: Eano): string; 	# latitude/longitude string to (latitude, longitude) and back	# format latitude longitude	# formats deg[N|S], deg:min[N|S], deg:min:sec[N|S] for latitude	# formats deg[E|W], deg:min[E|W], deg:min:sec[E|W] for longitude	str2lalo: fn(s: string): (int, Lalo);	# returns (0, ...) if bad string format	lalo2str: fn(lalo: Lalo): string; 	# general string to (easting, northing)	# OS grid or latitude/longitude format as above	str2en: fn(s: string): (int, Eano);	# returns (0, ...) if bad string format 	# (easting, northing) to (latitude, longitude) and back	en2lalo: fn(en: Eano): Lalo;	lalo2en: fn(lalo: Lalo): Eano; 	# approximate transformations between any of OSGB36, WGS84, ITRS2000, ETRS89	datum2datum: fn(lalo: Lalo, f: int, t: int): Lalo;};