NEST(NextESASARToolbox)DeveloperTrainingCourse-BuildingtheSourceCode-GeneralDesign-CreatinganOperator-CreatingaReader-CreatingaWriterCONTENTSBuildingtheNESTSourceCodeOPENSOURCETheNESTsoftwareandfullsourcecodeisdistributedfreelyundertheGNUGPLlicense.
–Opensourcemakessoftwareinherentlyindependentofspecificvendors,programmersandsuppliers.
Thesoftwarecanbefreelydistributedandsharedbylargecommunitiesincludingthesourcecodeandtherighttomodifyit.
–Thisensuresthatthereisn'tasingleentityonwhichthefutureofthesoftwaredependsonandallowsforunlimitedimprovementsandtuningofthequalityandfunctionalityofthesoftware.
–BymakingNESTopensource,futureevolutionandgrowthofthetoolboxwillbepossiblebythecommunityofusersanddevelopersthatcontributebacktotheproject.
PREREQUISITES–JavaJDK–http://java.
sun.
com/javase/downloads/–ApacheMaven–http://maven.
apache.
org/–IntegratedDevelopmentEnvironment–IntelliJhttp://www.
jetbrains.
com/idea/–Eclipsehttp://www.
eclipse.
org/–WordpadSETUPENVIRONMENTVARIABLES–Addtheenvironmentvariables–IfyouinstalledJava,maventoafolder~/binorc:\bin\thenthepathsshouldlooklikethese–Linux–In~/.
bashrc–exportJAVA_HOME=~/bin/java/jdk1.
6.
0_17–exportMAVEN_HOME=~/bin/maven–exportPATH=$PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin–Windows–InControlPanel->System->AdvancedSettings->EnvironmentVariables–NewJAVA_HOMEc:\bin\java\jdk1.
6.
0_17–NewMAVEN_HOMEc:\bin\maven–NewPATH%PATH%;%JAVA_HOME%\bin;%MAVEN_HOME%\binGETTHECODE–Unzipnest-3C-src.
zipfromtheUSBdisk–Ordownloadandunzipsourcefromastablereleasefromthewebsitehttp://earth.
esa.
int/nest–OrcheckoutthelatestnightlydevelopmentbuildfromtheCVSrepository–cvs-d:pserver:anonymous@www.
array.
ca:2401/reposconestSETUPBUILDENVIRONMENT–ApacheMavenisabuildmanagerthatletsyoucreateandautomatethebuildenvironmentfromaProjectObjectModel(POM)–TheNESTpom.
xmllistallmodulesanddependenciestoincludeinthebuild–Dependenciesaredownloadedasneededfromarepository–Mavencommands–mvncompile–mvncompileidea:idea–mvnpackageassembly:assembly–Otherusefulcommands–mvncompileeclipse:eclipse–Mvninstall–mvncleanPRODUCINGARELEASESOFTWARE–mvnpackageassembly:assembly–ThiscreatesafolderNest-3C/targetthatcontainsthesoftwareforeachplatform–CopytheC:\bin\java\jdk1.
6.
0_17\jrefolderintothefolderappropriateforyoursystem.
–E.
g.
copythejreintonest-3C/target/nest-3C-bin-win.
dirNESTGeneralDesignMODULARDEVELOPMENT–APIprovidedwithNESTallowsforeasyextensionbyuserstoadddatareaders/writersofotherformatsandtosupportdataformatsoffuturemissions.
–Plug-inmodulescanbedevelopedseparatelyandsharedbytheusercommunity–ProcessorscanbeeasilyextendedwithoutneedingtoknowaboutthecomplexitiesofthewholesoftwareGENERICPRODUCTMODEL(GPM)TheGPMisacommon,unifieddatamodeldesignedsothatalldatareadersconvertdataintothisdatamodelandallanalysisandprocessingtoolsusethisdatamodelexclusively.
PRODUCTMODEL–TiePointGrid–Sub-sampledrasterdata–Band–Dataatsceneresolution–FlagCoding–Producttypespecific–Landcoveretc.
–Geocoding–Tiepointgeocoding–Mapgeocoding–MetadataElements–Headerdata–DataNode–Rasterdataasint,float,…GRAPHPROCESSINGFRAMEWORK–ProcessingchainsarecreatedasDirectedAcyclicGraphs.
–Thesourcesofthegrapharethedataproductreaders,andthesinkscanbeeitheraproductwriteroranimagedisplayedontheDAT.
–TheGPFusesaPullModel,whereinarequestismadefromthesinkbackwardstothesourcetoprocessthegraph.
Thisrequestcouldbetocreateanewproductfileortoupdateadisplayedimage.
Oncetherequestreachesasource,theimageispulledthroughthenodestothesink.
Eachtimeanimagepassesthroughanoperator,theoperatortransformstheimage,anditispasseddowntothenextnodeuntilitreachesthesink.
THEGRAPHOPERATORinitialize():voiddispose():voidcomputeTile(band:Band,tile:Tile,pm:ProgressMonitor):voidcomputeTileStack(tiles:Map,rect:Rectangle,pm:ProgressMonitor):voidgetSourceTile(node:RasterDataNode,pm:ProgressMonitor):TilegetSourceProducts():Product[]getSourceProduct(name:String):ProductgetTargetProduct():ProductOperatorcreateOperator():OperatorcreateOperator(sources,Map,parameters:Map):OperatorOperatorSpi>getOperatorSpi(name:String):OperatorSpiaddOperatorSpi(spi:OperatorSpi):voidremoveOperatorSpi(spi:OperatorSpi):voidOperatorSpiRegistry0.
.
*initialize():voidcomputeTile(band:Band,tile:Tile,pm:ProgressMonitor):voidMosaicOpMosaicOpSpigetX():intgetY():intgetWidth():intgetHeight():intgetSampleDouble(x:int,y:int):doublesetSampleDouble(x:int,y:int,s:double)Tile>CreatingAnOperatorMAVENGPFARCHETYPE–AMavenArchetypeisatemplatetoolkitforgeneratinganewmodulepackagethatisalreadyintegratedandreadytouse.
–RunmvninstalltoinstallthearchetypesintotheMavenrepository–Usingthecreate_gpf_opscriptamavenarchetypewillcreateanewoperatorcreate_gpf_opnest-op-segmentation–Thenewoperatorwillbeaddedtothepom.
xmlandcontaineverythingneededforanoperatortowork.
–Addittoyourprojectmvncompileidea:idea–Youcanthenbegintomodifyittoyourneeds.
THEGPFOPERATOR–TheOperatorbasicallytakesasourceproductasinputandcreatesanewtargetproductwithininitialize().
–ThealgorithmimplementationforwhatyouroperatordoeswillgoinsidecomputTile()orcomputeTiles().
publicinterfaceOperator{OperatorSpigetSpi();Productinitialize(OperatorContextcontext);voidcomputeTile(TiletargetTile,ProgressMonitorpm);voidcomputeTiles(RectangletargetTileRectangle,ProgressMonitorpm);voiddispose();}INITIALIZE–Getsourcemetadata–Createtargetproduct–Addselectedbands–Updatetargetmetadatapublicvoidinitialize()throwsOperatorException{getSourceMetadata();//createtargetproducttargetProduct=newProduct(sourceProduct.
getName(),sourceProduct.
getProductType(),sourceProduct.
getSceneRasterWidth(),sourceProduct.
getSceneRasterHeight());//AddtargetbandsaddSelectedBands();//copyorcreateproductnodesOperatorUtils.
copyProductNodes(sourceProduct,targetProduct);//updatethemetadatawiththeaffectoftheprocessingupdateTargetProductMetadata();}ABSTRACTEDMETADATA–TheAbstractedMetadataisanextractofinformationandparametersfromtheactualmetadataoftheproduct.
–ThereaderconvertproductspecificmetadataintothiscommonformatforallOperatorstounderstand–TheAbstractedMetadataistheonlymetadatathatanOperatorshouldreadfromandwriteto.
GETSOURCEMETADATA–finalMetadataElementabs=AbstractMetadata.
getAbstractedMetadata(sourceProduct);–rangeSpacing=AbstractMetadata.
getAttributeDouble(abs,AbstractMetadata.
range_spacing);UPDATETARGETMETADATA–finalMetadataElementabsTgt=AbstractMetadata.
getAbstractedMetadata(targetProduct);–AbstractMetadata.
setAttribute(absTgt,AbstractMetadata.
multilook_flag,1);ADDSELECTEDBANDS–BandtargetBand=newBand(targetBandName,sourceBand.
getDataType(),sourceBand.
getRasterWidth(),sourceBand.
getRasterHeight());–ProductUtils.
copyRasterDataNodeProperties(sourceBand,targetBand);–targetProduct.
addBand(targetBand);TILES–ThememorymanagementofNESTallowsverylargedataproducts,thatcannotbeallstoredinavailablememory,tobehandledbytheprocessingtoolsusingatiledapproach.
–Thedatasetisdividedintoworkableareascalledtilesconsistingofasubsetofthedatareadfromdiskinonepiece.
–Dependingonthetool,dataisingestedforatileorasetoftiles,andprocessingisappliedonlytothecurrentsetoftiles.
Thedataisthenwrittentoafileandreleasedfrommemory.
Theprocessisthenrepeatedonanewsetoftileddatafromthelargedataproduct.
–EachOperatorcanhaveComputeTilemethodoraComputeTileStackmethod.
–ThesizeofthetargettilemaybedependentontherequestsofotherOperatorsinthegraph.
–Thesizeofthesourcetilerequestedbyyouroperatorcouldbeanysize(memorypermitting)COMPUTETILE–Gettingthesourcedata–Applyyouralgorithm–SavingthetargetdatapublicvoidcomputeTile(BandtargetBand,TiletargetTile,ProgressMonitorpm)throwsOperatorException{finalRectangletargetTileRectangle=targetTile.
getRectangle();finalBandsrcBand=targetBandToSourceBandMap.
get(targetBand);finalTilesourceRaster=getSourceTile(srcBand,targetTileRectangle,pm);finalintx0=targetTileRectangle.
x;finalinty0=targetTileRectangle.
y;finalintw=targetTileRectangle.
width;finalinth=targetTileRectangle.
height;for(inty=y0;yaddanActiontocreateamenuitemintheDAT.
StatetheclassoftheActiontobecalledandthetexttoshowinthemenuitem.
SegmentationOporg.
esa.
nest.
dat.
SegmentationOpActionSimpleSegmentationThiswillbeshowninthetooltipsartoolsSegmentationOp–IfyoucreatedyourOperatorwiththeGPFArchetype,thisshouldallbedoneforyoualready.
ACTIONS–TheActionclassdefineswhatwillhappenwhenthemenuitemisclicked.
–Inmostcases,itshouldcalltheSingleTargetProductDialogtoruntheOperator–TheActionclassshouldextendAbstractVisatActionandoverridethehandlerforactionPerformedpublicclassSRGROpActionextendsAbstractVisatAction{privateDefaultSingleTargetProductDialogdialog;@OverridepublicvoidactionPerformed(CommandEventevent){if(dialog==null){dialog=newDefaultSingleTargetProductDialog("SRGR",getAppContext(),"SlantRangetoGroundRange",getHelpId());dialog.
setTargetProductNameSuffix("_GR");}dialog.
show();}PUBLISHINGANOPERATOR–OperatorimplementationsarepublishedviatheJavaserviceproviderinterface(SPI).
AJARpublishesitsoperatorsintheresourcefileMETA-INF/services/org.
esa.
beam.
framework.
gpf.
OperatorSpi.
–InthisfileaddyouroperatorSPIeg:org.
esa.
nest.
gpf.
MultilookOp$SpiInyourOperatorpackageaddaclasstoextendtheOperatorSpiinterface.
Thisclassmayalsoserveasafactoryfornewoperatorinstances.
publicstaticclassSpiextendsOperatorSpi{publicSpi(){super(MultilookOp.
class);}}–IfyoucreatedyourOperatorwiththeGPFArchetype,thisshouldallbedoneforyoualready.
CreatingAReaderREADERS–ReadersallowyoutointerpretafileformatandabstractthedataintotheGenericProductModel–Readershavetwomainclasses–ReaderPluginClass–ReaderImplementationClassREADERPLUGIN–publicinterfaceProductReaderPlugInextendsProductIOPlugIn{/***Getsthequalificationoftheproductreadertodecodeagiveninputobject.
**@paraminputtheinputobject*@returnthedecodequalification*/DecodeQualificationgetDecodeQualification(Objectinput);/***Returnsanarraycontainingtheclassesthatrepresentvalidinputtypesforthisreader.
**IntancesoftheclassesreturnedinthisarrayarevalidobjectsforthesetInputmethodofthe*ProductReaderinterface(themethodwillnotthrowanInvalidArgumentExceptioninthis*case).
**@returnanarraycontainingvalidinputtypes,nevernull*/Class[]getInputTypes();/***Createsaninstanceoftheactualproductreaderclass.
Thismethodshouldneverreturnnull.
**@returnanewreaderinstance,nevernull*/ProductReadercreateReaderInstance();}READER–TheReaderextendsAbstractProductReader–ProductreadProductNodesImpl()–CreateanewProductobject–voidreadBandRasterDataImpl(intsourceOffsetX,intsourceOffsetY,intsourceWidth,intsourceHeight,intsourceStepX,intsourceStepY,BanddestBand,intdestOffsetX,intdestOffsetY,intdestWidth,intdestHeight,ProductDatadestBuffer,ProgressMonitorpm)–FillthedestinationbufferwithbanddatafortherequestedrectangularareaADDABSTRACTEDMETADATA–ForNESTtousethemetadatainagenericway,itmustbeintheAbstractedMetadatasothateachOperatorhasoneinterfacetogetatthedata.
–finalMetadataElementabsRoot=AbstractMetadata.
addAbstractedMetadataHeader(root);–AbstractMetadata.
setAttribute(absRoot,AbstractMetadata.
PRODUCT,prodName);–AbstractMetadata.
setAttribute(absRoot,AbstractMetadata.
range_spacing,mapProjRec.
getAttributeDouble("Nominalinter-pixeldistanceinoutputscene"));PUBLISHINGYOURREADER–ReaderimplementationsarepublishedviatheJavaserviceproviderinterface(SPI).
–AJARpublishesitsreadersintheresourcefileMETA-INF/services/org.
esa.
beam.
framework.
dataio.
ProductReaderPlugIn.
–InthisfileaddyourreaderSPIeg:org.
esa.
nest.
dataio.
radarsat2.
Radarsat2ProductReaderPlugInADDINGAMENUITEM–Inthemodules.
xmlfilefoundintheresourcesfolderofthepackage,addanActiontocreateamenuitemintheDAT.
StatetheclassoftheActiontobecalledandthetexttoshowinthemenuitem.
importRadarsat2Productorg.
esa.
beam.
visat.
actions.
ProductImportActionRadarsat2ImportaRadarsat2dataproductorproductsubset.
ImportaRadarsat2dataproductorproductsubset.
icons/Import24.
gifimportRadarsatProductimportRadarsat2ProductCreatingAWriterWRITERS–WritersallowyoutowritetheProductdatatosomeotherfileformat–Writershavetwomainclasses–WriterPluginClass–WriterImplementationClassWRITERPLUGIN–publicinterfaceProductWriterPlugInextendsProductIOPlugIn{/***Returnsanarraycontainingtheclassesthatrepresentvalidoutputtypesforthiswriter.
**InstancesoftheclassesreturnedinthisarrayarevalidobjectsforthesetOutputmethodofthe*ProductWriterinterface(themethodwillnotthrowanInvalidArgumentExceptioninthis*case).
**@returnanarraycontainingvalidoutputtypes,nevernull**@seeProductWriter#writeProductNodes*/Class[]getOutputTypes();/***Createsaninstanceoftheactualproductwriterclass.
Thismethodshouldneverreturnnull.
**@returnanewwriterinstance,nevernull*/ProductWritercreateWriterInstance();}WRITER–TheWriterextendsAbstractProductWriter–ProductwriteProductNodesImpl()–Writethefileheader–voidwriteBandRasterData(BandsourceBand,intsourceOffsetX,intsourceOffsetY,intsourceWidth,intsourceHeight,ProductDatasourceBuffer,ProgressMonitorpm)–Writerasterdatafromthegivenin-memorysourcebufferintothefilesbandrepresentationusingthegivensourcebandandregionPUBLISINGYOURWRITER–WriterimplementationsarepublishedviatheJavaserviceproviderinterface(SPI).
–AJARpublishesitswritersintheresourcefileMETA-INF/services/org.
esa.
beam.
framework.
dataio.
ProductWriterPlugIn.
–InthisfileaddyourwriterSPIeg:org.
esa.
beam.
dataio.
geotiff.
GeoTiffProductWriterPlugInADDINGAMENUITEM–Inthemodules.
xmlfilefoundintheresourcesfolderofthepackage,addanActiontocreateamenuitemintheDAT.
StatetheclassoftheActiontobecalledandthetexttoshowinthemenuitem.
exportGeoTIFFProductorg.
esa.
beam.
dataio.
geotiff.
GeoTiffExportActionGeoTIFFtrueOExportGeoTIFFProduct.
.
.
ExportaGeoTIFFdataproductorsubset.
ExportaGeoTIFFdataproductorproductsubset.
exportGeoTIFFProductUsingIntegratedDevelopmentEnvironments(IDE)OPENPROJECT–IDEA–mvnidea:idea–OpenNest-3C/nest.
ipr–RightclickonanyprojectandselectmodulesettingsandProject–IfthereisnoJDKspecified,pressNewandbrowsefor–C:\bin\java\jdk1.
6.
0_17–Eclipse–mvneclipse:eclipse–clickonMainMenu/File/Import–SelectGeneral/ExistingProjectintoWorkspace–Browseforsourcefolder–OpenWindow/Preferences.
.
.
,thenselectJava/BuildPath/ClasspathVariables–SelectNew.
.
.
andaddvariableM2_REPO–SelectFolder.
.
.
andchoosethelocationofyourMavenlocalrepository,e.
g.
~/.
m2/repositoryorc:\users\username\.
m2\repositorySETUPRUNPARAMETERSAddrun-timeparametersforIDEAandEclipse–AddanewJavaApplicationRunConfiguration–Name:DAT–Mainclass:com.
bc.
ceres.
launcher.
Launcher–VMparameters:-Xmx1024M-Dceres.
context=nest–Programparameters:none–Workingdirectory:$MY_PROJECTS/nest/beam–Useclasspathofmodulenest-bootstrap–Eclipse:clickonuserentry,addprojectandselectnest-bootstrap–Eclipse:addexternaljars,browsefornest-3C\target\nest-3C-bin-dir\libandselectalljarfilesThankYou
IT狗为用户提供 在线ping、在线tcping、在线路由追踪、域名被墙检测、域名被污染检测 等实用工具。【工具地址】https://www.itdog.cn/【工具特色】1、目前同类网站中,在线ping 仅支持1次或少量次数的测试,无法客观的展现目标服务器一段时间的网络状况,IT狗Ping工具可持续的进行一段时间的ping测试,并生成更为直观的网络质量柱状图,让用户更容易掌握服务器在各地区、各线...
mansora怎么样?mansora是一家国人商家,主要提供沪韩IEPL、沪日IEPL、深港IEPL等专线VPS。现在新推出了英国CN2 KVM VPS,线路为AS4809 AS9929,可解锁 Netflix,并有永久8折优惠。英国CN2 VPS,$18.2/月/1GB内存/10GB SSD空间/1TB流量/100Mbps端口/KVM,有需要的可以关注一下。点击进入:mansora官方网站地址m...
ProfitServer怎么样?ProfitServer好不好。ProfitServer是一家成立于2003的主机商家,是ITC控股的一个部门,主要经营的产品域名、SSL证书、虚拟主机、VPS和独立服务器,机房有俄罗斯、新加坡、荷兰、美国、保加利亚,VPS采用的是KVM虚拟架构,硬盘采用纯SSD,而且最大的优势是不限制流量,大公司运营,机器比较稳定,数据中心众多。此次ProfitServer正在对...
parameters add为你推荐
湖南商标注册湖南商标注册最好的公司照片转手绘有什么软件可以把相片变成手绘的,不是美图秀秀里面的iphone越狱后怎么恢复苹果越狱后如何恢复网易公开课怎么下载手机上的网易公开课的付费课程怎么下载??????开机滚动条谁会调开机的滚动条ios7固件下载ios 7及以上固件请在设备上点“信任”在哪点?怎么升级ios6iPad怎么升级到iOS6正式版?人人逛街人人都喜欢逛街吗系统分析员一个优秀的系统分析师应该具备哪些方面的知识和素质?网站优化方案网站优化方法有哪些
河南虚拟主机 域名备案号查询 a2hosting winscp simcentric windows主机 lamp配置 ca4249 股票老左 美国网站服务器 免费dns解析 七夕快乐英语 视频服务器是什么 太原联通测速 智能dns解析 江苏徐州移动 双11促销 winserver2008 windowsserverr2 hosting 更多