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测试,并生成更为直观的网络质量柱状图,让用户更容易掌握服务器在各地区、各线...
收到好多消息,让我聊一下阿里云国际版本,作为一个阿里云死忠粉,之前用的服务器都是阿里云国内版的VPS主机,对于现在火热的阿里云国际版,这段时间了解了下,觉得还是有很多部分可以聊的,毕竟,实名制的服务器规则导致国际版无需实名这一特点被无限放大。以前也写过几篇综合性的阿里云国际版vps的分析,其中有一点得到很多人的认同,那句是阿里云不管国内版还是国际版的IO读写速度实在不敢恭维,相对意义上的,如果在这...
RackNerd今天补货了3款便宜vps,最便宜的仅$9.49/年, 硬盘是SSD RAID-10 Storage,共享G口带宽,最低配给的流量也有2T,注意,这3款补货的便宜vps是intel平台。官方网站便宜VPS套餐机型均为KVM虚拟,SolusVM Control Panel ,硬盘是SSD RAID-10 Storage,共享G口带宽,大流量。CPU:1核心内存:768 MB硬盘:12 ...
parameters add为你推荐
暴风影音怎么截图暴风影音怎么截屏啊?人人时光机寻时光机歌词照片转手绘有什么软件可以把相片变成手绘的,不是美图秀秀里面的网店推广网站什么平台适合做淘宝店铺推广硬盘人电脑对人有多大辐射?人人逛街包公免费逛街打一成语mate8价格华为mate8什么时候会降价iphone6上市时间苹果6什么时候在中国大陆上市电子商务网站模板我想开发一个电子商务网站,但是想加入自己设计的模板,可以吗?什么是云平台什么是云系统?
代理主机 成都虚拟空间 欧洲免费vps 免费域名跳转 krypt openv blackfriday tightvnc 浙江独立 七夕快乐英文 ftp免费空间 重庆双线服务器托管 搜索引擎提交入口 web服务器安全 云服务器比较 注册阿里云邮箱 google搜索打不开 架设代理服务器 中美互联网论坛 傲盾代理 更多