280 likes | 392 Views
How *Not* to Generate Prescriptions for Landscape Analysis Projects. Jeff D. Hamann Western Forest Mensurationist Conference June 26, 2001. Topics. Historical prescription processing Current tools Problems & solutions. ...So you Want to Produce Some “Model i ” Runs, Do Ya… Punk?.
E N D
How *Not* to Generate Prescriptions for Landscape Analysis Projects Jeff D. Hamann Western Forest Mensurationist Conference June 26, 2001
Topics • Historical prescription processing • Current tools • Problems & solutions
...So you Want to Produce Some “Modeli” Runs, Do Ya… Punk? • What do you need? • Are the tools appropriate for the objective? • What’s the time frame? • What’s the cost?
Step 1. How to Play Nice with Others. • Learn each application’s interface • Put them all together • Run static batch mode
Step 1. How to Play Nice with Others. • Learn each application’s interface • Put them all together • Run static batch mode • Reformat outputs
Step 1. How to Play Nice with Others. • Learn each application’s interface • Put them all together • Run static batch mode • Reformat outputs • Check Results
Check Results • Yeah, right….
Step 1. How to Play Nice with Others. • Learn each application’s interface • Put them all together • Run static batch mode • Reformat outputs • Check Results • Check Sanity (your own)
Excessive bail shall not be required, nor excessive fines imposed, nor cruel and unusual punishments inflicted. It shouldn't take an incredible amount of time, cost a horrific amount of money, and be unbelievably painful to produce yield files. The Eighth Amendment to US Constitution
Step 2. How to Forget Step One. • Use a database system… of *any* kind • Use libraries instead of stand alone software • Use scripting tools like VB, PHP, and Perl • Use web interfaces to support collaboration
On with the Show… • Contestant number one • Contestant number two • Contestant number n...
Generating the First Database • Microsoft Access 97 • About 50 fields (before, after, removed) • 50 floats (@ 4 bytes) * 30 periods * 50 Rxs * 500 strata * 3 states 500MB
Prescription Dregs, again. • Be able to swap tables (or use a subset) and still have the code function. • Use combinatorial algorithms to generate thinning events • N-ary tree algorithm will generate (n_thins^n_levels) prescriptions (3 thins and 4 thinning levels = 81 prescriptions )
Problems So Far • Application limitations • Database limitations • Portability issues • Operating system limitations
Application Limitations • ORGANON DLL • Has a unique API, multiple site indices • SYSTUM-1 DLL • Has a unique API, single site index • Supporting library API • Taper functions, crown functions, silvicultural functions
Database Limitations • “Upgrading” Access 97 to Access2000 • 400 Strata fit fine in Access97 • <100 Strata fit in Access2000 • What about stand tables, log tables? • Going back to Access97 from Access2000 • Access threading model? • Conclusions? • Access is a resource hog!
Portability Issues • VB code wouldn’t convert from one version to another. • Moving Access95->97->2000->XP = :-( • Will it (VB) run in another database like Oracle?
Operating System Limitations • Remote access to retrieve data and observe progress • WindowsNT/2000/Linux kernel 2.2.x has 2GB file limitations • Linux 2.4.x kernel has >2GB limitations
Is This Trip Really Necessary? • All 150 files took almost 8-10 hours to export • 3 CDs for each database • New runs were produced twice a week • For a total of 200 CDs for each project • For three projects = 600 CDs (minus a few for Napster downloads)
The Second Database • Uses Access97/VBA • Uses MySQL ODBC as backend for data • 50/50 VB and C for data generation and exporting
Performance Results* *These results are NO WAY statistically valid, defensible, or repeatable as the sample size is very, very small! **multiple threading version - estimated processing time
Visualizing Results • Export results into MS Excel • 400 strata * 50 data items = 20000 spreadsheets! • generated PHP scripts with charts to allow the user to query the runs…
Hints/Tricks/Traps • Use a scalable database backend • Use portable methodologies and tools