a framework for agricultural model development kei tanaka narc-naro
TRANSCRIPT
![Page 1: A Framework for Agricultural Model Development Kei Tanaka NARC-NARO](https://reader035.vdocuments.net/reader035/viewer/2022062511/55148d87550346d36e8b5036/html5/thumbnails/1.jpg)
A Framework for Agricultural Model Development
Kei Tanaka
NARC-NARO
![Page 2: A Framework for Agricultural Model Development Kei Tanaka NARC-NARO](https://reader035.vdocuments.net/reader035/viewer/2022062511/55148d87550346d36e8b5036/html5/thumbnails/2.jpg)
Contents of Presentation
• Background of model development
• Framework
• Efficiency of using framework
• Conclusions
![Page 3: A Framework for Agricultural Model Development Kei Tanaka NARC-NARO](https://reader035.vdocuments.net/reader035/viewer/2022062511/55148d87550346d36e8b5036/html5/thumbnails/3.jpg)
Background of Agricultural Model Development
• Developed several agricultural models– Plant growth models (rice, pear, …)– Disease prediction models (wheat, pear, …)– Executable in an web page
http://cse.naro.affrc.go.jp/ketanaka/model/
![Page 4: A Framework for Agricultural Model Development Kei Tanaka NARC-NARO](https://reader035.vdocuments.net/reader035/viewer/2022062511/55148d87550346d36e8b5036/html5/thumbnails/4.jpg)
Java
• APIs: Network, GUI, …
• Cross-platform: Windows, Linux, Mac OS, …
• Applet: If JRE is installed, additional installation work is not
necessary.– Execution easily is important to popularize a
model
• Secure programming
![Page 5: A Framework for Agricultural Model Development Kei Tanaka NARC-NARO](https://reader035.vdocuments.net/reader035/viewer/2022062511/55148d87550346d36e8b5036/html5/thumbnails/5.jpg)
MetBroker• A middleware between weather databases
and agricultural models
• Provides consistent methods to access various weather databases through the Internet
![Page 6: A Framework for Agricultural Model Development Kei Tanaka NARC-NARO](https://reader035.vdocuments.net/reader035/viewer/2022062511/55148d87550346d36e8b5036/html5/thumbnails/6.jpg)
Framework
• Framework– Program library summarized to reuse for the
specific purpose application.
• Advantages of using a Framework– Offers implementation
→ Development productivity improves– Specifies a development method
→ Quality of application is kept high
![Page 7: A Framework for Agricultural Model Development Kei Tanaka NARC-NARO](https://reader035.vdocuments.net/reader035/viewer/2022062511/55148d87550346d36e8b5036/html5/thumbnails/7.jpg)
Frameworks
• Web MVC– Struts, Tapestry, JSF, Spring MVC, Web Work
• O/R Mapping– Hibernate, PriDE, O/R Broker, Mr.Persister
• Testing– JUnit, TestNG, JTiger
• SOA (Service Oriented Architecture)– Celtix, Beehive, JBoss jBPM
![Page 8: A Framework for Agricultural Model Development Kei Tanaka NARC-NARO](https://reader035.vdocuments.net/reader035/viewer/2022062511/55148d87550346d36e8b5036/html5/thumbnails/8.jpg)
Common Features of Agricultural Models
• Management of data– Sequential value:Air Temp., Rain, …– Numerical value: Weight, Threshold, …– Date: Transplant date, …– Boolean value: Use or Not use
• Weather data acquisition from a MetBroker or a user’s local file
• Result display in a table or a chart
![Page 9: A Framework for Agricultural Model Development Kei Tanaka NARC-NARO](https://reader035.vdocuments.net/reader035/viewer/2022062511/55148d87550346d36e8b5036/html5/thumbnails/9.jpg)
import net.agmodel.data.*;import net.agmodel.datareader.*;…
public class PearDuthieData extends ExecutionDataImpl{public BlastamData(){
//Setup for parameters and sequential dataaddValueElement(LEAF_WETNESS_THRESHOLD); //Declaration of a parametersetValue_(LEAF_WETNESS_THRESHOLD, 80.0); //Set of the initial value of a parameteraddSequenceElement(AIRTEMPERATURE); //Declaration of a sequential dataaddSequenceElement(LEAFWETNESS);
DataSourceAttribute dsAttrAirTemp = getDataSourceAttribute(AIRTEMPERATURE);DataSourceAttribute dsAttrLeafWet = getDataSourceAttribute(LEAFWETNESS);//Set of the data source of sequential datadsAttrAirTemp.addUsableDataSource(DataSourceElement.MET_BROKER); //MetBrokerdsAttrAirTemp.addUsableDataSource(DataSourceElement.USER_DATA); //User DatadsAttrLeafWet.addUsableDataSource(DataSourceElement.MET_BROKER);dsAttrLeafWet.addUsableDataSource(DataSourceElement.USER_DATA);dsAttrLeafWet.addUsableDataSource(DataSourceElement.ESTIMATED_DATA); //Estimated Data…
}
public UserDataReader getUserDataReader(){//Setup to aquire user’s local file dataUserDataReaderImpl udReader = new UserDataReaderImpl();udReader.addTextDataElement(new TextDataElement(AIRTEMPERATURE,
AIRTEMPERATURE.toString(), "C"));udReader.addTextDataElement(new TextDataElement(LEAFWETNESS, LEAFWETNESS.toString(), ""));return udReader;
}…
}
Example 1 Data Source Setup
![Page 10: A Framework for Agricultural Model Development Kei Tanaka NARC-NARO](https://reader035.vdocuments.net/reader035/viewer/2022062511/55148d87550346d36e8b5036/html5/thumbnails/10.jpg)
public class PearDuthieData extends ExecutionDataImpl{public BlastamData(){
addValueElement(LEAF_WETNESS_THRESHOLD);setValue_(LEAF_WETNESS_THRESHOLD, 80.0); addSequenceElement(AIRTEMPERATURE);addSequenceElement(LEAFWETNESS);
DataSourceAttribute dsAttrAirTemp = getDataSourceAttribute(AIRTEMPERATURE);DataSourceAttribute dsAttrLeafWet = getDataSourceAttribute(LEAFWETNESS);//Set of the data source of sequential datadsAttrAirTemp.addUsableDataSource(DataSourceElement.MET_BROKER);dsAttrAirTemp.addUsableDataSource(DataSourceElement.USER_DATA);dsAttrLeafWet.addUsableDataSource(DataSourceElement.MET_BROKER);dsAttrLeafWet.addUsableDataSource(DataSourceElement.USER_DATA);dsAttrLeafWet.addUsableDataSource(DataSourceElement.ESTIMATED_DATA);…
}
public UserDataReader getUserDataReader(){//Setup to aquire user’s local file dataUserDataReaderImpl udReader = new UserDataReaderImpl();udReader.addTextDataElement(new TextDataElement(AIRTEMPERATURE,
AIRTEMPERATURE.toString(), "C"));udReader.addTextDataElement(new TextDataElement(LEAFWETNESS,
LEAFWETNESS.toString(), ""));return udReader;
}…
}
![Page 11: A Framework for Agricultural Model Development Kei Tanaka NARC-NARO](https://reader035.vdocuments.net/reader035/viewer/2022062511/55148d87550346d36e8b5036/html5/thumbnails/11.jpg)
public class PearDuthieTableUI extends net.agmodel.gui.ModelTableFrame{//Display result data in a tableprotected SequenceTM[] createSequenceTM(ResultData data){
JigsawQuantityFormat jqf = new JigsawQuantityFormat("0", DEVOID); //Number format to displaySequence wetness = data.getSequence(WETNESS_DURATION);Sequence infection = data.getSequence(INFECTION_RATE);return new SequenceTM[]{ //Array of sequential data displayed in a table
new SequenceTM((MetSequence)data.getSequence(AIRTEMPERATURE)),new SequenceTM((MetSequence)data.getSequence(LEAFWETNESS)),new SequenceTM(data.getSequence(WETNESS_DURATION), WETNESS_DURATION.toString(), "h", SummaryKind.AVERAGE, jqf),new SequenceTM(data.getSequence(INFECTION_RATE), INFECTION_RATE.toString(), "", SummaryKind.MAXIMUM, jqf)};
}
//Display result data in a chartprotected SequenceC[] createSequenceC(ResultData data){
Interval in = data.getResultInterval();Duration re = data.getResolution();return new SequenceC[]{ //Array of sequential data displayed in a chart
new SequenceC((MetSequence)data.getSequence(AIRTEMPERATURE), in, re),new SequenceC((MetSequence)data.getSequence(LEAFWETNESS), in, re),new SequenceC(new SequenceU(data.getSequence(INFECTION_RATE), SummaryKind.MAXIMUM), INFECTION_RATE.toString(), null, null, in, re)};
}
//Display result data in a mapprotected net.agmodel.gui.MultipleStationResultMap createMap(double latitude, double longitude){
return new PearDuthieMap((ResultData[])allData, latitude, longitude, 1000000,INFECTION_RATE.toString());
}}
Example 2 Result Display
![Page 12: A Framework for Agricultural Model Development Kei Tanaka NARC-NARO](https://reader035.vdocuments.net/reader035/viewer/2022062511/55148d87550346d36e8b5036/html5/thumbnails/12.jpg)
public class BlastamTableUI extends net.agmodel.gui.ModelTableFrame{//Display result data in a tableprotected SequenceTM[] createSequenceTM(ResultData data){
//Number format to displayJigsawQuantityFormat jqf = new JigsawQuantityFormat("0", DEVOID);//Array of sequential data displayed in a tablereturn new SequenceTM[]{
new SequenceTM((MetSequence)data.getSequence(AIRTEMPERATURE)),new SequenceTM((MetSequence)data.getSequence(RAIN)),new SequenceTM((MetSequence)data.getSequence(WIND)),new SequenceTM((MetSequence)data.getSequence(SUNSHINE))};
}
//Display result data in a chartprotected SequenceC[] createSequenceC(ResultData data){
Interval in = data.getResultInterval();Duration re = data.getResolution();return new SequenceC[]{ //Array of sequential data displayed in a chart
new SequenceC((MetSequence)data.getSequence(AIRTEMPERATURE), in, re),new SequenceC((MetSequence)data.getSequence(RAIN), in, re), new SequenceC((MetSequence)data.getSequence(WIND), in, re),new SequenceC((MetSequence)data.getSequence(SUNSHINE), in, re)};
}
//Display result data in a mapprotected net.agmodel.gui.MultipleStationResultMap createMap(double latitude, double longitude){
return new BlastamMap((ResultData[])allData, latitude, longitude, 1000000,INFECTION_RATE.toString());
}}
![Page 13: A Framework for Agricultural Model Development Kei Tanaka NARC-NARO](https://reader035.vdocuments.net/reader035/viewer/2022062511/55148d87550346d36e8b5036/html5/thumbnails/13.jpg)
public class BlastamTableUI extends net.agmodel.gui.ModelTableFrame{//Display result data in a tableprotected SequenceTM[] createSequenceTM(ResultData data){
//Number format to displayJigsawQuantityFormat jqf = new JigsawQuantityFormat("0", DEVOID);//Array of sequential data displayed in a tablereturn new SequenceTM[]{
new SequenceTM((MetSequence)data.getSequence(AIRTEMPERATURE)),new SequenceTM((MetSequence)data.getSequence(RAIN)),new SequenceTM((MetSequence)data.getSequence(WIND)),new SequenceTM((MetSequence)data.getSequence(SUNSHINE))};
}
//Display result data in a chartprotected SequenceC[] createSequenceC(ResultData data){
Interval in = data.getResultInterval();Duration re = data.getResolution(); //Array of sequential data displayed in a chartreturn new SequenceC[]{
new SequenceC((MetSequence)data.getSequence(AIRTEMPERATURE), in, re),
new SequenceC((MetSequence)data.getSequence(RAIN), in, re),new SequenceC((MetSequence)data.getSequence(WIND), in, re),new SequenceC((MetSequence)data.getSequence(SUNSHINE), in, re)};
}
//Display result data in a mapprotected net.agmodel.gui.MultipleStationResultMap createMap(double latitude, double longitude){
return new BlastamMap((ResultData[])allData, latitude, longitude, 1000000,INFECTION_RATE.toString());
}}
![Page 14: A Framework for Agricultural Model Development Kei Tanaka NARC-NARO](https://reader035.vdocuments.net/reader035/viewer/2022062511/55148d87550346d36e8b5036/html5/thumbnails/14.jpg)
public class BlastamTableUI extends net.agmodel.gui.ModelTableFrame{//Display result data in a tableprotected SequenceTM[] createSequenceTM(ResultData data){
//Number format to displayJigsawQuantityFormat jqf = new JigsawQuantityFormat("0", DEVOID);//Array of sequential data displayed in a tablereturn new SequenceTM[]{
new SequenceTM((MetSequence)data.getSequence(AIRTEMPERATURE)),new SequenceTM((MetSequence)data.getSequence(RAIN)),new SequenceTM((MetSequence)data.getSequence(WIND)),new SequenceTM((MetSequence)data.getSequence(SUNSHINE))};
}
//Display result data in a chartprotected SequenceC[] createSequenceC(ResultData data){
Interval in = data.getResultInterval();Duration re = data.getResolution();return new SequenceC[]{ //Array of sequential data displayed in a chart
new SequenceC((MetSequence)data.getSequence(AIRTEMPERATURE), in, re),new SequenceC((MetSequence)data.getSequence(RAIN), in, re), new SequenceC((MetSequence)data.getSequence(WIND), in, re),new SequenceC((MetSequence)data.getSequence(SUNSHINE), in, re)};
}
//Display result data in a mapprotected net.agmodel.gui.MultipleStationResultMap createMap(double latitude, double longitude){
return new BlastamMap((ResultData[])allData, latitude, longitude, 1000000,INFECTION_RATE.toString());
}}
![Page 15: A Framework for Agricultural Model Development Kei Tanaka NARC-NARO](https://reader035.vdocuments.net/reader035/viewer/2022062511/55148d87550346d36e8b5036/html5/thumbnails/15.jpg)
![Page 16: A Framework for Agricultural Model Development Kei Tanaka NARC-NARO](https://reader035.vdocuments.net/reader035/viewer/2022062511/55148d87550346d36e8b5036/html5/thumbnails/16.jpg)
Agricultural Models developed by using Framework
Models Contents of models
JAPONICAJava version Program of Oryza-Nitrogen relation for Crop
Growth Analysis
MetBLASTAM Rice blast forecasting model
PearDuthie Japanese pear scab infection forecasting model
PearSugiura Pear blooming and cultivation date prediction model
InsectDVR Insect generation prediction model
WeedDamage Weed damage prediction model
WeedEmergence Weed emergence prediction model
LeafWetness Leaf wetness prediction model (3 models)
![Page 17: A Framework for Agricultural Model Development Kei Tanaka NARC-NARO](https://reader035.vdocuments.net/reader035/viewer/2022062511/55148d87550346d36e8b5036/html5/thumbnails/17.jpg)
Efficiency of using Framework
• MetBLASTAM (Rice blast forecasting model)
• 2,000 lines was developed for the model
• 25,000 lines provided by the framework was called from the model program
• Calculation part (main part of the model) is 45% of the model program→ Developer can use much time to develop main part, not Data acquisition, GUI.
![Page 18: A Framework for Agricultural Model Development Kei Tanaka NARC-NARO](https://reader035.vdocuments.net/reader035/viewer/2022062511/55148d87550346d36e8b5036/html5/thumbnails/18.jpg)
Conclusions
• Developed the framework for agricultural models
• Several models developed by using the framework
• Program for weather data acquisition and result display only lists data names
• Model developer can use much time to develop main part