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
LightNode是一家成立于2002年,总部位于香港的VPS服务商。提供基于KVM虚拟化技术.支持CentOS、Ubuntu或者Windows等操作系统。公司名:厦门靠谱云股份有限公司官方网站:https://www.lightnode.com拥有高质量香港CN2 GIA与东南亚节点(河内、曼谷、迪拜等)。最低月付7.71美金,按时付费,可随时取消。灵活满足开发建站、游戏应用、外贸电商等需求。首...
近期RAKsmart上线云服务器Cloud Server产品,KVM架构1核1G内存40G硬盘1M带宽基础配置7.59美元/月!RAKsmart云服务器Cloud Server位于美国硅谷机房,下单可选DIY各项配置,VPC网络/经典网络,大陆优化/精品网线路,1-1000Mbps带宽,支持Linux或者Windows操作系统,提供Snap和Backup。RAKsmart机房是一家成立于2012年...
美得云成立于2021年,是一家云产品管理服务商(cloud)专业提供云计算服务、DDOS防护、网络安全服务、国内海外数据中心托管租用等业务、20000+用户的选择,43800+小时稳定运行香港特价将军澳CTG+CN2云服务器、采用高端CPU 优质CN2路线 SDD硬盘。香港CTG+CN22核2G3M20G数据盘25元点击购买香港CTG+CN22核2G5M30G数据盘39元点击购买香港CTG+CN...
parameters add为你推荐
暴风影音怎么截图暴风影音怎么截屏啊?支付宝查询余额支付宝里如何查询银行卡里面的余额?邮箱打不开怎么办我的邮箱打不开怎么办百度抢票浏览器手机百度浏览器抢票版根本就没预约抢票。噱头而已!flash导航条如何添加FLASH导航条渗透测试web渗透测试有前途吗二叉树遍历写出二叉树的先序遍历、中序遍历、后序遍历。镜像文件是什么镜像文件是什么意思?腾讯文章腾讯罗剑楠是何许人也?商标注册查询官网如何在网上查询商标是否注册?
老域名 重庆vps租用 免费二级域名申请 国外免费域名网站 60g硬盘 unsplash parseerror 丹弗 panel1 太原联通测速平台 dux 个人域名 183是联通还是移动 速度云 世界测速 免费dns解析 东莞idc cxz 谷歌台湾 cdn网站加速 更多