Australian Antarctic Division Conditions of Use | Feedback & requests | About us | Site map
Forgot Your Password?
Username:  
Password:
Australian Antarctic Data Centre

Australian Antarctic - C Squares

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