<!---
CF function: get_csquare_bounds
Written by: DJW
Date Created: March, 2002
Description: gets bounding east/west and north/south for a c-squares code
Inputs: single csquare string
Output: bounding east/west and north/south
if any errors, then caller.east etc is a null string
Example call
<cf_get_square_bounds csquare="3414">
--->
<cfparam name="attributes.csquare" default="">
<cfset caller.north = ''>
<cfset caller.south = ''>
<cfset caller.east = ''>
<cfset caller.west = ''>
<!--- get spatial resolution --->
<cfset res = 0>
<cfset lcs = len(attributes.csquare)>
<cfif lcs is 4> <cfset res = 10.0>
<cfelseif lcs is 6> <cfset res = 5.0>
<cfelseif lcs is 8> <cfset res = 1.0>
<cfelseif lcs is 10> <cfset res = 0.5>
<cfelseif lcs is 12> <cfset res = 0.1>
</cfif>
<cfif res is 0>
<!--- invalid csquare length entered --->
<cfexit>
</cfif>
<!--- parse cstring dependant on its length --->
<cfif lcs is 4 or lcs is 6 or lcs is 8 or lcs is 10 or lcs is 12>
<cfset c1 = mid(attributes.csquare,1,1)>
<cfset c2 = mid(attributes.csquare,2,1)>
<cfset c34 = mid(attributes.csquare,3,2)>
</cfif>
<cfif lcs is 6 or lcs is 8 or lcs is 10 or lcs is 12>
<cfset c5 = mid(attributes.csquare,6,1)>
</cfif>
<cfif lcs is 8 or lcs is 10 or lcs is 12>
<cfset c6 = mid(attributes.csquare,7,1)>
<cfset c7 = mid(attributes.csquare,8,1)>
</cfif>
<cfif lcs is 10 or lcs is 12>
<cfset c8 = mid(attributes.csquare,10,1)>
</cfif>
<cfif lcs is 12>
<cfset c9 = mid(attributes.csquare,11,1)>
<cfset c10 = mid(attributes.csquare,12,1)>
</cfif>
<!--- C1 = global quadrant --->
<cfset lat_sign = 0> <cfset lon_sign = 0>
<cfif c1 is '1'> <cfset lat_sign = 1> <cfset lon_sign = 1> </cfif>
<cfif c1 is '3'> <cfset lat_sign = -1> <cfset lon_sign = 1> </cfif>
<cfif c1 is '5'> <cfset lat_sign = -1> <cfset lon_sign = -1> </cfif>
<cfif c1 is '7'> <cfset lat_sign = 1> <cfset lon_sign = -1> </cfif>
<!--- invalid C1 then exit --->
<cfif lat_sign is 0 or lon_sign is 0>
<cfexit>
</cfif>
<!--- is C2 and C34 numeric --->
<cfif IsNumeric(c2) is false or IsNumeric(c2) is false>
<cfexit>
</cfif>
<cfset lat = c2 * 10.0>
<cfset lon = c34 * 10.0>
<cfif lcs eq 6>
<cfif c5 is 3 or c5 is 4> <cfset lat = lat + 5> </cfif>
<cfif c5 is 2 or c5 is 4> <cfset lon = lon + 5> </cfif>
</cfif>
<cfif lcs ge 8>
<cfset lat = lat + c6>
<cfset lon = lon + c7>
</cfif>
<cfif lcs eq 10>
<cfif c8 is 3 or c8 is 4> <cfset lat = lat + 0.5> </cfif>
<cfif c8 is 2 or c8 is 4> <cfset lon = lon + 0.5> </cfif>
</cfif>
<cfif lcs ge 12>
<cfset lat = lat + c9 * 0.1>
<cfset lon = lon + c10 * 0.1>
</cfif>
<cfset caller.north = lat_sign * lat>
<cfset caller.south = lat_sign * (lat + res)>
<cfif caller.north lt caller.south>
<cfset temp = caller.north>
<cfset caller.north = caller.south>
<cfset caller.south = temp>
</cfif>
<cfset caller.west = lon_sign * lon>
<cfset caller.east = lon_sign * (lon + res)>
<cfif caller.east lt caller.west>
<cfset temp = caller.west>
<cfset caller.west = caller.east>
<cfset caller.east = temp>
</cfif>
Mapping Home Page | Antarctic Names | Antarctic Map Catalogue


