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


