To Be Safe For Now: Keep your shapefiles simple Remove unneeded attributes “Simplify” spatial data Pyramids are coming soon Only allow “info boxes” on points Allows the user to drag everywhere else
Web Development Web development never ends: Find out what the stakeholders need (sponsors, users, etc.) Investigate available technology Plan the project Build/update the web site Test functionality in all browsers Release the site Monitor and maintain Go to 1.
Technical Issues Keeping a web site available Maintaining a server Getting “hacked” Performance problems
Bottom Line If your web site is not available: You don’t exist!
What is a web server? Has a “hard IP”. Runs “web server” software An IP address that never changes Runs “web server” software Typically IIS or Apache Typically: Is in a “rack” in a protected space that is: Is environmentally controlled (air conditioned) Has “conditioned” power (a UPS) Has redundant components
Maintaining a server You can “rent” space on a server DropBox offers a “Public” folder A server costs from $500 to $100,000 Don’t listen to what the manufacturers tell you what you need! Talk to other developers. It costs $100 to $200 per month to have someone “host” your server. In theory, you could have a server at your house but it is not recommended
Software Keep the server as simple as possible Limit access Complexity = more failures Limit access Do required updates There are web site that will monitor your server and email you if it goes down
Getting Hacked Common Types: These can cause: SQL Injection “Stealing Bandwidth” Web Server breach Uploading viruses Denial of service errors These can cause: 404 Errors (web page unavaialble) Web pages being replaced Getting billed $1000s of dollars! Information being stolen?
SQL Injection In a query string, enter: Can also steal info from DB “Query; DELETE FROM ‘<table>’” Deletes the entire contents of the table Can also steal info from DB Easy to protect from: Check for single quotes and replace them with two single quotes Don’t allow “delete from” in a query Don’t allow sensitive information in your database
Stealing Bandwidth Someone breaks into your server and puts a bunch of data there. Then, they make you their download site Causes a massive spike in bandwidth which you have to pay for! Preventing: Don’t have FTP sites Keep web software up to date Make sure your ISP monitors for them
Web Server Breach An HTML steam that breaks your web server and then takes over your server. Used to steal band width and corrupt your server’s contents Preventing: These are rare and can only be prevented by the web server software provider Keep web server software up to date
Uploading Viruses User’s upload a file that than runs a program or “sleeps” until users download it to their computer Allows others to get you to distributed viruses! Don’t allow “scripts” to be uploaded. This includes: “xls”, “doc”, “ppt” files!
Denial of Server A web service is written that calls your web site over and over again to “bring it down”. IIS can crash with these Preventing: Don’t attract attention If you do, get a lot of servers Block abusive users Only allow reasonable web service calls
Reality Getting hacked today is rare Twice in last 10 years (never in last 7) Keep the OS and web software up to date Don’t let a lot of folks edit the contents of your server Keep an eye on it Other problems (like performance) will be bigger.
GIS Web Sites GIS web sites “go bad” because of: New issues: Poor user design Poor performance New issues: Scripting performance Database performance Geospatial data access
Scripting Performance Load information on demand Make sure there is minimal recursion Functions calling functions, etc. Loops in loops, etc. Find the “bottlenecks” and fix them Evaluate each library carefully and be ready to reject one and replace it
Database Performance Don’t use MS-Access Use indexes (search trees) Use MySQL with small, simple data Use indexes (search trees) Minimize string searches Index if needed Minimize hierarchical queries Do performance analysis on key queries and add redundant data if needed I’m evaluating a “NoSQL” database MongoDB
Geospatial Issues Pixels .vs geographic systems Large datasets: Pyramids of tiles Transfer speeds The Internet is not getting any faster!
-180 180 90 Height in Pixels -90 Width in Pixels
10,000,000 meters UTM, Zone 10 6,600,000 meters
Pixels Geospatial Coordinates 0,0 Easting, Northing Positive X Positive X Positive Y Negative Y
Raster Pyramids Problem: Analysis: Solution: Rasters can be huge! The Internet is slow Analysis: Users can only view about 1000 x 1000 pixels at time Options: Large area at low resolution Small area at high resolution Solution: Create a “pyramid” of tiles and only transfer the tiles that are needed
Raster Pyramid
Zoom Level 1 0,0 256,256
Zoom Level 2 Columns 1 0,0 Rows 1 512,512
Zoom Level 3 Columns 1 0,0 Rows 1 512,512
Zoom Level 4 Columns 1 0,0 1 Rows 512,512
Zoom Level Pixel Width Num Columns Size (Pixels) Num Tiles 1 256 65536 2 512 262144 4 3 1024 1048576 16 2048 8 4194304 64 5 4096 16777216 6 8192 32 67108864 7 16384 268435456 32768 128 1073741824 9 4294967296 10 131072 17179869184 11 68719476736 12 524288 2.74878E+11 13 1.09951E+12 14 2097152 4.39805E+12 15 1.75922E+13 8388608 7.03687E+13 17 1.7E+07 2.81475E+14 18 3.4E+07 1.1259E+15 19 6.7E+07 4.5036E+15 Sum: 6.0048E+15 91625968981
Vector Pyramids Vector data is getting larger Millions of points Complex, global polygons Detailed polyline networks (rivers, roads) CanvasMap now has Vector Pyramids! But they are really new so expected issues.