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 module: get_csquare_from_mbr
     Written by: Dave Watts, CSIRO Australia (Tony.Rees@csiro.au)
     Date Created: November, 2002
     Description: gets c-squares codes for a supplied MBR
     Inputs: north: latitude in decimal degrees (number)
             south: latitude in decimal degrees (number)
             east: longitude in decimal degrees (number)
             west: longitude in decimal degrees (number)
             resolution: square size in decimal degrees (number)
     Output: csquares code as string
     Remarks: resolution currently expected as one of the following: 10, 5, 1, 0.5, 0.1 [degrees]
             0 deg latitude/longitude is treated as positive
             90 deg latitude is treated as 89.99999, -90 deg latitude is treated as -89.99999
             180 deg longitude is treated as 179.99999, -180 deg longitude is treated as -179.99999

--->

<cfparam name="attributes.resolution" default="1" type="numeric">

<cfif IsDefined("attributes.north")>  <cfset north = attributes.north> </cfif>
<cfif IsDefined("attributes.south")>  <cfset south = attributes.south> </cfif>
<cfif IsDefined("attributes.west")>   <cfset west  = attributes.west>  </cfif>
<cfif IsDefined("attributes.east")>   <cfset east  = attributes.east>  </cfif>

<cfif IsDefined("url.north")>  <cfset north = url.north> </cfif>
<cfif IsDefined("url.south")>  <cfset south = url.south> </cfif>
<cfif IsDefined("url.west")>   <cfset west  = url.west>  </cfif>
<cfif IsDefined("url.east")>   <cfset east  = url.east>  </cfif>

<cfset debug='N'>
<cfif IsDefined("attributes.debug")>
     <cfif attributes.debug is 'Y'> <cfset debug = 'Y'> </cfif>
</cfif>
<cfif IsDefined("url.debug")>        <cfset debug = 'Y'> </cfif>

<cfset csquares = ''>

<!--- same point  then --->
<cfif abs(north - south) lt attributes.resolution/2.0 and abs(east - west) lt attributes.resolution/2.0>
      <cfmodule template="get_csquare.cfm"
        latitude="#north#"
        longitude="#east#"
        resolution="#attributes.resolution#">
   <cfset caller.csquares = csquare>
   <cfexit>
</cfif>



<cfset start_lat = round(south) - 2.5 * attributes.resolution>
<cfset end_lat   = round(north) + 2.5 * attributes.resolution>

<cfset start_lon = round(west) - 2.5 * attributes.resolution>
<cfset end_lon   = round(east) + 2.5 * attributes.resolution>

<cfif debug is 'Y'>
   <cfoutput>
   <p>Lat #start_lat# to #end_lat#</p>
   <p>Lon #start_lon# to #end_lon#</p>
   </cfoutput>
</cfif>
<cfset step = 0.3333 * attributes.resolution>

<cfloop index="latitude" from="#start_lat#" to="#end_lat#" step="#step#">
   <cfloop index="longitude" from="#start_lon#" to="#end_lon#" step="#step#">

      <cfif latitude ge south and latitude le north and longitude ge west and longitude le east>
      <cfmodule template="get_csquare.cfm"
        latitude="#latitude#"
        longitude="#longitude#"
        resolution="#attributes.resolution#">

      <cfif debug is 'Y'>
         <cfoutput><p>Lat #latitude# - Lon #longitude#</p></cfoutput>
      </cfif>

      <cfif csquares is ''>
        <cfset csquares = csquare>
      <cfelse>
        <cfif not ListFindNoCase(csquares,csquare,'|')>
           <cfset csquares = ListAppend(csquares, csquare,'|')>
        </cfif>
      </cfif>
      </cfif>
   </cfloop>
</cfloop>

<cfif debug is 'Y'> <cfoutput><p>#csquares#</p></cfoutput> </cfif>

<cfset caller.csquares = csquares>

Mapping Home Page | Antarctic Names | Antarctic Map Catalogue