Raster Analysis in the BrowserBrendan Collins, Blue Raster LLC
Rasters…
• Elevation• Slope
• Rainfall• Temperature
Anatomy of the Web MapClient Application
(Firefox / IE/ Chrome)
Spati
al Da
ta /
Querie
s
Mapping Server(ArcGIS Server)
Application Server(IIS / Apache)
Flash / JS / HTML
client provides parameters.
server returns results.
Server-side SolutionClient Application
(Firefox / IE/ Chrome)
Serv
er d
oes t
he w
ork
Mapping Server(ArcGIS Server)
Application Server(IIS / Apache)
The client provides parameters and
the server returns results.
Client-side Solution
Client Application(Firefox / IE / Chrome)
User
’s Co
mpu
ter D
oes t
he
Wor
k
Mapping Server(ArcGIS Server)
Application Server(IIS / Apache)
The client does the analysis and
the server provides source data.
Client-side Raster Analysis Needs…
• Source Data – (PNG / JPG)– PNG for rasters classified into discrete classes– JPEG for smooth continuous surfaces– Common screen size = 1024 x 768 = 786,432– Suitability Analysis of 10 Layers = 8 Megapixels
Transferring Source Data…
• Continuous Data– JPEG with 60% compression– Note min/max of each dataset– Stretch dataset from black to white
Transferring Source Data…
• Discrete Data (Soil Type)– PNG8 or PNG24– ***Symbolize data with known values***
32 Classes of ColorClass Hex ArcMap Client-side
1 0x7 7 0.031252 0xf 15 0.06253 0x17 23 0.093754 0x1f 31 0.1255 0x27 39 0.156256 0x2f 47 0.1875…30 0xef 239 0.937531 0xf7 247 0.9687532 0xff 255 1.0
Start with Grayscales
Start with grayscales…
Red Channel = Green Channel = Blue Channel
Red Channel = Elevation; Green Channel = Slope;Blue Channel = Drainage;
Red = Soil Type; Green = Soil Acidity;Blue = Soil Depth;
Merging Images Python
Client-side Raster Analysis Needs…
• Ability to run analysis–Access to individual pixels–Logic to evaluate pixel values–Raw speed
Access to individual pixels
• Flash – Pixel Bender or Bitmap API• Javascript – Ext JS 4 w/Pixel Bender• Silverlight – Pixel Shader
• I recommend Flash/Flex with Pixel Bender
Pixel Bender Kernel Language
• Override a single function (evaluatePixel)– Executes in CPU / GPU
• Simple Syntax but Limited Expressiveness – No Arrays– No Custom Functions– boolean, float, pixel, and image data types
Map Algebra Expression
Be kind to your Kernel