From e03042f4e5899019da413d6e7e79c4627b07482c Mon Sep 17 00:00:00 2001 From: Paul A Rosen Date: Thu, 2 Jul 2020 12:40:49 -0700 Subject: [PATCH] diversity: replaced oppressive language with neutral definitions of the images that comprise an interferogram through the entire repository --- CONTRIBUTING.md | 2 +- README.md | 42 +- applications/ISCE2ROIPAC.py | 16 +- applications/PrepareStack.py | 62 +-- applications/alos2App.py | 74 ++-- applications/alos2burstApp.py | 78 ++-- applications/calculateBaseline.py | 18 +- applications/createGeneric.py | 4 +- applications/dpmApp.py | 26 +- applications/focus.py | 4 +- applications/insarApp.py | 56 +-- applications/make_input.py | 6 +- applications/make_raw.py | 4 +- applications/rtcApp.py | 10 +- applications/stripmapApp.py | 72 ++-- applications/topsApp.py | 30 +- applications/wbdStitcher.py | 2 +- components/isceobj/Alos2Proc/Alos2Proc.py | 314 +++++++------- .../isceobj/Alos2Proc/Alos2ProcPublic.py | 176 ++++---- .../isceobj/Alos2Proc/denseOffsetNote.txt | 8 +- components/isceobj/Alos2Proc/runCoherence.py | 4 +- .../isceobj/Alos2Proc/runDenseOffset.py | 40 +- .../isceobj/Alos2Proc/runDiffInterferogram.py | 6 +- .../isceobj/Alos2Proc/runDownloadDem.py | 6 +- components/isceobj/Alos2Proc/runFilt.py | 4 +- components/isceobj/Alos2Proc/runFiltOffset.py | 4 +- .../isceobj/Alos2Proc/runFormInterferogram.py | 34 +- .../isceobj/Alos2Proc/runFrameMosaic.py | 78 ++-- .../isceobj/Alos2Proc/runFrameOffset.py | 32 +- components/isceobj/Alos2Proc/runGeo2Rdr.py | 46 +-- components/isceobj/Alos2Proc/runGeocode.py | 8 +- .../isceobj/Alos2Proc/runGeocodeOffset.py | 12 +- components/isceobj/Alos2Proc/runIonFilt.py | 4 +- components/isceobj/Alos2Proc/runIonSubband.py | 138 +++---- components/isceobj/Alos2Proc/runIonUwrap.py | 10 +- components/isceobj/Alos2Proc/runLook.py | 4 +- components/isceobj/Alos2Proc/runPrepareSlc.py | 250 ++++++------ .../isceobj/Alos2Proc/runPreprocessor.py | 382 +++++++++--------- components/isceobj/Alos2Proc/runRdr2Geo.py | 64 +-- .../isceobj/Alos2Proc/runRdrDemOffset.py | 14 +- .../isceobj/Alos2Proc/runRectRangeOffset.py | 4 +- components/isceobj/Alos2Proc/runSlcMatch.py | 58 +-- components/isceobj/Alos2Proc/runSlcMosaic.py | 126 +++--- components/isceobj/Alos2Proc/runSlcOffset.py | 28 +- .../isceobj/Alos2Proc/runSwathMosaic.py | 60 +-- .../isceobj/Alos2Proc/runSwathOffset.py | 48 +-- .../isceobj/Alos2Proc/runUnwrapSnaphu.py | 10 +- .../isceobj/Alos2burstProc/Alos2burstProc.py | 356 ++++++++-------- .../isceobj/Alos2burstProc/runCoregCc.py | 88 ++-- .../isceobj/Alos2burstProc/runCoregGeom.py | 84 ++-- .../isceobj/Alos2burstProc/runCoregSd.py | 62 +-- .../isceobj/Alos2burstProc/runExtractBurst.py | 34 +- .../isceobj/Alos2burstProc/runFiltSd.py | 4 +- .../isceobj/Alos2burstProc/runFrameMosaic.py | 96 ++--- .../isceobj/Alos2burstProc/runFrameOffset.py | 30 +- .../isceobj/Alos2burstProc/runGeocodeSd.py | 8 +- .../isceobj/Alos2burstProc/runIonSubband.py | 146 +++---- .../isceobj/Alos2burstProc/runLookSd.py | 4 +- .../isceobj/Alos2burstProc/runPreprocessor.py | 332 +++++++-------- .../isceobj/Alos2burstProc/runSwathMosaic.py | 88 ++-- .../isceobj/Alos2burstProc/runSwathOffset.py | 44 +- .../Alos2burstProc/runUnwrapSnaphuSd.py | 26 +- components/isceobj/Attitude/__init__.py | 2 +- components/isceobj/Image/IntImage.py | 2 +- components/isceobj/InsarProc/InsarProc.py | 162 ++++---- components/isceobj/InsarProc/SConscript | 2 +- components/isceobj/InsarProc/__InsarProc.py | 80 ++-- components/isceobj/InsarProc/__init__.py | 2 +- components/isceobj/InsarProc/extractInfo.py | 18 +- components/isceobj/InsarProc/runCorrect.py | 8 +- .../isceobj/InsarProc/runEstimateHeights.py | 10 +- .../InsarProc/runEstimateHeights_peg.py | 10 +- components/isceobj/InsarProc/runFdMocomp.py | 34 +- components/isceobj/InsarProc/runFormSLC.py | 58 +-- components/isceobj/InsarProc/runFormSLCTSX.py | 24 +- .../isceobj/InsarProc/runFormSLCisce.py | 42 +- components/isceobj/InsarProc/runGeocode.py | 6 +- components/isceobj/InsarProc/runMaskImages.py | 2 +- .../isceobj/InsarProc/runMocompbaseline.py | 10 +- components/isceobj/InsarProc/runOffsetprf.py | 30 +- .../isceobj/InsarProc/runOffsetprf_ampcor.py | 36 +- .../isceobj/InsarProc/runOffsetprf_nstage.py | 28 +- components/isceobj/InsarProc/runOrbit2sch.py | 16 +- .../isceobj/InsarProc/runPrepareResamps.py | 18 +- .../isceobj/InsarProc/runPreprocessor.py | 104 ++--- .../isceobj/InsarProc/runPulseTiming.py | 8 +- components/isceobj/InsarProc/runResamp.py | 12 +- .../isceobj/InsarProc/runResamp_image.py | 6 +- .../isceobj/InsarProc/runResamp_only.py | 2 +- components/isceobj/InsarProc/runRgoffset.py | 2 +- .../isceobj/InsarProc/runRgoffset_ampcor.py | 4 +- .../isceobj/InsarProc/runRgoffset_nstage.py | 12 +- .../isceobj/InsarProc/runSetmocomppath.py | 24 +- .../InsarProc/runSetmocomppathFromFrame.py | 26 +- components/isceobj/InsarProc/runTopo.py | 8 +- .../isceobj/InsarProc/runUnwrapSnaphu.py | 6 +- .../isceobj/InsarProc/runUpdatePreprocInfo.py | 14 +- components/isceobj/IsceProc/IsceProc.py | 2 +- components/isceobj/IsceProc/runCorrect.py | 2 +- components/isceobj/IsceProc/runGeocode.py | 2 +- .../isceobj/IsceProc/runMocompbaseline.py | 4 +- .../isceobj/IsceProc/runOffsetprf_nstage.py | 20 +- .../isceobj/IsceProc/runPreprocessor.py | 8 +- components/isceobj/IsceProc/runRgoffset.py | 2 +- .../isceobj/IsceProc/runRgoffset_nstage.py | 20 +- components/isceobj/IsceProc/runTopo.py | 2 +- components/isceobj/Orbit/__init__.py | 2 +- components/isceobj/Orbit/test/test_odr.py | 2 +- components/isceobj/Planet/__init__.py | 2 +- components/isceobj/RtcProc/RtcProc.py | 14 +- components/isceobj/RtcProc/runLooks.py | 6 +- components/isceobj/RtcProc/runNormalize.py | 4 +- components/isceobj/RtcProc/runPreprocessor.py | 24 +- components/isceobj/RtcProc/runTopo.py | 24 +- components/isceobj/RtcProc/runVerifyDEM.py | 4 +- components/isceobj/Scene/__init__.py | 2 +- components/isceobj/Sensor/ERS_EnviSAT.py | 2 +- components/isceobj/Sensor/UAVSAR_RPI.py | 6 +- components/isceobj/Sensor/__init__.py | 4 +- .../Sensor/db/alos/calibration_record.xml | 2 +- .../db/alos/data_quality_summary_record.xml | 2 +- .../Sensor/db/alos/facility_record.xml | 2 +- .../Sensor/db/alos/file_pointer_record.xml | 2 +- .../isceobj/Sensor/db/alos/leader_file.xml | 2 +- .../Sensor/db/alos/map_proj_record.xml | 2 +- .../Sensor/db/alos/processed_data_record.xml | 2 +- .../Sensor/db/alos/radiometric_record.xml | 2 +- .../isceobj/Sensor/db/alos/text_record.xml | 2 +- .../isceobj/Sensor/db/alos/trailer_file.xml | 2 +- .../Sensor/db/alos/volume_descriptor.xml | 2 +- .../db/alos2_slc/data_histogram_record.xml | 2 +- .../alos2_slc/detailed_processing_record.xml | 4 +- .../db/alos2_slc/file_pointer_record.xml | 2 +- .../Sensor/db/alos2_slc/map_proj_record.xml | 2 +- .../radiometric_compensation_record.xml | 2 +- .../db/alos2_slc/radiometric_record.xml | 2 +- .../Sensor/db/alos2_slc/text_record.xml | 2 +- .../Sensor/db/alos2_slc/trailer_file.xml | 2 +- .../Sensor/db/alos2_slc/volume_descriptor.xml | 2 +- .../Sensor/db/alos_slc/attitude_record.xml | 2 +- .../db/alos_slc/data_histogram_record.xml | 2 +- .../alos_slc/detailed_processing_record.xml | 4 +- .../db/alos_slc/file_pointer_record.xml | 2 +- .../Sensor/db/alos_slc/map_proj_record.xml | 2 +- .../radiometric_compensation_record.xml | 2 +- .../Sensor/db/alos_slc/text_record.xml | 2 +- .../Sensor/db/alos_slc/trailer_file.xml | 2 +- .../Sensor/db/alos_slc/volume_descriptor.xml | 2 +- .../isceobj/Sensor/db/ers/facility_record.xml | 2 +- .../db/ers/facility_related_pcs_record.xml | 2 +- .../Sensor/db/ers/file_pointer_record.xml | 2 +- .../isceobj/Sensor/db/ers/image_file.xml | 2 +- .../isceobj/Sensor/db/ers/map_proj_record.xml | 2 +- .../isceobj/Sensor/db/ers/scene_record.xml | 2 +- .../isceobj/Sensor/db/ers/text_record.xml | 2 +- .../Sensor/db/ers_slc/facility_record.xml | 2 +- .../ers_slc/facility_related_pcs_record.xml | 2 +- .../Sensor/db/ers_slc/file_pointer_record.xml | 2 +- .../isceobj/Sensor/db/ers_slc/image_file.xml | 2 +- .../isceobj/Sensor/db/ers_slc/text_record.xml | 2 +- .../Sensor/db/jers/facility_record.xml | 2 +- .../Sensor/db/jers/file_pointer_record.xml | 2 +- .../isceobj/Sensor/db/jers/image_file.xml | 2 +- .../isceobj/Sensor/db/jers/image_record.xml | 2 +- .../isceobj/Sensor/db/jers/leader_file.xml | 2 +- .../Sensor/db/jers/map_proj_record.xml | 2 +- .../isceobj/Sensor/db/jers/scene_record.xml | 2 +- .../isceobj/Sensor/db/jers/text_record.xml | 2 +- .../Sensor/db/jers/volume_descriptor.xml | 2 +- .../Sensor/db/radarsat/attitude_record.xml | 2 +- .../db/radarsat/data_histogram_record.xml | 2 +- .../radarsat/data_quality_summary_record.xml | 2 +- .../radarsat/detailed_processing_record.xml | 4 +- .../db/radarsat/file_pointer_record.xml | 2 +- .../Sensor/db/radarsat/map_proj_record.xml | 2 +- .../radiometric_compensation_record.xml | 2 +- .../Sensor/db/radarsat/radiometric_record.xml | 2 +- .../Sensor/db/radarsat/scene_record.xml | 2 +- .../Sensor/db/radarsat/text_record.xml | 2 +- .../Sensor/db/radarsat/trailer_file.xml | 2 +- .../Sensor/db/radarsat/volume_descriptor.xml | 2 +- .../db/radarsat_slc/attitude_record.xml | 2 +- .../db/radarsat_slc/data_histogram_record.xml | 2 +- .../data_quality_summary_record.xml | 2 +- .../detailed_processing_record.xml | 4 +- .../db/radarsat_slc/file_pointer_record.xml | 2 +- .../Sensor/db/radarsat_slc/image_file.xml | 2 +- .../Sensor/db/radarsat_slc/image_record.xml | 2 +- .../db/radarsat_slc/map_proj_record.xml | 2 +- .../radiometric_compensation_record.xml | 2 +- .../db/radarsat_slc/radiometric_record.xml | 2 +- .../Sensor/db/radarsat_slc/scene_record.xml | 2 +- .../Sensor/db/radarsat_slc/text_record.xml | 2 +- .../Sensor/db/radarsat_slc/trailer_file.xml | 2 +- .../db/radarsat_slc/volume_descriptor.xml | 2 +- .../db/risat/detailed_processing_record.xml | 2 +- .../risat_slc/detailed_processing_record.xml | 2 +- .../Sensor/src/ALOS_pre_process/utils.c | 10 +- .../isceobj/StripmapProc/CMakeLists.txt | 2 +- components/isceobj/StripmapProc/Factories.py | 2 +- components/isceobj/StripmapProc/SConscript | 2 +- .../isceobj/StripmapProc/StripmapProc.py | 118 +++--- .../isceobj/StripmapProc/__StripmapProc.py | 80 ++-- .../isceobj/StripmapProc/extractInfo.py | 18 +- components/isceobj/StripmapProc/runCrop.py | 64 +-- .../isceobj/StripmapProc/runDenseOffsets.py | 18 +- .../isceobj/StripmapProc/runDispersive.py | 10 +- components/isceobj/StripmapProc/runGeo2rdr.py | 4 +- components/isceobj/StripmapProc/runGeocode.py | 4 +- .../isceobj/StripmapProc/runInterferogram.py | 48 +-- .../isceobj/StripmapProc/runPreprocessor.py | 160 ++++---- components/isceobj/StripmapProc/runROI.py | 36 +- ...eTiming.py => runRefineSecondaryTiming.py} | 30 +- .../isceobj/StripmapProc/runResampleSlc.py | 32 +- .../StripmapProc/runResampleSubbandSlc.py | 40 +- .../isceobj/StripmapProc/runSplitSpectrum.py | 74 ++-- components/isceobj/StripmapProc/runTopo.py | 4 +- .../isceobj/StripmapProc/runUnwrapSnaphu.py | 18 +- .../isceobj/StripmapProc/runVerifyDEM.py | 10 +- components/isceobj/TopsProc/TopsProc.py | 68 ++-- components/isceobj/TopsProc/runBurstIfg.py | 62 +-- .../isceobj/TopsProc/runCoarseOffsets.py | 32 +- .../isceobj/TopsProc/runCoarseResamp.py | 46 +-- .../isceobj/TopsProc/runComputeBaseline.py | 52 +-- .../isceobj/TopsProc/runDenseOffsets.py | 66 +-- components/isceobj/TopsProc/runESD.py | 8 +- components/isceobj/TopsProc/runFineOffsets.py | 26 +- components/isceobj/TopsProc/runFineResamp.py | 126 +++--- components/isceobj/TopsProc/runIon.py | 290 ++++++------- components/isceobj/TopsProc/runMergeBursts.py | 28 +- components/isceobj/TopsProc/runMergeSLCs.py | 16 +- components/isceobj/TopsProc/runOverlapIfg.py | 68 ++-- components/isceobj/TopsProc/runPrepESD.py | 84 ++-- .../isceobj/TopsProc/runPreprocessor.py | 38 +- components/isceobj/TopsProc/runRangeCoreg.py | 20 +- .../isceobj/TopsProc/runSubsetOverlaps.py | 26 +- components/isceobj/TopsProc/runTopo.py | 20 +- components/isceobj/TopsProc/runVerifyDEM.py | 12 +- .../TopsProc/run_downsample_unwrapper.py | 2 +- components/isceobj/Unwrap/snaphu.py | 6 +- components/isceobj/Unwrap/snaphu_mcf.py | 6 +- .../Util/Library/python/PolyFactory.py | 2 +- components/isceobj/Util/decorators.py | 2 +- .../isceobj/Util/denseoffsets/DenseOffsets.py | 32 +- .../Util/estimateoffsets/EstimateOffsets.py | 8 +- components/isceobj/Util/make_los/Make_los.py | 12 +- .../Util/test/src/testInterpolator.f90 | 2 +- .../isceobj/Util/test/testInterpolator.py | 2 +- components/isceobj/XmlUtil/FastXML.py | 20 +- components/iscesys/Component/manager.py | 2 +- components/iscesys/DataManager/SConscript | 2 +- components/iscesys/DataManager/SRTMManager.py | 2 +- components/iscesys/DataManager/__init__.py | 2 +- components/iscesys/DataRetriever/__init__.py | 2 +- components/iscesys/DataRetriever/gzipfile.py | 2 +- components/iscesys/Parsers/rdf/test/test.py | 20 +- components/iscesys/Stitcher/Stitcher.py | 2 +- components/iscesys/Stitcher/__init__.py | 2 +- components/mroipac/ampcor/Ampcor.py | 10 +- components/mroipac/ampcor/DenseAmpcor.py | 8 +- components/mroipac/ampcor/NStage.py | 8 +- components/mroipac/ampcor/src/ampcor.F | 4 +- components/mroipac/baseline/Baseline.py | 98 ++--- components/mroipac/dopiq/__init__.py | 2 +- .../mroipac/getPegInfo/src/get_peg_info.F | 2 +- components/stdproc/orbit/__init__.py | 2 +- .../orbit/mocompbaseline/Mocompbaseline.py | 16 +- .../stdproc/orbit/mocompbaseline/SConscript | 2 +- .../orbit/setmocomppath/Setmocomppath.py | 36 +- components/stdproc/rectify/geocode/Geocode.py | 6 +- components/stdproc/stdproc/correct/Correct.py | 94 ++--- .../stdproc/crossmul/include/crossmul.h | 8 +- .../stdproc/crossmul/src/crossmulState.F | 8 +- components/stdproc/stdproc/estamb/Estamb.py | 16 +- .../stdproc/offsetpoly/test/offpoly.py | 4 +- components/stdproc/stdproc/resamp/__init__.py | 2 +- .../stdproc/stdproc/resamp_image/__init__.py | 2 +- .../stdproc/resamp_slc/src/resamp_slc.f90 | 2 +- components/stdproc/stdproc/topo/Topo.py | 6 +- components/stdproc/stdproc/topo/__init__.py | 2 +- components/zerodop/GPUampcor/cuda/GPUamp.cu | 12 +- components/zerodop/GPUampcor/src/Ampcor.cpp | 2 +- .../GPUampcor/test_script/gpuAmpcorTest.py | 16 +- .../zerodop/GPUresampslc/src/ResampSlc.cpp | 10 +- components/zerodop/GPUtopozero/__init__.py | 2 +- .../zerodop/GPUtopozero/cuda/gpuTopo.cu | 2 +- .../GPUtopozero/test_script/gpu-topo.py | 8 +- components/zerodop/__init__.py | 2 +- components/zerodop/baseline/Baseline.py | 82 ++-- components/zerodop/geozero/Geozero.py | 6 +- contrib/PyCuAmpcor/__init__.py | 2 +- contrib/PyCuAmpcor/examples/GeoTiffSample.py | 22 +- contrib/PyCuAmpcor/examples/cuDenseOffsets.py | 40 +- contrib/PyCuAmpcor/examples/glacierSample.py | 16 +- .../examples/varyGrossOffsetSample.py | 16 +- contrib/PyCuAmpcor/src/PyCuAmpcor.pyx | 154 +++---- contrib/PyCuAmpcor/src/cuAmpcorChunk.cu | 240 +++++------ contrib/PyCuAmpcor/src/cuAmpcorChunk.h | 26 +- contrib/PyCuAmpcor/src/cuAmpcorController.cu | 36 +- contrib/PyCuAmpcor/src/cuAmpcorController.h | 40 +- contrib/PyCuAmpcor/src/cuAmpcorParameter.cu | 184 ++++----- contrib/PyCuAmpcor/src/cuAmpcorParameter.h | 66 +-- contrib/PyCuAmpcor/src/cuAmpcorUtil.h | 2 +- contrib/PyCuAmpcor/src/cuOffset.cu | 6 +- contrib/alos2filter/__init__.py | 2 +- contrib/alos2proc/alos2proc.py | 12 +- contrib/alos2proc/src/extract_burst.c | 2 +- contrib/alos2proc/src/mbf.c | 6 +- contrib/alos2proc/src/resamp.c | 14 +- contrib/alos2proc/src/rg_filter.c | 4 +- contrib/alos2proc_f/__init__.py | 2 +- contrib/downsample_unwrapper/__init__.py | 2 +- .../downsample_unwrapper.py | 2 +- .../downsample_unwrapper/run_unwrap_snaphu.py | 2 +- contrib/rfi/mask.py | 14 +- contrib/stack/stripmapStack/Stack.py | 322 +++++++-------- contrib/stack/stripmapStack/adjustFrame.py | 10 +- contrib/stack/stripmapStack/baseline.py | 20 +- contrib/stack/stripmapStack/baselineGrid.py | 56 +-- contrib/stack/stripmapStack/bbox.py | 8 +- contrib/stack/stripmapStack/checkOrbit.py | 8 +- contrib/stack/stripmapStack/crossmul.py | 12 +- contrib/stack/stripmapStack/denseOffsets.py | 20 +- contrib/stack/stripmapStack/deskewALOS2.py | 22 +- contrib/stack/stripmapStack/estimateIono.py | 4 +- .../{fixMaster.py => fixReference.py} | 8 +- contrib/stack/stripmapStack/geo2rdr.py | 26 +- contrib/stack/stripmapStack/geocode.py | 8 +- contrib/stack/stripmapStack/geocodeGdal.py | 2 +- contrib/stack/stripmapStack/insarPair.py | 2 +- contrib/stack/stripmapStack/insarStack.py | 26 +- contrib/stack/stripmapStack/invertMisreg.py | 8 +- contrib/stack/stripmapStack/invertOffsets.py | 42 +- .../stripmapStack/prepStripmap4timeseries.py | 6 +- ...sterStackCopy.py => referenceStackCopy.py} | 18 +- ...sterTiming.py => refineReferenceTiming.py} | 20 +- ...laveTiming.py => refineSecondaryTiming.py} | 52 +-- contrib/stack/stripmapStack/resampleSlc.py | 68 ++-- .../stripmapStack/resampleSlc_subBand.py | 74 ++-- contrib/stack/stripmapStack/splitSpectrum.py | 2 +- .../stripmapStack/splitSpectrum_multiple.py | 2 +- contrib/stack/stripmapStack/stackStripMap.py | 80 ++-- contrib/stack/stripmapStack/topo.py | 14 +- contrib/stack/stripmapStack/unwrap.py | 16 +- contrib/stack/topsStack/README.md | 18 +- contrib/stack/topsStack/SentinelWrapper.py | 10 +- contrib/stack/topsStack/Stack.py | 298 +++++++------- contrib/stack/topsStack/baselineGrid.py | 60 +-- contrib/stack/topsStack/computeBaseline.py | 78 ++-- .../stack/topsStack/coregSwathSLCProduct.py | 2 +- contrib/stack/topsStack/cuDenseOffsets.py | 42 +- contrib/stack/topsStack/denseOffsets.py | 20 +- .../stack/topsStack/estimateAzimuthMisreg.py | 8 +- .../stack/topsStack/estimateRangeMisreg.py | 62 +-- .../topsStack/extractCommonValidRegion.py | 74 ++-- contrib/stack/topsStack/generateIgram.py | 136 +++---- contrib/stack/topsStack/geo2rdr.py | 50 +-- contrib/stack/topsStack/geocodeGdal.py | 2 +- contrib/stack/topsStack/geocodeIsce.py | 18 +- contrib/stack/topsStack/invertMisreg.py | 8 +- contrib/stack/topsStack/mergeBursts.py | 20 +- contrib/stack/topsStack/overlap_withDEM.py | 152 +++---- contrib/stack/topsStack/plotBursts.py | 6 +- ...py => plotBursts_reference_secondaries.py} | 12 +- contrib/stack/topsStack/plotMisreg.py | 2 +- contrib/stack/topsStack/prep4timeseries.py | 8 +- contrib/stack/topsStack/resamp_withCarrier.py | 82 ++-- contrib/stack/topsStack/s1a_isce_utils.py | 160 ++++---- contrib/stack/topsStack/sentinelApp.py | 2 +- contrib/stack/topsStack/stackSentinel.py | 134 +++--- .../{subsetMaster.py => subsetReference.py} | 48 +-- contrib/stack/topsStack/topo.py | 22 +- contrib/stack/topsStack/unwrap.py | 10 +- .../prepStackToStaMPS/bin/get_quickview_isce | 28 +- .../prepStackToStaMPS/bin/isce2stamps | 10 +- .../prepStackToStaMPS/bin/isce_los2stamps_ENU | 2 +- ..._isce => make_single_reference_stack_isce} | 144 +++---- .../bin/make_small_baselines_isce | 76 ++-- .../bin/mt_extract_info_isce | 6 +- .../prepStackToStaMPS/bin/mt_prep_isce | 4 +- .../bin/run_SLCcropStack.csh | 10 +- .../bin/step_baseline_stack.py | 84 ++-- .../prepStackToStaMPS/bin/step_filt_coh_isce | 4 +- .../prepStackToStaMPS/bin/step_multilook_isce | 6 +- docs/dev/Example0_autoxml.py | 32 +- docs/dev/Example1_ampcor.py | 42 +- docs/dev/Example2_ENU2LOS.py | 2 +- docs/dev/Example3_orbits.py | 6 +- examples/input_files/README.txt | 46 +-- examples/input_files/alos2/alos2App.xml | 34 +- examples/input_files/alos2/alos2_tutorial.txt | 28 +- examples/input_files/alos2/alos2burstApp.xml | 30 +- .../scansar-scansar/1/alos2App.xml | 28 +- .../scansar-scansar/2/alos2App.xml | 28 +- .../scansar-scansar/3/alos2App.xml | 28 +- .../scansar-scansar/4/alos2App.xml | 28 +- .../scansar-scansar_7s/alos2App.xml | 28 +- .../scansar-scansar_burst/1/alos2burstApp.xml | 24 +- .../scansar-scansar_burst/2/alos2burstApp.xml | 24 +- .../scansar-scansar_burst/3/alos2burstApp.xml | 24 +- .../scansar-scansar_burst/4/alos2burstApp.xml | 24 +- .../scansar-stripmap/1/alos2App.xml | 28 +- .../scansar-stripmap/2/alos2App.xml | 28 +- .../stripmap-stripmap/1/alos2App.xml | 28 +- .../stripmap-stripmap/2/alos2App.xml | 28 +- .../stripmap-stripmap/3/alos2App.xml | 28 +- .../stripmap-stripmap/4/alos2App.xml | 28 +- examples/input_files/insarApp.xml | 34 +- .../input_files/legacy/insarALOS_latest.xml | 4 +- .../legacy/insarALOS_pre_svn704.xml | 8 +- .../input_files/legacy/insarERS_latest.xml | 4 +- .../legacy/insarEnvisat_latest.xml | 8 +- .../legacy/insarEnvisat_pre_svn704.xml | 8 +- .../input_files/legacy/insarRSAT2_latest.xml | 4 +- .../input_files/legacy/insarTSX_latest.xml | 8 +- .../{master_ALOS.xml => reference_ALOS.xml} | 2 +- .../{master_ALOS2.xml => reference_ALOS2.xml} | 4 +- ..._SKYMED.xml => reference_COSMO_SKYMED.xml} | 2 +- ...SLC.xml => reference_COSMO_SKYMED_SLC.xml} | 2 +- .../{master_ERS.xml => reference_ERS.xml} | 2 +- ...ster_EnviSAT.xml => reference_EnviSAT.xml} | 6 +- ...er_KOMPSAT5.xml => reference_KOMPSAT5.xml} | 2 +- ..._RADARSAT1.xml => reference_RADARSAT1.xml} | 2 +- ..._RADARSAT2.xml => reference_RADARSAT2.xml} | 2 +- ...ISAT1_SLC.xml => reference_RISAT1_SLC.xml} | 4 +- ...ster_ROI_PAC.xml => reference_ROI_PAC.xml} | 2 +- ..._SENTINEL1.xml => reference_SENTINEL1.xml} | 2 +- ...D_RGZERO.xml => reference_SICD_RGZERO.xml} | 2 +- ..._TERRASARX.xml => reference_TERRASARX.xml} | 14 +- ...INEL1.xml => reference_TOPS_SENTINEL1.xml} | 8 +- examples/input_files/roiApp.xml | 8 +- examples/input_files/stripmapApp.xml | 8 +- examples/input_files/topsApp.xml | 42 +- release_note.txt | 2 +- sec.lst | 162 ++++++++ 435 files changed, 6229 insertions(+), 6049 deletions(-) rename components/isceobj/StripmapProc/{runRefineSlaveTiming.py => runRefineSecondaryTiming.py} (81%) mode change 120000 => 100755 components/iscesys/Parsers/rdf/test/test.py rename contrib/stack/stripmapStack/{fixMaster.py => fixReference.py} (80%) rename contrib/stack/stripmapStack/{masterStackCopy.py => referenceStackCopy.py} (72%) rename contrib/stack/stripmapStack/{refineMasterTiming.py => refineReferenceTiming.py} (87%) rename contrib/stack/stripmapStack/{refineSlaveTiming.py => refineSecondaryTiming.py} (78%) rename contrib/stack/topsStack/{plotBursts_master_slaves.py => plotBursts_reference_secondaries.py} (83%) rename contrib/stack/topsStack/{subsetMaster.py => subsetReference.py} (80%) rename contrib/timeseries/prepStackToStaMPS/bin/{make_single_master_stack_isce => make_single_reference_stack_isce} (63%) rename examples/input_files/{master_ALOS.xml => reference_ALOS.xml} (96%) rename examples/input_files/{master_ALOS2.xml => reference_ALOS2.xml} (92%) rename examples/input_files/{master_COSMO_SKYMED.xml => reference_COSMO_SKYMED.xml} (92%) rename examples/input_files/{master_COSMO_SKYMED_SLC.xml => reference_COSMO_SKYMED_SLC.xml} (91%) rename examples/input_files/{master_ERS.xml => reference_ERS.xml} (96%) rename examples/input_files/{master_EnviSAT.xml => reference_EnviSAT.xml} (89%) rename examples/input_files/{master_KOMPSAT5.xml => reference_KOMPSAT5.xml} (91%) rename examples/input_files/{master_RADARSAT1.xml => reference_RADARSAT1.xml} (96%) rename examples/input_files/{master_RADARSAT2.xml => reference_RADARSAT2.xml} (94%) rename examples/input_files/{master_RISAT1_SLC.xml => reference_RISAT1_SLC.xml} (89%) rename examples/input_files/{master_ROI_PAC.xml => reference_ROI_PAC.xml} (96%) rename examples/input_files/{master_SENTINEL1.xml => reference_SENTINEL1.xml} (93%) rename examples/input_files/{master_SICD_RGZERO.xml => reference_SICD_RGZERO.xml} (88%) rename examples/input_files/{master_TERRASARX.xml => reference_TERRASARX.xml} (85%) rename examples/input_files/{master_TOPS_SENTINEL1.xml => reference_TOPS_SENTINEL1.xml} (92%) create mode 100644 sec.lst diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 7d5ec83..7abe908 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -58,7 +58,7 @@ git reset --hard origin/master ``` git checkout master -(potentially update your local master against upstream, as described above) +(potentially update your local reference against upstream, as described above) git checkout -b my_new_feature_branch # do work. For example: diff --git a/README.md b/README.md index b14851e..e866962 100644 --- a/README.md +++ b/README.md @@ -451,7 +451,7 @@ for example: >>> f = open("PICKLE/formslc") >>> import pickle >>> a = pickle.load(f) ->>> o = f.getMasterOrbit() +>>> o = f.getReferenceOrbit() >>> t, x, p, off = o._unpackOrbit() >>> print(t) >>> print(x) @@ -529,7 +529,7 @@ The basic (ALOS) input file looks like this (indentation is optional): ALOS - + /a/b/c/20070215/IMG-HH-ALPSRP056480670-H1.0__A @@ -538,7 +538,7 @@ The basic (ALOS) input file looks like this (indentation is optional): 20070215 - + /a/b/c/20061231/IMG-HH-ALPSRP049770670-H1.0__A @@ -564,7 +564,7 @@ properties and other components that are configurable. The property tags give the values of a single variable in the ISCE code. One of the properties defined in stripmapApp.py is the "sensor name" property. In the above example it is given the value ALOS. In order to run stripmapApp.py two images need to -be specified. These are defined as components named 'Master' and 'Slave'. +be specified. These are defined as components named 'Reference' and 'Secondary'. These components have properties named 'IMAGEFILE', 'LEADERFILE', and 'OUTPUT' with the values given in the above example. @@ -587,10 +587,10 @@ between three files as follows: ALOS - + 20070215.xml - + 20061231.xml @@ -600,7 +600,7 @@ between three files as follows: #### 20070215.xml ```xml - + /a/b/c/20070215/IMG-HH-ALPSRP056480670-H1.0__A @@ -614,7 +614,7 @@ between three files as follows: #### 20061231.xml ```xml - + /a/b/c/20061231/IMG-HH-ALPSRP049770670-H1.0__A @@ -636,7 +636,7 @@ The inputs are Sentinel GRD zipfiles 32618 100 bilinear - + $dir$/rtcApp/data/S1A_IW_GRDH_1SDV_20181221T225104_20181221T225129_025130_02C664_B46C.zip $dir$/orbits $dir$/rtcApp/output @@ -679,7 +679,7 @@ This line creates an instance of the class Insar (that is given the family name Other applications could be created that could make several different instances of the Insar. Each instance would have the family name "insar" and would be given a unique instance name. This is possible for every component. In the -above example xml files instances name "Master" and "Slave" of a family named +above example xml files instances name "Reference" and "Secondary" of a family named "alos" are created. ### Component Configuration Files: Locations, Names, Priorities @@ -710,23 +710,23 @@ the filename can be anything you choose. Configuration parameters can also be entered directly on the command line as in the following example: ```bash -> stripmapApp.py insar.master.output=master_c.raw +> stripmapApp.py insar.reference.output=reference_c.raw ``` This example indicates that the variable named 'output' of the Component -named 'master' belonging to the Component (or Application) named 'insar' -will be given the name "master\_c.raw". +named 'reference' belonging to the Component (or Application) named 'insar' +will be given the name "reference\_c.raw". The priority sequence on the command line goes from lowest priority on the left to highest priority on the right. So, if we use the command line, ```bash -> stripmapApp.py myInputFile.xml insar.master.output=master_c.raw +> stripmapApp.py myInputFile.xml insar.reference.output=reference_c.raw ``` -where the myInputFile.xml file also gives a value for the insar master output -file as master\_d.raw, then the one defined on the right will win, i.e., -master\_c.raw. +where the myInputFile.xml file also gives a value for the insar reference output +file as reference\_d.raw, then the one defined on the right will win, i.e., +reference\_c.raw. (2) The next priority location is the local directory in which stripmapApp.py is executed. Any xml file placed in this directory named according to either the @@ -799,16 +799,16 @@ will see that the call to \_\_init\_\_ passes 'family=self.class.family' and 'name=name' to the Component constructor (super class of Ampcor). The family name is given as "nstage" on line 265. The instance name is passed as the value of the 'name=name' and was passed to it from whatever program created it. -Nstage is created in components/isceobj/StripmapProc/runRefineSlaveTiming.py where -it is given the name 'master_offset1' on line 35. If you are setting a parameter that +Nstage is created in components/isceobj/StripmapProc/runRefineSecondaryTiming.py where +it is given the name 'reference_offset1' on line 35. If you are setting a parameter that should be the same for all uses of Ampcor, then you can use the family name 'ampcor' for the name of the xml file as 'ampcor.xml'. It is more -likely that you will want to use the instance name 'master\_offset1.xml' +likely that you will want to use the instance name 'reference\_offset1.xml' Use the family name 'ampcor' for the component tag 'name'. Example for SLC matching use of Ampcor: -Filename: master\_offset1.xml: +Filename: reference\_offset1.xml: ```xml diff --git a/applications/ISCE2ROIPAC.py b/applications/ISCE2ROIPAC.py index 0f5971a..048242e 100644 --- a/applications/ISCE2ROIPAC.py +++ b/applications/ISCE2ROIPAC.py @@ -26,8 +26,8 @@ class insarProcXML(object): def raw_rsc(self, key=None, write=False): '''Write out the RSC files for Raw data.''' - if key not in ['master', 'slave']: - raise ValueError('Raw Files can only be written for master or slave.') + if key not in ['reference', 'secondary']: + raise ValueError('Raw Files can only be written for reference or secondary.') rsc = OrderedDict() @@ -137,8 +137,8 @@ class insarProcXML(object): Create rsc files for all the interferograms generated by ISCE. ''' - if key not in ['master', 'slave']: - raise ValueError('SLC files can only be written for master or slave.') + if key not in ['reference', 'secondary']: + raise ValueError('SLC files can only be written for reference or secondary.') if raw is None: rsc = self.raw_rsc(key=key, write=False) @@ -221,8 +221,8 @@ if __name__ == '__main__': '''Run the test on input xml file.''' converter = insarProcXML() - master_raw_rsc = converter.raw_rsc(key='master', write=True) - slave_raw_rsc = converter.raw_rsc(key='slave', write=True) + reference_raw_rsc = converter.raw_rsc(key='reference', write=True) + secondary_raw_rsc = converter.raw_rsc(key='secondary', write=True) - master_slc_rsc = converter.slc_rsc(raw=master_raw_rsc, key='master', write=True) - slave_slc_rsc = converter.slc_rsc(raw=slave_raw_rsc, key='slave', write=True) + reference_slc_rsc = converter.slc_rsc(raw=reference_raw_rsc, key='reference', write=True) + secondary_slc_rsc = converter.slc_rsc(raw=secondary_raw_rsc, key='secondary', write=True) diff --git a/applications/PrepareStack.py b/applications/PrepareStack.py index 01055c7..ebb89ee 100755 --- a/applications/PrepareStack.py +++ b/applications/PrepareStack.py @@ -78,7 +78,7 @@ class orbit_info: self.slook = np.sqrt(1-self.clook**2) # print('Estimated Look Angle: %3.2f degrees'%(np.arccos(self.clook)*180.0/np.pi)) - def getBaseline(self, slave): + def getBaseline(self, secondary): '''Compute baseline between current object and another orbit object.''' ind = np.int(self.nvec/2) @@ -93,17 +93,17 @@ class orbit_info: vvec = np.cross(crp, rvec) mvel = np.linalg.norm(mvel) - ind = np.int(slave.nvec/2) #First guess - spos = np.array(slave.pos[ind]) - svel = np.array(slave.vel[ind]) + ind = np.int(secondary.nvec/2) #First guess + spos = np.array(secondary.pos[ind]) + svel = np.array(secondary.vel[ind]) svel = np.linalg.norm(svel) dx = spos - mpos; - z_offset = slave.prf*np.dot(dx, vvec)/mvel + z_offset = secondary.prf*np.dot(dx, vvec)/mvel ind = np.int(ind - z_offset) #Refined estimate - spos = slave.pos[ind] - svel = slave.vel[ind] + spos = secondary.pos[ind] + svel = secondary.vel[ind] svel = np.linalg.norm(svel) dx = spos-mpos @@ -169,16 +169,16 @@ if __name__ == '__main__': Days = np.zeros(nSar) #######Setting the first scene as temporary reference. - master = Orbits[0] + reference = Orbits[0] - Dopplers[0] = master.fd - Days[0] = master.dt.toordinal() + Dopplers[0] = reference.fd + Days[0] = reference.dt.toordinal() for k in xrange(1,nSar): - slave = Orbits[k] - Bperp[k] = master.getBaseline(slave) - Dopplers[k] = slave.fd - Days[k] = slave.dt.toordinal() + secondary = Orbits[k] + Bperp[k] = reference.getBaseline(secondary) + Dopplers[k] = secondary.fd + Days[k] = secondary.dt.toordinal() print("************************************") @@ -193,7 +193,7 @@ if __name__ == '__main__': geomRho = (1-np.clip(np.abs(Bperp[:,None]-Bperp[None,:])/inps.Bcrit, 0., 1.)) tempRho = np.exp(-1.0*np.abs(Days[:,None]-Days[None,:])/inps.Tau) - dopRho = (np.abs(Dopplers[:,None] - Dopplers[None,:])/ master.prf) < inps.dop + dopRho = (np.abs(Dopplers[:,None] - Dopplers[None,:])/ reference.prf) < inps.dop Rho = geomRho * tempRho * dopRho for kk in xrange(nSar): @@ -205,17 +205,17 @@ if __name__ == '__main__': ####Currently sorting on average coherence. - masterChoice = np.argsort(avgRho) - masterOrbit = Orbits[masterChoice[0]] - masterBperp = Bperp[masterChoice[0]] + referenceChoice = np.argsort(avgRho) + referenceOrbit = Orbits[referenceChoice[0]] + referenceBperp = Bperp[referenceChoice[0]] print('*************************************') - print('Ranking for Master Scene Selection: ') + print('Ranking for Reference Scene Selection: ') print('**************************************') print('Rank Index Date nViable Avg. Coh.' ) for kk in xrange(nSar): - ind = masterChoice[kk] + ind = referenceChoice[kk] print('{0:>3} {1:>3} {2:>10} {3:>4} {4:>2.3f}'.format(kk+1, ind+1, Orbits[ind].dt.strftime('%Y-%m-%d'), numViable[ind], avgRho[ind])) print('***************************************') @@ -234,31 +234,31 @@ if __name__ == '__main__': [ii,jj] = np.where(Rho > inps.cThresh) - print('Master Slave Bperp Deltat') + print('Reference Secondary Bperp Deltat') for mind, sind in itertools.izip(ii,jj): - master = Orbits[mind] - slave = Orbits[sind] - if master.dt > slave.dt: - print('{0:>10} {1:>10} {2:>4.2f} {3:>4.2f}'.format(master.dt.strftime('%Y-%m-%d'), slave.dt.strftime('%Y-%m-%d'), Bperp[mind]-Bperp[sind], Days[mind] - Days[sind])) - xmlname = '%s/insar_%s_%s.xml'%(inps.dirname, master.dt.strftime('%Y%m%d'), slave.dt.strftime('%Y%m%d')) + reference = Orbits[mind] + secondary = Orbits[sind] + if reference.dt > secondary.dt: + print('{0:>10} {1:>10} {2:>4.2f} {3:>4.2f}'.format(reference.dt.strftime('%Y-%m-%d'), secondary.dt.strftime('%Y-%m-%d'), Bperp[mind]-Bperp[sind], Days[mind] - Days[sind])) + xmlname = '%s/insar_%s_%s.xml'%(inps.dirname, reference.dt.strftime('%Y%m%d'), secondary.dt.strftime('%Y%m%d')) -# sarxml.sartoinsarXML(master.filename, slave.filename, base=inps.base, out=xmlname) +# sarxml.sartoinsarXML(reference.filename, secondary.filename, base=inps.base, out=xmlname) print('***************************************') - #######Currently picks master peg point. + #######Currently picks reference peg point. print('***************************************') - commonPeg = masterOrbit.peg + commonPeg = referenceOrbit.peg print('Common peg point: ') print(commonPeg) - print('Bperp Range: [%f , %f] '%(Bperp.min()-masterBperp, Bperp.max()-masterBperp)) + print('Bperp Range: [%f , %f] '%(Bperp.min()-referenceBperp, Bperp.max()-referenceBperp)) ######Choose median doppler commonDop = np.median(Dopplers) maxDop = np.max(Dopplers) minDop = np.min(Dopplers) - varDop = np.max(np.abs(Dopplers-commonDop))/masterOrbit.prf + varDop = np.max(np.abs(Dopplers-commonDop))/referenceOrbit.prf print('Common Doppler: ', commonDop) print('Doppler Range: [%f, %f]'%(minDop, maxDop)) diff --git a/applications/alos2App.py b/applications/alos2App.py index e3cda6c..fec726f 100755 --- a/applications/alos2App.py +++ b/applications/alos2App.py @@ -28,49 +28,49 @@ logging.config.fileConfig( logger = logging.getLogger('isce.insar') -MASTER_DIR = Application.Parameter('masterDir', - public_name='master directory', +REFERENCE_DIR = Application.Parameter('referenceDir', + public_name='reference directory', default=None, type=str, mandatory=False, - doc="master data directory") + doc="reference data directory") -SLAVE_DIR = Application.Parameter('slaveDir', - public_name='slave directory', +SECONDARY_DIR = Application.Parameter('secondaryDir', + public_name='secondary directory', default=None, type=str, mandatory=False, - doc="slave data directory") + doc="secondary data directory") -MASTER_FRAMES = Application.Parameter('masterFrames', - public_name = 'master frames', +REFERENCE_FRAMES = Application.Parameter('referenceFrames', + public_name = 'reference frames', default = None, type=str, container=list, mandatory=False, - doc = 'master frames to process') + doc = 'reference frames to process') -SLAVE_FRAMES = Application.Parameter('slaveFrames', - public_name = 'slave frames', +SECONDARY_FRAMES = Application.Parameter('secondaryFrames', + public_name = 'secondary frames', default = None, type=str, container=list, mandatory=False, - doc = 'slave frames to process') + doc = 'secondary frames to process') -MASTER_POLARIZATION = Application.Parameter('masterPolarization', - public_name='master polarization', +REFERENCE_POLARIZATION = Application.Parameter('referencePolarization', + public_name='reference polarization', default='HH', type=str, mandatory=False, - doc="master polarization to process") + doc="reference polarization to process") -SLAVE_POLARIZATION = Application.Parameter('slavePolarization', - public_name='slave polarization', +SECONDARY_POLARIZATION = Application.Parameter('secondaryPolarization', + public_name='secondary polarization', default='HH', type=str, mandatory=False, - doc="slave polarization to process") + doc="secondary polarization to process") #for ScanSAR-stripmap, always process all swaths, #user's settings are overwritten @@ -524,21 +524,21 @@ RENDERER = Application.Parameter('renderer', ##################################################################### #Facility declarations -MASTER = Application.Facility('master', - public_name='master', +REFERENCE = Application.Facility('reference', + public_name='reference', module='isceobj.Sensor.MultiMode', factory='createSensor', - args=('ALOS2', 'master'), + args=('ALOS2', 'reference'), mandatory=True, - doc="master component") + doc="reference component") -SLAVE = Application.Facility('slave', - public_name='slave', +SECONDARY = Application.Facility('secondary', + public_name='secondary', module='isceobj.Sensor.MultiMode', factory='createSensor', - args=('ALOS2','slave'), + args=('ALOS2','secondary'), mandatory=True, - doc="slave component") + doc="secondary component") # RUN_UNWRAPPER = Application.Facility('runUnwrapper', # public_name='Run unwrapper', @@ -568,12 +568,12 @@ _INSAR = Application.Facility('_insar', ## Common interface for all insar applications. class Alos2InSAR(Application): family = 'alos2insar' - parameter_list = (MASTER_DIR, - SLAVE_DIR, - MASTER_FRAMES, - SLAVE_FRAMES, - MASTER_POLARIZATION, - SLAVE_POLARIZATION, + parameter_list = (REFERENCE_DIR, + SECONDARY_DIR, + REFERENCE_FRAMES, + SECONDARY_FRAMES, + REFERENCE_POLARIZATION, + SECONDARY_POLARIZATION, STARTING_SWATH, ENDING_SWATH, DEM, @@ -637,8 +637,8 @@ class Alos2InSAR(Application): PICKLE_LOAD_DIR, RENDERER) - facility_list = (MASTER, - SLAVE, + facility_list = (REFERENCE, + SECONDARY, #RUN_UNWRAPPER, #RUN_UNWRAP_2STAGE, _INSAR) @@ -793,7 +793,7 @@ class Alos2InSAR(Application): self.step('preprocess', func=self.runPreprocessor, doc=( - """Preprocess the master and slave sensor data to raw images""" + """Preprocess the reference and secondary sensor data to raw images""" ) ) @@ -1064,10 +1064,10 @@ class Alos2InSAR(Application): if self.wbd != None: self._insar.wbd = self.wbd - if self._insar.masterDate != None and self._insar.slaveDate != None and \ + if self._insar.referenceDate != None and self._insar.secondaryDate != None and \ self._insar.numberRangeLooks1 != None and self._insar.numberAzimuthLooks1 != None and \ self._insar.numberRangeLooks2 != None and self._insar.numberAzimuthLooks2 != None: - self._insar.setFilename(masterDate=self._insar.masterDate, slaveDate=self._insar.slaveDate, + self._insar.setFilename(referenceDate=self._insar.referenceDate, secondaryDate=self._insar.secondaryDate, nrlks1=self._insar.numberRangeLooks1, nalks1=self._insar.numberAzimuthLooks1, nrlks2=self._insar.numberRangeLooks2, nalks2=self._insar.numberAzimuthLooks2) diff --git a/applications/alos2burstApp.py b/applications/alos2burstApp.py index c2d1028..e078678 100755 --- a/applications/alos2burstApp.py +++ b/applications/alos2burstApp.py @@ -28,49 +28,49 @@ logging.config.fileConfig( logger = logging.getLogger('isce.insar') -MASTER_DIR = Application.Parameter('masterDir', - public_name='master directory', +REFERENCE_DIR = Application.Parameter('referenceDir', + public_name='reference directory', default=None, type=str, mandatory=False, - doc="master data directory") + doc="reference data directory") -SLAVE_DIR = Application.Parameter('slaveDir', - public_name='slave directory', +SECONDARY_DIR = Application.Parameter('secondaryDir', + public_name='secondary directory', default=None, type=str, mandatory=False, - doc="slave data directory") + doc="secondary data directory") -MASTER_FRAMES = Application.Parameter('masterFrames', - public_name = 'master frames', +REFERENCE_FRAMES = Application.Parameter('referenceFrames', + public_name = 'reference frames', default = None, type=str, container=list, mandatory=False, - doc = 'master frames to process') + doc = 'reference frames to process') -SLAVE_FRAMES = Application.Parameter('slaveFrames', - public_name = 'slave frames', +SECONDARY_FRAMES = Application.Parameter('secondaryFrames', + public_name = 'secondary frames', default = None, type=str, container=list, mandatory=False, - doc = 'slave frames to process') + doc = 'secondary frames to process') -MASTER_POLARIZATION = Application.Parameter('masterPolarization', - public_name='master polarization', +REFERENCE_POLARIZATION = Application.Parameter('referencePolarization', + public_name='reference polarization', default='HH', type=str, mandatory=False, - doc="master polarization to process") + doc="reference polarization to process") -SLAVE_POLARIZATION = Application.Parameter('slavePolarization', - public_name='slave polarization', +SECONDARY_POLARIZATION = Application.Parameter('secondaryPolarization', + public_name='secondary polarization', default='HH', type=str, mandatory=False, - doc="slave polarization to process") + doc="secondary polarization to process") STARTING_SWATH = Application.Parameter('startingSwath', public_name='starting swath', @@ -460,21 +460,21 @@ RENDERER = Application.Parameter('renderer', ##################################################################### #Facility declarations -MASTER = Application.Facility('master', - public_name='master', +REFERENCE = Application.Facility('reference', + public_name='reference', module='isceobj.Sensor.MultiMode', factory='createSensor', - args=('ALOS2', 'master'), + args=('ALOS2', 'reference'), mandatory=True, - doc="master component") + doc="reference component") -SLAVE = Application.Facility('slave', - public_name='slave', +SECONDARY = Application.Facility('secondary', + public_name='secondary', module='isceobj.Sensor.MultiMode', factory='createSensor', - args=('ALOS2','slave'), + args=('ALOS2','secondary'), mandatory=True, - doc="slave component") + doc="secondary component") # RUN_UNWRAPPER = Application.Facility('runUnwrapper', # public_name='Run unwrapper', @@ -504,12 +504,12 @@ _INSAR = Application.Facility('_insar', ## Common interface for all insar applications. class Alos2burstInSAR(Application): family = 'alos2burstinsar' - parameter_list = (MASTER_DIR, - SLAVE_DIR, - MASTER_FRAMES, - SLAVE_FRAMES, - MASTER_POLARIZATION, - SLAVE_POLARIZATION, + parameter_list = (REFERENCE_DIR, + SECONDARY_DIR, + REFERENCE_FRAMES, + SECONDARY_FRAMES, + REFERENCE_POLARIZATION, + SECONDARY_POLARIZATION, STARTING_SWATH, ENDING_SWATH, DEM, @@ -566,8 +566,8 @@ class Alos2burstInSAR(Application): PICKLE_LOAD_DIR, RENDERER) - facility_list = (MASTER, - SLAVE, + facility_list = (REFERENCE, + SECONDARY, #RUN_UNWRAPPER, #RUN_UNWRAP_2STAGE, _INSAR) @@ -720,7 +720,7 @@ class Alos2burstInSAR(Application): # Run a preprocessor for the two acquisitions self.step('preprocess', func=self.runPreprocessor, doc=( - """Preprocess the master and slave sensor data to raw images""" + """Preprocess the reference and secondary sensor data to raw images""" ) ) @@ -991,17 +991,17 @@ class Alos2burstInSAR(Application): if self.wbd != None: self._insar.wbd = self.wbd - if self._insar.masterDate != None and self._insar.slaveDate != None and \ + if self._insar.referenceDate != None and self._insar.secondaryDate != None and \ self._insar.numberRangeLooks1 != None and self._insar.numberAzimuthLooks1 != None and \ self._insar.numberRangeLooks2 != None and self._insar.numberAzimuthLooks2 != None: - self._insar.setFilename(masterDate=self._insar.masterDate, slaveDate=self._insar.slaveDate, + self._insar.setFilename(referenceDate=self._insar.referenceDate, secondaryDate=self._insar.secondaryDate, nrlks1=self._insar.numberRangeLooks1, nalks1=self._insar.numberAzimuthLooks1, nrlks2=self._insar.numberRangeLooks2, nalks2=self._insar.numberAzimuthLooks2) - if self._insar.masterDate != None and self._insar.slaveDate != None and \ + if self._insar.referenceDate != None and self._insar.secondaryDate != None and \ self._insar.numberRangeLooks1 != None and self._insar.numberAzimuthLooks1 != None and \ self._insar.numberRangeLooksSd != None and self._insar.numberAzimuthLooksSd != None: - self._insar.setFilenameSd(masterDate=self._insar.masterDate, slaveDate=self._insar.slaveDate, + self._insar.setFilenameSd(referenceDate=self._insar.referenceDate, secondaryDate=self._insar.secondaryDate, nrlks1=self._insar.numberRangeLooks1, nalks1=self._insar.numberAzimuthLooks1, nrlks_sd=self._insar.numberRangeLooksSd, nalks_sd=self._insar.numberAzimuthLooksSd, nsd=3) diff --git a/applications/calculateBaseline.py b/applications/calculateBaseline.py index a6eeff5..57387b0 100755 --- a/applications/calculateBaseline.py +++ b/applications/calculateBaseline.py @@ -39,16 +39,16 @@ from mroipac.baseline.Baseline import Baseline class calculateBaselineApp(FactoryInit): def main(self): - masterFrame = self.populateFrame(self.masterObj) - slaveFrame = self.populateFrame(self.slaveObj) + referenceFrame = self.populateFrame(self.referenceObj) + secondaryFrame = self.populateFrame(self.secondaryObj) # Calculate the baseline information baseline = Baseline() - baseline.wireInputPort(name='masterFrame',object=masterFrame) - baseline.wireInputPort(name='slaveFrame',object=slaveFrame) - baseline.wireInputPort(name='masterOrbit',object=masterFrame.getOrbit()) - baseline.wireInputPort(name='slaveOrbit',object=slaveFrame.getOrbit()) - baseline.wireInputPort(name='ellipsoid',object=masterFrame.getInstrument().getPlatform().getPlanet().get_elp()) + baseline.wireInputPort(name='referenceFrame',object=referenceFrame) + baseline.wireInputPort(name='secondaryFrame',object=secondaryFrame) + baseline.wireInputPort(name='referenceOrbit',object=referenceFrame.getOrbit()) + baseline.wireInputPort(name='secondaryOrbit',object=secondaryFrame.getOrbit()) + baseline.wireInputPort(name='ellipsoid',object=referenceFrame.getInstrument().getPlatform().getPlanet().get_elp()) baseline.baseline() print(baseline) @@ -68,8 +68,8 @@ class calculateBaselineApp(FactoryInit): def __init__(self,arglist): FactoryInit.__init__(self) self.initFactory(arglist) - self.masterObj = self.getComponent('Master') - self.slaveObj = self.getComponent('Slave') + self.referenceObj = self.getComponent('Reference') + self.secondaryObj = self.getComponent('Secondary') self.logger = logging.getLogger('isce.calculateBaseline') if __name__ == "__main__": diff --git a/applications/createGeneric.py b/applications/createGeneric.py index c7f706b..5a3153b 100755 --- a/applications/createGeneric.py +++ b/applications/createGeneric.py @@ -81,9 +81,9 @@ def main(): fi.defaultInitModule = 'InitFromXmlFile' fi.initComponentFromFile() - master = fi.getComponent('Master') + reference = fi.getComponent('Reference') - toGeneric = ToGeneric(rawObj=master) + toGeneric = ToGeneric(rawObj=reference) toGeneric.convert() if __name__ == "__main__": diff --git a/applications/dpmApp.py b/applications/dpmApp.py index 958dfae..1d29476 100755 --- a/applications/dpmApp.py +++ b/applications/dpmApp.py @@ -215,12 +215,12 @@ class Dpm(_InsarBase): minLat, maxLat, minLon, maxLon = self.insar.topo.snwe - planet = self.insar.masterFrame.instrument.getPlatform().getPlanet() + planet = self.insar.referenceFrame.instrument.getPlatform().getPlanet() objGeo = stdproc.createGeocode() objGeo.listInputPorts() objGeo.wireInputPort(name='peg',object=self.insar.peg) - objGeo.wireInputPort(name='frame',object=self.insar.masterFrame) + objGeo.wireInputPort(name='frame',object=self.insar.referenceFrame) objGeo.wireInputPort(name='planet',object=planet) objGeo.wireInputPort(name='dem',object=demImage) objGeo.wireInputPort(name='interferogram',object=intImage) @@ -240,7 +240,7 @@ class Dpm(_InsarBase): mocompPosition1 = objFormSlc1.getMocompPosition() posIndx = 1 objGeo.referenceOrbit = mocompPosition1[posIndx] - prf1 = self.insar.masterFrame.instrument.getPulseRepetitionFrequency() + prf1 = self.insar.referenceFrame.instrument.getPulseRepetitionFrequency() dp = self.insar.dopplerCentroid.getDopplerCoefficients(inHz=False)[0] v = self.insar.procVelocity h = self.insar.averageHeight @@ -311,16 +311,16 @@ class Dpm(_InsarBase): print("objTopo.maxLon = ", maxLon) pause(message="Paused in runGeocode4rlks") - planet = self.insar.masterFrame.instrument.getPlatform().getPlanet() + planet = self.insar.referenceFrame.instrument.getPlatform().getPlanet() objGeo = stdproc.createGeocode() objGeo.listInputPorts() objGeo.wireInputPort(name='peg',object=self.insar.peg) -# objGeo.wireInputPort(name='frame',object=self.insar.masterFrame) - objGeo.rangeFirstSample = self.insar.masterFrame.getStartingRange() - objGeo.slantRangePixelSpacing = self.insar.masterFrame.instrument.getRangePixelSize()*4 - objGeo.prf = self.insar.masterFrame.instrument.getPulseRepetitionFrequency() - objGeo.radarWavelength = self.insar.masterFrame.instrument.getRadarWavelength() +# objGeo.wireInputPort(name='frame',object=self.insar.referenceFrame) + objGeo.rangeFirstSample = self.insar.referenceFrame.getStartingRange() + objGeo.slantRangePixelSpacing = self.insar.referenceFrame.instrument.getRangePixelSize()*4 + objGeo.prf = self.insar.referenceFrame.instrument.getPulseRepetitionFrequency() + objGeo.radarWavelength = self.insar.referenceFrame.instrument.getRadarWavelength() objGeo.wireInputPort(name='planet',object=planet) objGeo.wireInputPort(name='dem',object=demImage) objGeo.wireInputPort(name='interferogram',object=intImage) @@ -340,7 +340,7 @@ class Dpm(_InsarBase): mocompPosition1 = objFormSlc1.getMocompPosition() posIndx = 1 objGeo.setReferenceOrbit(mocompPosition1[posIndx]) - prf1 = self.insar.masterFrame.instrument.getPulseRepetitionFrequency() + prf1 = self.insar.referenceFrame.instrument.getPulseRepetitionFrequency() dp = self.insar.dopplerCentroid.getDopplerCoefficients(inHz=False)[0] v = self.insar.procVelocity h = self.insar.averageHeight @@ -425,11 +425,11 @@ class Dpm(_InsarBase): minLat, maxLat, minLon, maxLon = self.insar.topo.snwe - planet = self.insar.masterFrame.instrument.getPlatform().getPlanet() + planet = self.insar.referenceFrame.instrument.getPlatform().getPlanet() objGeo = stdproc.createGeocode() objGeo.wireInputPort(name='peg',object=self.insar.peg) - objGeo.wireInputPort(name='frame',object=self.insar.masterFrame) + objGeo.wireInputPort(name='frame',object=self.insar.referenceFrame) objGeo.wireInputPort(name='planet',object=planet) objGeo.wireInputPort(name='dem',object=demImage) objGeo.wireInputPort(name='interferogram',object=intImage) @@ -443,7 +443,7 @@ class Dpm(_InsarBase): objGeo.stdWriter = self.stdWriter.set_file_tags("geocode", "log", "err", "out") # see mocompbaseline objGeo.setReferenceOrbit(mocompPosition1[posIndx]) - prf1 = self.insar.masterFrame.instrument.getPulseRepetitionFrequency() + prf1 = self.insar.referenceFrame.instrument.getPulseRepetitionFrequency() dp = self.insar.dopplerCentroid.getDopplerCoefficients(inHz=False)[0] v = self.insar.procVelocity h = self.insar.averageHeight diff --git a/applications/focus.py b/applications/focus.py index 53f64ed..2839523 100755 --- a/applications/focus.py +++ b/applications/focus.py @@ -315,9 +315,9 @@ def main(): fi.defaultInitModule = 'InitFromXmlFile' fi.initComponentFromFile() - master = fi.getComponent('Master') + reference = fi.getComponent('Reference') - focuser = Focuser(rawObj=master) + focuser = Focuser(rawObj=reference) focuser.focuser() if __name__ == "__main__": diff --git a/applications/insarApp.py b/applications/insarApp.py index 8136d1d..18d5fb6 100755 --- a/applications/insarApp.py +++ b/applications/insarApp.py @@ -82,7 +82,7 @@ PEG_SELECT = Application.Parameter( public_name='peg select', default='average', mandatory=False, - doc='Peg selection method. Can be master, slave or average' + doc='Peg selection method. Can be reference, secondary or average' ) PEG_LAT = Application.Parameter( @@ -156,7 +156,7 @@ USE_DOP = Application.Parameter( default="average", type=float, mandatory=False, - doc="Choose whether to use master, slave, or average Doppler for processing." + doc="Choose whether to use reference, secondary, or average Doppler for processing." ) UNWRAPPER_NAME = Application.Parameter( @@ -414,44 +414,44 @@ RENDERER = Application.Parameter( ) #Facility declarations -MASTER = Application.Facility( - 'master', - public_name='Master', +REFERENCE = Application.Facility( + 'reference', + public_name='Reference', module='isceobj.Sensor', factory='createSensor', - args=(SENSOR_NAME, 'master'), + args=(SENSOR_NAME, 'reference'), mandatory=True, - doc="Master raw data component" + doc="Reference raw data component" ) -SLAVE = Application.Facility( - 'slave', - public_name='Slave', +SECONDARY = Application.Facility( + 'secondary', + public_name='Secondary', module='isceobj.Sensor', factory='createSensor', - args=(SENSOR_NAME,'slave'), + args=(SENSOR_NAME,'secondary'), mandatory=True, - doc="Slave raw data component" + doc="Secondary raw data component" ) -MASTERDOP = Application.Facility( - 'masterdop', - public_name='Master Doppler', +REFERENCEDOP = Application.Facility( + 'referencedop', + public_name='Reference Doppler', module='isceobj.Doppler', factory='createDoppler', args=(DOPPLER_METHOD,), mandatory=False, - doc="Master Doppler calculation method" + doc="Reference Doppler calculation method" ) -SLAVEDOP = Application.Facility( - 'slavedop', - public_name='Slave Doppler', +SECONDARYDOP = Application.Facility( + 'secondarydop', + public_name='Secondary Doppler', module='isceobj.Doppler', factory='createDoppler', args=(DOPPLER_METHOD,), mandatory=False, - doc="Master Doppler calculation method" + doc="Reference Doppler calculation method" ) DEM = Application.Facility( @@ -591,10 +591,10 @@ class _InsarBase(Application, FrameMixin): UNWRAPPER_2STAGE_NAME, SOLVER_2STAGE) - facility_list = (MASTER, - SLAVE, - MASTERDOP, - SLAVEDOP, + facility_list = (REFERENCE, + SECONDARY, + REFERENCEDOP, + SECONDARYDOP, DEM, DEM_STITCHER, RUN_ESTIMATE_HEIGHTS, @@ -842,9 +842,9 @@ class _InsarBase(Application, FrameMixin): from isceobj.Util.decorators import use_api @use_api def verifyDEM(self): - masterF = self._insar.masterFrame - slaveF = self._insar.slaveFrame - info = self.extractInfo(masterF, slaveF) + referenceF = self._insar.referenceFrame + secondaryF = self._insar.secondaryFrame + info = self.extractInfo(referenceF, secondaryF) #if an image has been specified, then no need to create one if not self.dem.filename: self.createDem(info) @@ -962,7 +962,7 @@ class _InsarBase(Application, FrameMixin): self.step('preprocess', func=self.runPreprocessor, doc=( - """Preprocess the master and slave sensor data to raw images""" + """Preprocess the reference and secondary sensor data to raw images""" ) ) diff --git a/applications/make_input.py b/applications/make_input.py index 16d9043..70c8185 100644 --- a/applications/make_input.py +++ b/applications/make_input.py @@ -8,9 +8,9 @@ import xml.etree.ElementTree as ElementTree class App(Tkinter.Frame): - def __init__(self,master=None): - Tkinter.Frame.__init__(self,master) - self.master.title('ISSI Input File Generator') + def __init__(self,reference=None): + Tkinter.Frame.__init__(self,reference) + self.reference.title('ISSI Input File Generator') self.filterList = None self.filterX = Tkinter.IntVar() diff --git a/applications/make_raw.py b/applications/make_raw.py index 3c2af20..a7fad5e 100755 --- a/applications/make_raw.py +++ b/applications/make_raw.py @@ -49,7 +49,7 @@ SENSOR = Application.Facility('sensor', factory='createSensor', args=(SENSOR_NAME, ), mandatory=True, - doc="Master raw data component" + doc="Reference raw data component" ) DOPPLER = Application.Facility('doppler', public_name='doppler', @@ -57,7 +57,7 @@ DOPPLER = Application.Facility('doppler', factory='createDoppler', args=(DOPPLER_METHOD, ), mandatory=False, - doc="Master Doppler calculation method" + doc="Reference Doppler calculation method" ) class makeRawApp(Application): diff --git a/applications/rtcApp.py b/applications/rtcApp.py index 333d99a..df52d41 100755 --- a/applications/rtcApp.py +++ b/applications/rtcApp.py @@ -194,12 +194,12 @@ GEOCODE_LIST = Application.Parameter( #Facility declarations -MASTER = Application.Facility( - 'master', - public_name='Master', +REFERENCE = Application.Facility( + 'reference', + public_name='Reference', module='isceobj.Sensor.GRD', factory='createSensor', - args=(SENSOR_NAME, 'master'), + args=(SENSOR_NAME, 'reference'), mandatory=True, doc="GRD data component" ) @@ -246,7 +246,7 @@ class GRDSAR(Application): POLARIZATIONS, GEOCODE_LIST) - facility_list = (MASTER, + facility_list = (REFERENCE, DEM_STITCHER, _GRD) diff --git a/applications/stripmapApp.py b/applications/stripmapApp.py index 5f87dc0..7540081 100755 --- a/applications/stripmapApp.py +++ b/applications/stripmapApp.py @@ -57,24 +57,24 @@ SENSOR_NAME = Application.Parameter( default = None, type = str, mandatory = False, - doc = 'Sensor name for both master and slave') + doc = 'Sensor name for both reference and secondary') -MASTER_SENSOR_NAME = Application.Parameter( - 'masterSensorName', - public_name='master sensor name', +REFERENCE_SENSOR_NAME = Application.Parameter( + 'referenceSensorName', + public_name='reference sensor name', default = None, type=str, mandatory = True, - doc = "Master sensor name if mixing sensors") + doc = "Reference sensor name if mixing sensors") -SLAVE_SENSOR_NAME = Application.Parameter( - 'slaveSensorName', - public_name='slave sensor name', +SECONDARY_SENSOR_NAME = Application.Parameter( + 'secondarySensorName', + public_name='secondary sensor name', default = None, type=str, mandatory = True, - doc = "Slave sensor name if mixing sensors") + doc = "Secondary sensor name if mixing sensors") CORRELATION_METHOD = Application.Parameter( @@ -89,17 +89,17 @@ CORRELATION_METHOD = Application.Parameter( phase_gradient=phase gradient""" ) ) -MASTER_DOPPLER_METHOD = Application.Parameter( - 'masterDopplerMethod', - public_name='master doppler method', +REFERENCE_DOPPLER_METHOD = Application.Parameter( + 'referenceDopplerMethod', + public_name='reference doppler method', default=None, type=str, mandatory=False, doc= "Doppler calculation method.Choices: 'useDOPIQ', 'useDefault'." ) -SLAVE_DOPPLER_METHOD = Application.Parameter( - 'slaveDopplerMethod', - public_name='slave doppler method', +SECONDARY_DOPPLER_METHOD = Application.Parameter( + 'secondaryDopplerMethod', + public_name='secondary doppler method', default=None, type=str, mandatory=False, doc="Doppler calculation method. Choices: 'useDOPIQ','useDefault'.") @@ -448,24 +448,24 @@ DISPERSIVE_FILTER_COHERENCE_THRESHOLD = Application.Parameter('dispersive_filter doc='Coherence threshold to generate a mask file which gets used in the iterative filtering of the dispersive and non-disperive phase') #Facility declarations -MASTER = Application.Facility( - 'master', - public_name='Master', +REFERENCE = Application.Facility( + 'reference', + public_name='Reference', module='isceobj.StripmapProc.Sensor', factory='createSensor', - args=(SENSOR_NAME, MASTER_SENSOR_NAME, 'master'), + args=(SENSOR_NAME, REFERENCE_SENSOR_NAME, 'reference'), mandatory=False, - doc="Master raw data component" + doc="Reference raw data component" ) -SLAVE = Application.Facility( - 'slave', - public_name='Slave', +SECONDARY = Application.Facility( + 'secondary', + public_name='Secondary', module='isceobj.StripmapProc.Sensor', factory='createSensor', - args=(SENSOR_NAME, SLAVE_SENSOR_NAME,'slave'), + args=(SENSOR_NAME, SECONDARY_SENSOR_NAME,'secondary'), mandatory=False, - doc="Slave raw data component" + doc="Secondary raw data component" ) DEM_STITCHER = Application.Facility( @@ -516,12 +516,12 @@ class _RoiBase(Application, FrameMixin): family = 'insar' ## Define Class parameters in this list parameter_list = (SENSOR_NAME, - MASTER_SENSOR_NAME, - SLAVE_SENSOR_NAME, + REFERENCE_SENSOR_NAME, + SECONDARY_SENSOR_NAME, FILTER_STRENGTH, CORRELATION_METHOD, - MASTER_DOPPLER_METHOD, - SLAVE_DOPPLER_METHOD, + REFERENCE_DOPPLER_METHOD, + SECONDARY_DOPPLER_METHOD, UNWRAPPER_NAME, DO_UNWRAP, DO_UNWRAP_2STAGE, @@ -564,8 +564,8 @@ class _RoiBase(Application, FrameMixin): DISPERSIVE_FILTER_MASK_TYPE, DISPERSIVE_FILTER_COHERENCE_THRESHOLD) - facility_list = (MASTER, - SLAVE, + facility_list = (REFERENCE, + SECONDARY, DEM_STITCHER, RUN_UNWRAPPER, RUN_UNWRAP_2STAGE, @@ -729,7 +729,7 @@ class _RoiBase(Application, FrameMixin): self.runTopo = StripmapProc.createTopo(self) self.runGeo2rdr = StripmapProc.createGeo2rdr(self) self.runResampleSlc = StripmapProc.createResampleSlc(self) - self.runRefineSlaveTiming = StripmapProc.createRefineSlaveTiming(self) + self.runRefineSecondaryTiming = StripmapProc.createRefineSecondaryTiming(self) self.runDenseOffsets = StripmapProc.createDenseOffsets(self) self.runRubbersheetRange = StripmapProc.createRubbersheetRange(self) #Modified by V. Brancato 10.07.2019 self.runRubbersheetAzimuth =StripmapProc.createRubbersheetAzimuth(self) #Modified by V. Brancato 10.07.2019 @@ -752,7 +752,7 @@ class _RoiBase(Application, FrameMixin): self.step('preprocess', func=self.runPreprocessor, doc=( - """Preprocess the master and slave sensor data to raw images""" + """Preprocess the reference and secondary sensor data to raw images""" ) ) @@ -776,7 +776,7 @@ class _RoiBase(Application, FrameMixin): self.step('coarse_resample', func=self.runResampleSlc, args=('coarse',)) - self.step('misregistration', func=self.runRefineSlaveTiming) + self.step('misregistration', func=self.runRefineSecondaryTiming) self.step('refined_resample', func=self.runResampleSlc, args=('refined',)) @@ -856,7 +856,7 @@ class _RoiBase(Application, FrameMixin): self.runResampleSlc('coarse') # refine geometry offsets using offsets computed by cross correlation - self.runRefineSlaveTiming() + self.runRefineSecondaryTiming() # resampling using refined offsets self.runResampleSlc('refined') @@ -966,7 +966,7 @@ class Insar(_RoiBase): self.runResampleSlc() #self.runResamp_only() - self.runRefineSlaveTiming() + self.runRefineSecondaryTiming() #self.insar.topoIntImage=self.insar.resampOnlyImage #self.runTopo() diff --git a/applications/topsApp.py b/applications/topsApp.py index 7f76a37..e79d9ee 100755 --- a/applications/topsApp.py +++ b/applications/topsApp.py @@ -535,24 +535,24 @@ ION_NUMBER_RANGE_LOOKS0 = Application.Parameter('ION_numberRangeLooks0', ##################################################################### #Facility declarations -MASTER = Application.Facility( - 'master', - public_name='Master', +REFERENCE = Application.Facility( + 'reference', + public_name='Reference', module='isceobj.Sensor.TOPS', factory='createSensor', - args=(SENSOR_NAME, 'master'), + args=(SENSOR_NAME, 'reference'), mandatory=True, - doc="Master raw data component" + doc="Reference raw data component" ) -SLAVE = Application.Facility( - 'slave', - public_name='Slave', +SECONDARY = Application.Facility( + 'secondary', + public_name='Secondary', module='isceobj.Sensor.TOPS', factory='createSensor', - args=(SENSOR_NAME,'slave'), + args=(SENSOR_NAME,'secondary'), mandatory=True, - doc="Slave raw data component" + doc="Secondary raw data component" ) DEM_STITCHER = Application.Facility( @@ -665,8 +665,8 @@ class TopsInSAR(Application): ######################################################## ) - facility_list = (MASTER, - SLAVE, + facility_list = (REFERENCE, + SECONDARY, DEM_STITCHER, RUN_UNWRAPPER, RUN_UNWRAP_2STAGE, @@ -858,7 +858,7 @@ class TopsInSAR(Application): self.step('preprocess', func=self.runPreprocessor, doc=( - """Preprocess the master and slave sensor data to raw images""" + """Preprocess the reference and secondary sensor data to raw images""" ) ) @@ -901,7 +901,7 @@ class TopsInSAR(Application): ###Estimate fine offsets self.step('fineoffsets', func=self.runFineOffsets) - ###Resample slave bursts + ###Resample secondary bursts self.step('fineresamp', func=self.runFineResamp) ###calculate ionospheric phase @@ -986,7 +986,7 @@ class TopsInSAR(Application): ###Estimate fine offsets self.runFineOffsets() - ###Resample slave bursts + ###Resample secondary bursts self.runFineResamp() ###calculate ionospheric phase diff --git a/applications/wbdStitcher.py b/applications/wbdStitcher.py index e33ed27..7f4fe2c 100755 --- a/applications/wbdStitcher.py +++ b/applications/wbdStitcher.py @@ -108,4 +108,4 @@ if __name__ == "__main__": import sys ds = Stitcher('wbdstitcher') ds.configure() - ds.run() \ No newline at end of file + ds.run() diff --git a/components/isceobj/Alos2Proc/Alos2Proc.py b/components/isceobj/Alos2Proc/Alos2Proc.py index 6552bb8..7aa144f 100644 --- a/components/isceobj/Alos2Proc/Alos2Proc.py +++ b/components/isceobj/Alos2Proc/Alos2Proc.py @@ -11,19 +11,19 @@ from iscesys.DateTimeUtil.DateTimeUtil import DateTimeUtil as DTU from iscesys.Compatibility import Compatibility -MASTER_DATE = Component.Parameter('masterDate', - public_name='master date', +REFERENCE_DATE = Component.Parameter('referenceDate', + public_name='reference date', default=None, type=str, mandatory=True, - doc='master acquistion date') + doc='reference acquistion date') -SLAVE_DATE = Component.Parameter('slaveDate', - public_name='slave date', +SECONDARY_DATE = Component.Parameter('secondaryDate', + public_name='secondary date', default=None, type=str, mandatory=True, - doc='slave acquistion date') + doc='secondary acquistion date') MODE_COMBINATION = Component.Parameter('modeCombination', public_name='mode combination', @@ -32,21 +32,21 @@ MODE_COMBINATION = Component.Parameter('modeCombination', mandatory=True, doc='mode combination') -MASTER_FRAMES = Component.Parameter('masterFrames', - public_name = 'master frames', +REFERENCE_FRAMES = Component.Parameter('referenceFrames', + public_name = 'reference frames', default = None, type=str, container=list, mandatory=False, - doc = 'master frames to process') + doc = 'reference frames to process') -SLAVE_FRAMES = Component.Parameter('slaveFrames', - public_name = 'slave frames', +SECONDARY_FRAMES = Component.Parameter('secondaryFrames', + public_name = 'secondary frames', default = None, type=str, container=list, mandatory=False, - doc = 'slave frames to process') + doc = 'secondary frames to process') STARTING_SWATH = Component.Parameter('startingSwath', public_name='starting swath', @@ -76,135 +76,135 @@ BURST_SYNCHRONIZATION = Component.Parameter('burstSynchronization', mandatory = False, doc = 'average burst synchronization of all swaths and frames in percentage') -SWATH_RANGE_OFFSET_GEOMETRICAL_MASTER = Component.Parameter('swathRangeOffsetGeometricalMaster', - public_name = 'swath range offset from geometry master', +SWATH_RANGE_OFFSET_GEOMETRICAL_REFERENCE = Component.Parameter('swathRangeOffsetGeometricalReference', + public_name = 'swath range offset from geometry reference', default = None, type = float, mandatory = True, container = list, - doc = 'swath range offset from geometry master') + doc = 'swath range offset from geometry reference') -SWATH_AZIMUTH_OFFSET_GEOMETRICAL_MASTER = Component.Parameter('swathAzimuthOffsetGeometricalMaster', - public_name = 'swath azimuth offset from geometry master', +SWATH_AZIMUTH_OFFSET_GEOMETRICAL_REFERENCE = Component.Parameter('swathAzimuthOffsetGeometricalReference', + public_name = 'swath azimuth offset from geometry reference', default = None, type = float, mandatory = True, container = list, - doc = 'swath azimuth offset from geometry master') + doc = 'swath azimuth offset from geometry reference') -SWATH_RANGE_OFFSET_MATCHING_MASTER = Component.Parameter('swathRangeOffsetMatchingMaster', - public_name = 'swath range offset from matching master', +SWATH_RANGE_OFFSET_MATCHING_REFERENCE = Component.Parameter('swathRangeOffsetMatchingReference', + public_name = 'swath range offset from matching reference', default = None, type = float, mandatory = True, container = list, - doc = 'swath range offset from matching master') + doc = 'swath range offset from matching reference') -SWATH_AZIMUTH_OFFSET_MATCHING_MASTER = Component.Parameter('swathAzimuthOffsetMatchingMaster', - public_name = 'swath azimuth offset from matching master', +SWATH_AZIMUTH_OFFSET_MATCHING_REFERENCE = Component.Parameter('swathAzimuthOffsetMatchingReference', + public_name = 'swath azimuth offset from matching reference', default = None, type = float, mandatory = True, container = list, - doc = 'swath azimuth offset from matching master') + doc = 'swath azimuth offset from matching reference') -SWATH_RANGE_OFFSET_GEOMETRICAL_SLAVE = Component.Parameter('swathRangeOffsetGeometricalSlave', - public_name = 'swath range offset from geometry slave', +SWATH_RANGE_OFFSET_GEOMETRICAL_SECONDARY = Component.Parameter('swathRangeOffsetGeometricalSecondary', + public_name = 'swath range offset from geometry secondary', default = None, type = float, mandatory = True, container = list, - doc = 'swath range offset from geometry slave') + doc = 'swath range offset from geometry secondary') -SWATH_AZIMUTH_OFFSET_GEOMETRICAL_SLAVE = Component.Parameter('swathAzimuthOffsetGeometricalSlave', - public_name = 'swath azimuth offset from geometry slave', +SWATH_AZIMUTH_OFFSET_GEOMETRICAL_SECONDARY = Component.Parameter('swathAzimuthOffsetGeometricalSecondary', + public_name = 'swath azimuth offset from geometry secondary', default = None, type = float, mandatory = True, container = list, - doc = 'swath azimuth offset from geometry slave') + doc = 'swath azimuth offset from geometry secondary') -SWATH_RANGE_OFFSET_MATCHING_SLAVE = Component.Parameter('swathRangeOffsetMatchingSlave', - public_name = 'swath range offset from matching slave', +SWATH_RANGE_OFFSET_MATCHING_SECONDARY = Component.Parameter('swathRangeOffsetMatchingSecondary', + public_name = 'swath range offset from matching secondary', default = None, type = float, mandatory = True, container = list, - doc = 'swath range offset from matching slave') + doc = 'swath range offset from matching secondary') -SWATH_AZIMUTH_OFFSET_MATCHING_SLAVE = Component.Parameter('swathAzimuthOffsetMatchingSlave', - public_name = 'swath azimuth offset from matching slave', +SWATH_AZIMUTH_OFFSET_MATCHING_SECONDARY = Component.Parameter('swathAzimuthOffsetMatchingSecondary', + public_name = 'swath azimuth offset from matching secondary', default = None, type = float, mandatory = True, container = list, - doc = 'swath azimuth offset from matching slave') + doc = 'swath azimuth offset from matching secondary') -FRAME_RANGE_OFFSET_GEOMETRICAL_MASTER = Component.Parameter('frameRangeOffsetGeometricalMaster', - public_name = 'frame range offset from geometry master', +FRAME_RANGE_OFFSET_GEOMETRICAL_REFERENCE = Component.Parameter('frameRangeOffsetGeometricalReference', + public_name = 'frame range offset from geometry reference', default = None, type = float, mandatory = True, container = list, - doc = 'frame range offset from geometry master') + doc = 'frame range offset from geometry reference') -FRAME_AZIMUTH_OFFSET_GEOMETRICAL_MASTER = Component.Parameter('frameAzimuthOffsetGeometricalMaster', - public_name = 'frame azimuth offset from geometry master', +FRAME_AZIMUTH_OFFSET_GEOMETRICAL_REFERENCE = Component.Parameter('frameAzimuthOffsetGeometricalReference', + public_name = 'frame azimuth offset from geometry reference', default = None, type = float, mandatory = True, container = list, - doc = 'frame azimuth offset from geometry master') + doc = 'frame azimuth offset from geometry reference') -FRAME_RANGE_OFFSET_MATCHING_MASTER = Component.Parameter('frameRangeOffsetMatchingMaster', - public_name = 'frame range offset from matching master', +FRAME_RANGE_OFFSET_MATCHING_REFERENCE = Component.Parameter('frameRangeOffsetMatchingReference', + public_name = 'frame range offset from matching reference', default = None, type = float, mandatory = True, container = list, - doc = 'frame range offset from matching master') + doc = 'frame range offset from matching reference') -FRAME_AZIMUTH_OFFSET_MATCHING_MASTER = Component.Parameter('frameAzimuthOffsetMatchingMaster', - public_name = 'frame azimuth offset from matching master', +FRAME_AZIMUTH_OFFSET_MATCHING_REFERENCE = Component.Parameter('frameAzimuthOffsetMatchingReference', + public_name = 'frame azimuth offset from matching reference', default = None, type = float, mandatory = True, container = list, - doc = 'frame azimuth offset from matching master') + doc = 'frame azimuth offset from matching reference') -FRAME_RANGE_OFFSET_GEOMETRICAL_SLAVE = Component.Parameter('frameRangeOffsetGeometricalSlave', - public_name = 'frame range offset from geometry slave', +FRAME_RANGE_OFFSET_GEOMETRICAL_SECONDARY = Component.Parameter('frameRangeOffsetGeometricalSecondary', + public_name = 'frame range offset from geometry secondary', default = None, type = float, mandatory = True, container = list, - doc = 'frame range offset from geometry slave') + doc = 'frame range offset from geometry secondary') -FRAME_AZIMUTH_OFFSET_GEOMETRICAL_SLAVE = Component.Parameter('frameAzimuthOffsetGeometricalSlave', - public_name = 'frame azimuth offset from geometry slave', +FRAME_AZIMUTH_OFFSET_GEOMETRICAL_SECONDARY = Component.Parameter('frameAzimuthOffsetGeometricalSecondary', + public_name = 'frame azimuth offset from geometry secondary', default = None, type = float, mandatory = True, container = list, - doc = 'frame azimuth offset from geometry slave') + doc = 'frame azimuth offset from geometry secondary') -FRAME_RANGE_OFFSET_MATCHING_SLAVE = Component.Parameter('frameRangeOffsetMatchingSlave', - public_name = 'frame range offset from matching slave', +FRAME_RANGE_OFFSET_MATCHING_SECONDARY = Component.Parameter('frameRangeOffsetMatchingSecondary', + public_name = 'frame range offset from matching secondary', default = None, type = float, mandatory = True, container = list, - doc = 'frame range offset from matching slave') + doc = 'frame range offset from matching secondary') -FRAME_AZIMUTH_OFFSET_MATCHING_SLAVE = Component.Parameter('frameAzimuthOffsetMatchingSlave', - public_name = 'frame azimuth offset from matching slave', +FRAME_AZIMUTH_OFFSET_MATCHING_SECONDARY = Component.Parameter('frameAzimuthOffsetMatchingSecondary', + public_name = 'frame azimuth offset from matching secondary', default = None, type = float, mandatory = True, container = list, - doc = 'frame azimuth offset from matching slave') + doc = 'frame azimuth offset from matching secondary') NUMBER_RANGE_LOOKS1 = Component.Parameter('numberRangeLooks1', public_name='number of range looks 1', @@ -279,75 +279,75 @@ RADAR_DEM_AFFINE_TRANSFORM = Component.Parameter('radarDemAffineTransform', doc = 'radar dem affine transform parameters') -MASTER_SLC = Component.Parameter('masterSlc', - public_name='master slc', +REFERENCE_SLC = Component.Parameter('referenceSlc', + public_name='reference slc', default=None, type=str, mandatory=False, - doc='master slc file') + doc='reference slc file') -SLAVE_SLC = Component.Parameter('slaveSlc', - public_name='slave slc', +SECONDARY_SLC = Component.Parameter('secondarySlc', + public_name='secondary slc', default=None, type=str, mandatory=False, - doc='slave slc file') + doc='secondary slc file') -MASTER_SWATH_OFFSET = Component.Parameter('masterSwathOffset', - public_name='master swath offset', +REFERENCE_SWATH_OFFSET = Component.Parameter('referenceSwathOffset', + public_name='reference swath offset', default=None, type=str, mandatory=False, - doc='master swath offset file') + doc='reference swath offset file') -SLAVE_SWATH_OFFSET = Component.Parameter('slaveSwathOffset', - public_name='slave swath offset', +SECONDARY_SWATH_OFFSET = Component.Parameter('secondarySwathOffset', + public_name='secondary swath offset', default=None, type=str, mandatory=False, - doc='slave swath offset file') + doc='secondary swath offset file') -MASTER_FRAME_OFFSET = Component.Parameter('masterFrameOffset', - public_name='master frame offset', +REFERENCE_FRAME_OFFSET = Component.Parameter('referenceFrameOffset', + public_name='reference frame offset', default=None, type=str, mandatory=False, - doc='master frame offset file') + doc='reference frame offset file') -SLAVE_FRAME_OFFSET = Component.Parameter('slaveFrameOffset', - public_name='slave frame offset', +SECONDARY_FRAME_OFFSET = Component.Parameter('secondaryFrameOffset', + public_name='secondary frame offset', default=None, type=str, mandatory=False, - doc='slave frame offset file') + doc='secondary frame offset file') -MASTER_FRAME_PARAMETER = Component.Parameter('masterFrameParameter', - public_name='master frame parameter', +REFERENCE_FRAME_PARAMETER = Component.Parameter('referenceFrameParameter', + public_name='reference frame parameter', default=None, type=str, mandatory=False, - doc='master frame parameter file') + doc='reference frame parameter file') -SLAVE_FRAME_PARAMETER = Component.Parameter('slaveFrameParameter', - public_name='slave frame parameter', +SECONDARY_FRAME_PARAMETER = Component.Parameter('secondaryFrameParameter', + public_name='secondary frame parameter', default=None, type=str, mandatory=False, - doc='slave frame parameter file') + doc='secondary frame parameter file') -MASTER_TRACK_PARAMETER = Component.Parameter('masterTrackParameter', - public_name='master track parameter', +REFERENCE_TRACK_PARAMETER = Component.Parameter('referenceTrackParameter', + public_name='reference track parameter', default=None, type=str, mandatory=False, - doc='master track parameter file') + doc='reference track parameter file') -SLAVE_TRACK_PARAMETER = Component.Parameter('slaveTrackParameter', - public_name='slave track parameter', +SECONDARY_TRACK_PARAMETER = Component.Parameter('secondaryTrackParameter', + public_name='secondary track parameter', default=None, type=str, mandatory=False, - doc='slave track parameter file') + doc='secondary track parameter file') DEM = Component.Parameter('dem', public_name='dem for coregistration', @@ -618,12 +618,12 @@ OFFSET_IMAGE_LEFTOFFSET = Component.Parameter('offsetImageLeftoffset', mandatory=False, doc="offset image left offset in samples") -SLAVE_SLC_COREGISTERED = Component.Parameter('slaveSlcCoregistered', - public_name='coregistered slave slc', +SECONDARY_SLC_COREGISTERED = Component.Parameter('secondarySlcCoregistered', + public_name='coregistered secondary slc', default=None, type=str, mandatory=False, - doc='coregistered slave slc file') + doc='coregistered secondary slc file') DENSE_OFFSET = Component.Parameter('denseOffset', public_name='dense offset', @@ -681,31 +681,31 @@ class Alos2Proc(Component): to modify and return their values. """ - parameter_list = (MASTER_DATE, - SLAVE_DATE, + parameter_list = (REFERENCE_DATE, + SECONDARY_DATE, MODE_COMBINATION, - MASTER_FRAMES, - SLAVE_FRAMES, + REFERENCE_FRAMES, + SECONDARY_FRAMES, STARTING_SWATH, ENDING_SWATH, BURST_UNSYNCHRONIZED_TIME, BURST_SYNCHRONIZATION, - SWATH_RANGE_OFFSET_GEOMETRICAL_MASTER, - SWATH_AZIMUTH_OFFSET_GEOMETRICAL_MASTER, - SWATH_RANGE_OFFSET_MATCHING_MASTER, - SWATH_AZIMUTH_OFFSET_MATCHING_MASTER, - SWATH_RANGE_OFFSET_GEOMETRICAL_SLAVE, - SWATH_AZIMUTH_OFFSET_GEOMETRICAL_SLAVE, - SWATH_RANGE_OFFSET_MATCHING_SLAVE, - SWATH_AZIMUTH_OFFSET_MATCHING_SLAVE, - FRAME_RANGE_OFFSET_GEOMETRICAL_MASTER, - FRAME_AZIMUTH_OFFSET_GEOMETRICAL_MASTER, - FRAME_RANGE_OFFSET_MATCHING_MASTER, - FRAME_AZIMUTH_OFFSET_MATCHING_MASTER, - FRAME_RANGE_OFFSET_GEOMETRICAL_SLAVE, - FRAME_AZIMUTH_OFFSET_GEOMETRICAL_SLAVE, - FRAME_RANGE_OFFSET_MATCHING_SLAVE, - FRAME_AZIMUTH_OFFSET_MATCHING_SLAVE, + SWATH_RANGE_OFFSET_GEOMETRICAL_REFERENCE, + SWATH_AZIMUTH_OFFSET_GEOMETRICAL_REFERENCE, + SWATH_RANGE_OFFSET_MATCHING_REFERENCE, + SWATH_AZIMUTH_OFFSET_MATCHING_REFERENCE, + SWATH_RANGE_OFFSET_GEOMETRICAL_SECONDARY, + SWATH_AZIMUTH_OFFSET_GEOMETRICAL_SECONDARY, + SWATH_RANGE_OFFSET_MATCHING_SECONDARY, + SWATH_AZIMUTH_OFFSET_MATCHING_SECONDARY, + FRAME_RANGE_OFFSET_GEOMETRICAL_REFERENCE, + FRAME_AZIMUTH_OFFSET_GEOMETRICAL_REFERENCE, + FRAME_RANGE_OFFSET_MATCHING_REFERENCE, + FRAME_AZIMUTH_OFFSET_MATCHING_REFERENCE, + FRAME_RANGE_OFFSET_GEOMETRICAL_SECONDARY, + FRAME_AZIMUTH_OFFSET_GEOMETRICAL_SECONDARY, + FRAME_RANGE_OFFSET_MATCHING_SECONDARY, + FRAME_AZIMUTH_OFFSET_MATCHING_SECONDARY, NUMBER_RANGE_LOOKS1, NUMBER_AZIMUTH_LOOKS1, NUMBER_RANGE_LOOKS2, @@ -716,16 +716,16 @@ class Alos2Proc(Component): NUMBER_AZIMUTH_LOOKS_ION, SUBBAND_RADAR_WAVLENGTH, RADAR_DEM_AFFINE_TRANSFORM, - MASTER_SLC, - SLAVE_SLC, - MASTER_SWATH_OFFSET, - SLAVE_SWATH_OFFSET, - MASTER_FRAME_OFFSET, - SLAVE_FRAME_OFFSET, - MASTER_FRAME_PARAMETER, - SLAVE_FRAME_PARAMETER, - MASTER_TRACK_PARAMETER, - SLAVE_TRACK_PARAMETER, + REFERENCE_SLC, + SECONDARY_SLC, + REFERENCE_SWATH_OFFSET, + SECONDARY_SWATH_OFFSET, + REFERENCE_FRAME_OFFSET, + SECONDARY_FRAME_OFFSET, + REFERENCE_FRAME_PARAMETER, + SECONDARY_FRAME_PARAMETER, + REFERENCE_TRACK_PARAMETER, + SECONDARY_TRACK_PARAMETER, DEM, DEM_GEO, WBD, @@ -764,7 +764,7 @@ class Alos2Proc(Component): GEO_ION, OFFSET_IMAGE_TOPOFFSET, OFFSET_IMAGE_LEFTOFFSET, - SLAVE_SLC_COREGISTERED, + SECONDARY_SLC_COREGISTERED, DENSE_OFFSET, DENSE_OFFSET_SNR, DENSE_OFFSET_COV, @@ -785,12 +785,12 @@ class Alos2Proc(Component): self.procDoc = procDoc return None - def setFilename(self, masterDate, slaveDate, nrlks1, nalks1, nrlks2, nalks2): + def setFilename(self, referenceDate, secondaryDate, nrlks1, nalks1, nrlks2, nalks2): - # if masterDate == None: - # masterDate = self.masterDate - # if slaveDate == None: - # slaveDate = self.slaveDate + # if referenceDate == None: + # referenceDate = self.referenceDate + # if secondaryDate == None: + # secondaryDate = self.secondaryDate # if nrlks1 == None: # nrlks1 = self.numberRangeLooks1 # if nalks1 == None: @@ -800,20 +800,20 @@ class Alos2Proc(Component): # if nalks2 == None: # nalks2 = self.numberAzimuthLooks2 - ms = masterDate + '-' + slaveDate + ms = referenceDate + '-' + secondaryDate ml1 = '_{}rlks_{}alks'.format(nrlks1, nalks1) ml2 = '_{}rlks_{}alks'.format(nrlks1*nrlks2, nalks1*nalks2) - self.masterSlc = masterDate + '.slc' - self.slaveSlc = slaveDate + '.slc' - self.masterSwathOffset = 'swath_offset_' + masterDate + '.txt' - self.slaveSwathOffset = 'swath_offset_' + slaveDate + '.txt' - self.masterFrameOffset = 'frame_offset_' + masterDate + '.txt' - self.slaveFrameOffset = 'frame_offset_' + slaveDate + '.txt' - self.masterFrameParameter = masterDate + '.frame.xml' - self.slaveFrameParameter = slaveDate + '.frame.xml' - self.masterTrackParameter = masterDate + '.track.xml' - self.slaveTrackParameter = slaveDate + '.track.xml' + self.referenceSlc = referenceDate + '.slc' + self.secondarySlc = secondaryDate + '.slc' + self.referenceSwathOffset = 'swath_offset_' + referenceDate + '.txt' + self.secondarySwathOffset = 'swath_offset_' + secondaryDate + '.txt' + self.referenceFrameOffset = 'frame_offset_' + referenceDate + '.txt' + self.secondaryFrameOffset = 'frame_offset_' + secondaryDate + '.txt' + self.referenceFrameParameter = referenceDate + '.frame.xml' + self.secondaryFrameParameter = secondaryDate + '.frame.xml' + self.referenceTrackParameter = referenceDate + '.track.xml' + self.secondaryTrackParameter = secondaryDate + '.track.xml' #self.dem = #self.demGeo = #self.wbd = @@ -850,7 +850,7 @@ class Alos2Proc(Component): self.geoCoherence = ms + ml2 + '.cor.geo' self.geoLos = ms + ml2 + '.los.geo' #dense offset field - self.slaveSlcCoregistered = slaveDate + '_coreg.slc' + self.secondarySlcCoregistered = secondaryDate + '_coreg.slc' self.denseOffset = ms + '_denseoffset.off' self.denseOffsetSnr = ms + '_denseoffset.snr' self.denseOffsetCov = ms + '_denseoffset.cov' @@ -891,42 +891,42 @@ class Alos2Proc(Component): return None - def loadTrack(self, master=True): + def loadTrack(self, reference=True): ''' Load the track using Product Manager. ''' - if master: - track = self.loadProduct(self.masterTrackParameter) + if reference: + track = self.loadProduct(self.referenceTrackParameter) else: - track = self.loadProduct(self.slaveTrackParameter) + track = self.loadProduct(self.secondaryTrackParameter) track.frames = [] - for i, frameNumber in enumerate(self.masterFrames): + for i, frameNumber in enumerate(self.referenceFrames): os.chdir('f{}_{}'.format(i+1, frameNumber)) - if master: - track.frames.append(self.loadProduct(self.masterFrameParameter)) + if reference: + track.frames.append(self.loadProduct(self.referenceFrameParameter)) else: - track.frames.append(self.loadProduct(self.slaveFrameParameter)) + track.frames.append(self.loadProduct(self.secondaryFrameParameter)) os.chdir('../') return track - def saveTrack(self, track, master=True): + def saveTrack(self, track, reference=True): ''' Save the track to XML files using Product Manager. ''' - if master: - self.saveProduct(track, self.masterTrackParameter) + if reference: + self.saveProduct(track, self.referenceTrackParameter) else: - self.saveProduct(track, self.slaveTrackParameter) + self.saveProduct(track, self.secondaryTrackParameter) - for i, frameNumber in enumerate(self.masterFrames): + for i, frameNumber in enumerate(self.referenceFrames): os.chdir('f{}_{}'.format(i+1, frameNumber)) - if master: - self.saveProduct(track.frames[i], self.masterFrameParameter) + if reference: + self.saveProduct(track.frames[i], self.referenceFrameParameter) else: - self.saveProduct(track.frames[i], self.slaveFrameParameter) + self.saveProduct(track.frames[i], self.secondaryFrameParameter) os.chdir('../') return None diff --git a/components/isceobj/Alos2Proc/Alos2ProcPublic.py b/components/isceobj/Alos2Proc/Alos2ProcPublic.py index d099fd1..ccf124f 100644 --- a/components/isceobj/Alos2Proc/Alos2ProcPublic.py +++ b/components/isceobj/Alos2Proc/Alos2ProcPublic.py @@ -154,11 +154,11 @@ def cal_coherence_1(inf, win=5): -def computeOffsetFromOrbit(masterSwath, masterTrack, slaveSwath, slaveTrack, masterSample, masterLine): +def computeOffsetFromOrbit(referenceSwath, referenceTrack, secondarySwath, secondaryTrack, referenceSample, referenceLine): ''' compute range and azimuth offsets using orbit. all range/azimuth indexes start with 0 - masterSample: master sample where offset is computed, no need to be integer - masterLine: master line where offset is computed, no need to be integer + referenceSample: reference sample where offset is computed, no need to be integer + referenceLine: reference line where offset is computed, no need to be integer ''' import datetime @@ -166,14 +166,14 @@ def computeOffsetFromOrbit(masterSwath, masterTrack, slaveSwath, slaveTrack, mas #compute a pair of range and azimuth offsets using geometry #using Piyush's code for computing range and azimuth offsets - midRange = masterSwath.startingRange + masterSwath.rangePixelSize * masterSample - midSensingStart = masterSwath.sensingStart + datetime.timedelta(seconds = masterLine / masterSwath.prf) - llh = masterTrack.orbit.rdr2geo(midSensingStart, midRange, side=pointingDirection[masterTrack.pointingDirection]) - slvaz, slvrng = slaveTrack.orbit.geo2rdr(llh, side=pointingDirection[masterTrack.pointingDirection]) + midRange = referenceSwath.startingRange + referenceSwath.rangePixelSize * referenceSample + midSensingStart = referenceSwath.sensingStart + datetime.timedelta(seconds = referenceLine / referenceSwath.prf) + llh = referenceTrack.orbit.rdr2geo(midSensingStart, midRange, side=pointingDirection[referenceTrack.pointingDirection]) + slvaz, slvrng = secondaryTrack.orbit.geo2rdr(llh, side=pointingDirection[referenceTrack.pointingDirection]) ###Translate to offsets - #at this point, slave range pixel size and prf should be the same as those of master - rgoff = ((slvrng - slaveSwath.startingRange) / masterSwath.rangePixelSize) - masterSample - azoff = ((slvaz - slaveSwath.sensingStart).total_seconds() * masterSwath.prf) - masterLine + #at this point, secondary range pixel size and prf should be the same as those of reference + rgoff = ((slvrng - secondarySwath.startingRange) / referenceSwath.rangePixelSize) - referenceSample + azoff = ((slvaz - secondarySwath.sensingStart).total_seconds() * referenceSwath.prf) - referenceLine return (rgoff, azoff) @@ -589,7 +589,7 @@ def cal_coherence(inf, win=5, edge=0): ''' compute coherence uisng only interferogram (phase). This routine still follows the regular equation for computing coherence, - but assumes the amplitudes of master and slave are one, so that coherence + but assumes the amplitudes of reference and secondary are one, so that coherence can be computed using phase only. inf: interferogram @@ -974,9 +974,9 @@ def mosaicBurstAmplitude(swath, burstPrefix, outputFile, numberOfLooksThreshold= create_xml(outputFile, swath.numberOfSamples, swath.numberOfLines, 'float') -def resampleBursts(masterSwath, slaveSwath, - masterBurstDir, slaveBurstDir, slaveBurstResampledDir, interferogramDir, - masterBurstPrefix, slaveBurstPrefix, slaveBurstResampledPrefix, interferogramPrefix, +def resampleBursts(referenceSwath, secondarySwath, + referenceBurstDir, secondaryBurstDir, secondaryBurstResampledDir, interferogramDir, + referenceBurstPrefix, secondaryBurstPrefix, secondaryBurstResampledPrefix, interferogramPrefix, rangeOffset, azimuthOffset, rangeOffsetResidual=0, azimuthOffsetResidual=0): import os @@ -985,119 +985,119 @@ def resampleBursts(masterSwath, slaveSwath, import numpy.matlib from contrib.alos2proc.alos2proc import resamp - os.makedirs(slaveBurstResampledDir, exist_ok=True) + os.makedirs(secondaryBurstResampledDir, exist_ok=True) os.makedirs(interferogramDir, exist_ok=True) #get burst file names - masterBurstSlc = [masterBurstPrefix+'_%02d.slc'%(i+1) for i in range(masterSwath.numberOfBursts)] - slaveBurstSlc = [slaveBurstPrefix+'_%02d.slc'%(i+1) for i in range(slaveSwath.numberOfBursts)] - slaveBurstSlcResampled = [slaveBurstPrefix+'_%02d.slc'%(i+1) for i in range(masterSwath.numberOfBursts)] - interferogram = [interferogramPrefix+'_%02d.int'%(i+1) for i in range(masterSwath.numberOfBursts)] + referenceBurstSlc = [referenceBurstPrefix+'_%02d.slc'%(i+1) for i in range(referenceSwath.numberOfBursts)] + secondaryBurstSlc = [secondaryBurstPrefix+'_%02d.slc'%(i+1) for i in range(secondarySwath.numberOfBursts)] + secondaryBurstSlcResampled = [secondaryBurstPrefix+'_%02d.slc'%(i+1) for i in range(referenceSwath.numberOfBursts)] + interferogram = [interferogramPrefix+'_%02d.int'%(i+1) for i in range(referenceSwath.numberOfBursts)] - length = masterSwath.burstSlcNumberOfLines - width = masterSwath.burstSlcNumberOfSamples - lengthSlave = slaveSwath.burstSlcNumberOfLines - widthSlave = slaveSwath.burstSlcNumberOfSamples + length = referenceSwath.burstSlcNumberOfLines + width = referenceSwath.burstSlcNumberOfSamples + lengthSecondary = secondarySwath.burstSlcNumberOfLines + widthSecondary = secondarySwath.burstSlcNumberOfSamples - #slave burst slc start times - slaveBurstStartTimesSlc = [slaveSwath.firstBurstSlcStartTime + \ - datetime.timedelta(seconds=slaveSwath.burstSlcFirstLineOffsets[i]*slaveSwath.azimuthLineInterval) \ - for i in range(slaveSwath.numberOfBursts)] - #slave burst raw start times - slaveBurstStartTimesRaw = [slaveSwath.firstBurstRawStartTime + \ - datetime.timedelta(seconds=i*slaveSwath.burstCycleLength/slaveSwath.prf) \ - for i in range(slaveSwath.numberOfBursts)] + #secondary burst slc start times + secondaryBurstStartTimesSlc = [secondarySwath.firstBurstSlcStartTime + \ + datetime.timedelta(seconds=secondarySwath.burstSlcFirstLineOffsets[i]*secondarySwath.azimuthLineInterval) \ + for i in range(secondarySwath.numberOfBursts)] + #secondary burst raw start times + secondaryBurstStartTimesRaw = [secondarySwath.firstBurstRawStartTime + \ + datetime.timedelta(seconds=i*secondarySwath.burstCycleLength/secondarySwath.prf) \ + for i in range(secondarySwath.numberOfBursts)] - for i in range(masterSwath.numberOfBursts): + for i in range(referenceSwath.numberOfBursts): ########################################################################## - # 1. get offsets and corresponding slave burst + # 1. get offsets and corresponding secondary burst ########################################################################## #range offset with open(rangeOffset, 'rb') as f: - f.seek(masterSwath.burstSlcFirstLineOffsets[i] * width * np.dtype(np.float32).itemsize, 0) + f.seek(referenceSwath.burstSlcFirstLineOffsets[i] * width * np.dtype(np.float32).itemsize, 0) rgoffBurst = np.fromfile(f, dtype=np.float32, count=length*width).reshape(length,width) if type(rangeOffsetResidual) == np.ndarray: - residual = rangeOffsetResidual[0+masterSwath.burstSlcFirstLineOffsets[i]:length+masterSwath.burstSlcFirstLineOffsets[i],:] + residual = rangeOffsetResidual[0+referenceSwath.burstSlcFirstLineOffsets[i]:length+referenceSwath.burstSlcFirstLineOffsets[i],:] rgoffBurst[np.nonzero(rgoffBurst!=-999999.0)] += residual[np.nonzero(rgoffBurst!=-999999.0)] else: rgoffBurst[np.nonzero(rgoffBurst!=-999999.0)] += rangeOffsetResidual #azimuth offset with open(azimuthOffset, 'rb') as f: - f.seek(masterSwath.burstSlcFirstLineOffsets[i] * width * np.dtype(np.float32).itemsize, 0) + f.seek(referenceSwath.burstSlcFirstLineOffsets[i] * width * np.dtype(np.float32).itemsize, 0) azoffBurst = np.fromfile(f, dtype=np.float32, count=length*width).reshape(length,width) if type(azimuthOffsetResidual) == np.ndarray: - residual = azimuthOffsetResidual[0+masterSwath.burstSlcFirstLineOffsets[i]:length+masterSwath.burstSlcFirstLineOffsets[i],:] + residual = azimuthOffsetResidual[0+referenceSwath.burstSlcFirstLineOffsets[i]:length+referenceSwath.burstSlcFirstLineOffsets[i],:] azoffBurst[np.nonzero(azoffBurst!=-999999.0)] += residual[np.nonzero(azoffBurst!=-999999.0)] else: azoffBurst[np.nonzero(azoffBurst!=-999999.0)] += azimuthOffsetResidual - #find the corresponding slave burst + #find the corresponding secondary burst #get mean offset to use #remove BAD_VALUE = -999999.0 as defined in geo2rdr.f90 #single precision is not accurate enough to compute mean azoffBurstMean = np.mean(azoffBurst[np.nonzero(azoffBurst!=-999999.0)], dtype=np.float64) - iSlave = -1 - for j in range(slaveSwath.numberOfBursts): - if abs(masterSwath.burstSlcFirstLineOffsets[i] + azoffBurstMean - slaveSwath.burstSlcFirstLineOffsets[j]) < (masterSwath.burstLength / masterSwath.prf * 2.0) / masterSwath.azimuthLineInterval: - iSlave = j + iSecondary = -1 + for j in range(secondarySwath.numberOfBursts): + if abs(referenceSwath.burstSlcFirstLineOffsets[i] + azoffBurstMean - secondarySwath.burstSlcFirstLineOffsets[j]) < (referenceSwath.burstLength / referenceSwath.prf * 2.0) / referenceSwath.azimuthLineInterval: + iSecondary = j break - #output zero resampled burst/interferogram if no slave burst found - if iSlave == -1: - print('\nburst pair, master: %2d, slave: no'%(i+1)) + #output zero resampled burst/interferogram if no secondary burst found + if iSecondary == -1: + print('\nburst pair, reference: %2d, secondary: no'%(i+1)) #output an interferogram with all pixels set to zero os.chdir(interferogramDir) np.zeros((length, width), dtype=np.complex64).astype(np.complex64).tofile(interferogram[i]) create_xml(interferogram[i], width, length, 'int') os.chdir('../') - #output a resampled slave image with all pixels set to zero - os.chdir(slaveBurstResampledDir) - np.zeros((length, width), dtype=np.complex64).astype(np.complex64).tofile(slaveBurstSlcResampled[i]) - create_xml(slaveBurstSlcResampled[i], width, length, 'slc') + #output a resampled secondary image with all pixels set to zero + os.chdir(secondaryBurstResampledDir) + np.zeros((length, width), dtype=np.complex64).astype(np.complex64).tofile(secondaryBurstSlcResampled[i]) + create_xml(secondaryBurstSlcResampled[i], width, length, 'slc') os.chdir('../') continue else: - print('\nburst pair, master: %2d, slave: %3d'%(i+1, iSlave+1)) + print('\nburst pair, reference: %2d, secondary: %3d'%(i+1, iSecondary+1)) - #adjust azimuth offset accordingly, since original azimuth offset assumes master and slave start with sensingStart - azoffBurst -= (slaveSwath.burstSlcFirstLineOffsets[iSlave]-masterSwath.burstSlcFirstLineOffsets[i]) + #adjust azimuth offset accordingly, since original azimuth offset assumes reference and secondary start with sensingStart + azoffBurst -= (secondarySwath.burstSlcFirstLineOffsets[iSecondary]-referenceSwath.burstSlcFirstLineOffsets[i]) ########################################################################## # 2. compute deramp and reramp signals ########################################################################## cj = np.complex64(1j) - tbase = (slaveBurstStartTimesSlc[iSlave] - (slaveBurstStartTimesRaw[iSlave] + \ - datetime.timedelta(seconds=(slaveSwath.burstLength - 1.0) / 2.0 / slaveSwath.prf))).total_seconds() + tbase = (secondaryBurstStartTimesSlc[iSecondary] - (secondaryBurstStartTimesRaw[iSecondary] + \ + datetime.timedelta(seconds=(secondarySwath.burstLength - 1.0) / 2.0 / secondarySwath.prf))).total_seconds() #compute deramp signal - index1 = np.matlib.repmat(np.arange(widthSlave), lengthSlave, 1) - index2 = np.matlib.repmat(np.arange(lengthSlave).reshape(lengthSlave, 1), 1, widthSlave) - ka = slaveSwath.azimuthFmrateVsPixel[3] * index1**3 + slaveSwath.azimuthFmrateVsPixel[2] * index1**2 + \ - slaveSwath.azimuthFmrateVsPixel[1] * index1 + slaveSwath.azimuthFmrateVsPixel[0] + index1 = np.matlib.repmat(np.arange(widthSecondary), lengthSecondary, 1) + index2 = np.matlib.repmat(np.arange(lengthSecondary).reshape(lengthSecondary, 1), 1, widthSecondary) + ka = secondarySwath.azimuthFmrateVsPixel[3] * index1**3 + secondarySwath.azimuthFmrateVsPixel[2] * index1**2 + \ + secondarySwath.azimuthFmrateVsPixel[1] * index1 + secondarySwath.azimuthFmrateVsPixel[0] #use the convention that ka > 0 ka = -ka - t = tbase + index2*slaveSwath.azimuthLineInterval + t = tbase + index2*secondarySwath.azimuthLineInterval deramp = np.exp(cj * np.pi * (-ka) * t**2) #compute reramp signal index1 = np.matlib.repmat(np.arange(width), length, 1) + rgoffBurst index2 = np.matlib.repmat(np.arange(length).reshape(length, 1), 1, width) + azoffBurst - ka = slaveSwath.azimuthFmrateVsPixel[3] * index1**3 + slaveSwath.azimuthFmrateVsPixel[2] * index1**2 + \ - slaveSwath.azimuthFmrateVsPixel[1] * index1 + slaveSwath.azimuthFmrateVsPixel[0] + ka = secondarySwath.azimuthFmrateVsPixel[3] * index1**3 + secondarySwath.azimuthFmrateVsPixel[2] * index1**2 + \ + secondarySwath.azimuthFmrateVsPixel[1] * index1 + secondarySwath.azimuthFmrateVsPixel[0] #use the convention that ka > 0 ka = -ka - t = tbase + index2*slaveSwath.azimuthLineInterval + t = tbase + index2*secondarySwath.azimuthLineInterval reramp = np.exp(cj * np.pi * (ka) * t**2) ########################################################################## - # 3. resample slave burst + # 3. resample secondary burst ########################################################################## - #go to slave directory to do resampling - os.chdir(slaveBurstDir) + #go to secondary directory to do resampling + os.chdir(secondaryBurstDir) #output offsets rgoffBurstFile = "burst_rg.off" @@ -1105,39 +1105,39 @@ def resampleBursts(masterSwath, slaveSwath, rgoffBurst.astype(np.float32).tofile(rgoffBurstFile) azoffBurst.astype(np.float32).tofile(azoffBurstFile) - #deramp slave burst - slaveBurstDerampedFile = "slave.slc" - sburst = np.fromfile(slaveBurstSlc[iSlave], dtype=np.complex64).reshape(lengthSlave, widthSlave) - (deramp * sburst).astype(np.complex64).tofile(slaveBurstDerampedFile) - create_xml(slaveBurstDerampedFile, widthSlave, lengthSlave, 'slc') + #deramp secondary burst + secondaryBurstDerampedFile = "secondary.slc" + sburst = np.fromfile(secondaryBurstSlc[iSecondary], dtype=np.complex64).reshape(lengthSecondary, widthSecondary) + (deramp * sburst).astype(np.complex64).tofile(secondaryBurstDerampedFile) + create_xml(secondaryBurstDerampedFile, widthSecondary, lengthSecondary, 'slc') - #resampled slave burst - slaveBurstResampFile = 'slave_resamp.slc' + #resampled secondary burst + secondaryBurstResampFile = 'secondary_resamp.slc' - #resample slave burst + #resample secondary burst #now doppler has bigger impact now, as it's value is about 35 Hz (azimuth resampling frequency is now only 1/20 * PRF) #we don't know if this doppler value is accurate or not, so we set it to zero, which seems to give best resampling result #otherwise if it is not accurate and we still use it, it will significantly affect resampling result - dopplerVsPixel = slaveSwath.dopplerVsPixel + dopplerVsPixel = secondarySwath.dopplerVsPixel dopplerVsPixel = [0.0, 0.0, 0.0, 0.0] - resamp(slaveBurstDerampedFile, slaveBurstResampFile, rgoffBurstFile, azoffBurstFile, width, length, 1.0/slaveSwath.azimuthLineInterval, dopplerVsPixel, + resamp(secondaryBurstDerampedFile, secondaryBurstResampFile, rgoffBurstFile, azoffBurstFile, width, length, 1.0/secondarySwath.azimuthLineInterval, dopplerVsPixel, rgcoef=[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], azcoef=[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], azpos_off=0.0) - #read resampled slave burst and reramp - sburstResamp = reramp * (np.fromfile(slaveBurstResampFile, dtype=np.complex64).reshape(length, width)) + #read resampled secondary burst and reramp + sburstResamp = reramp * (np.fromfile(secondaryBurstResampFile, dtype=np.complex64).reshape(length, width)) #clear up os.remove(rgoffBurstFile) os.remove(azoffBurstFile) - os.remove(slaveBurstDerampedFile) - os.remove(slaveBurstDerampedFile+'.vrt') - os.remove(slaveBurstDerampedFile+'.xml') - os.remove(slaveBurstResampFile) - os.remove(slaveBurstResampFile+'.vrt') - os.remove(slaveBurstResampFile+'.xml') + os.remove(secondaryBurstDerampedFile) + os.remove(secondaryBurstDerampedFile+'.vrt') + os.remove(secondaryBurstDerampedFile+'.xml') + os.remove(secondaryBurstResampFile) + os.remove(secondaryBurstResampFile+'.vrt') + os.remove(secondaryBurstResampFile+'.xml') os.chdir('../') @@ -1145,14 +1145,14 @@ def resampleBursts(masterSwath, slaveSwath, ########################################################################## # 4. dump results ########################################################################## - #dump resampled slave burst - os.chdir(slaveBurstResampledDir) - sburstResamp.astype(np.complex64).tofile(slaveBurstSlcResampled[i]) - create_xml(slaveBurstSlcResampled[i], width, length, 'slc') + #dump resampled secondary burst + os.chdir(secondaryBurstResampledDir) + sburstResamp.astype(np.complex64).tofile(secondaryBurstSlcResampled[i]) + create_xml(secondaryBurstSlcResampled[i], width, length, 'slc') os.chdir('../') #dump burst interferogram - mburst = np.fromfile(os.path.join(masterBurstDir, masterBurstSlc[i]), dtype=np.complex64).reshape(length, width) + mburst = np.fromfile(os.path.join(referenceBurstDir, referenceBurstSlc[i]), dtype=np.complex64).reshape(length, width) os.chdir(interferogramDir) (mburst * np.conj(sburstResamp)).astype(np.complex64).tofile(interferogram[i]) create_xml(interferogram[i], width, length, 'int') diff --git a/components/isceobj/Alos2Proc/denseOffsetNote.txt b/components/isceobj/Alos2Proc/denseOffsetNote.txt index 5db9fe7..61f1ffb 100644 --- a/components/isceobj/Alos2Proc/denseOffsetNote.txt +++ b/components/isceobj/Alos2Proc/denseOffsetNote.txt @@ -1,10 +1,10 @@ on the following paramters might be changed in the denseoffset steps: ======================================================================= if self.frameOffsetMatching == False: - self._insar.frameRangeOffsetMatchingMaster = offsetMaster[2] - self._insar.frameAzimuthOffsetMatchingMaster = offsetMaster[3] - self._insar.frameRangeOffsetMatchingSlave = offsetSlave[2] - self._insar.frameAzimuthOffsetMatchingSlave = offsetSlave[3] + self._insar.frameRangeOffsetMatchingReference = offsetReference[2] + self._insar.frameAzimuthOffsetMatchingReference = offsetReference[3] + self._insar.frameRangeOffsetMatchingSecondary = offsetSecondary[2] + self._insar.frameAzimuthOffsetMatchingSecondary = offsetSecondary[3] Therefore these denseoffset steps could be moved to after 'frame_mosaic' step diff --git a/components/isceobj/Alos2Proc/runCoherence.py b/components/isceobj/Alos2Proc/runCoherence.py index 6d8a645..07fae55 100644 --- a/components/isceobj/Alos2Proc/runCoherence.py +++ b/components/isceobj/Alos2Proc/runCoherence.py @@ -18,8 +18,8 @@ def runCoherence(self): catalog = isceobj.Catalog.createCatalog(self._insar.procDoc.name) self.updateParamemetersFromUser() - #masterTrack = self._insar.loadTrack(master=True) - #slaveTrack = self._insar.loadTrack(master=False) + #referenceTrack = self._insar.loadTrack(reference=True) + #secondaryTrack = self._insar.loadTrack(reference=False) insarDir = 'insar' os.makedirs(insarDir, exist_ok=True) diff --git a/components/isceobj/Alos2Proc/runDenseOffset.py b/components/isceobj/Alos2Proc/runDenseOffset.py index f7fc2c0..1c87b9c 100644 --- a/components/isceobj/Alos2Proc/runDenseOffset.py +++ b/components/isceobj/Alos2Proc/runDenseOffset.py @@ -27,8 +27,8 @@ def runDenseOffset(self): os.makedirs(denseOffsetDir, exist_ok=True) os.chdir(denseOffsetDir) - #masterTrack = self._insar.loadProduct(self._insar.masterTrackParameter) - #slaveTrack = self._insar.loadProduct(self._insar.slaveTrackParameter) + #referenceTrack = self._insar.loadProduct(self._insar.referenceTrackParameter) + #secondaryTrack = self._insar.loadProduct(self._insar.secondaryTrackParameter) ######################################################################################### @@ -101,24 +101,24 @@ def runDenseOffsetCPU(self): from isceobj.Alos2Proc.Alos2ProcPublic import runCmd ####For this module currently, we need to create an actual file on disk - for infile in [self._insar.masterSlc, self._insar.slaveSlcCoregistered]: + for infile in [self._insar.referenceSlc, self._insar.secondarySlcCoregistered]: if os.path.isfile(infile): continue cmd = 'gdal_translate -of ENVI {0}.vrt {0}'.format(infile) runCmd(cmd) m = isceobj.createSlcImage() - m.load(self._insar.masterSlc + '.xml') + m.load(self._insar.referenceSlc + '.xml') m.setAccessMode('READ') s = isceobj.createSlcImage() - s.load(self._insar.slaveSlcCoregistered + '.xml') + s.load(self._insar.secondarySlcCoregistered + '.xml') s.setAccessMode('READ') #objOffset.numberThreads = 1 print('\n************* dense offset estimation parameters *************') - print('master SLC: %s' % (self._insar.masterSlc)) - print('slave SLC: %s' % (self._insar.slaveSlcCoregistered)) + print('reference SLC: %s' % (self._insar.referenceSlc)) + print('secondary SLC: %s' % (self._insar.secondarySlcCoregistered)) print('dense offset estimation window width: %d' % (self.offsetWindowWidth)) print('dense offset estimation window hight: %d' % (self.offsetWindowHeight)) print('dense offset search window width: %d' % (self.offsetSearchWindowWidth)) @@ -216,23 +216,23 @@ def runDenseOffsetGPU(self): ####For this module currently, we need to create an actual file on disk - for infile in [self._insar.masterSlc, self._insar.slaveSlcCoregistered]: + for infile in [self._insar.referenceSlc, self._insar.secondarySlcCoregistered]: if os.path.isfile(infile): continue cmd = 'gdal_translate -of ENVI {0}.vrt {0}'.format(infile) runCmd(cmd) m = isceobj.createSlcImage() - m.load(self._insar.masterSlc + '.xml') + m.load(self._insar.referenceSlc + '.xml') m.setAccessMode('READ') s = isceobj.createSlcImage() - s.load(self._insar.slaveSlcCoregistered + '.xml') + s.load(self._insar.secondarySlcCoregistered + '.xml') s.setAccessMode('READ') print('\n************* dense offset estimation parameters *************') - print('master SLC: %s' % (self._insar.masterSlc)) - print('slave SLC: %s' % (self._insar.slaveSlcCoregistered)) + print('reference SLC: %s' % (self._insar.referenceSlc)) + print('secondary SLC: %s' % (self._insar.secondarySlcCoregistered)) print('dense offset estimation window width: %d' % (self.offsetWindowWidth)) print('dense offset estimation window hight: %d' % (self.offsetWindowHeight)) print('dense offset search window width: %d' % (self.offsetSearchWindowWidth)) @@ -249,12 +249,12 @@ def runDenseOffsetGPU(self): objOffset.nStreams = 2 #original ampcor program in roi_pac uses phase gradient to deramp objOffset.derampMethod = 2 - objOffset.masterImageName = self._insar.masterSlc - objOffset.masterImageHeight = m.length - objOffset.masterImageWidth = m.width - objOffset.slaveImageName = self._insar.slaveSlcCoregistered - objOffset.slaveImageHeight = s.length - objOffset.slaveImageWidth = s.width + objOffset.referenceImageName = self._insar.referenceSlc + objOffset.referenceImageHeight = m.length + objOffset.referenceImageWidth = m.width + objOffset.secondaryImageName = self._insar.secondarySlcCoregistered + objOffset.secondaryImageHeight = s.length + objOffset.secondaryImageWidth = s.width objOffset.offsetImageName = self._insar.denseOffset objOffset.snrImageName = self._insar.denseOffsetSnr @@ -273,8 +273,8 @@ def runDenseOffsetGPU(self): objOffset.grossOffsetAcrossStatic = 0 objOffset.grossOffsetDownStatic = 0 - objOffset.masterStartPixelDownStatic = self.offsetWindowHeight//2 - objOffset.masterStartPixelAcrossStatic = self.offsetWindowWidth//2 + objOffset.referenceStartPixelDownStatic = self.offsetWindowHeight//2 + objOffset.referenceStartPixelAcrossStatic = self.offsetWindowWidth//2 objOffset.numberWindowDown = (m.length - 2*self.offsetSearchWindowHeight - self.offsetWindowHeight) // self.offsetSkipHeight objOffset.numberWindowAcross = (m.width - 2*self.offsetSearchWindowWidth - self.offsetWindowWidth) // self.offsetSkipWidth diff --git a/components/isceobj/Alos2Proc/runDiffInterferogram.py b/components/isceobj/Alos2Proc/runDiffInterferogram.py index c027022..0ac3c3a 100644 --- a/components/isceobj/Alos2Proc/runDiffInterferogram.py +++ b/components/isceobj/Alos2Proc/runDiffInterferogram.py @@ -18,15 +18,15 @@ def runDiffInterferogram(self): catalog = isceobj.Catalog.createCatalog(self._insar.procDoc.name) self.updateParamemetersFromUser() - masterTrack = self._insar.loadTrack(master=True) + referenceTrack = self._insar.loadTrack(reference=True) insarDir = 'insar' os.makedirs(insarDir, exist_ok=True) os.chdir(insarDir) - rangePixelSize = self._insar.numberRangeLooks1 * masterTrack.rangePixelSize - radarWavelength = masterTrack.radarWavelength + rangePixelSize = self._insar.numberRangeLooks1 * referenceTrack.rangePixelSize + radarWavelength = referenceTrack.radarWavelength cmd = "imageMath.py -e='a*exp(-1.0*J*b*4.0*{}*{}/{}) * (b!=0)' --a={} --b={} -o {} -t cfloat".format(np.pi, rangePixelSize, radarWavelength, self._insar.interferogram, self._insar.rectRangeOffset, self._insar.differentialInterferogram) runCmd(cmd) diff --git a/components/isceobj/Alos2Proc/runDownloadDem.py b/components/isceobj/Alos2Proc/runDownloadDem.py index 40d2d4e..8e822a4 100644 --- a/components/isceobj/Alos2Proc/runDownloadDem.py +++ b/components/isceobj/Alos2Proc/runDownloadDem.py @@ -20,10 +20,10 @@ def runDownloadDem(self): catalog = isceobj.Catalog.createCatalog(self._insar.procDoc.name) self.updateParamemetersFromUser() - masterTrack = self._insar.loadTrack(master=True) - slaveTrack = self._insar.loadTrack(master=False) + referenceTrack = self._insar.loadTrack(reference=True) + secondaryTrack = self._insar.loadTrack(reference=False) - bboxGeo = getBboxGeo(masterTrack) + bboxGeo = getBboxGeo(referenceTrack) bbox = np.array(bboxGeo) bboxStr = '{} {} {} {}'.format(np.int(np.floor(bbox[0])), np.int(np.ceil(bbox[1])), np.int(np.floor(bbox[2])), np.int(np.ceil(bbox[3]))) diff --git a/components/isceobj/Alos2Proc/runFilt.py b/components/isceobj/Alos2Proc/runFilt.py index 49a71ec..0452943 100644 --- a/components/isceobj/Alos2Proc/runFilt.py +++ b/components/isceobj/Alos2Proc/runFilt.py @@ -24,8 +24,8 @@ def runFilt(self): catalog = isceobj.Catalog.createCatalog(self._insar.procDoc.name) self.updateParamemetersFromUser() - #masterTrack = self._insar.loadTrack(master=True) - #slaveTrack = self._insar.loadTrack(master=False) + #referenceTrack = self._insar.loadTrack(reference=True) + #secondaryTrack = self._insar.loadTrack(reference=False) insarDir = 'insar' os.makedirs(insarDir, exist_ok=True) diff --git a/components/isceobj/Alos2Proc/runFiltOffset.py b/components/isceobj/Alos2Proc/runFiltOffset.py index 876024c..472e2fc 100644 --- a/components/isceobj/Alos2Proc/runFiltOffset.py +++ b/components/isceobj/Alos2Proc/runFiltOffset.py @@ -28,8 +28,8 @@ def runFiltOffset(self): os.makedirs(denseOffsetDir, exist_ok=True) os.chdir(denseOffsetDir) - #masterTrack = self._insar.loadProduct(self._insar.masterTrackParameter) - #slaveTrack = self._insar.loadProduct(self._insar.slaveTrackParameter) + #referenceTrack = self._insar.loadProduct(self._insar.referenceTrackParameter) + #secondaryTrack = self._insar.loadProduct(self._insar.secondaryTrackParameter) ######################################################################################### diff --git a/components/isceobj/Alos2Proc/runFormInterferogram.py b/components/isceobj/Alos2Proc/runFormInterferogram.py index 3c2b887..0e17417 100644 --- a/components/isceobj/Alos2Proc/runFormInterferogram.py +++ b/components/isceobj/Alos2Proc/runFormInterferogram.py @@ -21,10 +21,10 @@ def runFormInterferogram(self): catalog = isceobj.Catalog.createCatalog(self._insar.procDoc.name) self.updateParamemetersFromUser() - masterTrack = self._insar.loadTrack(master=True) - slaveTrack = self._insar.loadTrack(master=False) + referenceTrack = self._insar.loadTrack(reference=True) + secondaryTrack = self._insar.loadTrack(reference=False) - for i, frameNumber in enumerate(self._insar.masterFrames): + for i, frameNumber in enumerate(self._insar.referenceFrames): frameDir = 'f{}_{}'.format(i+1, frameNumber) os.chdir(frameDir) for j, swathNumber in enumerate(range(self._insar.startingSwath, self._insar.endingSwath + 1)): @@ -33,27 +33,27 @@ def runFormInterferogram(self): print('forming interferogram frame {}, swath {}'.format(frameNumber, swathNumber)) - masterSwath = masterTrack.frames[i].swaths[j] - slaveSwath = slaveTrack.frames[i].swaths[j] + referenceSwath = referenceTrack.frames[i].swaths[j] + secondarySwath = secondaryTrack.frames[i].swaths[j] ############################################# #1. form interferogram ############################################# refinedOffsets = readOffset('cull.off') - intWidth = int(masterSwath.numberOfSamples / self._insar.numberRangeLooks1) - intLength = int(masterSwath.numberOfLines / self._insar.numberAzimuthLooks1) - dopplerVsPixel = [i/slaveSwath.prf for i in slaveSwath.dopplerVsPixel] + intWidth = int(referenceSwath.numberOfSamples / self._insar.numberRangeLooks1) + intLength = int(referenceSwath.numberOfLines / self._insar.numberAzimuthLooks1) + dopplerVsPixel = [i/secondarySwath.prf for i in secondarySwath.dopplerVsPixel] - #master slc + #reference slc mSLC = isceobj.createSlcImage() - mSLC.load(self._insar.masterSlc+'.xml') + mSLC.load(self._insar.referenceSlc+'.xml') mSLC.setAccessMode('read') mSLC.createImage() - #slave slc + #secondary slc sSLC = isceobj.createSlcImage() - sSLC.load(self._insar.slaveSlc+'.xml') + sSLC.load(self._insar.secondarySlc+'.xml') sSLC.setAccessMode('read') sSLC.createImage() @@ -86,14 +86,14 @@ def runFormInterferogram(self): objResamp.wireInputPort(name='offsets', object=refinedOffsets) objResamp.stdWriter = stdWriter objResamp.setNumberFitCoefficients(6) - objResamp.setNumberRangeBin1(masterSwath.numberOfSamples) - objResamp.setNumberRangeBin2(slaveSwath.numberOfSamples) + objResamp.setNumberRangeBin1(referenceSwath.numberOfSamples) + objResamp.setNumberRangeBin2(secondarySwath.numberOfSamples) objResamp.setStartLine(1) - objResamp.setNumberLines(masterSwath.numberOfLines) + objResamp.setNumberLines(referenceSwath.numberOfLines) objResamp.setFirstLineOffset(1) objResamp.setDopplerCentroidCoefficients(dopplerVsPixel) - objResamp.setRadarWavelength(slaveTrack.radarWavelength) - objResamp.setSlantRangePixelSpacing(slaveSwath.rangePixelSize) + objResamp.setRadarWavelength(secondaryTrack.radarWavelength) + objResamp.setSlantRangePixelSpacing(secondarySwath.rangePixelSize) objResamp.setNumberRangeLooks(self._insar.numberRangeLooks1) objResamp.setNumberAzimuthLooks(self._insar.numberAzimuthLooks1) objResamp.setFlattenWithOffsetFitFlag(0) diff --git a/components/isceobj/Alos2Proc/runFrameMosaic.py b/components/isceobj/Alos2Proc/runFrameMosaic.py index 91a9c00..45f2464 100644 --- a/components/isceobj/Alos2Proc/runFrameMosaic.py +++ b/components/isceobj/Alos2Proc/runFrameMosaic.py @@ -20,17 +20,17 @@ def runFrameMosaic(self): catalog = isceobj.Catalog.createCatalog(self._insar.procDoc.name) self.updateParamemetersFromUser() - masterTrack = self._insar.loadTrack(master=True) - slaveTrack = self._insar.loadTrack(master=False) + referenceTrack = self._insar.loadTrack(reference=True) + secondaryTrack = self._insar.loadTrack(reference=False) mosaicDir = 'insar' os.makedirs(mosaicDir, exist_ok=True) os.chdir(mosaicDir) - numberOfFrames = len(masterTrack.frames) + numberOfFrames = len(referenceTrack.frames) if numberOfFrames == 1: import shutil - frameDir = os.path.join('f1_{}/mosaic'.format(self._insar.masterFrames[0])) + frameDir = os.path.join('f1_{}/mosaic'.format(self._insar.referenceFrames[0])) if not os.path.isfile(self._insar.interferogram): os.symlink(os.path.join('../', frameDir, self._insar.interferogram), self._insar.interferogram) #shutil.copy2() can overwrite @@ -51,75 +51,75 @@ def runFrameMosaic(self): #update track parameters ######################################################### #mosaic size - masterTrack.numberOfSamples = masterTrack.frames[0].numberOfSamples - masterTrack.numberOfLines = masterTrack.frames[0].numberOfLines + referenceTrack.numberOfSamples = referenceTrack.frames[0].numberOfSamples + referenceTrack.numberOfLines = referenceTrack.frames[0].numberOfLines #NOTE THAT WE ARE STILL USING SINGLE LOOK PARAMETERS HERE #range parameters - masterTrack.startingRange = masterTrack.frames[0].startingRange - masterTrack.rangeSamplingRate = masterTrack.frames[0].rangeSamplingRate - masterTrack.rangePixelSize = masterTrack.frames[0].rangePixelSize + referenceTrack.startingRange = referenceTrack.frames[0].startingRange + referenceTrack.rangeSamplingRate = referenceTrack.frames[0].rangeSamplingRate + referenceTrack.rangePixelSize = referenceTrack.frames[0].rangePixelSize #azimuth parameters - masterTrack.sensingStart = masterTrack.frames[0].sensingStart - masterTrack.prf = masterTrack.frames[0].prf - masterTrack.azimuthPixelSize = masterTrack.frames[0].azimuthPixelSize - masterTrack.azimuthLineInterval = masterTrack.frames[0].azimuthLineInterval + referenceTrack.sensingStart = referenceTrack.frames[0].sensingStart + referenceTrack.prf = referenceTrack.frames[0].prf + referenceTrack.azimuthPixelSize = referenceTrack.frames[0].azimuthPixelSize + referenceTrack.azimuthLineInterval = referenceTrack.frames[0].azimuthLineInterval - #update track parameters, slave + #update track parameters, secondary ######################################################### #mosaic size - slaveTrack.numberOfSamples = slaveTrack.frames[0].numberOfSamples - slaveTrack.numberOfLines = slaveTrack.frames[0].numberOfLines + secondaryTrack.numberOfSamples = secondaryTrack.frames[0].numberOfSamples + secondaryTrack.numberOfLines = secondaryTrack.frames[0].numberOfLines #NOTE THAT WE ARE STILL USING SINGLE LOOK PARAMETERS HERE #range parameters - slaveTrack.startingRange = slaveTrack.frames[0].startingRange - slaveTrack.rangeSamplingRate = slaveTrack.frames[0].rangeSamplingRate - slaveTrack.rangePixelSize = slaveTrack.frames[0].rangePixelSize + secondaryTrack.startingRange = secondaryTrack.frames[0].startingRange + secondaryTrack.rangeSamplingRate = secondaryTrack.frames[0].rangeSamplingRate + secondaryTrack.rangePixelSize = secondaryTrack.frames[0].rangePixelSize #azimuth parameters - slaveTrack.sensingStart = slaveTrack.frames[0].sensingStart - slaveTrack.prf = slaveTrack.frames[0].prf - slaveTrack.azimuthPixelSize = slaveTrack.frames[0].azimuthPixelSize - slaveTrack.azimuthLineInterval = slaveTrack.frames[0].azimuthLineInterval + secondaryTrack.sensingStart = secondaryTrack.frames[0].sensingStart + secondaryTrack.prf = secondaryTrack.frames[0].prf + secondaryTrack.azimuthPixelSize = secondaryTrack.frames[0].azimuthPixelSize + secondaryTrack.azimuthLineInterval = secondaryTrack.frames[0].azimuthLineInterval else: #choose offsets if self.frameOffsetMatching: - rangeOffsets = self._insar.frameRangeOffsetMatchingMaster - azimuthOffsets = self._insar.frameAzimuthOffsetMatchingMaster + rangeOffsets = self._insar.frameRangeOffsetMatchingReference + azimuthOffsets = self._insar.frameAzimuthOffsetMatchingReference else: - rangeOffsets = self._insar.frameRangeOffsetGeometricalMaster - azimuthOffsets = self._insar.frameAzimuthOffsetGeometricalMaster + rangeOffsets = self._insar.frameRangeOffsetGeometricalReference + azimuthOffsets = self._insar.frameAzimuthOffsetGeometricalReference #list of input files inputInterferograms = [] inputAmplitudes = [] - for i, frameNumber in enumerate(self._insar.masterFrames): + for i, frameNumber in enumerate(self._insar.referenceFrames): frameDir = 'f{}_{}'.format(i+1, frameNumber) inputInterferograms.append(os.path.join('../', frameDir, 'mosaic', self._insar.interferogram)) inputAmplitudes.append(os.path.join('../', frameDir, 'mosaic', self._insar.amplitude)) #note that track parameters are updated after mosaicking #mosaic amplitudes - frameMosaic(masterTrack, inputAmplitudes, self._insar.amplitude, + frameMosaic(referenceTrack, inputAmplitudes, self._insar.amplitude, rangeOffsets, azimuthOffsets, self._insar.numberRangeLooks1, self._insar.numberAzimuthLooks1, updateTrack=False, phaseCompensation=False, resamplingMethod=0) #mosaic interferograms - frameMosaic(masterTrack, inputInterferograms, self._insar.interferogram, + frameMosaic(referenceTrack, inputInterferograms, self._insar.interferogram, rangeOffsets, azimuthOffsets, self._insar.numberRangeLooks1, self._insar.numberAzimuthLooks1, updateTrack=True, phaseCompensation=True, resamplingMethod=1) - create_xml(self._insar.amplitude, masterTrack.numberOfSamples, masterTrack.numberOfLines, 'amp') - create_xml(self._insar.interferogram, masterTrack.numberOfSamples, masterTrack.numberOfLines, 'int') + create_xml(self._insar.amplitude, referenceTrack.numberOfSamples, referenceTrack.numberOfLines, 'amp') + create_xml(self._insar.interferogram, referenceTrack.numberOfSamples, referenceTrack.numberOfLines, 'int') - #update slave parameters here - #do not match for slave, always use geometrical - rangeOffsets = self._insar.frameRangeOffsetGeometricalSlave - azimuthOffsets = self._insar.frameAzimuthOffsetGeometricalSlave - frameMosaicParameters(slaveTrack, rangeOffsets, azimuthOffsets, self._insar.numberRangeLooks1, self._insar.numberAzimuthLooks1) + #update secondary parameters here + #do not match for secondary, always use geometrical + rangeOffsets = self._insar.frameRangeOffsetGeometricalSecondary + azimuthOffsets = self._insar.frameAzimuthOffsetGeometricalSecondary + frameMosaicParameters(secondaryTrack, rangeOffsets, azimuthOffsets, self._insar.numberRangeLooks1, self._insar.numberAzimuthLooks1) os.chdir('../') #save parameter file - self._insar.saveProduct(masterTrack, self._insar.masterTrackParameter) - self._insar.saveProduct(slaveTrack, self._insar.slaveTrackParameter) + self._insar.saveProduct(referenceTrack, self._insar.referenceTrackParameter) + self._insar.saveProduct(secondaryTrack, self._insar.secondaryTrackParameter) catalog.printToLog(logger, "runFrameMosaic") self._insar.procDoc.addAllFromCatalog(catalog) diff --git a/components/isceobj/Alos2Proc/runFrameOffset.py b/components/isceobj/Alos2Proc/runFrameOffset.py index 02f84fc..4a95e2d 100644 --- a/components/isceobj/Alos2Proc/runFrameOffset.py +++ b/components/isceobj/Alos2Proc/runFrameOffset.py @@ -16,14 +16,14 @@ def runFrameOffset(self): catalog = isceobj.Catalog.createCatalog(self._insar.procDoc.name) self.updateParamemetersFromUser() - masterTrack = self._insar.loadTrack(master=True) - slaveTrack = self._insar.loadTrack(master=False) + referenceTrack = self._insar.loadTrack(reference=True) + secondaryTrack = self._insar.loadTrack(reference=False) mosaicDir = 'insar' os.makedirs(mosaicDir, exist_ok=True) os.chdir(mosaicDir) - if len(masterTrack.frames) > 1: + if len(referenceTrack.frames) > 1: if (self._insar.modeCombination == 21) or \ (self._insar.modeCombination == 22) or \ (self._insar.modeCombination == 31) or \ @@ -33,21 +33,21 @@ def runFrameOffset(self): matchingMode=1 #compute swath offset - offsetMaster = frameOffset(masterTrack, self._insar.masterSlc, self._insar.masterFrameOffset, + offsetReference = frameOffset(referenceTrack, self._insar.referenceSlc, self._insar.referenceFrameOffset, crossCorrelation=self.frameOffsetMatching, matchingMode=matchingMode) - #only use geometrical offset for slave - offsetSlave = frameOffset(slaveTrack, self._insar.slaveSlc, self._insar.slaveFrameOffset, + #only use geometrical offset for secondary + offsetSecondary = frameOffset(secondaryTrack, self._insar.secondarySlc, self._insar.secondaryFrameOffset, crossCorrelation=False, matchingMode=matchingMode) - self._insar.frameRangeOffsetGeometricalMaster = offsetMaster[0] - self._insar.frameAzimuthOffsetGeometricalMaster = offsetMaster[1] - self._insar.frameRangeOffsetGeometricalSlave = offsetSlave[0] - self._insar.frameAzimuthOffsetGeometricalSlave = offsetSlave[1] + self._insar.frameRangeOffsetGeometricalReference = offsetReference[0] + self._insar.frameAzimuthOffsetGeometricalReference = offsetReference[1] + self._insar.frameRangeOffsetGeometricalSecondary = offsetSecondary[0] + self._insar.frameAzimuthOffsetGeometricalSecondary = offsetSecondary[1] if self.frameOffsetMatching: - self._insar.frameRangeOffsetMatchingMaster = offsetMaster[2] - self._insar.frameAzimuthOffsetMatchingMaster = offsetMaster[3] - #self._insar.frameRangeOffsetMatchingSlave = offsetSlave[2] - #self._insar.frameAzimuthOffsetMatchingSlave = offsetSlave[3] + self._insar.frameRangeOffsetMatchingReference = offsetReference[2] + self._insar.frameAzimuthOffsetMatchingReference = offsetReference[3] + #self._insar.frameRangeOffsetMatchingSecondary = offsetSecondary[2] + #self._insar.frameAzimuthOffsetMatchingSecondary = offsetSecondary[3] os.chdir('../') @@ -188,8 +188,8 @@ def estimateFrameOffset(swath1, swath2, image1, image2, matchingMode=0): else: raise Exception('file type not supported yet.') - ampcor.setMasterSlcImage(mSLC) - ampcor.setSlaveSlcImage(sSLC) + ampcor.setReferenceSlcImage(mSLC) + ampcor.setSecondarySlcImage(sSLC) #MATCH REGION #compute an offset at image center to use diff --git a/components/isceobj/Alos2Proc/runGeo2Rdr.py b/components/isceobj/Alos2Proc/runGeo2Rdr.py index 129cd59..6aeb37a 100644 --- a/components/isceobj/Alos2Proc/runGeo2Rdr.py +++ b/components/isceobj/Alos2Proc/runGeo2Rdr.py @@ -16,7 +16,7 @@ def runGeo2Rdr(self): catalog = isceobj.Catalog.createCatalog(self._insar.procDoc.name) self.updateParamemetersFromUser() - slaveTrack = self._insar.loadTrack(master=False) + secondaryTrack = self._insar.loadTrack(reference=False) insarDir = 'insar' os.makedirs(insarDir, exist_ok=True) @@ -25,10 +25,10 @@ def runGeo2Rdr(self): hasGPU= self.useGPU and self._insar.hasGPU() if hasGPU: - geo2RdrGPU(slaveTrack, self._insar.numberRangeLooks1, self._insar.numberAzimuthLooks1, + geo2RdrGPU(secondaryTrack, self._insar.numberRangeLooks1, self._insar.numberAzimuthLooks1, self._insar.latitude, self._insar.longitude, self._insar.height, self._insar.rangeOffset, self._insar.azimuthOffset) else: - geo2RdrCPU(slaveTrack, self._insar.numberRangeLooks1, self._insar.numberAzimuthLooks1, + geo2RdrCPU(secondaryTrack, self._insar.numberRangeLooks1, self._insar.numberAzimuthLooks1, self._insar.latitude, self._insar.longitude, self._insar.height, self._insar.rangeOffset, self._insar.azimuthOffset) os.chdir('../') @@ -37,7 +37,7 @@ def runGeo2Rdr(self): self._insar.procDoc.addAllFromCatalog(catalog) -def geo2RdrCPU(slaveTrack, numberRangeLooks, numberAzimuthLooks, latFile, lonFile, hgtFile, rangeOffsetFile, azimuthOffsetFile): +def geo2RdrCPU(secondaryTrack, numberRangeLooks, numberAzimuthLooks, latFile, lonFile, hgtFile, rangeOffsetFile, azimuthOffsetFile): import datetime from zerodop.geo2rdr import createGeo2rdr from isceobj.Planet.Planet import Planet @@ -61,20 +61,20 @@ def geo2RdrCPU(slaveTrack, numberRangeLooks, numberAzimuthLooks, latFile, lonFil topo = createGeo2rdr() topo.configure() #set parameters - topo.slantRangePixelSpacing = numberRangeLooks * slaveTrack.rangePixelSize - topo.prf = 1.0 / (numberAzimuthLooks*slaveTrack.azimuthLineInterval) - topo.radarWavelength = slaveTrack.radarWavelength - topo.orbit = slaveTrack.orbit - topo.width = slaveTrack.numberOfSamples - topo.length = slaveTrack.numberOfLines + topo.slantRangePixelSpacing = numberRangeLooks * secondaryTrack.rangePixelSize + topo.prf = 1.0 / (numberAzimuthLooks*secondaryTrack.azimuthLineInterval) + topo.radarWavelength = secondaryTrack.radarWavelength + topo.orbit = secondaryTrack.orbit + topo.width = secondaryTrack.numberOfSamples + topo.length = secondaryTrack.numberOfLines topo.demLength = demImage.length topo.demWidth = demImage.width topo.wireInputPort(name='planet', object=planet) topo.numberRangeLooks = 1 # topo.numberAzimuthLooks = 1 # must be set to be 1 - topo.lookSide = pointingDirection[slaveTrack.pointingDirection] - topo.setSensingStart(slaveTrack.sensingStart + datetime.timedelta(seconds=(numberAzimuthLooks-1.0)/2.0*slaveTrack.azimuthLineInterval)) - topo.rangeFirstSample = slaveTrack.startingRange + (numberRangeLooks-1.0)/2.0*slaveTrack.rangePixelSize + topo.lookSide = pointingDirection[secondaryTrack.pointingDirection] + topo.setSensingStart(secondaryTrack.sensingStart + datetime.timedelta(seconds=(numberAzimuthLooks-1.0)/2.0*secondaryTrack.azimuthLineInterval)) + topo.rangeFirstSample = secondaryTrack.startingRange + (numberRangeLooks-1.0)/2.0*secondaryTrack.rangePixelSize topo.dopplerCentroidCoeffs = [0.] # we are using zero doppler geometry #set files topo.latImage = latImage @@ -88,7 +88,7 @@ def geo2RdrCPU(slaveTrack, numberRangeLooks, numberAzimuthLooks, latFile, lonFil return -def geo2RdrGPU(slaveTrack, numberRangeLooks, numberAzimuthLooks, latFile, lonFile, hgtFile, rangeOffsetFile, azimuthOffsetFile): +def geo2RdrGPU(secondaryTrack, numberRangeLooks, numberAzimuthLooks, latFile, lonFile, hgtFile, rangeOffsetFile, azimuthOffsetFile): ''' currently we cannot set left/right looking. works for right looking, but left looking probably not supported. @@ -118,14 +118,14 @@ def geo2RdrGPU(slaveTrack, numberRangeLooks, numberAzimuthLooks, latFile, lonFil planet = Planet(pname='Earth') grdr = PyGeo2rdr() - grdr.setRangePixelSpacing(numberRangeLooks * slaveTrack.rangePixelSize) - grdr.setPRF(1.0 / (numberAzimuthLooks*slaveTrack.azimuthLineInterval)) - grdr.setRadarWavelength(slaveTrack.radarWavelength) + grdr.setRangePixelSpacing(numberRangeLooks * secondaryTrack.rangePixelSize) + grdr.setPRF(1.0 / (numberAzimuthLooks*secondaryTrack.azimuthLineInterval)) + grdr.setRadarWavelength(secondaryTrack.radarWavelength) #CHECK IF THIS WORKS!!! - grdr.createOrbit(0, len(slaveTrack.orbit.stateVectors.list)) + grdr.createOrbit(0, len(secondaryTrack.orbit.stateVectors.list)) count = 0 - for sv in slaveTrack.orbit.stateVectors.list: + for sv in secondaryTrack.orbit.stateVectors.list: td = DTU.seconds_since_midnight(sv.getTime()) pos = sv.getPosition() vel = sv.getVelocity() @@ -134,10 +134,10 @@ def geo2RdrGPU(slaveTrack, numberRangeLooks, numberAzimuthLooks, latFile, lonFil count += 1 grdr.setOrbitMethod(0) - grdr.setWidth(slaveTrack.numberOfSamples) - grdr.setLength(slaveTrack.numberOfLines) - grdr.setSensingStart(DTU.seconds_since_midnight(slaveTrack.sensingStart + datetime.timedelta(seconds=(numberAzimuthLooks-1.0)/2.0*slaveTrack.azimuthLineInterval))) - grdr.setRangeFirstSample(slaveTrack.startingRange + (numberRangeLooks-1.0)/2.0*slaveTrack.rangePixelSize) + grdr.setWidth(secondaryTrack.numberOfSamples) + grdr.setLength(secondaryTrack.numberOfLines) + grdr.setSensingStart(DTU.seconds_since_midnight(secondaryTrack.sensingStart + datetime.timedelta(seconds=(numberAzimuthLooks-1.0)/2.0*secondaryTrack.azimuthLineInterval))) + grdr.setRangeFirstSample(secondaryTrack.startingRange + (numberRangeLooks-1.0)/2.0*secondaryTrack.rangePixelSize) grdr.setNumberRangeLooks(1) grdr.setNumberAzimuthLooks(1) grdr.setEllipsoidMajorSemiAxis(planet.ellipsoid.a) diff --git a/components/isceobj/Alos2Proc/runGeocode.py b/components/isceobj/Alos2Proc/runGeocode.py index 386bb38..0269aed 100644 --- a/components/isceobj/Alos2Proc/runGeocode.py +++ b/components/isceobj/Alos2Proc/runGeocode.py @@ -19,8 +19,8 @@ def runGeocode(self): catalog = isceobj.Catalog.createCatalog(self._insar.procDoc.name) self.updateParamemetersFromUser() - masterTrack = self._insar.loadTrack(master=True) - #slaveTrack = self._insar.loadTrack(master=False) + referenceTrack = self._insar.loadTrack(reference=True) + #secondaryTrack = self._insar.loadTrack(reference=False) demFile = os.path.abspath(self._insar.demGeo) @@ -30,7 +30,7 @@ def runGeocode(self): #compute bounding box for geocoding if self.bbox == None: - bbox = getBboxGeo(masterTrack) + bbox = getBboxGeo(referenceTrack) else: bbox = self.bbox catalog.addItem('geocode bounding box', bbox, 'runGeocode') @@ -61,7 +61,7 @@ def runGeocode(self): else: interpMethod = self.geocodeInterpMethod.lower() - geocode(masterTrack, demFile, inputFile, bbox, numberRangeLooks, numberAzimuthLooks, interpMethod, 0, 0) + geocode(referenceTrack, demFile, inputFile, bbox, numberRangeLooks, numberAzimuthLooks, interpMethod, 0, 0) os.chdir('../') diff --git a/components/isceobj/Alos2Proc/runGeocodeOffset.py b/components/isceobj/Alos2Proc/runGeocodeOffset.py index 6a1ffee..8d5d78a 100644 --- a/components/isceobj/Alos2Proc/runGeocodeOffset.py +++ b/components/isceobj/Alos2Proc/runGeocodeOffset.py @@ -26,8 +26,8 @@ def runGeocodeOffset(self): #use original track object to determine bbox if self.bbox == None: - masterTrack = self._insar.loadTrack(master=True) - bbox = getBboxGeo(masterTrack) + referenceTrack = self._insar.loadTrack(reference=True) + bbox = getBboxGeo(referenceTrack) else: bbox = self.bbox catalog.addItem('geocode bounding box', bbox, 'runGeocodeOffset') @@ -38,13 +38,13 @@ def runGeocodeOffset(self): os.makedirs(denseOffsetDir, exist_ok=True) os.chdir(denseOffsetDir) - masterTrack = self._insar.loadProduct(self._insar.masterTrackParameter) - #slaveTrack = self._insar.loadProduct(self._insar.slaveTrackParameter) + referenceTrack = self._insar.loadProduct(self._insar.referenceTrackParameter) + #secondaryTrack = self._insar.loadProduct(self._insar.secondaryTrackParameter) ######################################################################################### #compute bounding box for geocoding #if self.bbox == None: - # bbox = getBboxGeo(masterTrack) + # bbox = getBboxGeo(referenceTrack) #else: # bbox = self.bbox #catalog.addItem('geocode bounding box', bbox, 'runGeocodeOffset') @@ -55,7 +55,7 @@ def runGeocodeOffset(self): for inputFile in geocodeList: interpMethod = 'nearest' - geocode(masterTrack, demFile, inputFile, bbox, self.offsetSkipWidth, self.offsetSkipHeight, interpMethod, self._insar.offsetImageTopoffset, self._insar.offsetImageLeftoffset, addMultilookOffset=False) + geocode(referenceTrack, demFile, inputFile, bbox, self.offsetSkipWidth, self.offsetSkipHeight, interpMethod, self._insar.offsetImageTopoffset, self._insar.offsetImageLeftoffset, addMultilookOffset=False) ######################################################################################### os.chdir('../') diff --git a/components/isceobj/Alos2Proc/runIonFilt.py b/components/isceobj/Alos2Proc/runIonFilt.py index 41c531d..ffe3d3c 100644 --- a/components/isceobj/Alos2Proc/runIonFilt.py +++ b/components/isceobj/Alos2Proc/runIonFilt.py @@ -23,8 +23,8 @@ def runIonFilt(self): self._insar.procDoc.addAllFromCatalog(catalog) return - masterTrack = self._insar.loadTrack(master=True) - slaveTrack = self._insar.loadTrack(master=False) + referenceTrack = self._insar.loadTrack(reference=True) + secondaryTrack = self._insar.loadTrack(reference=False) from isceobj.Alos2Proc.runIonSubband import defineIonDir ionDir = defineIonDir() diff --git a/components/isceobj/Alos2Proc/runIonSubband.py b/components/isceobj/Alos2Proc/runIonSubband.py index 71e19fe..ea1b058 100644 --- a/components/isceobj/Alos2Proc/runIonSubband.py +++ b/components/isceobj/Alos2Proc/runIonSubband.py @@ -22,13 +22,13 @@ def runIonSubband(self): self._insar.procDoc.addAllFromCatalog(catalog) return - masterTrack = self._insar.loadTrack(master=True) - slaveTrack = self._insar.loadTrack(master=False) + referenceTrack = self._insar.loadTrack(reference=True) + secondaryTrack = self._insar.loadTrack(reference=False) #using 1/3, 1/3, 1/3 band split - radarWavelength = masterTrack.radarWavelength - rangeBandwidth = masterTrack.frames[0].swaths[0].rangeBandwidth - rangeSamplingRate = masterTrack.frames[0].swaths[0].rangeSamplingRate + radarWavelength = referenceTrack.radarWavelength + rangeBandwidth = referenceTrack.frames[0].swaths[0].rangeBandwidth + rangeSamplingRate = referenceTrack.frames[0].swaths[0].rangeSamplingRate radarWavelengthLower = SPEED_OF_LIGHT/(SPEED_OF_LIGHT / radarWavelength - rangeBandwidth / 3.0) radarWavelengthUpper = SPEED_OF_LIGHT/(SPEED_OF_LIGHT / radarWavelength + rangeBandwidth / 3.0) subbandRadarWavelength = [radarWavelengthLower, radarWavelengthUpper] @@ -64,7 +64,7 @@ def runIonSubband(self): #create insar processing directories for k in range(2): subbandDir = ionDir['subband'][k] - for i, frameNumber in enumerate(self._insar.masterFrames): + for i, frameNumber in enumerate(self._insar.referenceFrames): frameDir = 'f{}_{}'.format(i+1, frameNumber) for j, swathNumber in enumerate(range(self._insar.startingSwath, self._insar.endingSwath + 1)): swathDir = 's{}'.format(swathNumber) @@ -84,7 +84,7 @@ def runIonSubband(self): from isceobj.Alos2Proc.Alos2ProcPublic import readOffset from contrib.alos2proc.alos2proc import rg_filter - for i, frameNumber in enumerate(self._insar.masterFrames): + for i, frameNumber in enumerate(self._insar.referenceFrames): frameDir = 'f{}_{}'.format(i+1, frameNumber) for j, swathNumber in enumerate(range(self._insar.startingSwath, self._insar.endingSwath + 1)): swathDir = 's{}'.format(swathNumber) @@ -105,8 +105,8 @@ def runIonSubband(self): print('interferogram already exists at swath {}, frame {}'.format(swathNumber, frameNumber)) continue - #filter master and slave images - for slcx in [self._insar.masterSlc, self._insar.slaveSlc]: + #filter reference and secondary images + for slcx in [self._insar.referenceSlc, self._insar.secondarySlc]: slc = os.path.join('../', frameDir, swathDir, slcx) slcLower = os.path.join(ionDir['subband'][0], frameDir, swathDir, slcx) slcUpper = os.path.join(ionDir['subband'][1], frameDir, swathDir, slcx) @@ -120,7 +120,7 @@ def runIonSubband(self): os.chdir(os.path.join(ionDir['subband'][k], frameDir, swathDir)) #recreate xml file to remove the file path #can also use fixImageXml.py? - for x in [self._insar.masterSlc, self._insar.slaveSlc]: + for x in [self._insar.referenceSlc, self._insar.secondarySlc]: img = isceobj.createSlcImage() img.load(x + '.xml') img.setFilename(x) @@ -131,23 +131,23 @@ def runIonSubband(self): ############################################# #1. form interferogram ############################################# - masterSwath = masterTrack.frames[i].swaths[j] - slaveSwath = slaveTrack.frames[i].swaths[j] + referenceSwath = referenceTrack.frames[i].swaths[j] + secondarySwath = secondaryTrack.frames[i].swaths[j] refinedOffsets = readOffset(os.path.join('../../../../', frameDir, swathDir, 'cull.off')) - intWidth = int(masterSwath.numberOfSamples / self._insar.numberRangeLooks1) - intLength = int(masterSwath.numberOfLines / self._insar.numberAzimuthLooks1) - dopplerVsPixel = [i/slaveSwath.prf for i in slaveSwath.dopplerVsPixel] + intWidth = int(referenceSwath.numberOfSamples / self._insar.numberRangeLooks1) + intLength = int(referenceSwath.numberOfLines / self._insar.numberAzimuthLooks1) + dopplerVsPixel = [i/secondarySwath.prf for i in secondarySwath.dopplerVsPixel] - #master slc + #reference slc mSLC = isceobj.createSlcImage() - mSLC.load(self._insar.masterSlc+'.xml') + mSLC.load(self._insar.referenceSlc+'.xml') mSLC.setAccessMode('read') mSLC.createImage() - #slave slc + #secondary slc sSLC = isceobj.createSlcImage() - sSLC.load(self._insar.slaveSlc+'.xml') + sSLC.load(self._insar.secondarySlc+'.xml') sSLC.setAccessMode('read') sSLC.createImage() @@ -180,14 +180,14 @@ def runIonSubband(self): objResamp.wireInputPort(name='offsets', object=refinedOffsets) objResamp.stdWriter = stdWriter objResamp.setNumberFitCoefficients(6) - objResamp.setNumberRangeBin1(masterSwath.numberOfSamples) - objResamp.setNumberRangeBin2(slaveSwath.numberOfSamples) + objResamp.setNumberRangeBin1(referenceSwath.numberOfSamples) + objResamp.setNumberRangeBin2(secondarySwath.numberOfSamples) objResamp.setStartLine(1) - objResamp.setNumberLines(masterSwath.numberOfLines) + objResamp.setNumberLines(referenceSwath.numberOfLines) objResamp.setFirstLineOffset(1) objResamp.setDopplerCentroidCoefficients(dopplerVsPixel) objResamp.setRadarWavelength(subbandRadarWavelength[k]) - objResamp.setSlantRangePixelSpacing(slaveSwath.rangePixelSize) + objResamp.setSlantRangePixelSpacing(secondarySwath.rangePixelSize) objResamp.setNumberRangeLooks(self._insar.numberRangeLooks1) objResamp.setNumberAzimuthLooks(self._insar.numberAzimuthLooks1) objResamp.setFlattenWithOffsetFitFlag(0) @@ -214,12 +214,12 @@ def runIonSubband(self): ############################################# #3. delete subband slcs ############################################# - os.remove(self._insar.masterSlc) - os.remove(self._insar.masterSlc + '.vrt') - os.remove(self._insar.masterSlc + '.xml') - os.remove(self._insar.slaveSlc) - os.remove(self._insar.slaveSlc + '.vrt') - os.remove(self._insar.slaveSlc + '.xml') + os.remove(self._insar.referenceSlc) + os.remove(self._insar.referenceSlc + '.vrt') + os.remove(self._insar.referenceSlc + '.xml') + os.remove(self._insar.secondarySlc) + os.remove(self._insar.secondarySlc + '.vrt') + os.remove(self._insar.secondarySlc + '.xml') os.chdir('../../../') @@ -232,7 +232,7 @@ def runIonSubband(self): for k in range(2): os.chdir(ionDir['subband'][k]) - for i, frameNumber in enumerate(self._insar.masterFrames): + for i, frameNumber in enumerate(self._insar.referenceFrames): frameDir = 'f{}_{}'.format(i+1, frameNumber) os.chdir(frameDir) @@ -249,7 +249,7 @@ def runIonSubband(self): (self._insar.endingSwath-self._insar.startingSwath+1 > 1) ): import shutil - swathDir = 's{}'.format(masterTrack.frames[i].swaths[0].swathNumber) + swathDir = 's{}'.format(referenceTrack.frames[i].swaths[0].swathNumber) # if not os.path.isfile(self._insar.interferogram): # os.symlink(os.path.join('../', swathDir, self._insar.interferogram), self._insar.interferogram) @@ -275,20 +275,20 @@ def runIonSubband(self): continue #choose offsets - numberOfFrames = len(masterTrack.frames) - numberOfSwaths = len(masterTrack.frames[i].swaths) + numberOfFrames = len(referenceTrack.frames) + numberOfSwaths = len(referenceTrack.frames[i].swaths) if self.swathOffsetMatching: #no need to do this as the API support 2-d list - #rangeOffsets = (np.array(self._insar.swathRangeOffsetMatchingMaster)).reshape(numberOfFrames, numberOfSwaths) - #azimuthOffsets = (np.array(self._insar.swathAzimuthOffsetMatchingMaster)).reshape(numberOfFrames, numberOfSwaths) - rangeOffsets = self._insar.swathRangeOffsetMatchingMaster - azimuthOffsets = self._insar.swathAzimuthOffsetMatchingMaster + #rangeOffsets = (np.array(self._insar.swathRangeOffsetMatchingReference)).reshape(numberOfFrames, numberOfSwaths) + #azimuthOffsets = (np.array(self._insar.swathAzimuthOffsetMatchingReference)).reshape(numberOfFrames, numberOfSwaths) + rangeOffsets = self._insar.swathRangeOffsetMatchingReference + azimuthOffsets = self._insar.swathAzimuthOffsetMatchingReference else: - #rangeOffsets = (np.array(self._insar.swathRangeOffsetGeometricalMaster)).reshape(numberOfFrames, numberOfSwaths) - #azimuthOffsets = (np.array(self._insar.swathAzimuthOffsetGeometricalMaster)).reshape(numberOfFrames, numberOfSwaths) - rangeOffsets = self._insar.swathRangeOffsetGeometricalMaster - azimuthOffsets = self._insar.swathAzimuthOffsetGeometricalMaster + #rangeOffsets = (np.array(self._insar.swathRangeOffsetGeometricalReference)).reshape(numberOfFrames, numberOfSwaths) + #azimuthOffsets = (np.array(self._insar.swathAzimuthOffsetGeometricalReference)).reshape(numberOfFrames, numberOfSwaths) + rangeOffsets = self._insar.swathRangeOffsetGeometricalReference + azimuthOffsets = self._insar.swathAzimuthOffsetGeometricalReference rangeOffsets = rangeOffsets[i] azimuthOffsets = azimuthOffsets[i] @@ -304,16 +304,16 @@ def runIonSubband(self): #compute phase needed to be compensated using startingRange if j >= 1: - #phaseDiffSwath1 = -4.0 * np.pi * (masterTrack.frames[i].swaths[j-1].startingRange - slaveTrack.frames[i].swaths[j-1].startingRange)/subbandRadarWavelength[k] - #phaseDiffSwath2 = -4.0 * np.pi * (masterTrack.frames[i].swaths[j].startingRange - slaveTrack.frames[i].swaths[j].startingRange)/subbandRadarWavelength[k] - phaseDiffSwath1 = +4.0 * np.pi * masterTrack.frames[i].swaths[j-1].startingRange * (1.0/radarWavelength - 1.0/subbandRadarWavelength[k]) \ - -4.0 * np.pi * slaveTrack.frames[i].swaths[j-1].startingRange * (1.0/radarWavelength - 1.0/subbandRadarWavelength[k]) - phaseDiffSwath2 = +4.0 * np.pi * masterTrack.frames[i].swaths[j].startingRange * (1.0/radarWavelength - 1.0/subbandRadarWavelength[k]) \ - -4.0 * np.pi * slaveTrack.frames[i].swaths[j].startingRange * (1.0/radarWavelength - 1.0/subbandRadarWavelength[k]) - if masterTrack.frames[i].swaths[j-1].startingRange - slaveTrack.frames[i].swaths[j-1].startingRange == \ - masterTrack.frames[i].swaths[j].startingRange - slaveTrack.frames[i].swaths[j].startingRange: + #phaseDiffSwath1 = -4.0 * np.pi * (referenceTrack.frames[i].swaths[j-1].startingRange - secondaryTrack.frames[i].swaths[j-1].startingRange)/subbandRadarWavelength[k] + #phaseDiffSwath2 = -4.0 * np.pi * (referenceTrack.frames[i].swaths[j].startingRange - secondaryTrack.frames[i].swaths[j].startingRange)/subbandRadarWavelength[k] + phaseDiffSwath1 = +4.0 * np.pi * referenceTrack.frames[i].swaths[j-1].startingRange * (1.0/radarWavelength - 1.0/subbandRadarWavelength[k]) \ + -4.0 * np.pi * secondaryTrack.frames[i].swaths[j-1].startingRange * (1.0/radarWavelength - 1.0/subbandRadarWavelength[k]) + phaseDiffSwath2 = +4.0 * np.pi * referenceTrack.frames[i].swaths[j].startingRange * (1.0/radarWavelength - 1.0/subbandRadarWavelength[k]) \ + -4.0 * np.pi * secondaryTrack.frames[i].swaths[j].startingRange * (1.0/radarWavelength - 1.0/subbandRadarWavelength[k]) + if referenceTrack.frames[i].swaths[j-1].startingRange - secondaryTrack.frames[i].swaths[j-1].startingRange == \ + referenceTrack.frames[i].swaths[j].startingRange - secondaryTrack.frames[i].swaths[j].startingRange: #phaseDiff.append(phaseDiffSwath2 - phaseDiffSwath1) - #if master and slave versions are all before or after version 2.025 (starting range error < 0.5 m), + #if reference and secondary versions are all before or after version 2.025 (starting range error < 0.5 m), #it should be OK to do the above. #see results in neom where it meets the above requirement, but there is still phase diff #to be less risky, we do not input values here @@ -323,7 +323,7 @@ def runIonSubband(self): #note that frame parameters are updated after mosaicking, here no need to update parameters #mosaic amplitudes - swathMosaic(masterTrack.frames[i], inputAmplitudes, self._insar.amplitude, + swathMosaic(referenceTrack.frames[i], inputAmplitudes, self._insar.amplitude, rangeOffsets, azimuthOffsets, self._insar.numberRangeLooks1, self._insar.numberAzimuthLooks1, resamplingMethod=0) #mosaic interferograms #These are for ALOS-2, may need to change for ALOS-4! @@ -338,7 +338,7 @@ def runIonSubband(self): phaseDiffFixed = None snapThreshold = None - (phaseDiffEst, phaseDiffUsed, phaseDiffSource) = swathMosaic(masterTrack.frames[i], inputInterferograms, self._insar.interferogram, + (phaseDiffEst, phaseDiffUsed, phaseDiffSource) = swathMosaic(referenceTrack.frames[i], inputInterferograms, self._insar.interferogram, rangeOffsets, azimuthOffsets, self._insar.numberRangeLooks1, self._insar.numberAzimuthLooks1, updateFrame=False, phaseCompensation=True, phaseDiff=phaseDiff, phaseDiffFixed=phaseDiffFixed, snapThreshold=snapThreshold, pcRangeLooks=1, pcAzimuthLooks=4, filt=False, resamplingMethod=1) @@ -357,10 +357,10 @@ def runIonSubband(self): phaseDiffUnstableExist = True catalog.addItem('{} subswath phase difference unstable exists'.format(ionDir['subband'][k]), phaseDiffUnstableExist, 'runIonSubband') - create_xml(self._insar.amplitude, masterTrack.frames[i].numberOfSamples, masterTrack.frames[i].numberOfLines, 'amp') - create_xml(self._insar.interferogram, masterTrack.frames[i].numberOfSamples, masterTrack.frames[i].numberOfLines, 'int') + create_xml(self._insar.amplitude, referenceTrack.frames[i].numberOfSamples, referenceTrack.frames[i].numberOfLines, 'amp') + create_xml(self._insar.interferogram, referenceTrack.frames[i].numberOfSamples, referenceTrack.frames[i].numberOfLines, 'int') - #update slave frame parameters here, here no need to update parameters + #update secondary frame parameters here, here no need to update parameters os.chdir('../') #save parameter file, here no need to save parameter file os.chdir('../') @@ -380,10 +380,10 @@ def runIonSubband(self): os.makedirs(mosaicDir, exist_ok=True) os.chdir(mosaicDir) - numberOfFrames = len(masterTrack.frames) + numberOfFrames = len(referenceTrack.frames) if numberOfFrames == 1: import shutil - frameDir = os.path.join('f1_{}/mosaic'.format(self._insar.masterFrames[0])) + frameDir = os.path.join('f1_{}/mosaic'.format(self._insar.referenceFrames[0])) # if not os.path.isfile(self._insar.interferogram): # os.symlink(os.path.join('../', frameDir, self._insar.interferogram), self._insar.interferogram) # #shutil.copy2() can overwrite @@ -406,34 +406,34 @@ def runIonSubband(self): else: #choose offsets if self.frameOffsetMatching: - rangeOffsets = self._insar.frameRangeOffsetMatchingMaster - azimuthOffsets = self._insar.frameAzimuthOffsetMatchingMaster + rangeOffsets = self._insar.frameRangeOffsetMatchingReference + azimuthOffsets = self._insar.frameAzimuthOffsetMatchingReference else: - rangeOffsets = self._insar.frameRangeOffsetGeometricalMaster - azimuthOffsets = self._insar.frameAzimuthOffsetGeometricalMaster + rangeOffsets = self._insar.frameRangeOffsetGeometricalReference + azimuthOffsets = self._insar.frameAzimuthOffsetGeometricalReference #list of input files inputInterferograms = [] inputAmplitudes = [] - for i, frameNumber in enumerate(self._insar.masterFrames): + for i, frameNumber in enumerate(self._insar.referenceFrames): frameDir = 'f{}_{}'.format(i+1, frameNumber) inputInterferograms.append(os.path.join('../', frameDir, 'mosaic', self._insar.interferogram)) inputAmplitudes.append(os.path.join('../', frameDir, 'mosaic', self._insar.amplitude)) #note that track parameters are updated after mosaicking #mosaic amplitudes - frameMosaic(masterTrack, inputAmplitudes, self._insar.amplitude, + frameMosaic(referenceTrack, inputAmplitudes, self._insar.amplitude, rangeOffsets, azimuthOffsets, self._insar.numberRangeLooks1, self._insar.numberAzimuthLooks1, updateTrack=False, phaseCompensation=False, resamplingMethod=0) #mosaic interferograms - frameMosaic(masterTrack, inputInterferograms, self._insar.interferogram, + frameMosaic(referenceTrack, inputInterferograms, self._insar.interferogram, rangeOffsets, azimuthOffsets, self._insar.numberRangeLooks1, self._insar.numberAzimuthLooks1, updateTrack=False, phaseCompensation=True, resamplingMethod=1) - create_xml(self._insar.amplitude, masterTrack.numberOfSamples, masterTrack.numberOfLines, 'amp') - create_xml(self._insar.interferogram, masterTrack.numberOfSamples, masterTrack.numberOfLines, 'int') + create_xml(self._insar.amplitude, referenceTrack.numberOfSamples, referenceTrack.numberOfLines, 'amp') + create_xml(self._insar.interferogram, referenceTrack.numberOfSamples, referenceTrack.numberOfLines, 'int') - #update slave parameters here, no need to update slave parameters here + #update secondary parameters here, no need to update secondary parameters here os.chdir('../') #save parameter file, no need to save parameter file here @@ -448,7 +448,7 @@ def runIonSubband(self): for k in range(2): os.chdir(ionDir['subband'][k]) - for i, frameNumber in enumerate(self._insar.masterFrames): + for i, frameNumber in enumerate(self._insar.referenceFrames): frameDir = 'f{}_{}'.format(i+1, frameNumber) #keep subswath interferograms #shutil.rmtree(frameDir) @@ -470,7 +470,7 @@ def runIonSubband(self): os.makedirs(insarDir, exist_ok=True) os.chdir(insarDir) - rangePixelSize = self._insar.numberRangeLooks1 * masterTrack.rangePixelSize + rangePixelSize = self._insar.numberRangeLooks1 * referenceTrack.rangePixelSize radarWavelength = subbandRadarWavelength[k] rectRangeOffset = os.path.join('../../../', insarDir, self._insar.rectRangeOffset) diff --git a/components/isceobj/Alos2Proc/runIonUwrap.py b/components/isceobj/Alos2Proc/runIonUwrap.py index b8cb059..1045da6 100644 --- a/components/isceobj/Alos2Proc/runIonUwrap.py +++ b/components/isceobj/Alos2Proc/runIonUwrap.py @@ -23,8 +23,8 @@ def runIonUwrap(self): self._insar.procDoc.addAllFromCatalog(catalog) return - masterTrack = self._insar.loadTrack(master=True) - slaveTrack = self._insar.loadTrack(master=False) + referenceTrack = self._insar.loadTrack(reference=True) + secondaryTrack = self._insar.loadTrack(reference=False) wbdFile = os.path.abspath(self._insar.wbd) from isceobj.Alos2Proc.runIonSubband import defineIonDir @@ -197,8 +197,8 @@ def runIonUwrap(self): from isceobj.Alos2Proc.Alos2ProcPublic import snaphuUnwrap for k in range(2): - tmid = masterTrack.sensingStart + datetime.timedelta(seconds=(self._insar.numberAzimuthLooks1-1.0)/2.0*masterTrack.azimuthLineInterval+ - masterTrack.numberOfLines/2.0*self._insar.numberAzimuthLooks1*masterTrack.azimuthLineInterval) + tmid = referenceTrack.sensingStart + datetime.timedelta(seconds=(self._insar.numberAzimuthLooks1-1.0)/2.0*referenceTrack.azimuthLineInterval+ + referenceTrack.numberOfLines/2.0*self._insar.numberAzimuthLooks1*referenceTrack.azimuthLineInterval) if self.filterSubbandInt: toBeUnwrapped = 'filt_'+subbandPrefix[k]+ml2+'.int' @@ -207,7 +207,7 @@ def runIonUwrap(self): toBeUnwrapped = subbandPrefix[k]+ml2+'.int' coherenceFile = 'diff'+ml2+'.cor' - snaphuUnwrap(masterTrack, tmid, + snaphuUnwrap(referenceTrack, tmid, toBeUnwrapped, coherenceFile, subbandPrefix[k]+ml2+'.unw', diff --git a/components/isceobj/Alos2Proc/runLook.py b/components/isceobj/Alos2Proc/runLook.py index f6ff049..fb419e7 100644 --- a/components/isceobj/Alos2Proc/runLook.py +++ b/components/isceobj/Alos2Proc/runLook.py @@ -20,8 +20,8 @@ def runLook(self): catalog = isceobj.Catalog.createCatalog(self._insar.procDoc.name) self.updateParamemetersFromUser() - #masterTrack = self._insar.loadTrack(master=True) - #slaveTrack = self._insar.loadTrack(master=False) + #referenceTrack = self._insar.loadTrack(reference=True) + #secondaryTrack = self._insar.loadTrack(reference=False) wbdFile = os.path.abspath(self._insar.wbd) insarDir = 'insar' diff --git a/components/isceobj/Alos2Proc/runPrepareSlc.py b/components/isceobj/Alos2Proc/runPrepareSlc.py index bee70db..1df6674 100644 --- a/components/isceobj/Alos2Proc/runPrepareSlc.py +++ b/components/isceobj/Alos2Proc/runPrepareSlc.py @@ -23,8 +23,8 @@ def runPrepareSlc(self): catalog = isceobj.Catalog.createCatalog(self._insar.procDoc.name) self.updateParamemetersFromUser() - masterTrack = self._insar.loadTrack(master=True) - slaveTrack = self._insar.loadTrack(master=False) + referenceTrack = self._insar.loadTrack(reference=True) + secondaryTrack = self._insar.loadTrack(reference=False) #################################################### @@ -33,7 +33,7 @@ def runPrepareSlc(self): #for ScanSAR-stripmap interferometry, we always crop slcs #for other cases, up to users if ((self._insar.modeCombination == 31) or (self._insar.modeCombination == 32)) or (self.cropSlc): - for i, frameNumber in enumerate(self._insar.masterFrames): + for i, frameNumber in enumerate(self._insar.referenceFrames): frameDir = 'f{}_{}'.format(i+1, frameNumber) os.chdir(frameDir) for j, swathNumber in enumerate(range(self._insar.startingSwath, self._insar.endingSwath + 1)): @@ -42,14 +42,14 @@ def runPrepareSlc(self): print('cropping frame {}, swath {}'.format(frameNumber, swathNumber)) - masterSwath = masterTrack.frames[i].swaths[j] - slaveSwath = slaveTrack.frames[i].swaths[j] + referenceSwath = referenceTrack.frames[i].swaths[j] + secondarySwath = secondaryTrack.frames[i].swaths[j] - #crop master - cropSlc(masterTrack.orbit, masterSwath, self._insar.masterSlc, slaveTrack.orbit, slaveSwath, edge=0, useVirtualFile=self.useVirtualFile) - #crop slave, since slave may go through resampling, we set edge=9 - #cropSlc(slaveTrack.orbit, slaveSwath, self._insar.slaveSlc, masterTrack.orbit, masterSwath, edge=9, useVirtualFile=self.useVirtualFile) - cropSlc(slaveTrack.orbit, slaveSwath, self._insar.slaveSlc, masterTrack.orbit, masterSwath, edge=0, useVirtualFile=self.useVirtualFile) + #crop reference + cropSlc(referenceTrack.orbit, referenceSwath, self._insar.referenceSlc, secondaryTrack.orbit, secondarySwath, edge=0, useVirtualFile=self.useVirtualFile) + #crop secondary, since secondary may go through resampling, we set edge=9 + #cropSlc(secondaryTrack.orbit, secondarySwath, self._insar.secondarySlc, referenceTrack.orbit, referenceSwath, edge=9, useVirtualFile=self.useVirtualFile) + cropSlc(secondaryTrack.orbit, secondarySwath, self._insar.secondarySlc, referenceTrack.orbit, referenceSwath, edge=0, useVirtualFile=self.useVirtualFile) os.chdir('../') os.chdir('../') @@ -59,10 +59,10 @@ def runPrepareSlc(self): #2. range-filter slc #################################################### #compute filtering parameters, radarwavelength and range bandwidth should be the same across all swaths and frames - centerfreq1 = SPEED_OF_LIGHT / masterTrack.radarWavelength - bandwidth1 = masterTrack.frames[0].swaths[0].rangeBandwidth - centerfreq2 = SPEED_OF_LIGHT / slaveTrack.radarWavelength - bandwidth2 = slaveTrack.frames[0].swaths[0].rangeBandwidth + centerfreq1 = SPEED_OF_LIGHT / referenceTrack.radarWavelength + bandwidth1 = referenceTrack.frames[0].swaths[0].rangeBandwidth + centerfreq2 = SPEED_OF_LIGHT / secondaryTrack.radarWavelength + bandwidth2 = secondaryTrack.frames[0].swaths[0].rangeBandwidth overlapfreq = overlapFrequency(centerfreq1, bandwidth1, centerfreq2, bandwidth2) if overlapfreq == None: @@ -73,7 +73,7 @@ def runPrepareSlc(self): raise Exception('there is not enough overlap bandwidth in range') centerfreq = (overlapfreq[1] + overlapfreq[0]) / 2.0 - for i, frameNumber in enumerate(self._insar.masterFrames): + for i, frameNumber in enumerate(self._insar.referenceFrames): frameDir = 'f{}_{}'.format(i+1, frameNumber) os.chdir(frameDir) for j, swathNumber in enumerate(range(self._insar.startingSwath, self._insar.endingSwath + 1)): @@ -82,14 +82,14 @@ def runPrepareSlc(self): print('range filtering frame {}, swath {}'.format(frameNumber, swathNumber)) - masterSwath = masterTrack.frames[i].swaths[j] - slaveSwath = slaveTrack.frames[i].swaths[j] + referenceSwath = referenceTrack.frames[i].swaths[j] + secondarySwath = secondaryTrack.frames[i].swaths[j] # #compute filtering parameters - # centerfreq1 = SPEED_OF_LIGHT / masterTrack.radarWavelength - # bandwidth1 = masterSwath.rangeBandwidth - # centerfreq2 = SPEED_OF_LIGHT / slaveTrack.radarWavelength - # bandwidth2 = slaveSwath.rangeBandwidth + # centerfreq1 = SPEED_OF_LIGHT / referenceTrack.radarWavelength + # bandwidth1 = referenceSwath.rangeBandwidth + # centerfreq2 = SPEED_OF_LIGHT / secondaryTrack.radarWavelength + # bandwidth2 = secondarySwath.rangeBandwidth # overlapfreq = overlapFrequency(centerfreq1, bandwidth1, centerfreq2, bandwidth2) # if overlapfreq == None: @@ -100,65 +100,65 @@ def runPrepareSlc(self): # raise Exception('there is not enough overlap bandwidth in range') # centerfreq = (overlapfreq[1] + overlapfreq[0]) / 2.0 - #filter master + #filter reference if abs(centerfreq1 - centerfreq) < 1.0 and (bandwidth1 - 1.0) < overlapbandwidth: - print('no need to range filter {}'.format(self._insar.masterSlc)) + print('no need to range filter {}'.format(self._insar.referenceSlc)) else: - print('range filter {}'.format(self._insar.masterSlc)) + print('range filter {}'.format(self._insar.referenceSlc)) tmpSlc = 'tmp.slc' - rg_filter(self._insar.masterSlc, 1, [tmpSlc], [overlapbandwidth / masterSwath.rangeSamplingRate], - [(centerfreq - centerfreq1) / masterSwath.rangeSamplingRate], + rg_filter(self._insar.referenceSlc, 1, [tmpSlc], [overlapbandwidth / referenceSwath.rangeSamplingRate], + [(centerfreq - centerfreq1) / referenceSwath.rangeSamplingRate], 257, 2048, 0.1, 0, 0.0) - if os.path.isfile(self._insar.masterSlc): - os.remove(self._insar.masterSlc) - os.remove(self._insar.masterSlc+'.vrt') - os.remove(self._insar.masterSlc+'.xml') + if os.path.isfile(self._insar.referenceSlc): + os.remove(self._insar.referenceSlc) + os.remove(self._insar.referenceSlc+'.vrt') + os.remove(self._insar.referenceSlc+'.xml') img = isceobj.createSlcImage() img.load(tmpSlc + '.xml') #remove original os.remove(tmpSlc + '.vrt') os.remove(tmpSlc + '.xml') - os.rename(tmpSlc, self._insar.masterSlc) + os.rename(tmpSlc, self._insar.referenceSlc) #creat new - img.setFilename(self._insar.masterSlc) - img.extraFilename = self._insar.masterSlc + '.vrt' + img.setFilename(self._insar.referenceSlc) + img.extraFilename = self._insar.referenceSlc + '.vrt' img.setAccessMode('READ') img.renderHdr() - masterTrack.radarWavelength = SPEED_OF_LIGHT/centerfreq - masterSwath.rangeBandwidth = overlapbandwidth + referenceTrack.radarWavelength = SPEED_OF_LIGHT/centerfreq + referenceSwath.rangeBandwidth = overlapbandwidth - #filter slave + #filter secondary if abs(centerfreq2 - centerfreq) < 1.0 and (bandwidth2 - 1.0) < overlapbandwidth: - print('no need to range filter {}'.format(self._insar.slaveSlc)) + print('no need to range filter {}'.format(self._insar.secondarySlc)) else: - print('range filter {}'.format(self._insar.slaveSlc)) + print('range filter {}'.format(self._insar.secondarySlc)) tmpSlc = 'tmp.slc' - rg_filter(self._insar.slaveSlc, 1, [tmpSlc], [overlapbandwidth / slaveSwath.rangeSamplingRate], - [(centerfreq - centerfreq2) / slaveSwath.rangeSamplingRate], + rg_filter(self._insar.secondarySlc, 1, [tmpSlc], [overlapbandwidth / secondarySwath.rangeSamplingRate], + [(centerfreq - centerfreq2) / secondarySwath.rangeSamplingRate], 257, 2048, 0.1, 0, 0.0) - if os.path.isfile(self._insar.slaveSlc): - os.remove(self._insar.slaveSlc) - os.remove(self._insar.slaveSlc+'.vrt') - os.remove(self._insar.slaveSlc+'.xml') + if os.path.isfile(self._insar.secondarySlc): + os.remove(self._insar.secondarySlc) + os.remove(self._insar.secondarySlc+'.vrt') + os.remove(self._insar.secondarySlc+'.xml') img = isceobj.createSlcImage() img.load(tmpSlc + '.xml') #remove original os.remove(tmpSlc + '.vrt') os.remove(tmpSlc + '.xml') - os.rename(tmpSlc, self._insar.slaveSlc) + os.rename(tmpSlc, self._insar.secondarySlc) #creat new - img.setFilename(self._insar.slaveSlc) - img.extraFilename = self._insar.slaveSlc + '.vrt' + img.setFilename(self._insar.secondarySlc) + img.extraFilename = self._insar.secondarySlc + '.vrt' img.setAccessMode('READ') img.renderHdr() - slaveTrack.radarWavelength = SPEED_OF_LIGHT/centerfreq - slaveSwath.rangeBandwidth = overlapbandwidth + secondaryTrack.radarWavelength = SPEED_OF_LIGHT/centerfreq + secondarySwath.rangeBandwidth = overlapbandwidth os.chdir('../') os.chdir('../') @@ -167,7 +167,7 @@ def runPrepareSlc(self): #################################################### #3. equalize sample size #################################################### - for i, frameNumber in enumerate(self._insar.masterFrames): + for i, frameNumber in enumerate(self._insar.referenceFrames): frameDir = 'f{}_{}'.format(i+1, frameNumber) os.chdir(frameDir) for j, swathNumber in enumerate(range(self._insar.startingSwath, self._insar.endingSwath + 1)): @@ -176,59 +176,59 @@ def runPrepareSlc(self): print('equalize sample size frame {}, swath {}'.format(frameNumber, swathNumber)) - masterSwath = masterTrack.frames[i].swaths[j] - slaveSwath = slaveTrack.frames[i].swaths[j] + referenceSwath = referenceTrack.frames[i].swaths[j] + secondarySwath = secondaryTrack.frames[i].swaths[j] - if abs(masterSwath.rangeSamplingRate - slaveSwath.rangeSamplingRate) < 1.0 and abs(masterSwath.prf - slaveSwath.prf) < 1.0: - print('no need to resample {}.'.format(self._insar.slaveSlc)) + if abs(referenceSwath.rangeSamplingRate - secondarySwath.rangeSamplingRate) < 1.0 and abs(referenceSwath.prf - secondarySwath.prf) < 1.0: + print('no need to resample {}.'.format(self._insar.secondarySlc)) else: - outWidth = round(slaveSwath.numberOfSamples / slaveSwath.rangeSamplingRate * masterSwath.rangeSamplingRate) - outLength = round(slaveSwath.numberOfLines / slaveSwath.prf * masterSwath.prf) + outWidth = round(secondarySwath.numberOfSamples / secondarySwath.rangeSamplingRate * referenceSwath.rangeSamplingRate) + outLength = round(secondarySwath.numberOfLines / secondarySwath.prf * referenceSwath.prf) tmpSlc = 'tmp.slc' - resamp(self._insar.slaveSlc, tmpSlc, 'fake', 'fake', outWidth, outLength, slaveSwath.prf, slaveSwath.dopplerVsPixel, - rgcoef=[0.0, (1.0/masterSwath.rangeSamplingRate) / (1.0/slaveSwath.rangeSamplingRate) - 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], - azcoef=[0.0, 0.0, (1.0/masterSwath.prf) / (1.0/slaveSwath.prf) - 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], + resamp(self._insar.secondarySlc, tmpSlc, 'fake', 'fake', outWidth, outLength, secondarySwath.prf, secondarySwath.dopplerVsPixel, + rgcoef=[0.0, (1.0/referenceSwath.rangeSamplingRate) / (1.0/secondarySwath.rangeSamplingRate) - 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], + azcoef=[0.0, 0.0, (1.0/referenceSwath.prf) / (1.0/secondarySwath.prf) - 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], azpos_off=0.0) - if os.path.isfile(self._insar.slaveSlc): - os.remove(self._insar.slaveSlc) - os.remove(self._insar.slaveSlc+'.vrt') - os.remove(self._insar.slaveSlc+'.xml') + if os.path.isfile(self._insar.secondarySlc): + os.remove(self._insar.secondarySlc) + os.remove(self._insar.secondarySlc+'.vrt') + os.remove(self._insar.secondarySlc+'.xml') img = isceobj.createSlcImage() img.load(tmpSlc + '.xml') #remove original os.remove(tmpSlc + '.vrt') os.remove(tmpSlc + '.xml') - os.rename(tmpSlc, self._insar.slaveSlc) + os.rename(tmpSlc, self._insar.secondarySlc) #creat new - img.setFilename(self._insar.slaveSlc) - img.extraFilename = self._insar.slaveSlc + '.vrt' + img.setFilename(self._insar.secondarySlc) + img.extraFilename = self._insar.secondarySlc + '.vrt' img.setAccessMode('READ') img.renderHdr() #update parameters #update doppler and azfmrate first index2 = np.arange(outWidth) - index = np.arange(outWidth) * (1.0/masterSwath.rangeSamplingRate) / (1.0/slaveSwath.rangeSamplingRate) - dop = np.polyval(slaveSwath.dopplerVsPixel[::-1], index) + index = np.arange(outWidth) * (1.0/referenceSwath.rangeSamplingRate) / (1.0/secondarySwath.rangeSamplingRate) + dop = np.polyval(secondarySwath.dopplerVsPixel[::-1], index) p = np.polyfit(index2, dop, 3) - slaveSwath.dopplerVsPixel = [p[3], p[2], p[1], p[0]] + secondarySwath.dopplerVsPixel = [p[3], p[2], p[1], p[0]] - azfmrate = np.polyval(slaveSwath.azimuthFmrateVsPixel[::-1], index) + azfmrate = np.polyval(secondarySwath.azimuthFmrateVsPixel[::-1], index) p = np.polyfit(index2, azfmrate, 3) - slaveSwath.azimuthFmrateVsPixel = [p[3], p[2], p[1], p[0]] + secondarySwath.azimuthFmrateVsPixel = [p[3], p[2], p[1], p[0]] - slaveSwath.numberOfSamples = outWidth - slaveSwath.numberOfLines = outLength + secondarySwath.numberOfSamples = outWidth + secondarySwath.numberOfLines = outLength - slaveSwath.prf = masterSwath.prf - slaveSwath.rangeSamplingRate = masterSwath.rangeSamplingRate - slaveSwath.rangePixelSize = masterSwath.rangePixelSize - slaveSwath.azimuthPixelSize = masterSwath.azimuthPixelSize - slaveSwath.azimuthLineInterval = masterSwath.azimuthLineInterval - slaveSwath.prfFraction = masterSwath.prfFraction + secondarySwath.prf = referenceSwath.prf + secondarySwath.rangeSamplingRate = referenceSwath.rangeSamplingRate + secondarySwath.rangePixelSize = referenceSwath.rangePixelSize + secondarySwath.azimuthPixelSize = referenceSwath.azimuthPixelSize + secondarySwath.azimuthLineInterval = referenceSwath.azimuthLineInterval + secondarySwath.prfFraction = referenceSwath.prfFraction os.chdir('../') os.chdir('../') @@ -237,7 +237,7 @@ def runPrepareSlc(self): #################################################### #4. mbf #################################################### - for i, frameNumber in enumerate(self._insar.masterFrames): + for i, frameNumber in enumerate(self._insar.referenceFrames): frameDir = 'f{}_{}'.format(i+1, frameNumber) os.chdir(frameDir) for j, swathNumber in enumerate(range(self._insar.startingSwath, self._insar.endingSwath + 1)): @@ -246,85 +246,85 @@ def runPrepareSlc(self): print('azimuth filter frame {}, swath {}'.format(frameNumber, swathNumber)) - masterSwath = masterTrack.frames[i].swaths[j] - slaveSwath = slaveTrack.frames[i].swaths[j] + referenceSwath = referenceTrack.frames[i].swaths[j] + secondarySwath = secondaryTrack.frames[i].swaths[j] #using Piyush's code for computing range and azimuth offsets - midRange = masterSwath.startingRange + masterSwath.rangePixelSize * masterSwath.numberOfSamples * 0.5 - midSensingStart = masterSwath.sensingStart + datetime.timedelta(seconds = masterSwath.numberOfLines * 0.5 / masterSwath.prf) - llh = masterTrack.orbit.rdr2geo(midSensingStart, midRange) - slvaz, slvrng = slaveTrack.orbit.geo2rdr(llh) + midRange = referenceSwath.startingRange + referenceSwath.rangePixelSize * referenceSwath.numberOfSamples * 0.5 + midSensingStart = referenceSwath.sensingStart + datetime.timedelta(seconds = referenceSwath.numberOfLines * 0.5 / referenceSwath.prf) + llh = referenceTrack.orbit.rdr2geo(midSensingStart, midRange) + slvaz, slvrng = secondaryTrack.orbit.geo2rdr(llh) ###Translate to offsets - #at this point, slave range pixel size and prf should be the same as those of master - rgoff = ((slvrng - slaveSwath.startingRange) / masterSwath.rangePixelSize) - masterSwath.numberOfSamples * 0.5 - azoff = ((slvaz - slaveSwath.sensingStart).total_seconds() * masterSwath.prf) - masterSwath.numberOfLines * 0.5 + #at this point, secondary range pixel size and prf should be the same as those of reference + rgoff = ((slvrng - secondarySwath.startingRange) / referenceSwath.rangePixelSize) - referenceSwath.numberOfSamples * 0.5 + azoff = ((slvaz - secondarySwath.sensingStart).total_seconds() * referenceSwath.prf) - referenceSwath.numberOfLines * 0.5 - #filter master + #filter reference if not ((self._insar.modeCombination == 21) and (self._insar.burstSynchronization <= self.burstSynchronizationThreshold)): - print('no need to azimuth filter {}.'.format(self._insar.masterSlc)) + print('no need to azimuth filter {}.'.format(self._insar.referenceSlc)) else: - index = np.arange(masterSwath.numberOfSamples) + rgoff - dop = np.polyval(slaveSwath.dopplerVsPixel[::-1], index) + index = np.arange(referenceSwath.numberOfSamples) + rgoff + dop = np.polyval(secondarySwath.dopplerVsPixel[::-1], index) p = np.polyfit(index-rgoff, dop, 3) - dopplerVsPixelSlave = [p[3], p[2], p[1], p[0]] + dopplerVsPixelSecondary = [p[3], p[2], p[1], p[0]] tmpSlc = 'tmp.slc' - mbf(self._insar.masterSlc, tmpSlc, masterSwath.prf, 1.0, - masterSwath.burstLength, masterSwath.burstCycleLength-masterSwath.burstLength, - self._insar.burstUnsynchronizedTime * masterSwath.prf, - (masterSwath.burstStartTime - masterSwath.sensingStart).total_seconds() * masterSwath.prf, - masterSwath.azimuthFmrateVsPixel, masterSwath.dopplerVsPixel, dopplerVsPixelSlave) + mbf(self._insar.referenceSlc, tmpSlc, referenceSwath.prf, 1.0, + referenceSwath.burstLength, referenceSwath.burstCycleLength-referenceSwath.burstLength, + self._insar.burstUnsynchronizedTime * referenceSwath.prf, + (referenceSwath.burstStartTime - referenceSwath.sensingStart).total_seconds() * referenceSwath.prf, + referenceSwath.azimuthFmrateVsPixel, referenceSwath.dopplerVsPixel, dopplerVsPixelSecondary) - if os.path.isfile(self._insar.masterSlc): - os.remove(self._insar.masterSlc) - os.remove(self._insar.masterSlc+'.vrt') - os.remove(self._insar.masterSlc+'.xml') + if os.path.isfile(self._insar.referenceSlc): + os.remove(self._insar.referenceSlc) + os.remove(self._insar.referenceSlc+'.vrt') + os.remove(self._insar.referenceSlc+'.xml') img = isceobj.createSlcImage() img.load(tmpSlc + '.xml') #remove original os.remove(tmpSlc + '.vrt') os.remove(tmpSlc + '.xml') - os.rename(tmpSlc, self._insar.masterSlc) + os.rename(tmpSlc, self._insar.referenceSlc) #creat new - img.setFilename(self._insar.masterSlc) - img.extraFilename = self._insar.masterSlc + '.vrt' + img.setFilename(self._insar.referenceSlc) + img.extraFilename = self._insar.referenceSlc + '.vrt' img.setAccessMode('READ') img.renderHdr() - #filter slave + #filter secondary if not( ((self._insar.modeCombination == 21) and (self._insar.burstSynchronization <= self.burstSynchronizationThreshold)) or \ (self._insar.modeCombination == 31) ): - print('no need to azimuth filter {}.'.format(self._insar.slaveSlc)) + print('no need to azimuth filter {}.'.format(self._insar.secondarySlc)) else: - index = np.arange(slaveSwath.numberOfSamples) - rgoff - dop = np.polyval(masterSwath.dopplerVsPixel[::-1], index) + index = np.arange(secondarySwath.numberOfSamples) - rgoff + dop = np.polyval(referenceSwath.dopplerVsPixel[::-1], index) p = np.polyfit(index+rgoff, dop, 3) - dopplerVsPixelMaster = [p[3], p[2], p[1], p[0]] + dopplerVsPixelReference = [p[3], p[2], p[1], p[0]] tmpSlc = 'tmp.slc' - mbf(self._insar.slaveSlc, tmpSlc, slaveSwath.prf, 1.0, - slaveSwath.burstLength, slaveSwath.burstCycleLength-slaveSwath.burstLength, - -self._insar.burstUnsynchronizedTime * slaveSwath.prf, - (slaveSwath.burstStartTime - slaveSwath.sensingStart).total_seconds() * slaveSwath.prf, - slaveSwath.azimuthFmrateVsPixel, slaveSwath.dopplerVsPixel, dopplerVsPixelMaster) + mbf(self._insar.secondarySlc, tmpSlc, secondarySwath.prf, 1.0, + secondarySwath.burstLength, secondarySwath.burstCycleLength-secondarySwath.burstLength, + -self._insar.burstUnsynchronizedTime * secondarySwath.prf, + (secondarySwath.burstStartTime - secondarySwath.sensingStart).total_seconds() * secondarySwath.prf, + secondarySwath.azimuthFmrateVsPixel, secondarySwath.dopplerVsPixel, dopplerVsPixelReference) - if os.path.isfile(self._insar.slaveSlc): - os.remove(self._insar.slaveSlc) - os.remove(self._insar.slaveSlc+'.vrt') - os.remove(self._insar.slaveSlc+'.xml') + if os.path.isfile(self._insar.secondarySlc): + os.remove(self._insar.secondarySlc) + os.remove(self._insar.secondarySlc+'.vrt') + os.remove(self._insar.secondarySlc+'.xml') img = isceobj.createSlcImage() img.load(tmpSlc + '.xml') #remove original os.remove(tmpSlc + '.vrt') os.remove(tmpSlc + '.xml') - os.rename(tmpSlc, self._insar.slaveSlc) + os.rename(tmpSlc, self._insar.secondarySlc) #creat new - img.setFilename(self._insar.slaveSlc) - img.extraFilename = self._insar.slaveSlc + '.vrt' + img.setFilename(self._insar.secondarySlc) + img.extraFilename = self._insar.secondarySlc + '.vrt' img.setAccessMode('READ') img.renderHdr() @@ -332,8 +332,8 @@ def runPrepareSlc(self): os.chdir('../') #in case parameters changed - self._insar.saveTrack(masterTrack, master=True) - self._insar.saveTrack(slaveTrack, master=False) + self._insar.saveTrack(referenceTrack, reference=True) + self._insar.saveTrack(secondaryTrack, reference=False) catalog.printToLog(logger, "runPrepareSlc") self._insar.procDoc.addAllFromCatalog(catalog) diff --git a/components/isceobj/Alos2Proc/runPreprocessor.py b/components/isceobj/Alos2Proc/runPreprocessor.py index 3d39d5a..d58d070 100644 --- a/components/isceobj/Alos2Proc/runPreprocessor.py +++ b/components/isceobj/Alos2Proc/runPreprocessor.py @@ -27,24 +27,24 @@ def runPreprocessor(self): #find files #actually no need to use absolute path any longer, since we are able to find file from vrt now. 27-JAN-2020, CRL. #denseoffset may still need absolute path when making links - self.masterDir = os.path.abspath(self.masterDir) - self.slaveDir = os.path.abspath(self.slaveDir) + self.referenceDir = os.path.abspath(self.referenceDir) + self.secondaryDir = os.path.abspath(self.secondaryDir) - ledFilesMaster = sorted(glob.glob(os.path.join(self.masterDir, 'LED-ALOS2*-*-*'))) - imgFilesMaster = sorted(glob.glob(os.path.join(self.masterDir, 'IMG-{}-ALOS2*-*-*'.format(self.masterPolarization.upper())))) + ledFilesReference = sorted(glob.glob(os.path.join(self.referenceDir, 'LED-ALOS2*-*-*'))) + imgFilesReference = sorted(glob.glob(os.path.join(self.referenceDir, 'IMG-{}-ALOS2*-*-*'.format(self.referencePolarization.upper())))) - ledFilesSlave = sorted(glob.glob(os.path.join(self.slaveDir, 'LED-ALOS2*-*-*'))) - imgFilesSlave = sorted(glob.glob(os.path.join(self.slaveDir, 'IMG-{}-ALOS2*-*-*'.format(self.slavePolarization.upper())))) + ledFilesSecondary = sorted(glob.glob(os.path.join(self.secondaryDir, 'LED-ALOS2*-*-*'))) + imgFilesSecondary = sorted(glob.glob(os.path.join(self.secondaryDir, 'IMG-{}-ALOS2*-*-*'.format(self.secondaryPolarization.upper())))) - firstFrameMaster = ledFilesMaster[0].split('-')[-3][-4:] - firstFrameSlave = ledFilesSlave[0].split('-')[-3][-4:] - firstFrameImagesMaster = sorted(glob.glob(os.path.join(self.masterDir, 'IMG-{}-ALOS2*{}-*-*'.format(self.masterPolarization.upper(), firstFrameMaster)))) - firstFrameImagesSlave = sorted(glob.glob(os.path.join(self.slaveDir, 'IMG-{}-ALOS2*{}-*-*'.format(self.slavePolarization.upper(), firstFrameSlave)))) + firstFrameReference = ledFilesReference[0].split('-')[-3][-4:] + firstFrameSecondary = ledFilesSecondary[0].split('-')[-3][-4:] + firstFrameImagesReference = sorted(glob.glob(os.path.join(self.referenceDir, 'IMG-{}-ALOS2*{}-*-*'.format(self.referencePolarization.upper(), firstFrameReference)))) + firstFrameImagesSecondary = sorted(glob.glob(os.path.join(self.secondaryDir, 'IMG-{}-ALOS2*{}-*-*'.format(self.secondaryPolarization.upper(), firstFrameSecondary)))) #determin operation mode - masterMode = os.path.basename(ledFilesMaster[0]).split('-')[-1][0:3] - slaveMode = os.path.basename(ledFilesSlave[0]).split('-')[-1][0:3] + referenceMode = os.path.basename(ledFilesReference[0]).split('-')[-1][0:3] + secondaryMode = os.path.basename(ledFilesSecondary[0]).split('-')[-1][0:3] spotlightModes = ['SBS'] stripmapModes = ['UBS', 'UBD', 'HBS', 'HBD', 'HBQ', 'FBS', 'FBD', 'FBQ'] scansarNominalModes = ['WBS', 'WBD', 'WWS', 'WWD'] @@ -52,21 +52,21 @@ def runPreprocessor(self): scansarModes = ['WBS', 'WBD', 'WWS', 'WWD', 'VBS', 'VBD'] #usable combinations - if (masterMode in spotlightModes) and (slaveMode in spotlightModes): + if (referenceMode in spotlightModes) and (secondaryMode in spotlightModes): self._insar.modeCombination = 0 - elif (masterMode in stripmapModes) and (slaveMode in stripmapModes): + elif (referenceMode in stripmapModes) and (secondaryMode in stripmapModes): self._insar.modeCombination = 1 - elif (masterMode in scansarNominalModes) and (slaveMode in scansarNominalModes): + elif (referenceMode in scansarNominalModes) and (secondaryMode in scansarNominalModes): self._insar.modeCombination = 21 - elif (masterMode in scansarWideModes) and (slaveMode in scansarWideModes): + elif (referenceMode in scansarWideModes) and (secondaryMode in scansarWideModes): self._insar.modeCombination = 22 - elif (masterMode in scansarNominalModes) and (slaveMode in stripmapModes): + elif (referenceMode in scansarNominalModes) and (secondaryMode in stripmapModes): self._insar.modeCombination = 31 - elif (masterMode in scansarWideModes) and (slaveMode in stripmapModes): + elif (referenceMode in scansarWideModes) and (secondaryMode in stripmapModes): self._insar.modeCombination = 32 else: print('\n\nthis mode combination is not possible') - print('note that for ScanSAR-stripmap, ScanSAR must be master\n\n') + print('note that for ScanSAR-stripmap, ScanSAR must be reference\n\n') raise Exception('mode combination not supported') # pixel size from real data processing. azimuth pixel size may change a bit as @@ -111,112 +111,112 @@ def runPreprocessor(self): self._insar.numberAzimuthLooksIon = self.numberAzimuthLooksIon if self._insar.numberRangeLooks1 == None: - if masterMode in ['SBS']: + if referenceMode in ['SBS']: self._insar.numberRangeLooks1 = 2 - elif masterMode in ['UBS', 'UBD']: + elif referenceMode in ['UBS', 'UBD']: self._insar.numberRangeLooks1 = 2 - elif masterMode in ['HBS', 'HBD', 'HBQ']: + elif referenceMode in ['HBS', 'HBD', 'HBQ']: self._insar.numberRangeLooks1 = 2 - elif masterMode in ['FBS', 'FBD', 'FBQ']: + elif referenceMode in ['FBS', 'FBD', 'FBQ']: self._insar.numberRangeLooks1 = 2 - elif masterMode in ['WBS', 'WBD']: + elif referenceMode in ['WBS', 'WBD']: self._insar.numberRangeLooks1 = 1 - elif masterMode in ['WWS', 'WWD']: + elif referenceMode in ['WWS', 'WWD']: self._insar.numberRangeLooks1 = 2 - elif masterMode in ['VBS', 'VBD']: + elif referenceMode in ['VBS', 'VBD']: self._insar.numberRangeLooks1 = 1 else: raise Exception('unknow acquisition mode') if self._insar.numberAzimuthLooks1 == None: - if masterMode in ['SBS']: + if referenceMode in ['SBS']: self._insar.numberAzimuthLooks1 = 4 - elif masterMode in ['UBS', 'UBD']: + elif referenceMode in ['UBS', 'UBD']: self._insar.numberAzimuthLooks1 = 2 - elif masterMode in ['HBS', 'HBD', 'HBQ']: + elif referenceMode in ['HBS', 'HBD', 'HBQ']: self._insar.numberAzimuthLooks1 = 2 - elif masterMode in ['FBS', 'FBD', 'FBQ']: + elif referenceMode in ['FBS', 'FBD', 'FBQ']: self._insar.numberAzimuthLooks1 = 4 - elif masterMode in ['WBS', 'WBD']: + elif referenceMode in ['WBS', 'WBD']: self._insar.numberAzimuthLooks1 = 14 - elif masterMode in ['WWS', 'WWD']: + elif referenceMode in ['WWS', 'WWD']: self._insar.numberAzimuthLooks1 = 14 - elif masterMode in ['VBS', 'VBD']: + elif referenceMode in ['VBS', 'VBD']: self._insar.numberAzimuthLooks1 = 14 else: raise Exception('unknow acquisition mode') if self._insar.numberRangeLooks2 == None: - if masterMode in spotlightModes: + if referenceMode in spotlightModes: self._insar.numberRangeLooks2 = 4 - elif masterMode in stripmapModes: + elif referenceMode in stripmapModes: self._insar.numberRangeLooks2 = 4 - elif masterMode in scansarModes: + elif referenceMode in scansarModes: self._insar.numberRangeLooks2 = 5 else: raise Exception('unknow acquisition mode') if self._insar.numberAzimuthLooks2 == None: - if masterMode in spotlightModes: + if referenceMode in spotlightModes: self._insar.numberAzimuthLooks2 = 4 - elif masterMode in stripmapModes: + elif referenceMode in stripmapModes: self._insar.numberAzimuthLooks2 = 4 - elif masterMode in scansarModes: + elif referenceMode in scansarModes: self._insar.numberAzimuthLooks2 = 2 else: raise Exception('unknow acquisition mode') if self._insar.numberRangeLooksIon == None: - if masterMode in spotlightModes: + if referenceMode in spotlightModes: self._insar.numberRangeLooksIon = 16 - elif masterMode in stripmapModes: + elif referenceMode in stripmapModes: self._insar.numberRangeLooksIon = 16 - elif masterMode in scansarModes: + elif referenceMode in scansarModes: self._insar.numberRangeLooksIon = 40 else: raise Exception('unknow acquisition mode') if self._insar.numberAzimuthLooksIon == None: - if masterMode in spotlightModes: + if referenceMode in spotlightModes: self._insar.numberAzimuthLooksIon = 16 - elif masterMode in stripmapModes: + elif referenceMode in stripmapModes: self._insar.numberAzimuthLooksIon = 16 - elif masterMode in scansarModes: + elif referenceMode in scansarModes: self._insar.numberAzimuthLooksIon = 16 else: raise Exception('unknow acquisition mode') #define processing file names - self._insar.masterDate = os.path.basename(ledFilesMaster[0]).split('-')[2] - self._insar.slaveDate = os.path.basename(ledFilesSlave[0]).split('-')[2] - self._insar.setFilename(masterDate=self._insar.masterDate, slaveDate=self._insar.slaveDate, nrlks1=self._insar.numberRangeLooks1, nalks1=self._insar.numberAzimuthLooks1, nrlks2=self._insar.numberRangeLooks2, nalks2=self._insar.numberAzimuthLooks2) + self._insar.referenceDate = os.path.basename(ledFilesReference[0]).split('-')[2] + self._insar.secondaryDate = os.path.basename(ledFilesSecondary[0]).split('-')[2] + self._insar.setFilename(referenceDate=self._insar.referenceDate, secondaryDate=self._insar.secondaryDate, nrlks1=self._insar.numberRangeLooks1, nalks1=self._insar.numberAzimuthLooks1, nrlks2=self._insar.numberRangeLooks2, nalks2=self._insar.numberAzimuthLooks2) #find frame numbers if (self._insar.modeCombination == 31) or (self._insar.modeCombination == 32): - if (self.masterFrames == None) or (self.slaveFrames == None): - raise Exception('for ScanSAR-stripmap inteferometry, you must set master and slave frame numbers') + if (self.referenceFrames == None) or (self.secondaryFrames == None): + raise Exception('for ScanSAR-stripmap inteferometry, you must set reference and secondary frame numbers') #if not set, find frames automatically - if self.masterFrames == None: - self.masterFrames = [] - for led in ledFilesMaster: + if self.referenceFrames == None: + self.referenceFrames = [] + for led in ledFilesReference: frameNumber = os.path.basename(led).split('-')[1][-4:] - if frameNumber not in self.masterFrames: - self.masterFrames.append(frameNumber) - if self.slaveFrames == None: - self.slaveFrames = [] - for led in ledFilesSlave: + if frameNumber not in self.referenceFrames: + self.referenceFrames.append(frameNumber) + if self.secondaryFrames == None: + self.secondaryFrames = [] + for led in ledFilesSecondary: frameNumber = os.path.basename(led).split('-')[1][-4:] - if frameNumber not in self.slaveFrames: - self.slaveFrames.append(frameNumber) + if frameNumber not in self.secondaryFrames: + self.secondaryFrames.append(frameNumber) #sort frames - self.masterFrames = sorted(self.masterFrames) - self.slaveFrames = sorted(self.slaveFrames) + self.referenceFrames = sorted(self.referenceFrames) + self.secondaryFrames = sorted(self.secondaryFrames) #check number of frames - if len(self.masterFrames) != len(self.slaveFrames): - raise Exception('number of frames in master dir is not equal to number of frames \ - in slave dir. please set frame number manually') + if len(self.referenceFrames) != len(self.secondaryFrames): + raise Exception('number of frames in reference dir is not equal to number of frames \ + in secondary dir. please set frame number manually') #find swath numbers (if not ScanSAR-ScanSAR, compute valid swaths) @@ -245,7 +245,7 @@ def runPreprocessor(self): numberOfSwaths = 7 overlapSubswaths = [] for i in range(numberOfSwaths): - overlapRatio = check_overlap(ledFilesMaster[0], firstFrameImagesMaster[i], ledFilesSlave[0], firstFrameImagesSlave[0]) + overlapRatio = check_overlap(ledFilesReference[0], firstFrameImagesReference[i], ledFilesSecondary[0], firstFrameImagesSecondary[0]) if overlapRatio > 1.0 / 4.0: overlapSubswaths.append(i+1) if overlapSubswaths == []: @@ -254,8 +254,8 @@ def runPreprocessor(self): self.endingSwath = int(overlapSubswaths[-1]) #save the valid frames and swaths for future processing - self._insar.masterFrames = self.masterFrames - self._insar.slaveFrames = self.slaveFrames + self._insar.referenceFrames = self.referenceFrames + self._insar.secondaryFrames = self.secondaryFrames self._insar.startingSwath = self.startingSwath self._insar.endingSwath = self.endingSwath @@ -263,76 +263,76 @@ def runPreprocessor(self): ################################################## #1. create directories and read data ################################################## - self.master.configure() - self.slave.configure() - self.master.track.configure() - self.slave.track.configure() - for i, (masterFrame, slaveFrame) in enumerate(zip(self._insar.masterFrames, self._insar.slaveFrames)): + self.reference.configure() + self.secondary.configure() + self.reference.track.configure() + self.secondary.track.configure() + for i, (referenceFrame, secondaryFrame) in enumerate(zip(self._insar.referenceFrames, self._insar.secondaryFrames)): #frame number starts with 1 - frameDir = 'f{}_{}'.format(i+1, masterFrame) + frameDir = 'f{}_{}'.format(i+1, referenceFrame) os.makedirs(frameDir, exist_ok=True) os.chdir(frameDir) - #attach a frame to master and slave - frameObjMaster = MultiMode.createFrame() - frameObjSlave = MultiMode.createFrame() - frameObjMaster.configure() - frameObjSlave.configure() - self.master.track.frames.append(frameObjMaster) - self.slave.track.frames.append(frameObjSlave) + #attach a frame to reference and secondary + frameObjReference = MultiMode.createFrame() + frameObjSecondary = MultiMode.createFrame() + frameObjReference.configure() + frameObjSecondary.configure() + self.reference.track.frames.append(frameObjReference) + self.secondary.track.frames.append(frameObjSecondary) #swath number starts with 1 for j in range(self._insar.startingSwath, self._insar.endingSwath+1): - print('processing frame {} swath {}'.format(masterFrame, j)) + print('processing frame {} swath {}'.format(referenceFrame, j)) swathDir = 's{}'.format(j) os.makedirs(swathDir, exist_ok=True) os.chdir(swathDir) - #attach a swath to master and slave - swathObjMaster = MultiMode.createSwath() - swathObjSlave = MultiMode.createSwath() - swathObjMaster.configure() - swathObjSlave.configure() - self.master.track.frames[-1].swaths.append(swathObjMaster) - self.slave.track.frames[-1].swaths.append(swathObjSlave) + #attach a swath to reference and secondary + swathObjReference = MultiMode.createSwath() + swathObjSecondary = MultiMode.createSwath() + swathObjReference.configure() + swathObjSecondary.configure() + self.reference.track.frames[-1].swaths.append(swathObjReference) + self.secondary.track.frames[-1].swaths.append(swathObjSecondary) - #setup master - self.master.leaderFile = sorted(glob.glob(os.path.join(self.masterDir, 'LED-ALOS2*{}-*-*'.format(masterFrame))))[0] - if masterMode in scansarModes: - self.master.imageFile = sorted(glob.glob(os.path.join(self.masterDir, 'IMG-{}-ALOS2*{}-*-*-F{}'.format(self.masterPolarization.upper(), masterFrame, j))))[0] + #setup reference + self.reference.leaderFile = sorted(glob.glob(os.path.join(self.referenceDir, 'LED-ALOS2*{}-*-*'.format(referenceFrame))))[0] + if referenceMode in scansarModes: + self.reference.imageFile = sorted(glob.glob(os.path.join(self.referenceDir, 'IMG-{}-ALOS2*{}-*-*-F{}'.format(self.referencePolarization.upper(), referenceFrame, j))))[0] else: - self.master.imageFile = sorted(glob.glob(os.path.join(self.masterDir, 'IMG-{}-ALOS2*{}-*-*'.format(self.masterPolarization.upper(), masterFrame))))[0] - self.master.outputFile = self._insar.masterSlc - self.master.useVirtualFile = self.useVirtualFile - #read master - (imageFDR, imageData)=self.master.readImage() - (leaderFDR, sceneHeaderRecord, platformPositionRecord, facilityRecord)=self.master.readLeader() - self.master.setSwath(leaderFDR, sceneHeaderRecord, platformPositionRecord, facilityRecord, imageFDR, imageData) - self.master.setFrame(leaderFDR, sceneHeaderRecord, platformPositionRecord, facilityRecord, imageFDR, imageData) - self.master.setTrack(leaderFDR, sceneHeaderRecord, platformPositionRecord, facilityRecord, imageFDR, imageData) + self.reference.imageFile = sorted(glob.glob(os.path.join(self.referenceDir, 'IMG-{}-ALOS2*{}-*-*'.format(self.referencePolarization.upper(), referenceFrame))))[0] + self.reference.outputFile = self._insar.referenceSlc + self.reference.useVirtualFile = self.useVirtualFile + #read reference + (imageFDR, imageData)=self.reference.readImage() + (leaderFDR, sceneHeaderRecord, platformPositionRecord, facilityRecord)=self.reference.readLeader() + self.reference.setSwath(leaderFDR, sceneHeaderRecord, platformPositionRecord, facilityRecord, imageFDR, imageData) + self.reference.setFrame(leaderFDR, sceneHeaderRecord, platformPositionRecord, facilityRecord, imageFDR, imageData) + self.reference.setTrack(leaderFDR, sceneHeaderRecord, platformPositionRecord, facilityRecord, imageFDR, imageData) - #setup slave - self.slave.leaderFile = sorted(glob.glob(os.path.join(self.slaveDir, 'LED-ALOS2*{}-*-*'.format(slaveFrame))))[0] - if slaveMode in scansarModes: - self.slave.imageFile = sorted(glob.glob(os.path.join(self.slaveDir, 'IMG-{}-ALOS2*{}-*-*-F{}'.format(self.slavePolarization.upper(), slaveFrame, j))))[0] + #setup secondary + self.secondary.leaderFile = sorted(glob.glob(os.path.join(self.secondaryDir, 'LED-ALOS2*{}-*-*'.format(secondaryFrame))))[0] + if secondaryMode in scansarModes: + self.secondary.imageFile = sorted(glob.glob(os.path.join(self.secondaryDir, 'IMG-{}-ALOS2*{}-*-*-F{}'.format(self.secondaryPolarization.upper(), secondaryFrame, j))))[0] else: - self.slave.imageFile = sorted(glob.glob(os.path.join(self.slaveDir, 'IMG-{}-ALOS2*{}-*-*'.format(self.slavePolarization.upper(), slaveFrame))))[0] - self.slave.outputFile = self._insar.slaveSlc - self.slave.useVirtualFile = self.useVirtualFile - #read slave - (imageFDR, imageData)=self.slave.readImage() - (leaderFDR, sceneHeaderRecord, platformPositionRecord, facilityRecord)=self.slave.readLeader() - self.slave.setSwath(leaderFDR, sceneHeaderRecord, platformPositionRecord, facilityRecord, imageFDR, imageData) - self.slave.setFrame(leaderFDR, sceneHeaderRecord, platformPositionRecord, facilityRecord, imageFDR, imageData) - self.slave.setTrack(leaderFDR, sceneHeaderRecord, platformPositionRecord, facilityRecord, imageFDR, imageData) + self.secondary.imageFile = sorted(glob.glob(os.path.join(self.secondaryDir, 'IMG-{}-ALOS2*{}-*-*'.format(self.secondaryPolarization.upper(), secondaryFrame))))[0] + self.secondary.outputFile = self._insar.secondarySlc + self.secondary.useVirtualFile = self.useVirtualFile + #read secondary + (imageFDR, imageData)=self.secondary.readImage() + (leaderFDR, sceneHeaderRecord, platformPositionRecord, facilityRecord)=self.secondary.readLeader() + self.secondary.setSwath(leaderFDR, sceneHeaderRecord, platformPositionRecord, facilityRecord, imageFDR, imageData) + self.secondary.setFrame(leaderFDR, sceneHeaderRecord, platformPositionRecord, facilityRecord, imageFDR, imageData) + self.secondary.setTrack(leaderFDR, sceneHeaderRecord, platformPositionRecord, facilityRecord, imageFDR, imageData) os.chdir('../') - self._insar.saveProduct(self.master.track.frames[-1], self._insar.masterFrameParameter) - self._insar.saveProduct(self.slave.track.frames[-1], self._insar.slaveFrameParameter) + self._insar.saveProduct(self.reference.track.frames[-1], self._insar.referenceFrameParameter) + self._insar.saveProduct(self.secondary.track.frames[-1], self._insar.secondaryFrameParameter) os.chdir('../') - self._insar.saveProduct(self.master.track, self._insar.masterTrackParameter) - self._insar.saveProduct(self.slave.track, self._insar.slaveTrackParameter) + self._insar.saveProduct(self.reference.track, self._insar.referenceTrackParameter) + self._insar.saveProduct(self.secondary.track, self._insar.secondaryTrackParameter) ################################################## @@ -345,53 +345,53 @@ def runPreprocessor(self): #synTime = 0 synPercentage = 0 - numberOfFrames = len(self._insar.masterFrames) + numberOfFrames = len(self._insar.referenceFrames) numberOfSwaths = self._insar.endingSwath - self._insar.startingSwath + 1 - for i, frameNumber in enumerate(self._insar.masterFrames): + for i, frameNumber in enumerate(self._insar.referenceFrames): for j, swathNumber in enumerate(range(self._insar.startingSwath, self._insar.endingSwath + 1)): - masterSwath = self.master.track.frames[i].swaths[j] - slaveSwath = self.slave.track.frames[i].swaths[j] + referenceSwath = self.reference.track.frames[i].swaths[j] + secondarySwath = self.secondary.track.frames[i].swaths[j] #using Piyush's code for computing range and azimuth offsets - midRange = masterSwath.startingRange + masterSwath.rangePixelSize * masterSwath.numberOfSamples * 0.5 - midSensingStart = masterSwath.sensingStart + datetime.timedelta(seconds = masterSwath.numberOfLines * 0.5 / masterSwath.prf) - llh = self.master.track.orbit.rdr2geo(midSensingStart, midRange) - slvaz, slvrng = self.slave.track.orbit.geo2rdr(llh) + midRange = referenceSwath.startingRange + referenceSwath.rangePixelSize * referenceSwath.numberOfSamples * 0.5 + midSensingStart = referenceSwath.sensingStart + datetime.timedelta(seconds = referenceSwath.numberOfLines * 0.5 / referenceSwath.prf) + llh = self.reference.track.orbit.rdr2geo(midSensingStart, midRange) + slvaz, slvrng = self.secondary.track.orbit.geo2rdr(llh) ###Translate to offsets - #note that slave range pixel size and prf might be different from master, here we assume there is a virtual slave with same + #note that secondary range pixel size and prf might be different from reference, here we assume there is a virtual secondary with same #range pixel size and prf - rgoff = ((slvrng - slaveSwath.startingRange) / masterSwath.rangePixelSize) - masterSwath.numberOfSamples * 0.5 - azoff = ((slvaz - slaveSwath.sensingStart).total_seconds() * masterSwath.prf) - masterSwath.numberOfLines * 0.5 + rgoff = ((slvrng - secondarySwath.startingRange) / referenceSwath.rangePixelSize) - referenceSwath.numberOfSamples * 0.5 + azoff = ((slvaz - secondarySwath.sensingStart).total_seconds() * referenceSwath.prf) - referenceSwath.numberOfLines * 0.5 #compute burst synchronization #burst parameters for ScanSAR wide mode not estimed yet if self._insar.modeCombination == 21: - scburstStartLine = (masterSwath.burstStartTime - masterSwath.sensingStart).total_seconds() * masterSwath.prf + azoff - #slave burst start times corresponding to master burst start times (100% synchronization) - scburstStartLines = np.arange(scburstStartLine - 100000*masterSwath.burstCycleLength, \ - scburstStartLine + 100000*masterSwath.burstCycleLength, \ - masterSwath.burstCycleLength) - dscburstStartLines = -((slaveSwath.burstStartTime - slaveSwath.sensingStart).total_seconds() * slaveSwath.prf - scburstStartLines) + scburstStartLine = (referenceSwath.burstStartTime - referenceSwath.sensingStart).total_seconds() * referenceSwath.prf + azoff + #secondary burst start times corresponding to reference burst start times (100% synchronization) + scburstStartLines = np.arange(scburstStartLine - 100000*referenceSwath.burstCycleLength, \ + scburstStartLine + 100000*referenceSwath.burstCycleLength, \ + referenceSwath.burstCycleLength) + dscburstStartLines = -((secondarySwath.burstStartTime - secondarySwath.sensingStart).total_seconds() * secondarySwath.prf - scburstStartLines) #find the difference with minimum absolute value unsynLines = dscburstStartLines[np.argmin(np.absolute(dscburstStartLines))] - if np.absolute(unsynLines) >= slaveSwath.burstLength: + if np.absolute(unsynLines) >= secondarySwath.burstLength: synLines = 0 if unsynLines > 0: - unsynLines = slaveSwath.burstLength + unsynLines = secondarySwath.burstLength else: - unsynLines = -slaveSwath.burstLength + unsynLines = -secondarySwath.burstLength else: - synLines = slaveSwath.burstLength - np.absolute(unsynLines) + synLines = secondarySwath.burstLength - np.absolute(unsynLines) - unsynTime += unsynLines / masterSwath.prf - synPercentage += synLines / masterSwath.burstLength * 100.0 + unsynTime += unsynLines / referenceSwath.prf + synPercentage += synLines / referenceSwath.burstLength * 100.0 - catalog.addItem('burst synchronization of frame {} swath {}'.format(frameNumber, swathNumber), '%.1f%%'%(synLines / masterSwath.burstLength * 100.0), 'runPreprocessor') + catalog.addItem('burst synchronization of frame {} swath {}'.format(frameNumber, swathNumber), '%.1f%%'%(synLines / referenceSwath.burstLength * 100.0), 'runPreprocessor') ############################################################################################ #illustration of the sign of the number of unsynchronized lines (unsynLines) #The convention is the same as ampcor offset, that is, - # slaveLineNumber = masterLineNumber + unsynLines + # secondaryLineNumber = referenceLineNumber + unsynLines # # |-----------------------| ------------ # | | ^ @@ -403,35 +403,35 @@ def runPreprocessor(self): # | | | | # | | | | # |-----------------------| | | - # Master Burst | | + # Reference Burst | | # | | # | | # | | # | | # |-----------------------| - # Slave Burst + # Secondary Burst # # ############################################################################################ ##burst parameters for ScanSAR wide mode not estimed yet elif self._insar.modeCombination == 31: - #scansar is master - scburstStartLine = (masterSwath.burstStartTime - masterSwath.sensingStart).total_seconds() * masterSwath.prf + azoff - #slave burst start times corresponding to master burst start times (100% synchronization) + #scansar is reference + scburstStartLine = (referenceSwath.burstStartTime - referenceSwath.sensingStart).total_seconds() * referenceSwath.prf + azoff + #secondary burst start times corresponding to reference burst start times (100% synchronization) for k in range(-100000, 100000): - saz_burstx = scburstStartLine + masterSwath.burstCycleLength * k - st_burstx = slaveSwath.sensingStart + datetime.timedelta(seconds=saz_burstx / masterSwath.prf) - if saz_burstx >= 0.0 and saz_burstx <= slaveSwath.numberOfLines -1: - slaveSwath.burstStartTime = st_burstx - slaveSwath.burstLength = masterSwath.burstLength - slaveSwath.burstCycleLength = masterSwath.burstCycleLength - slaveSwath.swathNumber = masterSwath.swathNumber + saz_burstx = scburstStartLine + referenceSwath.burstCycleLength * k + st_burstx = secondarySwath.sensingStart + datetime.timedelta(seconds=saz_burstx / referenceSwath.prf) + if saz_burstx >= 0.0 and saz_burstx <= secondarySwath.numberOfLines -1: + secondarySwath.burstStartTime = st_burstx + secondarySwath.burstLength = referenceSwath.burstLength + secondarySwath.burstCycleLength = referenceSwath.burstCycleLength + secondarySwath.swathNumber = referenceSwath.swathNumber break #unsynLines = 0 - #synLines = masterSwath.burstLength - #unsynTime += unsynLines / masterSwath.prf - #synPercentage += synLines / masterSwath.burstLength * 100.0 + #synLines = referenceSwath.burstLength + #unsynTime += unsynLines / referenceSwath.prf + #synPercentage += synLines / referenceSwath.burstLength * 100.0 catalog.addItem('burst synchronization of frame {} swath {}'.format(frameNumber, swathNumber), '%.1f%%'%(100.0), 'runPreprocessor') else: pass @@ -439,7 +439,7 @@ def runPreprocessor(self): #overwrite original frame parameter file if self._insar.modeCombination == 31: frameDir = 'f{}_{}'.format(i+1, frameNumber) - self._insar.saveProduct(self.slave.track.frames[i], os.path.join(frameDir, self._insar.slaveFrameParameter)) + self._insar.saveProduct(self.secondary.track.frames[i], os.path.join(frameDir, self._insar.secondaryFrameParameter)) #getting average if self._insar.modeCombination == 21: @@ -461,8 +461,8 @@ def runPreprocessor(self): ################################################## #3. compute baseline ################################################## - #only compute baseline at four corners and center of the master track - bboxRdr = getBboxRdr(self.master.track) + #only compute baseline at four corners and center of the reference track + bboxRdr = getBboxRdr(self.reference.track) rangeMin = bboxRdr[0] rangeMax = bboxRdr[1] @@ -483,16 +483,16 @@ def runPreprocessor(self): #modify Piyush's code for computing baslines refElp = Planet(pname='Earth').ellipsoid for x in points: - masterSV = self.master.track.orbit.interpolate(x[0], method='hermite') - target = self.master.track.orbit.rdr2geo(x[0], x[1]) + referenceSV = self.reference.track.orbit.interpolate(x[0], method='hermite') + target = self.reference.track.orbit.rdr2geo(x[0], x[1]) - slvTime, slvrng = self.slave.track.orbit.geo2rdr(target) - slaveSV = self.slave.track.orbit.interpolateOrbit(slvTime, method='hermite') + slvTime, slvrng = self.secondary.track.orbit.geo2rdr(target) + secondarySV = self.secondary.track.orbit.interpolateOrbit(slvTime, method='hermite') targxyz = np.array(refElp.LLH(target[0], target[1], target[2]).ecef().tolist()) - mxyz = np.array(masterSV.getPosition()) - mvel = np.array(masterSV.getVelocity()) - sxyz = np.array(slaveSV.getPosition()) + mxyz = np.array(referenceSV.getPosition()) + mvel = np.array(referenceSV.getVelocity()) + sxyz = np.array(secondarySV.getPosition()) #to fix abrupt change near zero in baseline grid. JUN-05-2020 mvelunit = mvel / np.linalg.norm(mvel) @@ -507,27 +507,27 @@ def runPreprocessor(self): direction = np.sign(np.dot( np.cross(targxyz-mxyz, sxyz-mxyz), mvel)) Bperp.append(direction*perp) - catalog.addItem('parallel baseline at upperleft of master track', Bpar[0], 'runPreprocessor') - catalog.addItem('parallel baseline at upperright of master track', Bpar[1], 'runPreprocessor') - catalog.addItem('parallel baseline at lowerleft of master track', Bpar[2], 'runPreprocessor') - catalog.addItem('parallel baseline at lowerright of master track', Bpar[3], 'runPreprocessor') - catalog.addItem('parallel baseline at center of master track', Bpar[4], 'runPreprocessor') + catalog.addItem('parallel baseline at upperleft of reference track', Bpar[0], 'runPreprocessor') + catalog.addItem('parallel baseline at upperright of reference track', Bpar[1], 'runPreprocessor') + catalog.addItem('parallel baseline at lowerleft of reference track', Bpar[2], 'runPreprocessor') + catalog.addItem('parallel baseline at lowerright of reference track', Bpar[3], 'runPreprocessor') + catalog.addItem('parallel baseline at center of reference track', Bpar[4], 'runPreprocessor') - catalog.addItem('perpendicular baseline at upperleft of master track', Bperp[0], 'runPreprocessor') - catalog.addItem('perpendicular baseline at upperright of master track', Bperp[1], 'runPreprocessor') - catalog.addItem('perpendicular baseline at lowerleft of master track', Bperp[2], 'runPreprocessor') - catalog.addItem('perpendicular baseline at lowerright of master track', Bperp[3], 'runPreprocessor') - catalog.addItem('perpendicular baseline at center of master track', Bperp[4], 'runPreprocessor') + catalog.addItem('perpendicular baseline at upperleft of reference track', Bperp[0], 'runPreprocessor') + catalog.addItem('perpendicular baseline at upperright of reference track', Bperp[1], 'runPreprocessor') + catalog.addItem('perpendicular baseline at lowerleft of reference track', Bperp[2], 'runPreprocessor') + catalog.addItem('perpendicular baseline at lowerright of reference track', Bperp[3], 'runPreprocessor') + catalog.addItem('perpendicular baseline at center of reference track', Bperp[4], 'runPreprocessor') ################################################## #4. compute bounding box ################################################## - masterBbox = getBboxGeo(self.master.track) - slaveBbox = getBboxGeo(self.slave.track) + referenceBbox = getBboxGeo(self.reference.track) + secondaryBbox = getBboxGeo(self.secondary.track) - catalog.addItem('master bounding box', masterBbox, 'runPreprocessor') - catalog.addItem('slave bounding box', slaveBbox, 'runPreprocessor') + catalog.addItem('reference bounding box', referenceBbox, 'runPreprocessor') + catalog.addItem('secondary bounding box', secondaryBbox, 'runPreprocessor') catalog.printToLog(logger, "runPreprocessor") @@ -538,22 +538,22 @@ def runPreprocessor(self): def check_overlap(ldr_m, img_m, ldr_s, img_s): from isceobj.Constants import SPEED_OF_LIGHT - rangeSamplingRateMaster, widthMaster, nearRangeMaster = read_param_for_checking_overlap(ldr_m, img_m) - rangeSamplingRateSlave, widthSlave, nearRangeSlave = read_param_for_checking_overlap(ldr_s, img_s) + rangeSamplingRateReference, widthReference, nearRangeReference = read_param_for_checking_overlap(ldr_m, img_m) + rangeSamplingRateSecondary, widthSecondary, nearRangeSecondary = read_param_for_checking_overlap(ldr_s, img_s) - farRangeMaster = nearRangeMaster + (widthMaster-1) * 0.5 * SPEED_OF_LIGHT / rangeSamplingRateMaster - farRangeSlave = nearRangeSlave + (widthSlave-1) * 0.5 * SPEED_OF_LIGHT / rangeSamplingRateSlave + farRangeReference = nearRangeReference + (widthReference-1) * 0.5 * SPEED_OF_LIGHT / rangeSamplingRateReference + farRangeSecondary = nearRangeSecondary + (widthSecondary-1) * 0.5 * SPEED_OF_LIGHT / rangeSamplingRateSecondary #This should be good enough, although precise image offsets are not used. - if farRangeMaster <= nearRangeSlave: + if farRangeReference <= nearRangeSecondary: overlapRatio = 0.0 - elif farRangeSlave <= nearRangeMaster: + elif farRangeSecondary <= nearRangeReference: overlapRatio = 0.0 else: # 0 1 2 3 - ranges = np.array([nearRangeMaster, farRangeMaster, nearRangeSlave, farRangeSlave]) + ranges = np.array([nearRangeReference, farRangeReference, nearRangeSecondary, farRangeSecondary]) rangesIndex = np.argsort(ranges) - overlapRatio = ranges[rangesIndex[2]]-ranges[rangesIndex[1]] / (farRangeMaster-nearRangeMaster) + overlapRatio = ranges[rangesIndex[2]]-ranges[rangesIndex[1]] / (farRangeReference-nearRangeReference) return overlapRatio diff --git a/components/isceobj/Alos2Proc/runRdr2Geo.py b/components/isceobj/Alos2Proc/runRdr2Geo.py index 60cf6e9..6e2a02f 100644 --- a/components/isceobj/Alos2Proc/runRdr2Geo.py +++ b/components/isceobj/Alos2Proc/runRdr2Geo.py @@ -17,7 +17,7 @@ def runRdr2Geo(self): catalog = isceobj.Catalog.createCatalog(self._insar.procDoc.name) self.updateParamemetersFromUser() - masterTrack = self._insar.loadTrack(master=True) + referenceTrack = self._insar.loadTrack(reference=True) demFile = os.path.abspath(self._insar.dem) wbdFile = os.path.abspath(self._insar.wbd) @@ -27,10 +27,10 @@ def runRdr2Geo(self): if self.useGPU and self._insar.hasGPU(): - topoGPU(masterTrack, self._insar.numberRangeLooks1, self._insar.numberAzimuthLooks1, demFile, + topoGPU(referenceTrack, self._insar.numberRangeLooks1, self._insar.numberAzimuthLooks1, demFile, self._insar.latitude, self._insar.longitude, self._insar.height, self._insar.los) else: - snwe = topoCPU(masterTrack, self._insar.numberRangeLooks1, self._insar.numberAzimuthLooks1, demFile, + snwe = topoCPU(referenceTrack, self._insar.numberRangeLooks1, self._insar.numberAzimuthLooks1, demFile, self._insar.latitude, self._insar.longitude, self._insar.height, self._insar.los) waterBodyRadar(self._insar.latitude, self._insar.longitude, wbdFile, self._insar.wbdOut) @@ -40,7 +40,7 @@ def runRdr2Geo(self): self._insar.procDoc.addAllFromCatalog(catalog) -def topoCPU(masterTrack, numberRangeLooks, numberAzimuthLooks, demFile, latFile, lonFile, hgtFile, losFile): +def topoCPU(referenceTrack, numberRangeLooks, numberAzimuthLooks, demFile, latFile, lonFile, hgtFile, losFile): import datetime import isceobj from zerodop.topozero import createTopozero @@ -55,19 +55,19 @@ def topoCPU(masterTrack, numberRangeLooks, numberAzimuthLooks, demFile, latFile, planet = Planet(pname='Earth') topo = createTopozero() - topo.slantRangePixelSpacing = numberRangeLooks * masterTrack.rangePixelSize - topo.prf = 1.0 / (numberAzimuthLooks*masterTrack.azimuthLineInterval) - topo.radarWavelength = masterTrack.radarWavelength - topo.orbit = masterTrack.orbit - topo.width = masterTrack.numberOfSamples - topo.length = masterTrack.numberOfLines + topo.slantRangePixelSpacing = numberRangeLooks * referenceTrack.rangePixelSize + topo.prf = 1.0 / (numberAzimuthLooks*referenceTrack.azimuthLineInterval) + topo.radarWavelength = referenceTrack.radarWavelength + topo.orbit = referenceTrack.orbit + topo.width = referenceTrack.numberOfSamples + topo.length = referenceTrack.numberOfLines topo.wireInputPort(name='dem', object=demImage) topo.wireInputPort(name='planet', object=planet) topo.numberRangeLooks = 1 #must be set as 1 topo.numberAzimuthLooks = 1 #must be set as 1 Cunren - topo.lookSide = pointingDirection[masterTrack.pointingDirection] - topo.sensingStart = masterTrack.sensingStart + datetime.timedelta(seconds=(numberAzimuthLooks-1.0)/2.0*masterTrack.azimuthLineInterval) - topo.rangeFirstSample = masterTrack.startingRange + (numberRangeLooks-1.0)/2.0*masterTrack.rangePixelSize + topo.lookSide = pointingDirection[referenceTrack.pointingDirection] + topo.sensingStart = referenceTrack.sensingStart + datetime.timedelta(seconds=(numberAzimuthLooks-1.0)/2.0*referenceTrack.azimuthLineInterval) + topo.rangeFirstSample = referenceTrack.startingRange + (numberRangeLooks-1.0)/2.0*referenceTrack.rangePixelSize topo.demInterpolationMethod='BIQUINTIC' topo.latFilename = latFile @@ -82,7 +82,7 @@ def topoCPU(masterTrack, numberRangeLooks, numberAzimuthLooks, demFile, latFile, return list(topo.snwe) -def topoGPU(masterTrack, numberRangeLooks, numberAzimuthLooks, demFile, latFile, lonFile, hgtFile, losFile): +def topoGPU(referenceTrack, numberRangeLooks, numberAzimuthLooks, demFile, latFile, lonFile, hgtFile, losFile): ''' Try with GPU module. ''' @@ -97,8 +97,8 @@ def topoGPU(masterTrack, numberRangeLooks, numberAzimuthLooks, demFile, latFile, #creat poynomials polyDoppler = Poly2D(name='topsApp_dopplerPoly') - polyDoppler.setWidth(masterTrack.numberOfSamples) - polyDoppler.setLength(masterTrack.numberOfLines) + polyDoppler.setWidth(referenceTrack.numberOfSamples) + polyDoppler.setLength(referenceTrack.numberOfLines) polyDoppler.setNormRange(1.0) polyDoppler.setNormAzimuth(1.0) polyDoppler.setMeanRange(0.0) @@ -107,32 +107,32 @@ def topoGPU(masterTrack, numberRangeLooks, numberAzimuthLooks, demFile, latFile, polyDoppler.createPoly2D() slantRangeImage = Poly2D() - slantRangeImage.setWidth(masterTrack.numberOfSamples) - slantRangeImage.setLength(masterTrack.numberOfLines) + slantRangeImage.setWidth(referenceTrack.numberOfSamples) + slantRangeImage.setLength(referenceTrack.numberOfLines) slantRangeImage.setNormRange(1.0) slantRangeImage.setNormAzimuth(1.0) slantRangeImage.setMeanRange(0.) slantRangeImage.setMeanAzimuth(0.) slantRangeImage.initPoly(rangeOrder=1,azimuthOrder=0, - coeffs=[[masterTrack.startingRange + (numberRangeLooks-1.0)/2.0*masterTrack.rangePixelSize,numberRangeLooks * masterTrack.rangePixelSize]]) + coeffs=[[referenceTrack.startingRange + (numberRangeLooks-1.0)/2.0*referenceTrack.rangePixelSize,numberRangeLooks * referenceTrack.rangePixelSize]]) slantRangeImage.createPoly2D() #creat images latImage = isceobj.createImage() - latImage.initImage(latFile, 'write', masterTrack.numberOfSamples, 'DOUBLE') + latImage.initImage(latFile, 'write', referenceTrack.numberOfSamples, 'DOUBLE') latImage.createImage() lonImage = isceobj.createImage() - lonImage.initImage(lonFile, 'write', masterTrack.numberOfSamples, 'DOUBLE') + lonImage.initImage(lonFile, 'write', referenceTrack.numberOfSamples, 'DOUBLE') lonImage.createImage() losImage = isceobj.createImage() - losImage.initImage(losFile, 'write', masterTrack.numberOfSamples, 'FLOAT', bands=2, scheme='BIL') + losImage.initImage(losFile, 'write', referenceTrack.numberOfSamples, 'FLOAT', bands=2, scheme='BIL') losImage.setCaster('write', 'DOUBLE') losImage.createImage() heightImage = isceobj.createImage() - heightImage.initImage(hgtFile, 'write', masterTrack.numberOfSamples, 'DOUBLE') + heightImage.initImage(hgtFile, 'write', referenceTrack.numberOfSamples, 'DOUBLE') heightImage.createImage() demImage = isceobj.createDemImage() @@ -141,8 +141,8 @@ def topoGPU(masterTrack, numberRangeLooks, numberAzimuthLooks, demFile, latFile, demImage.createImage() #compute a few things - t0 = masterTrack.sensingStart + datetime.timedelta(seconds=(numberAzimuthLooks-1.0)/2.0*masterTrack.azimuthLineInterval) - orb = masterTrack.orbit + t0 = referenceTrack.sensingStart + datetime.timedelta(seconds=(numberAzimuthLooks-1.0)/2.0*referenceTrack.azimuthLineInterval) + orb = referenceTrack.orbit pegHdg = np.radians( orb.getENUHeading(t0)) elp = Planet(pname='Earth').ellipsoid @@ -154,12 +154,12 @@ def topoGPU(masterTrack, numberRangeLooks, numberAzimuthLooks, demFile, latFile, topo.set_deltalon(demImage.getDeltaLongitude()) topo.set_major(elp.a) topo.set_eccentricitySquared(elp.e2) - topo.set_rSpace(numberRangeLooks * masterTrack.rangePixelSize) - topo.set_r0(masterTrack.startingRange + (numberRangeLooks-1.0)/2.0*masterTrack.rangePixelSize) + topo.set_rSpace(numberRangeLooks * referenceTrack.rangePixelSize) + topo.set_r0(referenceTrack.startingRange + (numberRangeLooks-1.0)/2.0*referenceTrack.rangePixelSize) topo.set_pegHdg(pegHdg) - topo.set_prf(1.0 / (numberAzimuthLooks*masterTrack.azimuthLineInterval)) + topo.set_prf(1.0 / (numberAzimuthLooks*referenceTrack.azimuthLineInterval)) topo.set_t0(DTU.seconds_since_midnight(t0)) - topo.set_wvl(masterTrack.radarWavelength) + topo.set_wvl(referenceTrack.radarWavelength) topo.set_thresh(.05) topo.set_demAccessor(demImage.getImagePointer()) topo.set_dopAccessor(polyDoppler.getPointer()) @@ -173,10 +173,10 @@ def topoGPU(masterTrack, numberRangeLooks, numberAzimuthLooks, demFile, latFile, topo.set_numIter(25) topo.set_idemWidth(demImage.getWidth()) topo.set_idemLength(demImage.getLength()) - topo.set_ilrl(pointingDirection[masterTrack.pointingDirection]) + topo.set_ilrl(pointingDirection[referenceTrack.pointingDirection]) topo.set_extraIter(10) - topo.set_length(masterTrack.numberOfLines) - topo.set_width(masterTrack.numberOfSamples) + topo.set_length(referenceTrack.numberOfLines) + topo.set_width(referenceTrack.numberOfSamples) topo.set_nRngLooks(1) topo.set_nAzLooks(1) topo.set_demMethod(5) # BIQUINTIC METHOD diff --git a/components/isceobj/Alos2Proc/runRdrDemOffset.py b/components/isceobj/Alos2Proc/runRdrDemOffset.py index a49838f..16695f7 100644 --- a/components/isceobj/Alos2Proc/runRdrDemOffset.py +++ b/components/isceobj/Alos2Proc/runRdrDemOffset.py @@ -23,7 +23,7 @@ def runRdrDemOffset(self): catalog = isceobj.Catalog.createCatalog(self._insar.procDoc.name) self.updateParamemetersFromUser() - masterTrack = self._insar.loadTrack(master=True) + referenceTrack = self._insar.loadTrack(reference=True) demFile = os.path.abspath(self._insar.dem) insarDir = 'insar' @@ -44,16 +44,16 @@ def runRdrDemOffset(self): #number of looks to take in range if self._insar.numberRangeLooksSim == None: - if self._insar.numberRangeLooks1 * masterTrack.rangePixelSize > demDeltaLon: + if self._insar.numberRangeLooks1 * referenceTrack.rangePixelSize > demDeltaLon: self._insar.numberRangeLooksSim = 1 else: - self._insar.numberRangeLooksSim = int(demDeltaLon / (self._insar.numberRangeLooks1 * masterTrack.rangePixelSize) + 0.5) + self._insar.numberRangeLooksSim = int(demDeltaLon / (self._insar.numberRangeLooks1 * referenceTrack.rangePixelSize) + 0.5) #number of looks to take in azimuth if self._insar.numberAzimuthLooksSim == None: - if self._insar.numberAzimuthLooks1 * masterTrack.azimuthPixelSize > demDeltaLat: + if self._insar.numberAzimuthLooks1 * referenceTrack.azimuthPixelSize > demDeltaLat: self._insar.numberAzimuthLooksSim = 1 else: - self._insar.numberAzimuthLooksSim = int(demDeltaLat / (self._insar.numberAzimuthLooks1 * masterTrack.azimuthPixelSize) + 0.5) + self._insar.numberAzimuthLooksSim = int(demDeltaLat / (self._insar.numberAzimuthLooks1 * referenceTrack.azimuthPixelSize) + 0.5) #simulate a radar image using dem simulateRadar(os.path.join('../', self._insar.height), self._insar.sim, scale=3.0, offset=100.0) @@ -150,8 +150,8 @@ def runRdrDemOffset(self): ampcor.setImageDataType1('real') ampcor.setImageDataType2('real') - ampcor.setMasterSlcImage(mMag) - ampcor.setSlaveSlcImage(sMag) + ampcor.setReferenceSlcImage(mMag) + ampcor.setSecondarySlcImage(sMag) #MATCH REGION rgoff = 0 diff --git a/components/isceobj/Alos2Proc/runRectRangeOffset.py b/components/isceobj/Alos2Proc/runRectRangeOffset.py index 1c4e5c0..8e33737 100644 --- a/components/isceobj/Alos2Proc/runRectRangeOffset.py +++ b/components/isceobj/Alos2Proc/runRectRangeOffset.py @@ -18,8 +18,8 @@ def runRectRangeOffset(self): catalog = isceobj.Catalog.createCatalog(self._insar.procDoc.name) self.updateParamemetersFromUser() - masterTrack = self._insar.loadTrack(master=True) - slaveTrack = self._insar.loadTrack(master=False) + referenceTrack = self._insar.loadTrack(reference=True) + secondaryTrack = self._insar.loadTrack(reference=False) insarDir = 'insar' os.makedirs(insarDir, exist_ok=True) diff --git a/components/isceobj/Alos2Proc/runSlcMatch.py b/components/isceobj/Alos2Proc/runSlcMatch.py index 3c72fba..eaa55d6 100644 --- a/components/isceobj/Alos2Proc/runSlcMatch.py +++ b/components/isceobj/Alos2Proc/runSlcMatch.py @@ -40,8 +40,8 @@ def runSlcMatch(self): os.makedirs(denseOffsetDir, exist_ok=True) os.chdir(denseOffsetDir) - masterTrack = self._insar.loadProduct(self._insar.masterTrackParameter) - slaveTrack = self._insar.loadProduct(self._insar.slaveTrackParameter) + referenceTrack = self._insar.loadProduct(self._insar.referenceTrackParameter) + secondaryTrack = self._insar.loadProduct(self._insar.secondaryTrackParameter) ######################################################################################### @@ -50,34 +50,34 @@ def runSlcMatch(self): # compute geometric offsets ################################################## if self.useGPU and self._insar.hasGPU(): - topoGPU(masterTrack, 1, 1, demFile, + topoGPU(referenceTrack, 1, 1, demFile, 'lat.rdr', 'lon.rdr', 'hgt.rdr', 'los.rdr') - geo2RdrGPU(slaveTrack, 1, 1, + geo2RdrGPU(secondaryTrack, 1, 1, 'lat.rdr', 'lon.rdr', 'hgt.rdr', 'rg.off', 'az.off') else: - topoCPU(masterTrack, 1, 1, demFile, + topoCPU(referenceTrack, 1, 1, demFile, 'lat.rdr', 'lon.rdr', 'hgt.rdr', 'los.rdr') - geo2RdrCPU(slaveTrack, 1, 1, + geo2RdrCPU(secondaryTrack, 1, 1, 'lat.rdr', 'lon.rdr', 'hgt.rdr', 'rg.off', 'az.off') ################################################## # resample SLC ################################################## - #SlaveSlcResampled = os.path.splitext(self._insar.slaveSlc)[0]+'_resamp'+os.path.splitext(self._insar.slaveSlc)[1] - SlaveSlcResampled = self._insar.slaveSlcCoregistered + #SecondarySlcResampled = os.path.splitext(self._insar.secondarySlc)[0]+'_resamp'+os.path.splitext(self._insar.secondarySlc)[1] + SecondarySlcResampled = self._insar.secondarySlcCoregistered rangeOffsets2Frac = 0.0 azimuthOffsets2Frac = 0.0 - resamp(self._insar.slaveSlc, - SlaveSlcResampled, + resamp(self._insar.secondarySlc, + SecondarySlcResampled, 'rg.off', 'az.off', - masterTrack.numberOfSamples, masterTrack.numberOfLines, - slaveTrack.prf, - slaveTrack.dopplerVsPixel, + referenceTrack.numberOfSamples, referenceTrack.numberOfLines, + secondaryTrack.prf, + secondaryTrack.dopplerVsPixel, [rangeOffsets2Frac, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [azimuthOffsets2Frac, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]) - create_xml(SlaveSlcResampled, masterTrack.numberOfSamples, masterTrack.numberOfLines, 'slc') + create_xml(SecondarySlcResampled, referenceTrack.numberOfSamples, referenceTrack.numberOfLines, 'slc') if self.estimateResidualOffset: @@ -85,8 +85,8 @@ def runSlcMatch(self): numberOfOffsets = 800 rangeStep = 50 - length = masterTrack.numberOfLines - width = masterTrack.numberOfSamples + length = referenceTrack.numberOfLines + width = referenceTrack.numberOfSamples waterBodyRadar('lat.rdr', 'lon.rdr', wbdFile, 'wbd.rdr') wbd=np.memmap('wbd.rdr', dtype=np.int8, mode='r', shape=(length, width)) azimuthStep = int(length/width*rangeStep+0.5) @@ -119,20 +119,20 @@ def runSlcMatch(self): ampcor.configure() mSLC = isceobj.createSlcImage() - mSLC.load(self._insar.masterSlc+'.xml') + mSLC.load(self._insar.referenceSlc+'.xml') mSLC.setAccessMode('read') mSLC.createImage() sSLC = isceobj.createSlcImage() - sSLC.load(SlaveSlcResampled+'.xml') + sSLC.load(SecondarySlcResampled+'.xml') sSLC.setAccessMode('read') sSLC.createImage() ampcor.setImageDataType1('complex') ampcor.setImageDataType2('complex') - ampcor.setMasterSlcImage(mSLC) - ampcor.setSlaveSlcImage(sSLC) + ampcor.setReferenceSlcImage(mSLC) + ampcor.setSecondarySlcImage(sSLC) #MATCH REGION #compute an offset at image center to use @@ -220,22 +220,22 @@ def runSlcMatch(self): catalog.addItem('warning message', 'too few offsets left for slc residual offset estimation', 'runSlcMatch') else: rangeOffset, azimuthOffset = meanOffset(refinedOffsets) - os.remove(SlaveSlcResampled) - os.remove(SlaveSlcResampled+'.vrt') - os.remove(SlaveSlcResampled+'.xml') + os.remove(SecondarySlcResampled) + os.remove(SecondarySlcResampled+'.vrt') + os.remove(SecondarySlcResampled+'.xml') rangeOffsets2Frac = rangeOffset azimuthOffsets2Frac = azimuthOffset - resamp(self._insar.slaveSlc, - SlaveSlcResampled, + resamp(self._insar.secondarySlc, + SecondarySlcResampled, 'rg.off', 'az.off', - masterTrack.numberOfSamples, masterTrack.numberOfLines, - slaveTrack.prf, - slaveTrack.dopplerVsPixel, + referenceTrack.numberOfSamples, referenceTrack.numberOfLines, + secondaryTrack.prf, + secondaryTrack.dopplerVsPixel, [rangeOffsets2Frac, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [azimuthOffsets2Frac, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]) - create_xml(SlaveSlcResampled, masterTrack.numberOfSamples, masterTrack.numberOfLines, 'slc') + create_xml(SecondarySlcResampled, referenceTrack.numberOfSamples, referenceTrack.numberOfLines, 'slc') catalog.addItem('number of offsets range', numberOfOffsetsRange, 'runSlcMatch') catalog.addItem('number of offsets azimuth', numberOfOffsetsAzimuth, 'runSlcMatch') diff --git a/components/isceobj/Alos2Proc/runSlcMosaic.py b/components/isceobj/Alos2Proc/runSlcMosaic.py index c14f4f7..a43cd3a 100644 --- a/components/isceobj/Alos2Proc/runSlcMosaic.py +++ b/components/isceobj/Alos2Proc/runSlcMosaic.py @@ -26,8 +26,8 @@ def runSlcMosaic(self): catalog = isceobj.Catalog.createCatalog(self._insar.procDoc.name) self.updateParamemetersFromUser() - masterTrack = self._insar.loadTrack(master=True) - slaveTrack = self._insar.loadTrack(master=False) + referenceTrack = self._insar.loadTrack(reference=True) + secondaryTrack = self._insar.loadTrack(reference=False) denseOffsetDir = 'dense_offset' os.makedirs(denseOffsetDir, exist_ok=True) @@ -35,127 +35,127 @@ def runSlcMosaic(self): ################################################## - # estimate master and slave frame offsets + # estimate reference and secondary frame offsets ################################################## - if len(masterTrack.frames) > 1: + if len(referenceTrack.frames) > 1: matchingMode=1 - #if master offsets from matching are not already computed + #if reference offsets from matching are not already computed if self.frameOffsetMatching == False: - offsetMaster = frameOffset(masterTrack, self._insar.masterSlc, self._insar.masterFrameOffset, + offsetReference = frameOffset(referenceTrack, self._insar.referenceSlc, self._insar.referenceFrameOffset, crossCorrelation=True, matchingMode=matchingMode) - offsetSlave = frameOffset(slaveTrack, self._insar.slaveSlc, self._insar.slaveFrameOffset, + offsetSecondary = frameOffset(secondaryTrack, self._insar.secondarySlc, self._insar.secondaryFrameOffset, crossCorrelation=True, matchingMode=matchingMode) if self.frameOffsetMatching == False: - self._insar.frameRangeOffsetMatchingMaster = offsetMaster[2] - self._insar.frameAzimuthOffsetMatchingMaster = offsetMaster[3] - self._insar.frameRangeOffsetMatchingSlave = offsetSlave[2] - self._insar.frameAzimuthOffsetMatchingSlave = offsetSlave[3] + self._insar.frameRangeOffsetMatchingReference = offsetReference[2] + self._insar.frameAzimuthOffsetMatchingReference = offsetReference[3] + self._insar.frameRangeOffsetMatchingSecondary = offsetSecondary[2] + self._insar.frameAzimuthOffsetMatchingSecondary = offsetSecondary[3] ################################################## # mosaic slc ################################################## - numberOfFrames = len(masterTrack.frames) + numberOfFrames = len(referenceTrack.frames) if numberOfFrames == 1: import shutil - #frameDir = os.path.join('f1_{}/mosaic'.format(self._insar.masterFrames[0])) - frameDir = os.path.join('f1_{}/s{}'.format(self._insar.masterFrames[0], self._insar.startingSwath)) - if not os.path.isfile(self._insar.masterSlc): - if os.path.isfile(os.path.join('../', frameDir, self._insar.masterSlc)): - os.symlink(os.path.join('../', frameDir, self._insar.masterSlc), self._insar.masterSlc) + #frameDir = os.path.join('f1_{}/mosaic'.format(self._insar.referenceFrames[0])) + frameDir = os.path.join('f1_{}/s{}'.format(self._insar.referenceFrames[0], self._insar.startingSwath)) + if not os.path.isfile(self._insar.referenceSlc): + if os.path.isfile(os.path.join('../', frameDir, self._insar.referenceSlc)): + os.symlink(os.path.join('../', frameDir, self._insar.referenceSlc), self._insar.referenceSlc) #shutil.copy2() can overwrite - shutil.copy2(os.path.join('../', frameDir, self._insar.masterSlc+'.vrt'), self._insar.masterSlc+'.vrt') - shutil.copy2(os.path.join('../', frameDir, self._insar.masterSlc+'.xml'), self._insar.masterSlc+'.xml') - if not os.path.isfile(self._insar.slaveSlc): - if os.path.isfile(os.path.join('../', frameDir, self._insar.slaveSlc)): - os.symlink(os.path.join('../', frameDir, self._insar.slaveSlc), self._insar.slaveSlc) - shutil.copy2(os.path.join('../', frameDir, self._insar.slaveSlc+'.vrt'), self._insar.slaveSlc+'.vrt') - shutil.copy2(os.path.join('../', frameDir, self._insar.slaveSlc+'.xml'), self._insar.slaveSlc+'.xml') + shutil.copy2(os.path.join('../', frameDir, self._insar.referenceSlc+'.vrt'), self._insar.referenceSlc+'.vrt') + shutil.copy2(os.path.join('../', frameDir, self._insar.referenceSlc+'.xml'), self._insar.referenceSlc+'.xml') + if not os.path.isfile(self._insar.secondarySlc): + if os.path.isfile(os.path.join('../', frameDir, self._insar.secondarySlc)): + os.symlink(os.path.join('../', frameDir, self._insar.secondarySlc), self._insar.secondarySlc) + shutil.copy2(os.path.join('../', frameDir, self._insar.secondarySlc+'.vrt'), self._insar.secondarySlc+'.vrt') + shutil.copy2(os.path.join('../', frameDir, self._insar.secondarySlc+'.xml'), self._insar.secondarySlc+'.xml') #update track parameters ######################################################### #mosaic size - masterTrack.numberOfSamples = masterTrack.frames[0].swaths[0].numberOfSamples - masterTrack.numberOfLines = masterTrack.frames[0].swaths[0].numberOfLines + referenceTrack.numberOfSamples = referenceTrack.frames[0].swaths[0].numberOfSamples + referenceTrack.numberOfLines = referenceTrack.frames[0].swaths[0].numberOfLines #NOTE THAT WE ARE STILL USING SINGLE LOOK PARAMETERS HERE #range parameters - masterTrack.startingRange = masterTrack.frames[0].swaths[0].startingRange - masterTrack.rangeSamplingRate = masterTrack.frames[0].swaths[0].rangeSamplingRate - masterTrack.rangePixelSize = masterTrack.frames[0].swaths[0].rangePixelSize + referenceTrack.startingRange = referenceTrack.frames[0].swaths[0].startingRange + referenceTrack.rangeSamplingRate = referenceTrack.frames[0].swaths[0].rangeSamplingRate + referenceTrack.rangePixelSize = referenceTrack.frames[0].swaths[0].rangePixelSize #azimuth parameters - masterTrack.sensingStart = masterTrack.frames[0].swaths[0].sensingStart - masterTrack.prf = masterTrack.frames[0].swaths[0].prf - masterTrack.azimuthPixelSize = masterTrack.frames[0].swaths[0].azimuthPixelSize - masterTrack.azimuthLineInterval = masterTrack.frames[0].swaths[0].azimuthLineInterval + referenceTrack.sensingStart = referenceTrack.frames[0].swaths[0].sensingStart + referenceTrack.prf = referenceTrack.frames[0].swaths[0].prf + referenceTrack.azimuthPixelSize = referenceTrack.frames[0].swaths[0].azimuthPixelSize + referenceTrack.azimuthLineInterval = referenceTrack.frames[0].swaths[0].azimuthLineInterval - masterTrack.dopplerVsPixel = masterTrack.frames[0].swaths[0].dopplerVsPixel + referenceTrack.dopplerVsPixel = referenceTrack.frames[0].swaths[0].dopplerVsPixel - #update track parameters, slave + #update track parameters, secondary ######################################################### #mosaic size - slaveTrack.numberOfSamples = slaveTrack.frames[0].swaths[0].numberOfSamples - slaveTrack.numberOfLines = slaveTrack.frames[0].swaths[0].numberOfLines + secondaryTrack.numberOfSamples = secondaryTrack.frames[0].swaths[0].numberOfSamples + secondaryTrack.numberOfLines = secondaryTrack.frames[0].swaths[0].numberOfLines #NOTE THAT WE ARE STILL USING SINGLE LOOK PARAMETERS HERE #range parameters - slaveTrack.startingRange = slaveTrack.frames[0].swaths[0].startingRange - slaveTrack.rangeSamplingRate = slaveTrack.frames[0].swaths[0].rangeSamplingRate - slaveTrack.rangePixelSize = slaveTrack.frames[0].swaths[0].rangePixelSize + secondaryTrack.startingRange = secondaryTrack.frames[0].swaths[0].startingRange + secondaryTrack.rangeSamplingRate = secondaryTrack.frames[0].swaths[0].rangeSamplingRate + secondaryTrack.rangePixelSize = secondaryTrack.frames[0].swaths[0].rangePixelSize #azimuth parameters - slaveTrack.sensingStart = slaveTrack.frames[0].swaths[0].sensingStart - slaveTrack.prf = slaveTrack.frames[0].swaths[0].prf - slaveTrack.azimuthPixelSize = slaveTrack.frames[0].swaths[0].azimuthPixelSize - slaveTrack.azimuthLineInterval = slaveTrack.frames[0].swaths[0].azimuthLineInterval + secondaryTrack.sensingStart = secondaryTrack.frames[0].swaths[0].sensingStart + secondaryTrack.prf = secondaryTrack.frames[0].swaths[0].prf + secondaryTrack.azimuthPixelSize = secondaryTrack.frames[0].swaths[0].azimuthPixelSize + secondaryTrack.azimuthLineInterval = secondaryTrack.frames[0].swaths[0].azimuthLineInterval - slaveTrack.dopplerVsPixel = slaveTrack.frames[0].swaths[0].dopplerVsPixel + secondaryTrack.dopplerVsPixel = secondaryTrack.frames[0].swaths[0].dopplerVsPixel else: - #mosaic master slc + #mosaic reference slc ######################################################### #choose offsets - rangeOffsets = self._insar.frameRangeOffsetMatchingMaster - azimuthOffsets = self._insar.frameAzimuthOffsetMatchingMaster + rangeOffsets = self._insar.frameRangeOffsetMatchingReference + azimuthOffsets = self._insar.frameAzimuthOffsetMatchingReference #list of input files slcs = [] - for i, frameNumber in enumerate(self._insar.masterFrames): + for i, frameNumber in enumerate(self._insar.referenceFrames): frameDir = 'f{}_{}'.format(i+1, frameNumber) swathDir = 's{}'.format(self._insar.startingSwath) - slcs.append(os.path.join('../', frameDir, swathDir, self._insar.masterSlc)) + slcs.append(os.path.join('../', frameDir, swathDir, self._insar.referenceSlc)) #note that track parameters are updated after mosaicking #parameters update is checked, it is OK. - frameMosaic(masterTrack, slcs, self._insar.masterSlc, + frameMosaic(referenceTrack, slcs, self._insar.referenceSlc, rangeOffsets, azimuthOffsets, 1, 1, updateTrack=True, phaseCompensation=True, resamplingMethod=2) - create_xml(self._insar.masterSlc, masterTrack.numberOfSamples, masterTrack.numberOfLines, 'slc') - masterTrack.dopplerVsPixel = computeTrackDoppler(masterTrack) + create_xml(self._insar.referenceSlc, referenceTrack.numberOfSamples, referenceTrack.numberOfLines, 'slc') + referenceTrack.dopplerVsPixel = computeTrackDoppler(referenceTrack) - #mosaic slave slc + #mosaic secondary slc ######################################################### #choose offsets - rangeOffsets = self._insar.frameRangeOffsetMatchingSlave - azimuthOffsets = self._insar.frameAzimuthOffsetMatchingSlave + rangeOffsets = self._insar.frameRangeOffsetMatchingSecondary + azimuthOffsets = self._insar.frameAzimuthOffsetMatchingSecondary #list of input files slcs = [] - for i, frameNumber in enumerate(self._insar.masterFrames): + for i, frameNumber in enumerate(self._insar.referenceFrames): frameDir = 'f{}_{}'.format(i+1, frameNumber) swathDir = 's{}'.format(self._insar.startingSwath) - slcs.append(os.path.join('../', frameDir, swathDir, self._insar.slaveSlc)) + slcs.append(os.path.join('../', frameDir, swathDir, self._insar.secondarySlc)) #note that track parameters are updated after mosaicking #parameters update is checked, it is OK. - frameMosaic(slaveTrack, slcs, self._insar.slaveSlc, + frameMosaic(secondaryTrack, slcs, self._insar.secondarySlc, rangeOffsets, azimuthOffsets, 1, 1, updateTrack=True, phaseCompensation=True, resamplingMethod=2) - create_xml(self._insar.slaveSlc, slaveTrack.numberOfSamples, slaveTrack.numberOfLines, 'slc') - slaveTrack.dopplerVsPixel = computeTrackDoppler(slaveTrack) + create_xml(self._insar.secondarySlc, secondaryTrack.numberOfSamples, secondaryTrack.numberOfLines, 'slc') + secondaryTrack.dopplerVsPixel = computeTrackDoppler(secondaryTrack) #save parameter file inside denseoffset directory - self._insar.saveProduct(masterTrack, self._insar.masterTrackParameter) - self._insar.saveProduct(slaveTrack, self._insar.slaveTrackParameter) + self._insar.saveProduct(referenceTrack, self._insar.referenceTrackParameter) + self._insar.saveProduct(secondaryTrack, self._insar.secondaryTrackParameter) os.chdir('../') diff --git a/components/isceobj/Alos2Proc/runSlcOffset.py b/components/isceobj/Alos2Proc/runSlcOffset.py index e052aea..c7bfed3 100644 --- a/components/isceobj/Alos2Proc/runSlcOffset.py +++ b/components/isceobj/Alos2Proc/runSlcOffset.py @@ -28,13 +28,13 @@ def runSlcOffset(self): catalog = isceobj.Catalog.createCatalog(self._insar.procDoc.name) self.updateParamemetersFromUser() - masterTrack = self._insar.loadTrack(master=True) - slaveTrack = self._insar.loadTrack(master=False) + referenceTrack = self._insar.loadTrack(reference=True) + secondaryTrack = self._insar.loadTrack(reference=False) demFile = os.path.abspath(self._insar.dem) wbdFile = os.path.abspath(self._insar.wbd) - for i, frameNumber in enumerate(self._insar.masterFrames): + for i, frameNumber in enumerate(self._insar.referenceFrames): frameDir = 'f{}_{}'.format(i+1, frameNumber) os.chdir(frameDir) for j, swathNumber in enumerate(range(self._insar.startingSwath, self._insar.endingSwath + 1)): @@ -43,8 +43,8 @@ def runSlcOffset(self): print('estimating offset frame {}, swath {}'.format(frameNumber, swathNumber)) - masterSwath = masterTrack.frames[i].swaths[j] - slaveSwath = slaveTrack.frames[i].swaths[j] + referenceSwath = referenceTrack.frames[i].swaths[j] + secondarySwath = secondaryTrack.frames[i].swaths[j] ########################################## #1. set number of matching points @@ -62,7 +62,7 @@ def runSlcOffset(self): numberRangeLooks=100 numberAzimuthLooks=100 #compute land ratio using topo module - topo(masterSwath, masterTrack, demFile, 'lat.rdr', 'lon.rdr', 'hgt.rdr', losFile='los.rdr', + topo(referenceSwath, referenceTrack, demFile, 'lat.rdr', 'lon.rdr', 'hgt.rdr', losFile='los.rdr', incFile=None, mskFile=None, numberRangeLooks=numberRangeLooks, numberAzimuthLooks=numberAzimuthLooks, multilookTimeOffset=False) waterBodyRadar('lat.rdr', 'lon.rdr', wbdFile, 'wbd.rdr') @@ -82,7 +82,7 @@ def runSlcOffset(self): catalog.addItem('warning message', 'land too small for estimating slc offsets at frame {}, swath {}, use geometric offsets'.format(frameNumber, swathNumber), 'runSlcOffset') #compute geomtricla offsets - geo2rdr(slaveSwath, slaveTrack, 'lat.rdr', 'lon.rdr', 'hgt.rdr', 'rg.rdr', 'az.rdr', numberRangeLooks=numberRangeLooks, numberAzimuthLooks=numberAzimuthLooks, multilookTimeOffset=False) + geo2rdr(secondarySwath, secondaryTrack, 'lat.rdr', 'lon.rdr', 'hgt.rdr', 'rg.rdr', 'az.rdr', numberRangeLooks=numberRangeLooks, numberAzimuthLooks=numberAzimuthLooks, multilookTimeOffset=False) reformatGeometricalOffset('rg.rdr', 'az.rdr', 'cull.off', rangeStep=numberRangeLooks, azimuthStep=numberAzimuthLooks, maximumNumberOfOffsets=2000) os.remove('lat.rdr') @@ -155,26 +155,26 @@ def runSlcOffset(self): ampcor.configure() mSLC = isceobj.createSlcImage() - mSLC.load(self._insar.masterSlc+'.xml') + mSLC.load(self._insar.referenceSlc+'.xml') mSLC.setAccessMode('read') mSLC.createImage() sSLC = isceobj.createSlcImage() - sSLC.load(self._insar.slaveSlc+'.xml') + sSLC.load(self._insar.secondarySlc+'.xml') sSLC.setAccessMode('read') sSLC.createImage() ampcor.setImageDataType1('complex') ampcor.setImageDataType2('complex') - ampcor.setMasterSlcImage(mSLC) - ampcor.setSlaveSlcImage(sSLC) + ampcor.setReferenceSlcImage(mSLC) + ampcor.setSecondarySlcImage(sSLC) #MATCH REGION #compute an offset at image center to use - rgoff, azoff = computeOffsetFromOrbit(masterSwath, masterTrack, slaveSwath, slaveTrack, - masterSwath.numberOfSamples * 0.5, - masterSwath.numberOfLines * 0.5) + rgoff, azoff = computeOffsetFromOrbit(referenceSwath, referenceTrack, secondarySwath, secondaryTrack, + referenceSwath.numberOfSamples * 0.5, + referenceSwath.numberOfLines * 0.5) #it seems that we cannot use 0, haven't look into the problem if rgoff == 0: rgoff = 1 diff --git a/components/isceobj/Alos2Proc/runSwathMosaic.py b/components/isceobj/Alos2Proc/runSwathMosaic.py index 3e450e6..91c8719 100644 --- a/components/isceobj/Alos2Proc/runSwathMosaic.py +++ b/components/isceobj/Alos2Proc/runSwathMosaic.py @@ -20,10 +20,10 @@ def runSwathMosaic(self): catalog = isceobj.Catalog.createCatalog(self._insar.procDoc.name) self.updateParamemetersFromUser() - masterTrack = self._insar.loadTrack(master=True) - slaveTrack = self._insar.loadTrack(master=False) + referenceTrack = self._insar.loadTrack(reference=True) + secondaryTrack = self._insar.loadTrack(reference=False) - for i, frameNumber in enumerate(self._insar.masterFrames): + for i, frameNumber in enumerate(self._insar.referenceFrames): frameDir = 'f{}_{}'.format(i+1, frameNumber) os.chdir(frameDir) @@ -40,7 +40,7 @@ def runSwathMosaic(self): (self._insar.endingSwath-self._insar.startingSwath+1 > 1) ): import shutil - swathDir = 's{}'.format(masterTrack.frames[i].swaths[0].swathNumber) + swathDir = 's{}'.format(referenceTrack.frames[i].swaths[0].swathNumber) if not os.path.isfile(self._insar.interferogram): os.symlink(os.path.join('../', swathDir, self._insar.interferogram), self._insar.interferogram) @@ -60,7 +60,7 @@ def runSwathMosaic(self): #update frame parameters ######################################################### - frame = masterTrack.frames[i] + frame = referenceTrack.frames[i] infImg = isceobj.createImage() infImg.load(self._insar.interferogram+'.xml') #mosaic size @@ -77,9 +77,9 @@ def runSwathMosaic(self): frame.azimuthPixelSize = frame.swaths[0].azimuthPixelSize frame.azimuthLineInterval = frame.swaths[0].azimuthLineInterval - #update frame parameters, slave + #update frame parameters, secondary ######################################################### - frame = slaveTrack.frames[i] + frame = secondaryTrack.frames[i] #mosaic size frame.numberOfSamples = int(frame.swaths[0].numberOfSamples/self._insar.numberRangeLooks1) frame.numberOfLines = int(frame.swaths[0].numberOfLines/self._insar.numberAzimuthLooks1) @@ -97,28 +97,28 @@ def runSwathMosaic(self): os.chdir('../') #save parameter file - self._insar.saveProduct(masterTrack.frames[i], self._insar.masterFrameParameter) - self._insar.saveProduct(slaveTrack.frames[i], self._insar.slaveFrameParameter) + self._insar.saveProduct(referenceTrack.frames[i], self._insar.referenceFrameParameter) + self._insar.saveProduct(secondaryTrack.frames[i], self._insar.secondaryFrameParameter) os.chdir('../') continue #choose offsets - numberOfFrames = len(masterTrack.frames) - numberOfSwaths = len(masterTrack.frames[i].swaths) + numberOfFrames = len(referenceTrack.frames) + numberOfSwaths = len(referenceTrack.frames[i].swaths) if self.swathOffsetMatching: #no need to do this as the API support 2-d list - #rangeOffsets = (np.array(self._insar.swathRangeOffsetMatchingMaster)).reshape(numberOfFrames, numberOfSwaths) - #azimuthOffsets = (np.array(self._insar.swathAzimuthOffsetMatchingMaster)).reshape(numberOfFrames, numberOfSwaths) - rangeOffsets = self._insar.swathRangeOffsetMatchingMaster - azimuthOffsets = self._insar.swathAzimuthOffsetMatchingMaster + #rangeOffsets = (np.array(self._insar.swathRangeOffsetMatchingReference)).reshape(numberOfFrames, numberOfSwaths) + #azimuthOffsets = (np.array(self._insar.swathAzimuthOffsetMatchingReference)).reshape(numberOfFrames, numberOfSwaths) + rangeOffsets = self._insar.swathRangeOffsetMatchingReference + azimuthOffsets = self._insar.swathAzimuthOffsetMatchingReference else: - #rangeOffsets = (np.array(self._insar.swathRangeOffsetGeometricalMaster)).reshape(numberOfFrames, numberOfSwaths) - #azimuthOffsets = (np.array(self._insar.swathAzimuthOffsetGeometricalMaster)).reshape(numberOfFrames, numberOfSwaths) - rangeOffsets = self._insar.swathRangeOffsetGeometricalMaster - azimuthOffsets = self._insar.swathAzimuthOffsetGeometricalMaster + #rangeOffsets = (np.array(self._insar.swathRangeOffsetGeometricalReference)).reshape(numberOfFrames, numberOfSwaths) + #azimuthOffsets = (np.array(self._insar.swathAzimuthOffsetGeometricalReference)).reshape(numberOfFrames, numberOfSwaths) + rangeOffsets = self._insar.swathRangeOffsetGeometricalReference + azimuthOffsets = self._insar.swathAzimuthOffsetGeometricalReference rangeOffsets = rangeOffsets[i] azimuthOffsets = azimuthOffsets[i] @@ -133,28 +133,28 @@ def runSwathMosaic(self): #note that frame parameters are updated after mosaicking #mosaic amplitudes - swathMosaic(masterTrack.frames[i], inputAmplitudes, self._insar.amplitude, + swathMosaic(referenceTrack.frames[i], inputAmplitudes, self._insar.amplitude, rangeOffsets, azimuthOffsets, self._insar.numberRangeLooks1, self._insar.numberAzimuthLooks1, resamplingMethod=0) #mosaic interferograms - swathMosaic(masterTrack.frames[i], inputInterferograms, self._insar.interferogram, + swathMosaic(referenceTrack.frames[i], inputInterferograms, self._insar.interferogram, rangeOffsets, azimuthOffsets, self._insar.numberRangeLooks1, self._insar.numberAzimuthLooks1, updateFrame=True, resamplingMethod=1) - create_xml(self._insar.amplitude, masterTrack.frames[i].numberOfSamples, masterTrack.frames[i].numberOfLines, 'amp') - create_xml(self._insar.interferogram, masterTrack.frames[i].numberOfSamples, masterTrack.frames[i].numberOfLines, 'int') + create_xml(self._insar.amplitude, referenceTrack.frames[i].numberOfSamples, referenceTrack.frames[i].numberOfLines, 'amp') + create_xml(self._insar.interferogram, referenceTrack.frames[i].numberOfSamples, referenceTrack.frames[i].numberOfLines, 'int') - #update slave frame parameters here - #no matching for slave, always use geometry - rangeOffsets = self._insar.swathRangeOffsetGeometricalSlave - azimuthOffsets = self._insar.swathAzimuthOffsetGeometricalSlave + #update secondary frame parameters here + #no matching for secondary, always use geometry + rangeOffsets = self._insar.swathRangeOffsetGeometricalSecondary + azimuthOffsets = self._insar.swathAzimuthOffsetGeometricalSecondary rangeOffsets = rangeOffsets[i] azimuthOffsets = azimuthOffsets[i] - swathMosaicParameters(slaveTrack.frames[i], rangeOffsets, azimuthOffsets, self._insar.numberRangeLooks1, self._insar.numberAzimuthLooks1) + swathMosaicParameters(secondaryTrack.frames[i], rangeOffsets, azimuthOffsets, self._insar.numberRangeLooks1, self._insar.numberAzimuthLooks1) os.chdir('../') #save parameter file - self._insar.saveProduct(masterTrack.frames[i], self._insar.masterFrameParameter) - self._insar.saveProduct(slaveTrack.frames[i], self._insar.slaveFrameParameter) + self._insar.saveProduct(referenceTrack.frames[i], self._insar.referenceFrameParameter) + self._insar.saveProduct(secondaryTrack.frames[i], self._insar.secondaryFrameParameter) os.chdir('../') diff --git a/components/isceobj/Alos2Proc/runSwathOffset.py b/components/isceobj/Alos2Proc/runSwathOffset.py index ece6b1b..9a4e2b6 100644 --- a/components/isceobj/Alos2Proc/runSwathOffset.py +++ b/components/isceobj/Alos2Proc/runSwathOffset.py @@ -21,10 +21,10 @@ def runSwathOffset(self): catalog = isceobj.Catalog.createCatalog(self._insar.procDoc.name) self.updateParamemetersFromUser() - masterTrack = self._insar.loadTrack(master=True) - slaveTrack = self._insar.loadTrack(master=False) + referenceTrack = self._insar.loadTrack(reference=True) + secondaryTrack = self._insar.loadTrack(reference=False) - for i, frameNumber in enumerate(self._insar.masterFrames): + for i, frameNumber in enumerate(self._insar.referenceFrames): frameDir = 'f{}_{}'.format(i+1, frameNumber) os.chdir(frameDir) @@ -46,34 +46,34 @@ def runSwathOffset(self): continue #compute swath offset - offsetMaster = swathOffset(masterTrack.frames[i], self._insar.masterSlc, self._insar.masterSwathOffset, + offsetReference = swathOffset(referenceTrack.frames[i], self._insar.referenceSlc, self._insar.referenceSwathOffset, crossCorrelation=self.swathOffsetMatching, numberOfAzimuthLooks=10) - #only use geometrical offset for slave - offsetSlave = swathOffset(slaveTrack.frames[i], self._insar.slaveSlc, self._insar.slaveSwathOffset, + #only use geometrical offset for secondary + offsetSecondary = swathOffset(secondaryTrack.frames[i], self._insar.secondarySlc, self._insar.secondarySwathOffset, crossCorrelation=False, numberOfAzimuthLooks=10) #initialization if i == 0: - self._insar.swathRangeOffsetGeometricalMaster = [] - self._insar.swathAzimuthOffsetGeometricalMaster = [] - self._insar.swathRangeOffsetGeometricalSlave = [] - self._insar.swathAzimuthOffsetGeometricalSlave = [] + self._insar.swathRangeOffsetGeometricalReference = [] + self._insar.swathAzimuthOffsetGeometricalReference = [] + self._insar.swathRangeOffsetGeometricalSecondary = [] + self._insar.swathAzimuthOffsetGeometricalSecondary = [] if self.swathOffsetMatching: - self._insar.swathRangeOffsetMatchingMaster = [] - self._insar.swathAzimuthOffsetMatchingMaster = [] - #self._insar.swathRangeOffsetMatchingSlave = [] - #self._insar.swathAzimuthOffsetMatchingSlave = [] + self._insar.swathRangeOffsetMatchingReference = [] + self._insar.swathAzimuthOffsetMatchingReference = [] + #self._insar.swathRangeOffsetMatchingSecondary = [] + #self._insar.swathAzimuthOffsetMatchingSecondary = [] #append list directly, as the API support 2-d list - self._insar.swathRangeOffsetGeometricalMaster.append(offsetMaster[0]) - self._insar.swathAzimuthOffsetGeometricalMaster.append(offsetMaster[1]) - self._insar.swathRangeOffsetGeometricalSlave.append(offsetSlave[0]) - self._insar.swathAzimuthOffsetGeometricalSlave.append(offsetSlave[1]) + self._insar.swathRangeOffsetGeometricalReference.append(offsetReference[0]) + self._insar.swathAzimuthOffsetGeometricalReference.append(offsetReference[1]) + self._insar.swathRangeOffsetGeometricalSecondary.append(offsetSecondary[0]) + self._insar.swathAzimuthOffsetGeometricalSecondary.append(offsetSecondary[1]) if self.swathOffsetMatching: - self._insar.swathRangeOffsetMatchingMaster.append(offsetMaster[2]) - self._insar.swathAzimuthOffsetMatchingMaster.append(offsetMaster[3]) - #self._insar.swathRangeOffsetMatchingSlave.append(offsetSlave[2]) - #self._insar.swathAzimuthOffsetMatchingSlave.append(offsetSlave[3]) + self._insar.swathRangeOffsetMatchingReference.append(offsetReference[2]) + self._insar.swathAzimuthOffsetMatchingReference.append(offsetReference[3]) + #self._insar.swathRangeOffsetMatchingSecondary.append(offsetSecondary[2]) + #self._insar.swathAzimuthOffsetMatchingSecondary.append(offsetSecondary[3]) os.chdir('../../') @@ -300,8 +300,8 @@ def estimateSwathOffset(swath1, swath2, image1, image2, rangeScale1=1, azimuthSc ampcor.setImageDataType1('real') ampcor.setImageDataType2('real') - ampcor.setMasterSlcImage(mMag) - ampcor.setSlaveSlcImage(sMag) + ampcor.setReferenceSlcImage(mMag) + ampcor.setSecondarySlcImage(sMag) #MATCH REGION rgoff = 0 diff --git a/components/isceobj/Alos2Proc/runUnwrapSnaphu.py b/components/isceobj/Alos2Proc/runUnwrapSnaphu.py index c1025ca..985d9a8 100644 --- a/components/isceobj/Alos2Proc/runUnwrapSnaphu.py +++ b/components/isceobj/Alos2Proc/runUnwrapSnaphu.py @@ -22,8 +22,8 @@ def runUnwrapSnaphu(self): catalog = isceobj.Catalog.createCatalog(self._insar.procDoc.name) self.updateParamemetersFromUser() - masterTrack = self._insar.loadTrack(master=True) - #slaveTrack = self._insar.loadTrack(master=False) + referenceTrack = self._insar.loadTrack(reference=True) + #secondaryTrack = self._insar.loadTrack(reference=False) insarDir = 'insar' os.makedirs(insarDir, exist_ok=True) @@ -43,9 +43,9 @@ def runUnwrapSnaphu(self): costMode = 's', initMethod = 'mcf') else: - tmid = masterTrack.sensingStart + datetime.timedelta(seconds=(self._insar.numberAzimuthLooks1-1.0)/2.0*masterTrack.azimuthLineInterval+ - masterTrack.numberOfLines/2.0*self._insar.numberAzimuthLooks1*masterTrack.azimuthLineInterval) - snaphuUnwrap(masterTrack, tmid, + tmid = referenceTrack.sensingStart + datetime.timedelta(seconds=(self._insar.numberAzimuthLooks1-1.0)/2.0*referenceTrack.azimuthLineInterval+ + referenceTrack.numberOfLines/2.0*self._insar.numberAzimuthLooks1*referenceTrack.azimuthLineInterval) + snaphuUnwrap(referenceTrack, tmid, self._insar.filteredInterferogram, self._insar.multilookPhsig, self._insar.unwrappedInterferogram, diff --git a/components/isceobj/Alos2burstProc/Alos2burstProc.py b/components/isceobj/Alos2burstProc/Alos2burstProc.py index fe1a875..47adcb8 100644 --- a/components/isceobj/Alos2burstProc/Alos2burstProc.py +++ b/components/isceobj/Alos2burstProc/Alos2burstProc.py @@ -11,19 +11,19 @@ from iscesys.DateTimeUtil.DateTimeUtil import DateTimeUtil as DTU from iscesys.Compatibility import Compatibility -MASTER_DATE = Component.Parameter('masterDate', - public_name='master date', +REFERENCE_DATE = Component.Parameter('referenceDate', + public_name='reference date', default=None, type=str, mandatory=True, - doc='master acquistion date') + doc='reference acquistion date') -SLAVE_DATE = Component.Parameter('slaveDate', - public_name='slave date', +SECONDARY_DATE = Component.Parameter('secondaryDate', + public_name='secondary date', default=None, type=str, mandatory=True, - doc='slave acquistion date') + doc='secondary acquistion date') MODE_COMBINATION = Component.Parameter('modeCombination', public_name='mode combination', @@ -32,21 +32,21 @@ MODE_COMBINATION = Component.Parameter('modeCombination', mandatory=True, doc='mode combination') -MASTER_FRAMES = Component.Parameter('masterFrames', - public_name = 'master frames', +REFERENCE_FRAMES = Component.Parameter('referenceFrames', + public_name = 'reference frames', default = None, type=str, container=list, mandatory=False, - doc = 'master frames to process') + doc = 'reference frames to process') -SLAVE_FRAMES = Component.Parameter('slaveFrames', - public_name = 'slave frames', +SECONDARY_FRAMES = Component.Parameter('secondaryFrames', + public_name = 'secondary frames', default = None, type=str, container=list, mandatory=False, - doc = 'slave frames to process') + doc = 'secondary frames to process') STARTING_SWATH = Component.Parameter('startingSwath', public_name='starting swath', @@ -108,135 +108,135 @@ AZIMUTH_RESIDUAL_OFFSET_SD = Component.Parameter('azimuthResidualOffsetSd', container = list, doc = 'azimuth residual offset estimated by spectral diversity') -SWATH_RANGE_OFFSET_GEOMETRICAL_MASTER = Component.Parameter('swathRangeOffsetGeometricalMaster', - public_name = 'swath range offset from geometry master', +SWATH_RANGE_OFFSET_GEOMETRICAL_REFERENCE = Component.Parameter('swathRangeOffsetGeometricalReference', + public_name = 'swath range offset from geometry reference', default = None, type = float, mandatory = True, container = list, - doc = 'swath range offset from geometry master') + doc = 'swath range offset from geometry reference') -SWATH_AZIMUTH_OFFSET_GEOMETRICAL_MASTER = Component.Parameter('swathAzimuthOffsetGeometricalMaster', - public_name = 'swath azimuth offset from geometry master', +SWATH_AZIMUTH_OFFSET_GEOMETRICAL_REFERENCE = Component.Parameter('swathAzimuthOffsetGeometricalReference', + public_name = 'swath azimuth offset from geometry reference', default = None, type = float, mandatory = True, container = list, - doc = 'swath azimuth offset from geometry master') + doc = 'swath azimuth offset from geometry reference') -SWATH_RANGE_OFFSET_MATCHING_MASTER = Component.Parameter('swathRangeOffsetMatchingMaster', - public_name = 'swath range offset from matching master', +SWATH_RANGE_OFFSET_MATCHING_REFERENCE = Component.Parameter('swathRangeOffsetMatchingReference', + public_name = 'swath range offset from matching reference', default = None, type = float, mandatory = True, container = list, - doc = 'swath range offset from matching master') + doc = 'swath range offset from matching reference') -SWATH_AZIMUTH_OFFSET_MATCHING_MASTER = Component.Parameter('swathAzimuthOffsetMatchingMaster', - public_name = 'swath azimuth offset from matching master', +SWATH_AZIMUTH_OFFSET_MATCHING_REFERENCE = Component.Parameter('swathAzimuthOffsetMatchingReference', + public_name = 'swath azimuth offset from matching reference', default = None, type = float, mandatory = True, container = list, - doc = 'swath azimuth offset from matching master') + doc = 'swath azimuth offset from matching reference') -SWATH_RANGE_OFFSET_GEOMETRICAL_SLAVE = Component.Parameter('swathRangeOffsetGeometricalSlave', - public_name = 'swath range offset from geometry slave', +SWATH_RANGE_OFFSET_GEOMETRICAL_SECONDARY = Component.Parameter('swathRangeOffsetGeometricalSecondary', + public_name = 'swath range offset from geometry secondary', default = None, type = float, mandatory = True, container = list, - doc = 'swath range offset from geometry slave') + doc = 'swath range offset from geometry secondary') -SWATH_AZIMUTH_OFFSET_GEOMETRICAL_SLAVE = Component.Parameter('swathAzimuthOffsetGeometricalSlave', - public_name = 'swath azimuth offset from geometry slave', +SWATH_AZIMUTH_OFFSET_GEOMETRICAL_SECONDARY = Component.Parameter('swathAzimuthOffsetGeometricalSecondary', + public_name = 'swath azimuth offset from geometry secondary', default = None, type = float, mandatory = True, container = list, - doc = 'swath azimuth offset from geometry slave') + doc = 'swath azimuth offset from geometry secondary') -SWATH_RANGE_OFFSET_MATCHING_SLAVE = Component.Parameter('swathRangeOffsetMatchingSlave', - public_name = 'swath range offset from matching slave', +SWATH_RANGE_OFFSET_MATCHING_SECONDARY = Component.Parameter('swathRangeOffsetMatchingSecondary', + public_name = 'swath range offset from matching secondary', default = None, type = float, mandatory = True, container = list, - doc = 'swath range offset from matching slave') + doc = 'swath range offset from matching secondary') -SWATH_AZIMUTH_OFFSET_MATCHING_SLAVE = Component.Parameter('swathAzimuthOffsetMatchingSlave', - public_name = 'swath azimuth offset from matching slave', +SWATH_AZIMUTH_OFFSET_MATCHING_SECONDARY = Component.Parameter('swathAzimuthOffsetMatchingSecondary', + public_name = 'swath azimuth offset from matching secondary', default = None, type = float, mandatory = True, container = list, - doc = 'swath azimuth offset from matching slave') + doc = 'swath azimuth offset from matching secondary') -FRAME_RANGE_OFFSET_GEOMETRICAL_MASTER = Component.Parameter('frameRangeOffsetGeometricalMaster', - public_name = 'frame range offset from geometry master', +FRAME_RANGE_OFFSET_GEOMETRICAL_REFERENCE = Component.Parameter('frameRangeOffsetGeometricalReference', + public_name = 'frame range offset from geometry reference', default = None, type = float, mandatory = True, container = list, - doc = 'frame range offset from geometry master') + doc = 'frame range offset from geometry reference') -FRAME_AZIMUTH_OFFSET_GEOMETRICAL_MASTER = Component.Parameter('frameAzimuthOffsetGeometricalMaster', - public_name = 'frame azimuth offset from geometry master', +FRAME_AZIMUTH_OFFSET_GEOMETRICAL_REFERENCE = Component.Parameter('frameAzimuthOffsetGeometricalReference', + public_name = 'frame azimuth offset from geometry reference', default = None, type = float, mandatory = True, container = list, - doc = 'frame azimuth offset from geometry master') + doc = 'frame azimuth offset from geometry reference') -FRAME_RANGE_OFFSET_MATCHING_MASTER = Component.Parameter('frameRangeOffsetMatchingMaster', - public_name = 'frame range offset from matching master', +FRAME_RANGE_OFFSET_MATCHING_REFERENCE = Component.Parameter('frameRangeOffsetMatchingReference', + public_name = 'frame range offset from matching reference', default = None, type = float, mandatory = True, container = list, - doc = 'frame range offset from matching master') + doc = 'frame range offset from matching reference') -FRAME_AZIMUTH_OFFSET_MATCHING_MASTER = Component.Parameter('frameAzimuthOffsetMatchingMaster', - public_name = 'frame azimuth offset from matching master', +FRAME_AZIMUTH_OFFSET_MATCHING_REFERENCE = Component.Parameter('frameAzimuthOffsetMatchingReference', + public_name = 'frame azimuth offset from matching reference', default = None, type = float, mandatory = True, container = list, - doc = 'frame azimuth offset from matching master') + doc = 'frame azimuth offset from matching reference') -FRAME_RANGE_OFFSET_GEOMETRICAL_SLAVE = Component.Parameter('frameRangeOffsetGeometricalSlave', - public_name = 'frame range offset from geometry slave', +FRAME_RANGE_OFFSET_GEOMETRICAL_SECONDARY = Component.Parameter('frameRangeOffsetGeometricalSecondary', + public_name = 'frame range offset from geometry secondary', default = None, type = float, mandatory = True, container = list, - doc = 'frame range offset from geometry slave') + doc = 'frame range offset from geometry secondary') -FRAME_AZIMUTH_OFFSET_GEOMETRICAL_SLAVE = Component.Parameter('frameAzimuthOffsetGeometricalSlave', - public_name = 'frame azimuth offset from geometry slave', +FRAME_AZIMUTH_OFFSET_GEOMETRICAL_SECONDARY = Component.Parameter('frameAzimuthOffsetGeometricalSecondary', + public_name = 'frame azimuth offset from geometry secondary', default = None, type = float, mandatory = True, container = list, - doc = 'frame azimuth offset from geometry slave') + doc = 'frame azimuth offset from geometry secondary') -FRAME_RANGE_OFFSET_MATCHING_SLAVE = Component.Parameter('frameRangeOffsetMatchingSlave', - public_name = 'frame range offset from matching slave', +FRAME_RANGE_OFFSET_MATCHING_SECONDARY = Component.Parameter('frameRangeOffsetMatchingSecondary', + public_name = 'frame range offset from matching secondary', default = None, type = float, mandatory = True, container = list, - doc = 'frame range offset from matching slave') + doc = 'frame range offset from matching secondary') -FRAME_AZIMUTH_OFFSET_MATCHING_SLAVE = Component.Parameter('frameAzimuthOffsetMatchingSlave', - public_name = 'frame azimuth offset from matching slave', +FRAME_AZIMUTH_OFFSET_MATCHING_SECONDARY = Component.Parameter('frameAzimuthOffsetMatchingSecondary', + public_name = 'frame azimuth offset from matching secondary', default = None, type = float, mandatory = True, container = list, - doc = 'frame azimuth offset from matching slave') + doc = 'frame azimuth offset from matching secondary') NUMBER_RANGE_LOOKS1 = Component.Parameter('numberRangeLooks1', public_name='number of range looks 1', @@ -324,103 +324,103 @@ RADAR_DEM_AFFINE_TRANSFORM = Component.Parameter('radarDemAffineTransform', container = list, doc = 'radar dem affine transform parameters') -MASTER_SLC = Component.Parameter('masterSlc', - public_name='master slc', +REFERENCE_SLC = Component.Parameter('referenceSlc', + public_name='reference slc', default=None, type=str, mandatory=False, - doc='master slc file') + doc='reference slc file') -SLAVE_SLC = Component.Parameter('slaveSlc', - public_name='slave slc', +SECONDARY_SLC = Component.Parameter('secondarySlc', + public_name='secondary slc', default=None, type=str, mandatory=False, - doc='slave slc file') + doc='secondary slc file') -MASTER_BURST_PREFIX = Component.Parameter('masterBurstPrefix', - public_name='master burst prefix', +REFERENCE_BURST_PREFIX = Component.Parameter('referenceBurstPrefix', + public_name='reference burst prefix', default=None, type=str, mandatory=False, - doc='master burst prefix') + doc='reference burst prefix') -SLAVE_BURST_PREFIX = Component.Parameter('slaveBurstPrefix', - public_name='slave burst prefix', +SECONDARY_BURST_PREFIX = Component.Parameter('secondaryBurstPrefix', + public_name='secondary burst prefix', default=None, type=str, mandatory=False, - doc='slave burst prefix') + doc='secondary burst prefix') -MASTER_MAGNITUDE = Component.Parameter('masterMagnitude', - public_name='master magnitude', +REFERENCE_MAGNITUDE = Component.Parameter('referenceMagnitude', + public_name='reference magnitude', default=None, type=str, mandatory=False, - doc='master magnitude file') + doc='reference magnitude file') -SLAVE_MAGNITUDE = Component.Parameter('slaveMagnitude', - public_name='slave magnitude', +SECONDARY_MAGNITUDE = Component.Parameter('secondaryMagnitude', + public_name='secondary magnitude', default=None, type=str, mandatory=False, - doc='slave magnitude file') + doc='secondary magnitude file') -MASTER_SWATH_OFFSET = Component.Parameter('masterSwathOffset', - public_name='master swath offset', +REFERENCE_SWATH_OFFSET = Component.Parameter('referenceSwathOffset', + public_name='reference swath offset', default=None, type=str, mandatory=False, - doc='master swath offset file') + doc='reference swath offset file') -SLAVE_SWATH_OFFSET = Component.Parameter('slaveSwathOffset', - public_name='slave swath offset', +SECONDARY_SWATH_OFFSET = Component.Parameter('secondarySwathOffset', + public_name='secondary swath offset', default=None, type=str, mandatory=False, - doc='slave swath offset file') + doc='secondary swath offset file') -MASTER_FRAME_OFFSET = Component.Parameter('masterFrameOffset', - public_name='master frame offset', +REFERENCE_FRAME_OFFSET = Component.Parameter('referenceFrameOffset', + public_name='reference frame offset', default=None, type=str, mandatory=False, - doc='master frame offset file') + doc='reference frame offset file') -SLAVE_FRAME_OFFSET = Component.Parameter('slaveFrameOffset', - public_name='slave frame offset', +SECONDARY_FRAME_OFFSET = Component.Parameter('secondaryFrameOffset', + public_name='secondary frame offset', default=None, type=str, mandatory=False, - doc='slave frame offset file') + doc='secondary frame offset file') -MASTER_FRAME_PARAMETER = Component.Parameter('masterFrameParameter', - public_name='master frame parameter', +REFERENCE_FRAME_PARAMETER = Component.Parameter('referenceFrameParameter', + public_name='reference frame parameter', default=None, type=str, mandatory=False, - doc='master frame parameter file') + doc='reference frame parameter file') -SLAVE_FRAME_PARAMETER = Component.Parameter('slaveFrameParameter', - public_name='slave frame parameter', +SECONDARY_FRAME_PARAMETER = Component.Parameter('secondaryFrameParameter', + public_name='secondary frame parameter', default=None, type=str, mandatory=False, - doc='slave frame parameter file') + doc='secondary frame parameter file') -MASTER_TRACK_PARAMETER = Component.Parameter('masterTrackParameter', - public_name='master track parameter', +REFERENCE_TRACK_PARAMETER = Component.Parameter('referenceTrackParameter', + public_name='reference track parameter', default=None, type=str, mandatory=False, - doc='master track parameter file') + doc='reference track parameter file') -SLAVE_TRACK_PARAMETER = Component.Parameter('slaveTrackParameter', - public_name='slave track parameter', +SECONDARY_TRACK_PARAMETER = Component.Parameter('secondaryTrackParameter', + public_name='secondary track parameter', default=None, type=str, mandatory=False, - doc='slave track parameter file') + doc='secondary track parameter file') DEM = Component.Parameter('dem', public_name='dem for coregistration', @@ -793,11 +793,11 @@ class Alos2burstProc(Component): to modify and return their values. """ - parameter_list = (MASTER_DATE, - SLAVE_DATE, + parameter_list = (REFERENCE_DATE, + SECONDARY_DATE, MODE_COMBINATION, - MASTER_FRAMES, - SLAVE_FRAMES, + REFERENCE_FRAMES, + SECONDARY_FRAMES, STARTING_SWATH, ENDING_SWATH, BURST_UNSYNCHRONIZED_TIME, @@ -806,22 +806,22 @@ class Alos2burstProc(Component): AZIMUTH_RESIDUAL_OFFSET_CC, RANGE_RESIDUAL_OFFSET_SD, AZIMUTH_RESIDUAL_OFFSET_SD, - SWATH_RANGE_OFFSET_GEOMETRICAL_MASTER, - SWATH_AZIMUTH_OFFSET_GEOMETRICAL_MASTER, - SWATH_RANGE_OFFSET_MATCHING_MASTER, - SWATH_AZIMUTH_OFFSET_MATCHING_MASTER, - SWATH_RANGE_OFFSET_GEOMETRICAL_SLAVE, - SWATH_AZIMUTH_OFFSET_GEOMETRICAL_SLAVE, - SWATH_RANGE_OFFSET_MATCHING_SLAVE, - SWATH_AZIMUTH_OFFSET_MATCHING_SLAVE, - FRAME_RANGE_OFFSET_GEOMETRICAL_MASTER, - FRAME_AZIMUTH_OFFSET_GEOMETRICAL_MASTER, - FRAME_RANGE_OFFSET_MATCHING_MASTER, - FRAME_AZIMUTH_OFFSET_MATCHING_MASTER, - FRAME_RANGE_OFFSET_GEOMETRICAL_SLAVE, - FRAME_AZIMUTH_OFFSET_GEOMETRICAL_SLAVE, - FRAME_RANGE_OFFSET_MATCHING_SLAVE, - FRAME_AZIMUTH_OFFSET_MATCHING_SLAVE, + SWATH_RANGE_OFFSET_GEOMETRICAL_REFERENCE, + SWATH_AZIMUTH_OFFSET_GEOMETRICAL_REFERENCE, + SWATH_RANGE_OFFSET_MATCHING_REFERENCE, + SWATH_AZIMUTH_OFFSET_MATCHING_REFERENCE, + SWATH_RANGE_OFFSET_GEOMETRICAL_SECONDARY, + SWATH_AZIMUTH_OFFSET_GEOMETRICAL_SECONDARY, + SWATH_RANGE_OFFSET_MATCHING_SECONDARY, + SWATH_AZIMUTH_OFFSET_MATCHING_SECONDARY, + FRAME_RANGE_OFFSET_GEOMETRICAL_REFERENCE, + FRAME_AZIMUTH_OFFSET_GEOMETRICAL_REFERENCE, + FRAME_RANGE_OFFSET_MATCHING_REFERENCE, + FRAME_AZIMUTH_OFFSET_MATCHING_REFERENCE, + FRAME_RANGE_OFFSET_GEOMETRICAL_SECONDARY, + FRAME_AZIMUTH_OFFSET_GEOMETRICAL_SECONDARY, + FRAME_RANGE_OFFSET_MATCHING_SECONDARY, + FRAME_AZIMUTH_OFFSET_MATCHING_SECONDARY, NUMBER_RANGE_LOOKS1, NUMBER_AZIMUTH_LOOKS1, NUMBER_RANGE_LOOKS2, @@ -834,20 +834,20 @@ class Alos2burstProc(Component): NUMBER_AZIMUTH_LOOKS_SD, SUBBAND_RADAR_WAVLENGTH, RADAR_DEM_AFFINE_TRANSFORM, - MASTER_SLC, - SLAVE_SLC, - MASTER_BURST_PREFIX, - SLAVE_BURST_PREFIX, - MASTER_MAGNITUDE, - SLAVE_MAGNITUDE, - MASTER_SWATH_OFFSET, - SLAVE_SWATH_OFFSET, - MASTER_FRAME_OFFSET, - SLAVE_FRAME_OFFSET, - MASTER_FRAME_PARAMETER, - SLAVE_FRAME_PARAMETER, - MASTER_TRACK_PARAMETER, - SLAVE_TRACK_PARAMETER, + REFERENCE_SLC, + SECONDARY_SLC, + REFERENCE_BURST_PREFIX, + SECONDARY_BURST_PREFIX, + REFERENCE_MAGNITUDE, + SECONDARY_MAGNITUDE, + REFERENCE_SWATH_OFFSET, + SECONDARY_SWATH_OFFSET, + REFERENCE_FRAME_OFFSET, + SECONDARY_FRAME_OFFSET, + REFERENCE_FRAME_PARAMETER, + SECONDARY_FRAME_PARAMETER, + REFERENCE_TRACK_PARAMETER, + SECONDARY_TRACK_PARAMETER, DEM, DEM_GEO, WBD, @@ -912,12 +912,12 @@ class Alos2burstProc(Component): self.procDoc = procDoc return None - def setFilename(self, masterDate, slaveDate, nrlks1, nalks1, nrlks2, nalks2): + def setFilename(self, referenceDate, secondaryDate, nrlks1, nalks1, nrlks2, nalks2): - # if masterDate == None: - # masterDate = self.masterDate - # if slaveDate == None: - # slaveDate = self.slaveDate + # if referenceDate == None: + # referenceDate = self.referenceDate + # if secondaryDate == None: + # secondaryDate = self.secondaryDate # if nrlks1 == None: # nrlks1 = self.numberRangeLooks1 # if nalks1 == None: @@ -927,24 +927,24 @@ class Alos2burstProc(Component): # if nalks2 == None: # nalks2 = self.numberAzimuthLooks2 - ms = masterDate + '-' + slaveDate + ms = referenceDate + '-' + secondaryDate ml1 = '_{}rlks_{}alks'.format(nrlks1, nalks1) ml2 = '_{}rlks_{}alks'.format(nrlks1*nrlks2, nalks1*nalks2) - self.masterSlc = masterDate + '.slc' - self.slaveSlc = slaveDate + '.slc' - self.masterBurstPrefix = masterDate - self.slaveBurstPrefix = slaveDate - self.masterMagnitude = masterDate + '.mag' - self.slaveMagnitude = slaveDate + '.mag' - self.masterSwathOffset = 'swath_offset_' + masterDate + '.txt' - self.slaveSwathOffset = 'swath_offset_' + slaveDate + '.txt' - self.masterFrameOffset = 'frame_offset_' + masterDate + '.txt' - self.slaveFrameOffset = 'frame_offset_' + slaveDate + '.txt' - self.masterFrameParameter = masterDate + '.frame.xml' - self.slaveFrameParameter = slaveDate + '.frame.xml' - self.masterTrackParameter = masterDate + '.track.xml' - self.slaveTrackParameter = slaveDate + '.track.xml' + self.referenceSlc = referenceDate + '.slc' + self.secondarySlc = secondaryDate + '.slc' + self.referenceBurstPrefix = referenceDate + self.secondaryBurstPrefix = secondaryDate + self.referenceMagnitude = referenceDate + '.mag' + self.secondaryMagnitude = secondaryDate + '.mag' + self.referenceSwathOffset = 'swath_offset_' + referenceDate + '.txt' + self.secondarySwathOffset = 'swath_offset_' + secondaryDate + '.txt' + self.referenceFrameOffset = 'frame_offset_' + referenceDate + '.txt' + self.secondaryFrameOffset = 'frame_offset_' + secondaryDate + '.txt' + self.referenceFrameParameter = referenceDate + '.frame.xml' + self.secondaryFrameParameter = secondaryDate + '.frame.xml' + self.referenceTrackParameter = referenceDate + '.track.xml' + self.secondaryTrackParameter = secondaryDate + '.track.xml' #self.dem = #self.demGeo = #self.wbd = @@ -983,12 +983,12 @@ class Alos2burstProc(Component): self.geoIon = ms + ml2 + '.ion.geo' - def setFilenameSd(self, masterDate, slaveDate, nrlks1, nalks1, nrlks_sd, nalks_sd, nsd=3): + def setFilenameSd(self, referenceDate, secondaryDate, nrlks1, nalks1, nrlks_sd, nalks_sd, nsd=3): #spectral diversity - # if masterDate == None: - # masterDate = self.masterDate - # if slaveDate == None: - # slaveDate = self.slaveDate + # if referenceDate == None: + # referenceDate = self.referenceDate + # if secondaryDate == None: + # secondaryDate = self.secondaryDate # if nrlks1 == None: # nrlks1 = self.numberRangeLooks1 # if nalks1 == None: @@ -998,7 +998,7 @@ class Alos2burstProc(Component): # if nalks_sd == None: # nalks_sd = self.numberAzimuthLooksSd - ms = masterDate + '-' + slaveDate + ms = referenceDate + '-' + secondaryDate ml1 = '_{}rlks_{}alks'.format(nrlks1, nalks1) ml2sd = '_{}rlks_{}alks'.format(nrlks1*nrlks_sd, nalks1*nalks_sd) self.interferogramSd = ['sd_{}_'.format(i+1) + ms + ml1 + '.int' for i in range(nsd)] @@ -1051,42 +1051,42 @@ class Alos2burstProc(Component): return None - def loadTrack(self, master=True): + def loadTrack(self, reference=True): ''' Load the track using Product Manager. ''' - if master: - track = self.loadProduct(self.masterTrackParameter) + if reference: + track = self.loadProduct(self.referenceTrackParameter) else: - track = self.loadProduct(self.slaveTrackParameter) + track = self.loadProduct(self.secondaryTrackParameter) track.frames = [] - for i, frameNumber in enumerate(self.masterFrames): + for i, frameNumber in enumerate(self.referenceFrames): os.chdir('f{}_{}'.format(i+1, frameNumber)) - if master: - track.frames.append(self.loadProduct(self.masterFrameParameter)) + if reference: + track.frames.append(self.loadProduct(self.referenceFrameParameter)) else: - track.frames.append(self.loadProduct(self.slaveFrameParameter)) + track.frames.append(self.loadProduct(self.secondaryFrameParameter)) os.chdir('../') return track - def saveTrack(self, track, master=True): + def saveTrack(self, track, reference=True): ''' Save the track to XML files using Product Manager. ''' - if master: - self.saveProduct(track, self.masterTrackParameter) + if reference: + self.saveProduct(track, self.referenceTrackParameter) else: - self.saveProduct(track, self.slaveTrackParameter) + self.saveProduct(track, self.secondaryTrackParameter) - for i, frameNumber in enumerate(self.masterFrames): + for i, frameNumber in enumerate(self.referenceFrames): os.chdir('f{}_{}'.format(i+1, frameNumber)) - if master: - self.saveProduct(track.frames[i], self.masterFrameParameter) + if reference: + self.saveProduct(track.frames[i], self.referenceFrameParameter) else: - self.saveProduct(track.frames[i], self.slaveFrameParameter) + self.saveProduct(track.frames[i], self.secondaryFrameParameter) os.chdir('../') return None diff --git a/components/isceobj/Alos2burstProc/runCoregCc.py b/components/isceobj/Alos2burstProc/runCoregCc.py index 87251eb..bb55739 100644 --- a/components/isceobj/Alos2burstProc/runCoregCc.py +++ b/components/isceobj/Alos2burstProc/runCoregCc.py @@ -26,15 +26,15 @@ def runCoregCc(self): catalog = isceobj.Catalog.createCatalog(self._insar.procDoc.name) self.updateParamemetersFromUser() - masterTrack = self._insar.loadTrack(master=True) - slaveTrack = self._insar.loadTrack(master=False) + referenceTrack = self._insar.loadTrack(reference=True) + secondaryTrack = self._insar.loadTrack(reference=False) #demFile = os.path.abspath(self._insar.dem) #wbdFile = os.path.abspath(self._insar.wbd) ############################################################################### - self._insar.rangeResidualOffsetCc = [[] for i in range(len(masterTrack.frames))] - self._insar.azimuthResidualOffsetCc = [[] for i in range(len(masterTrack.frames))] - for i, frameNumber in enumerate(self._insar.masterFrames): + self._insar.rangeResidualOffsetCc = [[] for i in range(len(referenceTrack.frames))] + self._insar.azimuthResidualOffsetCc = [[] for i in range(len(referenceTrack.frames))] + for i, frameNumber in enumerate(self._insar.referenceFrames): frameDir = 'f{}_{}'.format(i+1, frameNumber) os.chdir(frameDir) for j, swathNumber in enumerate(range(self._insar.startingSwath, self._insar.endingSwath + 1)): @@ -43,8 +43,8 @@ def runCoregCc(self): print('processing frame {}, swath {}'.format(frameNumber, swathNumber)) - masterSwath = masterTrack.frames[i].swaths[j] - slaveSwath = slaveTrack.frames[i].swaths[j] + referenceSwath = referenceTrack.frames[i].swaths[j] + secondarySwath = secondaryTrack.frames[i].swaths[j] ################################################## # estimate cross-correlation offsets @@ -64,11 +64,11 @@ def runCoregCc(self): landRatio = np.sum(wbd==0) / length / width del wbd if (landRatio <= 0.00125): - print('\n\nWARNING: land area too small for estimating offsets between master and slave magnitudes at frame {}, swath {}'.format(frameNumber, swathNumber)) + print('\n\nWARNING: land area too small for estimating offsets between reference and secondary magnitudes at frame {}, swath {}'.format(frameNumber, swathNumber)) print('set offsets to zero\n\n') self._insar.rangeResidualOffsetCc[i].append(0.0) self._insar.azimuthResidualOffsetCc[i].append(0.0) - catalog.addItem('warning message', 'land area too small for estimating offsets between master and slave magnitudes at frame {}, swath {}'.format(frameNumber, swathNumber), 'runCoregCc') + catalog.addItem('warning message', 'land area too small for estimating offsets between reference and secondary magnitudes at frame {}, swath {}'.format(frameNumber, swathNumber), 'runCoregCc') continue #total number of offsets to use numberOfOffsets /= landRatio @@ -102,37 +102,37 @@ def runCoregCc(self): catalog.addItem('number of azimuth offsets at frame {}, swath {}'.format(frameNumber, swathNumber), '{}'.format(numberOfOffsetsAzimuth), 'runCoregCc') #need to cp to current directory to make it (gdal) work - if not os.path.isfile(self._insar.masterMagnitude): - os.symlink(os.path.join(self._insar.masterBurstPrefix, self._insar.masterMagnitude), self._insar.masterMagnitude) + if not os.path.isfile(self._insar.referenceMagnitude): + os.symlink(os.path.join(self._insar.referenceBurstPrefix, self._insar.referenceMagnitude), self._insar.referenceMagnitude) #shutil.copy2() can overwrite - shutil.copy2(os.path.join(self._insar.masterBurstPrefix, self._insar.masterMagnitude+'.vrt'), self._insar.masterMagnitude+'.vrt') - shutil.copy2(os.path.join(self._insar.masterBurstPrefix, self._insar.masterMagnitude+'.xml'), self._insar.masterMagnitude+'.xml') + shutil.copy2(os.path.join(self._insar.referenceBurstPrefix, self._insar.referenceMagnitude+'.vrt'), self._insar.referenceMagnitude+'.vrt') + shutil.copy2(os.path.join(self._insar.referenceBurstPrefix, self._insar.referenceMagnitude+'.xml'), self._insar.referenceMagnitude+'.xml') - if not os.path.isfile(self._insar.slaveMagnitude): - os.symlink(os.path.join(self._insar.slaveBurstPrefix + '_1_coreg_geom', self._insar.slaveMagnitude), self._insar.slaveMagnitude) + if not os.path.isfile(self._insar.secondaryMagnitude): + os.symlink(os.path.join(self._insar.secondaryBurstPrefix + '_1_coreg_geom', self._insar.secondaryMagnitude), self._insar.secondaryMagnitude) #shutil.copy2() can overwrite - shutil.copy2(os.path.join(self._insar.slaveBurstPrefix + '_1_coreg_geom', self._insar.slaveMagnitude+'.vrt'), self._insar.slaveMagnitude+'.vrt') - shutil.copy2(os.path.join(self._insar.slaveBurstPrefix + '_1_coreg_geom', self._insar.slaveMagnitude+'.xml'), self._insar.slaveMagnitude+'.xml') + shutil.copy2(os.path.join(self._insar.secondaryBurstPrefix + '_1_coreg_geom', self._insar.secondaryMagnitude+'.vrt'), self._insar.secondaryMagnitude+'.vrt') + shutil.copy2(os.path.join(self._insar.secondaryBurstPrefix + '_1_coreg_geom', self._insar.secondaryMagnitude+'.xml'), self._insar.secondaryMagnitude+'.xml') #matching ampcor = Ampcor(name='insarapp_slcs_ampcor') ampcor.configure() mMag = isceobj.createImage() - mMag.load(self._insar.masterMagnitude+'.xml') + mMag.load(self._insar.referenceMagnitude+'.xml') mMag.setAccessMode('read') mMag.createImage() sMag = isceobj.createImage() - sMag.load(self._insar.slaveMagnitude+'.xml') + sMag.load(self._insar.secondaryMagnitude+'.xml') sMag.setAccessMode('read') sMag.createImage() ampcor.setImageDataType1('real') ampcor.setImageDataType2('real') - ampcor.setMasterSlcImage(mMag) - ampcor.setSlaveSlcImage(sMag) + ampcor.setReferenceSlcImage(mMag) + ampcor.setSecondarySlcImage(sMag) #MATCH REGION rgoff = 0 @@ -201,12 +201,12 @@ def runCoregCc(self): sMag.finalizeImage() #clear up - os.remove(self._insar.masterMagnitude) - os.remove(self._insar.masterMagnitude+'.vrt') - os.remove(self._insar.masterMagnitude+'.xml') - os.remove(self._insar.slaveMagnitude) - os.remove(self._insar.slaveMagnitude+'.vrt') - os.remove(self._insar.slaveMagnitude+'.xml') + os.remove(self._insar.referenceMagnitude) + os.remove(self._insar.referenceMagnitude+'.vrt') + os.remove(self._insar.referenceMagnitude+'.xml') + os.remove(self._insar.secondaryMagnitude) + os.remove(self._insar.secondaryMagnitude+'.vrt') + os.remove(self._insar.secondaryMagnitude+'.xml') #compute average offsets to use in resampling if refinedOffsets == None: @@ -214,9 +214,9 @@ def runCoregCc(self): azimuthOffset = 0 self._insar.rangeResidualOffsetCc[i].append(rangeOffset) self._insar.azimuthResidualOffsetCc[i].append(azimuthOffset) - print('\n\nWARNING: too few offsets left in matching master and slave magnitudes at frame {}, swath {}'.format(frameNumber, swathNumber)) + print('\n\nWARNING: too few offsets left in matching reference and secondary magnitudes at frame {}, swath {}'.format(frameNumber, swathNumber)) print('set offsets to zero\n\n') - catalog.addItem('warning message', 'too few offsets left in matching master and slave magnitudes at frame {}, swath {}'.format(frameNumber, swathNumber), 'runCoregCc') + catalog.addItem('warning message', 'too few offsets left in matching reference and secondary magnitudes at frame {}, swath {}'.format(frameNumber, swathNumber), 'runCoregCc') else: rangeOffset, azimuthOffset = meanOffset(refinedOffsets) #for range offset, need to compute from a polynomial @@ -258,38 +258,38 @@ def runCoregCc(self): ################################################## # resample bursts ################################################## - slaveBurstResampledDir = self._insar.slaveBurstPrefix + '_2_coreg_cc' - #interferogramDir = self._insar.masterBurstPrefix + '-' + self._insar.slaveBurstPrefix + '_coreg_geom' + secondaryBurstResampledDir = self._insar.secondaryBurstPrefix + '_2_coreg_cc' + #interferogramDir = self._insar.referenceBurstPrefix + '-' + self._insar.secondaryBurstPrefix + '_coreg_geom' interferogramDir = 'burst_interf_2_coreg_cc' - interferogramPrefix = self._insar.masterBurstPrefix + '-' + self._insar.slaveBurstPrefix - resampleBursts(masterSwath, slaveSwath, - self._insar.masterBurstPrefix, self._insar.slaveBurstPrefix, slaveBurstResampledDir, interferogramDir, - self._insar.masterBurstPrefix, self._insar.slaveBurstPrefix, self._insar.slaveBurstPrefix, interferogramPrefix, + interferogramPrefix = self._insar.referenceBurstPrefix + '-' + self._insar.secondaryBurstPrefix + resampleBursts(referenceSwath, secondarySwath, + self._insar.referenceBurstPrefix, self._insar.secondaryBurstPrefix, secondaryBurstResampledDir, interferogramDir, + self._insar.referenceBurstPrefix, self._insar.secondaryBurstPrefix, self._insar.secondaryBurstPrefix, interferogramPrefix, self._insar.rangeOffset, self._insar.azimuthOffset, rangeOffsetResidual=rangeOffset, azimuthOffsetResidual=azimuthOffset) ################################################## # mosaic burst amplitudes and interferograms ################################################## - os.chdir(slaveBurstResampledDir) - mosaicBurstAmplitude(masterSwath, self._insar.slaveBurstPrefix, self._insar.slaveMagnitude, numberOfLooksThreshold=4) + os.chdir(secondaryBurstResampledDir) + mosaicBurstAmplitude(referenceSwath, self._insar.secondaryBurstPrefix, self._insar.secondaryMagnitude, numberOfLooksThreshold=4) os.chdir('../') os.chdir(interferogramDir) - mosaicBurstInterferogram(masterSwath, interferogramPrefix, self._insar.interferogram, numberOfLooksThreshold=4) + mosaicBurstInterferogram(referenceSwath, interferogramPrefix, self._insar.interferogram, numberOfLooksThreshold=4) os.chdir('../') ################################################## # final amplitude and interferogram ################################################## - amp = np.zeros((masterSwath.numberOfLines, 2*masterSwath.numberOfSamples), dtype=np.float32) - amp[0:, 1:masterSwath.numberOfSamples*2:2] = np.fromfile(os.path.join(slaveBurstResampledDir, self._insar.slaveMagnitude), \ - dtype=np.float32).reshape(masterSwath.numberOfLines, masterSwath.numberOfSamples) - amp[0:, 0:masterSwath.numberOfSamples*2:2] = np.fromfile(os.path.join(self._insar.masterBurstPrefix, self._insar.masterMagnitude), \ - dtype=np.float32).reshape(masterSwath.numberOfLines, masterSwath.numberOfSamples) + amp = np.zeros((referenceSwath.numberOfLines, 2*referenceSwath.numberOfSamples), dtype=np.float32) + amp[0:, 1:referenceSwath.numberOfSamples*2:2] = np.fromfile(os.path.join(secondaryBurstResampledDir, self._insar.secondaryMagnitude), \ + dtype=np.float32).reshape(referenceSwath.numberOfLines, referenceSwath.numberOfSamples) + amp[0:, 0:referenceSwath.numberOfSamples*2:2] = np.fromfile(os.path.join(self._insar.referenceBurstPrefix, self._insar.referenceMagnitude), \ + dtype=np.float32).reshape(referenceSwath.numberOfLines, referenceSwath.numberOfSamples) amp.astype(np.float32).tofile(self._insar.amplitude) - create_xml(self._insar.amplitude, masterSwath.numberOfSamples, masterSwath.numberOfLines, 'amp') + create_xml(self._insar.amplitude, referenceSwath.numberOfSamples, referenceSwath.numberOfLines, 'amp') os.rename(os.path.join(interferogramDir, self._insar.interferogram), self._insar.interferogram) os.rename(os.path.join(interferogramDir, self._insar.interferogram+'.vrt'), self._insar.interferogram+'.vrt') diff --git a/components/isceobj/Alos2burstProc/runCoregGeom.py b/components/isceobj/Alos2burstProc/runCoregGeom.py index 48a545b..8b2a4ff 100644 --- a/components/isceobj/Alos2burstProc/runCoregGeom.py +++ b/components/isceobj/Alos2burstProc/runCoregGeom.py @@ -24,14 +24,14 @@ def runCoregGeom(self): catalog = isceobj.Catalog.createCatalog(self._insar.procDoc.name) self.updateParamemetersFromUser() - masterTrack = self._insar.loadTrack(master=True) - slaveTrack = self._insar.loadTrack(master=False) + referenceTrack = self._insar.loadTrack(reference=True) + secondaryTrack = self._insar.loadTrack(reference=False) demFile = os.path.abspath(self._insar.dem) wbdFile = os.path.abspath(self._insar.wbd) ############################################################################### - for i, frameNumber in enumerate(self._insar.masterFrames): + for i, frameNumber in enumerate(self._insar.referenceFrames): frameDir = 'f{}_{}'.format(i+1, frameNumber) os.chdir(frameDir) for j, swathNumber in enumerate(range(self._insar.startingSwath, self._insar.endingSwath + 1)): @@ -40,8 +40,8 @@ def runCoregGeom(self): print('processing frame {}, swath {}'.format(frameNumber, swathNumber)) - masterSwath = masterTrack.frames[i].swaths[j] - slaveSwath = slaveTrack.frames[i].swaths[j] + referenceSwath = referenceTrack.frames[i].swaths[j] + secondarySwath = secondaryTrack.frames[i].swaths[j] ################################################## @@ -49,41 +49,41 @@ def runCoregGeom(self): ################################################## #set up track parameters just for computing offsets #ALL track parameters are listed here - #master - #masterTrack.passDirection = - #masterTrack.pointingDirection = - #masterTrack.operationMode = - #masterTrack.radarWavelength = - masterTrack.numberOfSamples = masterSwath.numberOfSamples - masterTrack.numberOfLines = masterSwath.numberOfLines - masterTrack.startingRange = masterSwath.startingRange - #masterTrack.rangeSamplingRate = - masterTrack.rangePixelSize = masterSwath.rangePixelSize - masterTrack.sensingStart = masterSwath.sensingStart - #masterTrack.prf = - #masterTrack.azimuthPixelSize = - masterTrack.azimuthLineInterval = masterSwath.azimuthLineInterval - #masterTrack.dopplerVsPixel = - #masterTrack.frames = - #masterTrack.orbit = + #reference + #referenceTrack.passDirection = + #referenceTrack.pointingDirection = + #referenceTrack.operationMode = + #referenceTrack.radarWavelength = + referenceTrack.numberOfSamples = referenceSwath.numberOfSamples + referenceTrack.numberOfLines = referenceSwath.numberOfLines + referenceTrack.startingRange = referenceSwath.startingRange + #referenceTrack.rangeSamplingRate = + referenceTrack.rangePixelSize = referenceSwath.rangePixelSize + referenceTrack.sensingStart = referenceSwath.sensingStart + #referenceTrack.prf = + #referenceTrack.azimuthPixelSize = + referenceTrack.azimuthLineInterval = referenceSwath.azimuthLineInterval + #referenceTrack.dopplerVsPixel = + #referenceTrack.frames = + #referenceTrack.orbit = - #slave - slaveTrack.numberOfSamples = slaveSwath.numberOfSamples - slaveTrack.numberOfLines = slaveSwath.numberOfLines - slaveTrack.startingRange = slaveSwath.startingRange - slaveTrack.rangePixelSize = slaveSwath.rangePixelSize - slaveTrack.sensingStart = slaveSwath.sensingStart - slaveTrack.azimuthLineInterval = slaveSwath.azimuthLineInterval + #secondary + secondaryTrack.numberOfSamples = secondarySwath.numberOfSamples + secondaryTrack.numberOfLines = secondarySwath.numberOfLines + secondaryTrack.startingRange = secondarySwath.startingRange + secondaryTrack.rangePixelSize = secondarySwath.rangePixelSize + secondaryTrack.sensingStart = secondarySwath.sensingStart + secondaryTrack.azimuthLineInterval = secondarySwath.azimuthLineInterval if self.useGPU and self._insar.hasGPU(): - topoGPU(masterTrack, 1, 1, demFile, + topoGPU(referenceTrack, 1, 1, demFile, self._insar.latitude, self._insar.longitude, self._insar.height, self._insar.los) - geo2RdrGPU(slaveTrack, 1, 1, + geo2RdrGPU(secondaryTrack, 1, 1, self._insar.latitude, self._insar.longitude, self._insar.height, self._insar.rangeOffset, self._insar.azimuthOffset) else: - topoCPU(masterTrack, 1, 1, demFile, + topoCPU(referenceTrack, 1, 1, demFile, self._insar.latitude, self._insar.longitude, self._insar.height, self._insar.los) - geo2RdrCPU(slaveTrack, 1, 1, + geo2RdrCPU(secondaryTrack, 1, 1, self._insar.latitude, self._insar.longitude, self._insar.height, self._insar.rangeOffset, self._insar.azimuthOffset) waterBodyRadar(self._insar.latitude, self._insar.longitude, wbdFile, self._insar.wbdOut) @@ -106,28 +106,28 @@ def runCoregGeom(self): ################################################## # resample bursts ################################################## - slaveBurstResampledDir = self._insar.slaveBurstPrefix + '_1_coreg_geom' - #interferogramDir = self._insar.masterBurstPrefix + '-' + self._insar.slaveBurstPrefix + '_coreg_geom' + secondaryBurstResampledDir = self._insar.secondaryBurstPrefix + '_1_coreg_geom' + #interferogramDir = self._insar.referenceBurstPrefix + '-' + self._insar.secondaryBurstPrefix + '_coreg_geom' interferogramDir = 'burst_interf_1_coreg_geom' - interferogramPrefix = self._insar.masterBurstPrefix + '-' + self._insar.slaveBurstPrefix - resampleBursts(masterSwath, slaveSwath, - self._insar.masterBurstPrefix, self._insar.slaveBurstPrefix, slaveBurstResampledDir, interferogramDir, - self._insar.masterBurstPrefix, self._insar.slaveBurstPrefix, self._insar.slaveBurstPrefix, interferogramPrefix, + interferogramPrefix = self._insar.referenceBurstPrefix + '-' + self._insar.secondaryBurstPrefix + resampleBursts(referenceSwath, secondarySwath, + self._insar.referenceBurstPrefix, self._insar.secondaryBurstPrefix, secondaryBurstResampledDir, interferogramDir, + self._insar.referenceBurstPrefix, self._insar.secondaryBurstPrefix, self._insar.secondaryBurstPrefix, interferogramPrefix, self._insar.rangeOffset, self._insar.azimuthOffset, rangeOffsetResidual=0, azimuthOffsetResidual=0) ################################################## # mosaic burst amplitudes and interferograms ################################################## - os.chdir(slaveBurstResampledDir) - mosaicBurstAmplitude(masterSwath, self._insar.slaveBurstPrefix, self._insar.slaveMagnitude, numberOfLooksThreshold=4) + os.chdir(secondaryBurstResampledDir) + mosaicBurstAmplitude(referenceSwath, self._insar.secondaryBurstPrefix, self._insar.secondaryMagnitude, numberOfLooksThreshold=4) os.chdir('../') #the interferogram is not good enough, do not mosaic mosaic=False if mosaic: os.chdir(interferogramDir) - mosaicBurstInterferogram(masterSwath, interferogramPrefix, self._insar.interferogram, numberOfLooksThreshold=4) + mosaicBurstInterferogram(referenceSwath, interferogramPrefix, self._insar.interferogram, numberOfLooksThreshold=4) os.chdir('../') diff --git a/components/isceobj/Alos2burstProc/runCoregSd.py b/components/isceobj/Alos2burstProc/runCoregSd.py index 61c2f85..56eb896 100644 --- a/components/isceobj/Alos2burstProc/runCoregSd.py +++ b/components/isceobj/Alos2burstProc/runCoregSd.py @@ -20,15 +20,15 @@ def runCoregSd(self): catalog = isceobj.Catalog.createCatalog(self._insar.procDoc.name) self.updateParamemetersFromUser() - masterTrack = self._insar.loadTrack(master=True) - slaveTrack = self._insar.loadTrack(master=False) + referenceTrack = self._insar.loadTrack(reference=True) + secondaryTrack = self._insar.loadTrack(reference=False) #demFile = os.path.abspath(self._insar.dem) #wbdFile = os.path.abspath(self._insar.wbd) ############################################################################### - #self._insar.rangeResidualOffsetSd = [[] for i in range(len(masterTrack.frames))] - self._insar.azimuthResidualOffsetSd = [[] for i in range(len(masterTrack.frames))] - for i, frameNumber in enumerate(self._insar.masterFrames): + #self._insar.rangeResidualOffsetSd = [[] for i in range(len(referenceTrack.frames))] + self._insar.azimuthResidualOffsetSd = [[] for i in range(len(referenceTrack.frames))] + for i, frameNumber in enumerate(self._insar.referenceFrames): frameDir = 'f{}_{}'.format(i+1, frameNumber) os.chdir(frameDir) for j, swathNumber in enumerate(range(self._insar.startingSwath, self._insar.endingSwath + 1)): @@ -37,8 +37,8 @@ def runCoregSd(self): print('processing frame {}, swath {}'.format(frameNumber, swathNumber)) - masterSwath = masterTrack.frames[i].swaths[j] - slaveSwath = slaveTrack.frames[i].swaths[j] + referenceSwath = referenceTrack.frames[i].swaths[j] + secondarySwath = secondaryTrack.frames[i].swaths[j] ################################################## # spectral diversity or mai @@ -48,8 +48,8 @@ def runCoregSd(self): os.chdir(sdDir) interferogramDir = 'burst_interf_2_coreg_cc' - interferogramPrefix = self._insar.masterBurstPrefix + '-' + self._insar.slaveBurstPrefix - offsetSd = spectralDiversity(masterSwath, os.path.join('../', interferogramDir), interferogramPrefix, self._insar.interferogramSd, + interferogramPrefix = self._insar.referenceBurstPrefix + '-' + self._insar.secondaryBurstPrefix + offsetSd = spectralDiversity(referenceSwath, os.path.join('../', interferogramDir), interferogramPrefix, self._insar.interferogramSd, numberLooksScanSAR=4, numberRangeLooks=28, numberAzimuthLooks=8, coherenceThreshold=0.85, keep=True, filt=True, filtWinSizeRange=5, filtWinSizeAzimuth=5) #here use the number of looks for sd as filtWinSizeRange and filtWinSizeAzimuth to get the best filtering result? @@ -60,31 +60,31 @@ def runCoregSd(self): catalog.addItem('azimuth residual offset at frame {}, swath {}'.format(frameNumber, swathNumber), '{}'.format(offsetSd), 'runCoregSd') - #this small residual azimuth offset has small impact, it's not worth the time to resample slave bursts again. + #this small residual azimuth offset has small impact, it's not worth the time to resample secondary bursts again. formInterferogram=False if formInterferogram: ################################################## # resample bursts ################################################## - slaveBurstResampledDir = self._insar.slaveBurstPrefix + '_3_coreg_sd' - #interferogramDir = self._insar.masterBurstPrefix + '-' + self._insar.slaveBurstPrefix + '_coreg_geom' + secondaryBurstResampledDir = self._insar.secondaryBurstPrefix + '_3_coreg_sd' + #interferogramDir = self._insar.referenceBurstPrefix + '-' + self._insar.secondaryBurstPrefix + '_coreg_geom' interferogramDir = 'burst_interf_3_coreg_sd' - interferogramPrefix = self._insar.masterBurstPrefix + '-' + self._insar.slaveBurstPrefix - resampleBursts(masterSwath, slaveSwath, - self._insar.masterBurstPrefix, self._insar.slaveBurstPrefix, slaveBurstResampledDir, interferogramDir, - self._insar.masterBurstPrefix, self._insar.slaveBurstPrefix, self._insar.slaveBurstPrefix, interferogramPrefix, + interferogramPrefix = self._insar.referenceBurstPrefix + '-' + self._insar.secondaryBurstPrefix + resampleBursts(referenceSwath, secondarySwath, + self._insar.referenceBurstPrefix, self._insar.secondaryBurstPrefix, secondaryBurstResampledDir, interferogramDir, + self._insar.referenceBurstPrefix, self._insar.secondaryBurstPrefix, self._insar.secondaryBurstPrefix, interferogramPrefix, self._insar.rangeOffset, self._insar.azimuthOffset, rangeOffsetResidual=self._insar.rangeResidualOffsetCc[i][j], azimuthOffsetResidual=self._insar.azimuthResidualOffsetCc[i][j]+offsetSd) ################################################## # mosaic burst amplitudes and interferograms ################################################## - os.chdir(slaveBurstResampledDir) - mosaicBurstAmplitude(masterSwath, self._insar.slaveBurstPrefix, self._insar.slaveMagnitude, numberOfLooksThreshold=4) + os.chdir(secondaryBurstResampledDir) + mosaicBurstAmplitude(referenceSwath, self._insar.secondaryBurstPrefix, self._insar.secondaryMagnitude, numberOfLooksThreshold=4) os.chdir('../') os.chdir(interferogramDir) - mosaicBurstInterferogram(masterSwath, interferogramPrefix, self._insar.interferogram, numberOfLooksThreshold=4) + mosaicBurstInterferogram(referenceSwath, interferogramPrefix, self._insar.interferogram, numberOfLooksThreshold=4) os.chdir('../') @@ -96,7 +96,7 @@ def runCoregSd(self): self._insar.procDoc.addAllFromCatalog(catalog) -def spectralDiversity(masterSwath, interferogramDir, interferogramPrefix, outputList, numberLooksScanSAR=None, numberRangeLooks=20, numberAzimuthLooks=10, coherenceThreshold=0.85, keep=False, filt=False, filtWinSizeRange=5, filtWinSizeAzimuth=5): +def spectralDiversity(referenceSwath, interferogramDir, interferogramPrefix, outputList, numberLooksScanSAR=None, numberRangeLooks=20, numberAzimuthLooks=10, coherenceThreshold=0.85, keep=False, filt=False, filtWinSizeRange=5, filtWinSizeAzimuth=5): ''' numberLooksScanSAR: number of looks of the ScanSAR system numberRangeLooks: number of range looks to take @@ -110,21 +110,21 @@ def spectralDiversity(masterSwath, interferogramDir, interferogramPrefix, output from isceobj.Alos2Proc.Alos2ProcPublic import multilook from isceobj.Alos2Proc.Alos2ProcPublic import cal_coherence_1 - width = masterSwath.numberOfSamples - length = masterSwath.numberOfLines - lengthBurst = masterSwath.burstSlcNumberOfLines - nBurst = masterSwath.numberOfBursts - azsi = masterSwath.azimuthLineInterval - tc = masterSwath.burstCycleLength / masterSwath.prf + width = referenceSwath.numberOfSamples + length = referenceSwath.numberOfLines + lengthBurst = referenceSwath.burstSlcNumberOfLines + nBurst = referenceSwath.numberOfBursts + azsi = referenceSwath.azimuthLineInterval + tc = referenceSwath.burstCycleLength / referenceSwath.prf - bursts = [os.path.join(interferogramDir, interferogramPrefix+'_%02d.int'%(i+1)) for i in range(masterSwath.numberOfBursts)] + bursts = [os.path.join(interferogramDir, interferogramPrefix+'_%02d.int'%(i+1)) for i in range(referenceSwath.numberOfBursts)] #################################################### #input parameters rgl = numberRangeLooks azl = numberAzimuthLooks cor_th = coherenceThreshold - nls0 = lengthBurst / (masterSwath.burstSlcFirstLineOffsets[nBurst-1] / (nBurst-1.0)) + nls0 = lengthBurst / (referenceSwath.burstSlcFirstLineOffsets[nBurst-1] / (nBurst-1.0)) print('number of looks of the ScanSAR system: {}'.format(nls0)) if numberLooksScanSAR != None: nls = numberLooksScanSAR @@ -143,8 +143,8 @@ def spectralDiversity(masterSwath, interferogramDir, interferogramPrefix, output burst = np.fromfile(bursts[i], dtype=np.complex64).reshape(lengthBurst, width) #subset for the burst - cntBurst = cnt[0+masterSwath.burstSlcFirstLineOffsets[i]:lengthBurst+masterSwath.burstSlcFirstLineOffsets[i], :] - infBurst = inf[0+masterSwath.burstSlcFirstLineOffsets[i]:lengthBurst+masterSwath.burstSlcFirstLineOffsets[i], :, :] + cntBurst = cnt[0+referenceSwath.burstSlcFirstLineOffsets[i]:lengthBurst+referenceSwath.burstSlcFirstLineOffsets[i], :] + infBurst = inf[0+referenceSwath.burstSlcFirstLineOffsets[i]:lengthBurst+referenceSwath.burstSlcFirstLineOffsets[i], :, :] #set number of non-zero pixels cntBurst[np.nonzero(burst)] += 1 @@ -178,7 +178,7 @@ def spectralDiversity(masterSwath, interferogramDir, interferogramPrefix, output widthm = int(width/rgl) lengthm = int(length/azl) #use the convention that ka > 0 - ka = -np.polyval(masterSwath.azimuthFmrateVsPixel[::-1], create_multi_index(width, rgl)) + ka = -np.polyval(referenceSwath.azimuthFmrateVsPixel[::-1], create_multi_index(width, rgl)) #get spectral diversity inteferogram offset_sd=[] diff --git a/components/isceobj/Alos2burstProc/runExtractBurst.py b/components/isceobj/Alos2burstProc/runExtractBurst.py index 646b427..ccc6597 100644 --- a/components/isceobj/Alos2burstProc/runExtractBurst.py +++ b/components/isceobj/Alos2burstProc/runExtractBurst.py @@ -23,13 +23,13 @@ def runExtractBurst(self): catalog = isceobj.Catalog.createCatalog(self._insar.procDoc.name) self.updateParamemetersFromUser() - masterTrack = self._insar.loadTrack(master=True) - slaveTrack = self._insar.loadTrack(master=False) + referenceTrack = self._insar.loadTrack(reference=True) + secondaryTrack = self._insar.loadTrack(reference=False) #demFile = os.path.abspath(self._insar.dem) #wbdFile = os.path.abspath(self._insar.wbd) ############################################################################### - for i, frameNumber in enumerate(self._insar.masterFrames): + for i, frameNumber in enumerate(self._insar.referenceFrames): frameDir = 'f{}_{}'.format(i+1, frameNumber) os.chdir(frameDir) for j, swathNumber in enumerate(range(self._insar.startingSwath, self._insar.endingSwath + 1)): @@ -41,21 +41,21 @@ def runExtractBurst(self): az_ratio1 = 20.0 for k in range(2): if k==0: - #master - swath = masterTrack.frames[i].swaths[j] + #reference + swath = referenceTrack.frames[i].swaths[j] unsynLines = self._insar.burstUnsynchronizedTime * swath.prf - extractDir = self._insar.masterBurstPrefix - burstPrefix = self._insar.masterBurstPrefix - fullApertureSlc = self._insar.masterSlc - magnitude = self._insar.masterMagnitude + extractDir = self._insar.referenceBurstPrefix + burstPrefix = self._insar.referenceBurstPrefix + fullApertureSlc = self._insar.referenceSlc + magnitude = self._insar.referenceMagnitude else: - #slave - swath = slaveTrack.frames[i].swaths[j] + #secondary + swath = secondaryTrack.frames[i].swaths[j] unsynLines = -self._insar.burstUnsynchronizedTime * swath.prf - extractDir = self._insar.slaveBurstPrefix - burstPrefix = self._insar.slaveBurstPrefix - fullApertureSlc = self._insar.slaveSlc - magnitude = self._insar.slaveMagnitude + extractDir = self._insar.secondaryBurstPrefix + burstPrefix = self._insar.secondaryBurstPrefix + fullApertureSlc = self._insar.secondarySlc + magnitude = self._insar.secondaryMagnitude #UPDATE SWATH PARAMETERS 1 ######################################################################################### @@ -125,8 +125,8 @@ def runExtractBurst(self): os.chdir('../') os.chdir('../') - self._insar.saveProduct(masterTrack.frames[i], self._insar.masterFrameParameter) - self._insar.saveProduct(slaveTrack.frames[i], self._insar.slaveFrameParameter) + self._insar.saveProduct(referenceTrack.frames[i], self._insar.referenceFrameParameter) + self._insar.saveProduct(secondaryTrack.frames[i], self._insar.secondaryFrameParameter) os.chdir('../') ############################################################################### diff --git a/components/isceobj/Alos2burstProc/runFiltSd.py b/components/isceobj/Alos2burstProc/runFiltSd.py index 0d7de2f..b1daaa2 100644 --- a/components/isceobj/Alos2burstProc/runFiltSd.py +++ b/components/isceobj/Alos2burstProc/runFiltSd.py @@ -25,8 +25,8 @@ def runFiltSd(self): catalog = isceobj.Catalog.createCatalog(self._insar.procDoc.name) self.updateParamemetersFromUser() - #masterTrack = self._insar.loadTrack(master=True) - #slaveTrack = self._insar.loadTrack(master=False) + #referenceTrack = self._insar.loadTrack(reference=True) + #secondaryTrack = self._insar.loadTrack(reference=False) sdDir = 'sd' os.makedirs(sdDir, exist_ok=True) diff --git a/components/isceobj/Alos2burstProc/runFrameMosaic.py b/components/isceobj/Alos2burstProc/runFrameMosaic.py index 490a8cc..482206f 100644 --- a/components/isceobj/Alos2burstProc/runFrameMosaic.py +++ b/components/isceobj/Alos2burstProc/runFrameMosaic.py @@ -19,17 +19,17 @@ def runFrameMosaic(self): catalog = isceobj.Catalog.createCatalog(self._insar.procDoc.name) self.updateParamemetersFromUser() - masterTrack = self._insar.loadTrack(master=True) - slaveTrack = self._insar.loadTrack(master=False) + referenceTrack = self._insar.loadTrack(reference=True) + secondaryTrack = self._insar.loadTrack(reference=False) mosaicDir = 'insar' os.makedirs(mosaicDir, exist_ok=True) os.chdir(mosaicDir) - numberOfFrames = len(masterTrack.frames) + numberOfFrames = len(referenceTrack.frames) if numberOfFrames == 1: import shutil - frameDir = os.path.join('f1_{}/mosaic'.format(self._insar.masterFrames[0])) + frameDir = os.path.join('f1_{}/mosaic'.format(self._insar.referenceFrames[0])) if not os.path.isfile(self._insar.interferogram): os.symlink(os.path.join('../', frameDir, self._insar.interferogram), self._insar.interferogram) #shutil.copy2() can overwrite @@ -50,75 +50,75 @@ def runFrameMosaic(self): #update track parameters ######################################################### #mosaic size - masterTrack.numberOfSamples = masterTrack.frames[0].numberOfSamples - masterTrack.numberOfLines = masterTrack.frames[0].numberOfLines + referenceTrack.numberOfSamples = referenceTrack.frames[0].numberOfSamples + referenceTrack.numberOfLines = referenceTrack.frames[0].numberOfLines #NOTE THAT WE ARE STILL USING SINGLE LOOK PARAMETERS HERE #range parameters - masterTrack.startingRange = masterTrack.frames[0].startingRange - masterTrack.rangeSamplingRate = masterTrack.frames[0].rangeSamplingRate - masterTrack.rangePixelSize = masterTrack.frames[0].rangePixelSize + referenceTrack.startingRange = referenceTrack.frames[0].startingRange + referenceTrack.rangeSamplingRate = referenceTrack.frames[0].rangeSamplingRate + referenceTrack.rangePixelSize = referenceTrack.frames[0].rangePixelSize #azimuth parameters - masterTrack.sensingStart = masterTrack.frames[0].sensingStart - masterTrack.prf = masterTrack.frames[0].prf - masterTrack.azimuthPixelSize = masterTrack.frames[0].azimuthPixelSize - masterTrack.azimuthLineInterval = masterTrack.frames[0].azimuthLineInterval + referenceTrack.sensingStart = referenceTrack.frames[0].sensingStart + referenceTrack.prf = referenceTrack.frames[0].prf + referenceTrack.azimuthPixelSize = referenceTrack.frames[0].azimuthPixelSize + referenceTrack.azimuthLineInterval = referenceTrack.frames[0].azimuthLineInterval - #update track parameters, slave + #update track parameters, secondary ######################################################### #mosaic size - slaveTrack.numberOfSamples = slaveTrack.frames[0].numberOfSamples - slaveTrack.numberOfLines = slaveTrack.frames[0].numberOfLines + secondaryTrack.numberOfSamples = secondaryTrack.frames[0].numberOfSamples + secondaryTrack.numberOfLines = secondaryTrack.frames[0].numberOfLines #NOTE THAT WE ARE STILL USING SINGLE LOOK PARAMETERS HERE #range parameters - slaveTrack.startingRange = slaveTrack.frames[0].startingRange - slaveTrack.rangeSamplingRate = slaveTrack.frames[0].rangeSamplingRate - slaveTrack.rangePixelSize = slaveTrack.frames[0].rangePixelSize + secondaryTrack.startingRange = secondaryTrack.frames[0].startingRange + secondaryTrack.rangeSamplingRate = secondaryTrack.frames[0].rangeSamplingRate + secondaryTrack.rangePixelSize = secondaryTrack.frames[0].rangePixelSize #azimuth parameters - slaveTrack.sensingStart = slaveTrack.frames[0].sensingStart - slaveTrack.prf = slaveTrack.frames[0].prf - slaveTrack.azimuthPixelSize = slaveTrack.frames[0].azimuthPixelSize - slaveTrack.azimuthLineInterval = slaveTrack.frames[0].azimuthLineInterval + secondaryTrack.sensingStart = secondaryTrack.frames[0].sensingStart + secondaryTrack.prf = secondaryTrack.frames[0].prf + secondaryTrack.azimuthPixelSize = secondaryTrack.frames[0].azimuthPixelSize + secondaryTrack.azimuthLineInterval = secondaryTrack.frames[0].azimuthLineInterval else: #choose offsets if self.frameOffsetMatching: - rangeOffsets = self._insar.frameRangeOffsetMatchingMaster - azimuthOffsets = self._insar.frameAzimuthOffsetMatchingMaster + rangeOffsets = self._insar.frameRangeOffsetMatchingReference + azimuthOffsets = self._insar.frameAzimuthOffsetMatchingReference else: - rangeOffsets = self._insar.frameRangeOffsetGeometricalMaster - azimuthOffsets = self._insar.frameAzimuthOffsetGeometricalMaster + rangeOffsets = self._insar.frameRangeOffsetGeometricalReference + azimuthOffsets = self._insar.frameAzimuthOffsetGeometricalReference #list of input files inputInterferograms = [] inputAmplitudes = [] - for i, frameNumber in enumerate(self._insar.masterFrames): + for i, frameNumber in enumerate(self._insar.referenceFrames): frameDir = 'f{}_{}'.format(i+1, frameNumber) inputInterferograms.append(os.path.join('../', frameDir, 'mosaic', self._insar.interferogram)) inputAmplitudes.append(os.path.join('../', frameDir, 'mosaic', self._insar.amplitude)) #note that track parameters are updated after mosaicking #mosaic amplitudes - frameMosaic(masterTrack, inputAmplitudes, self._insar.amplitude, + frameMosaic(referenceTrack, inputAmplitudes, self._insar.amplitude, rangeOffsets, azimuthOffsets, self._insar.numberRangeLooks1, self._insar.numberAzimuthLooks1, updateTrack=False, phaseCompensation=False, resamplingMethod=0) #mosaic interferograms - frameMosaic(masterTrack, inputInterferograms, self._insar.interferogram, + frameMosaic(referenceTrack, inputInterferograms, self._insar.interferogram, rangeOffsets, azimuthOffsets, self._insar.numberRangeLooks1, self._insar.numberAzimuthLooks1, updateTrack=True, phaseCompensation=True, resamplingMethod=1) - create_xml(self._insar.amplitude, masterTrack.numberOfSamples, masterTrack.numberOfLines, 'amp') - create_xml(self._insar.interferogram, masterTrack.numberOfSamples, masterTrack.numberOfLines, 'int') + create_xml(self._insar.amplitude, referenceTrack.numberOfSamples, referenceTrack.numberOfLines, 'amp') + create_xml(self._insar.interferogram, referenceTrack.numberOfSamples, referenceTrack.numberOfLines, 'int') - #update slave parameters here - #do not match for slave, always use geometrical - rangeOffsets = self._insar.frameRangeOffsetGeometricalSlave - azimuthOffsets = self._insar.frameAzimuthOffsetGeometricalSlave - frameMosaicParameters(slaveTrack, rangeOffsets, azimuthOffsets, self._insar.numberRangeLooks1, self._insar.numberAzimuthLooks1) + #update secondary parameters here + #do not match for secondary, always use geometrical + rangeOffsets = self._insar.frameRangeOffsetGeometricalSecondary + azimuthOffsets = self._insar.frameAzimuthOffsetGeometricalSecondary + frameMosaicParameters(secondaryTrack, rangeOffsets, azimuthOffsets, self._insar.numberRangeLooks1, self._insar.numberAzimuthLooks1) os.chdir('../') #save parameter file - self._insar.saveProduct(masterTrack, self._insar.masterTrackParameter) - self._insar.saveProduct(slaveTrack, self._insar.slaveTrackParameter) + self._insar.saveProduct(referenceTrack, self._insar.referenceTrackParameter) + self._insar.saveProduct(secondaryTrack, self._insar.secondaryTrackParameter) @@ -127,10 +127,10 @@ def runFrameMosaic(self): os.makedirs(mosaicDir, exist_ok=True) os.chdir(mosaicDir) - numberOfFrames = len(masterTrack.frames) + numberOfFrames = len(referenceTrack.frames) if numberOfFrames == 1: import shutil - frameDir = os.path.join('f1_{}/mosaic'.format(self._insar.masterFrames[0])) + frameDir = os.path.join('f1_{}/mosaic'.format(self._insar.referenceFrames[0])) for sdFile in self._insar.interferogramSd: if not os.path.isfile(sdFile): os.symlink(os.path.join('../', frameDir, sdFile), sdFile) @@ -139,27 +139,27 @@ def runFrameMosaic(self): else: #choose offsets if self.frameOffsetMatching: - rangeOffsets = self._insar.frameRangeOffsetMatchingMaster - azimuthOffsets = self._insar.frameAzimuthOffsetMatchingMaster + rangeOffsets = self._insar.frameRangeOffsetMatchingReference + azimuthOffsets = self._insar.frameAzimuthOffsetMatchingReference else: - rangeOffsets = self._insar.frameRangeOffsetGeometricalMaster - azimuthOffsets = self._insar.frameAzimuthOffsetGeometricalMaster + rangeOffsets = self._insar.frameRangeOffsetGeometricalReference + azimuthOffsets = self._insar.frameAzimuthOffsetGeometricalReference #list of input files inputSd = [[], [], []] - for i, frameNumber in enumerate(self._insar.masterFrames): + for i, frameNumber in enumerate(self._insar.referenceFrames): frameDir = 'f{}_{}'.format(i+1, frameNumber) for k, sdFile in enumerate(self._insar.interferogramSd): inputSd[k].append(os.path.join('../', frameDir, 'mosaic', sdFile)) #mosaic spectral diversity interferograms for inputSdList, outputSdFile in zip(inputSd, self._insar.interferogramSd): - frameMosaic(masterTrack, inputSdList, outputSdFile, + frameMosaic(referenceTrack, inputSdList, outputSdFile, rangeOffsets, azimuthOffsets, self._insar.numberRangeLooks1, self._insar.numberAzimuthLooks1, updateTrack=False, phaseCompensation=True, resamplingMethod=1) for sdFile in self._insar.interferogramSd: - create_xml(sdFile, masterTrack.numberOfSamples, masterTrack.numberOfLines, 'int') + create_xml(sdFile, referenceTrack.numberOfSamples, referenceTrack.numberOfLines, 'int') os.chdir('../') diff --git a/components/isceobj/Alos2burstProc/runFrameOffset.py b/components/isceobj/Alos2burstProc/runFrameOffset.py index 700d8bf..081c447 100644 --- a/components/isceobj/Alos2burstProc/runFrameOffset.py +++ b/components/isceobj/Alos2burstProc/runFrameOffset.py @@ -17,33 +17,33 @@ def runFrameOffset(self): catalog = isceobj.Catalog.createCatalog(self._insar.procDoc.name) self.updateParamemetersFromUser() - masterTrack = self._insar.loadTrack(master=True) - slaveTrack = self._insar.loadTrack(master=False) + referenceTrack = self._insar.loadTrack(reference=True) + secondaryTrack = self._insar.loadTrack(reference=False) mosaicDir = 'insar' os.makedirs(mosaicDir, exist_ok=True) os.chdir(mosaicDir) - if len(masterTrack.frames) > 1: - #here we use master amplitude image mosaicked from extracted bursts. + if len(referenceTrack.frames) > 1: + #here we use reference amplitude image mosaicked from extracted bursts. matchingMode=1 #compute swath offset - offsetMaster = frameOffset(masterTrack, os.path.join(self._insar.masterBurstPrefix, self._insar.masterMagnitude), self._insar.masterFrameOffset, + offsetReference = frameOffset(referenceTrack, os.path.join(self._insar.referenceBurstPrefix, self._insar.referenceMagnitude), self._insar.referenceFrameOffset, crossCorrelation=self.frameOffsetMatching, matchingMode=matchingMode) - #only use geometrical offset for slave - offsetSlave = frameOffset(slaveTrack, os.path.join(self._insar.slaveBurstPrefix, self._insar.slaveMagnitude), self._insar.slaveFrameOffset, + #only use geometrical offset for secondary + offsetSecondary = frameOffset(secondaryTrack, os.path.join(self._insar.secondaryBurstPrefix, self._insar.secondaryMagnitude), self._insar.secondaryFrameOffset, crossCorrelation=False, matchingMode=matchingMode) - self._insar.frameRangeOffsetGeometricalMaster = offsetMaster[0] - self._insar.frameAzimuthOffsetGeometricalMaster = offsetMaster[1] - self._insar.frameRangeOffsetGeometricalSlave = offsetSlave[0] - self._insar.frameAzimuthOffsetGeometricalSlave = offsetSlave[1] + self._insar.frameRangeOffsetGeometricalReference = offsetReference[0] + self._insar.frameAzimuthOffsetGeometricalReference = offsetReference[1] + self._insar.frameRangeOffsetGeometricalSecondary = offsetSecondary[0] + self._insar.frameAzimuthOffsetGeometricalSecondary = offsetSecondary[1] if self.frameOffsetMatching: - self._insar.frameRangeOffsetMatchingMaster = offsetMaster[2] - self._insar.frameAzimuthOffsetMatchingMaster = offsetMaster[3] - #self._insar.frameRangeOffsetMatchingSlave = offsetSlave[2] - #self._insar.frameAzimuthOffsetMatchingSlave = offsetSlave[3] + self._insar.frameRangeOffsetMatchingReference = offsetReference[2] + self._insar.frameAzimuthOffsetMatchingReference = offsetReference[3] + #self._insar.frameRangeOffsetMatchingSecondary = offsetSecondary[2] + #self._insar.frameAzimuthOffsetMatchingSecondary = offsetSecondary[3] os.chdir('../') diff --git a/components/isceobj/Alos2burstProc/runGeocodeSd.py b/components/isceobj/Alos2burstProc/runGeocodeSd.py index 445fa68..ccee521 100644 --- a/components/isceobj/Alos2burstProc/runGeocodeSd.py +++ b/components/isceobj/Alos2burstProc/runGeocodeSd.py @@ -20,8 +20,8 @@ def runGeocodeSd(self): catalog = isceobj.Catalog.createCatalog(self._insar.procDoc.name) self.updateParamemetersFromUser() - masterTrack = self._insar.loadTrack(master=True) - #slaveTrack = self._insar.loadTrack(master=False) + referenceTrack = self._insar.loadTrack(reference=True) + #secondaryTrack = self._insar.loadTrack(reference=False) demFile = os.path.abspath(self._insar.demGeo) @@ -37,7 +37,7 @@ def runGeocodeSd(self): geocodeList += glob.glob(xxx) if self.bbox == None: - bbox = getBboxGeo(masterTrack) + bbox = getBboxGeo(referenceTrack) else: bbox = self.bbox catalog.addItem('geocode bounding box', bbox, 'runGeocodeSd') @@ -56,7 +56,7 @@ def runGeocodeSd(self): else: interpMethod = self.geocodeInterpMethodSd.lower() - geocode(masterTrack, demFile, inputFile, bbox, numberRangeLooks, numberAzimuthLooks, interpMethod, 0, 0) + geocode(referenceTrack, demFile, inputFile, bbox, numberRangeLooks, numberAzimuthLooks, interpMethod, 0, 0) os.chdir('../') diff --git a/components/isceobj/Alos2burstProc/runIonSubband.py b/components/isceobj/Alos2burstProc/runIonSubband.py index 3bcfcea..7ae85f6 100644 --- a/components/isceobj/Alos2burstProc/runIonSubband.py +++ b/components/isceobj/Alos2burstProc/runIonSubband.py @@ -23,13 +23,13 @@ def runIonSubband(self): self._insar.procDoc.addAllFromCatalog(catalog) return - masterTrack = self._insar.loadTrack(master=True) - slaveTrack = self._insar.loadTrack(master=False) + referenceTrack = self._insar.loadTrack(reference=True) + secondaryTrack = self._insar.loadTrack(reference=False) #using 1/3, 1/3, 1/3 band split - radarWavelength = masterTrack.radarWavelength - rangeBandwidth = masterTrack.frames[0].swaths[0].rangeBandwidth - rangeSamplingRate = masterTrack.frames[0].swaths[0].rangeSamplingRate + radarWavelength = referenceTrack.radarWavelength + rangeBandwidth = referenceTrack.frames[0].swaths[0].rangeBandwidth + rangeSamplingRate = referenceTrack.frames[0].swaths[0].rangeSamplingRate radarWavelengthLower = SPEED_OF_LIGHT/(SPEED_OF_LIGHT / radarWavelength - rangeBandwidth / 3.0) radarWavelengthUpper = SPEED_OF_LIGHT/(SPEED_OF_LIGHT / radarWavelength + rangeBandwidth / 3.0) subbandRadarWavelength = [radarWavelengthLower, radarWavelengthUpper] @@ -65,7 +65,7 @@ def runIonSubband(self): #create insar processing directories for k in range(2): subbandDir = ionDir['subband'][k] - for i, frameNumber in enumerate(self._insar.masterFrames): + for i, frameNumber in enumerate(self._insar.referenceFrames): frameDir = 'f{}_{}'.format(i+1, frameNumber) for j, swathNumber in enumerate(range(self._insar.startingSwath, self._insar.endingSwath + 1)): swathDir = 's{}'.format(swathNumber) @@ -87,13 +87,13 @@ def runIonSubband(self): from isceobj.Alos2Proc.Alos2ProcPublic import mosaicBurstInterferogram from isceobj.Alos2Proc.Alos2ProcPublic import create_xml - for i, frameNumber in enumerate(self._insar.masterFrames): + for i, frameNumber in enumerate(self._insar.referenceFrames): frameDir = 'f{}_{}'.format(i+1, frameNumber) for j, swathNumber in enumerate(range(self._insar.startingSwath, self._insar.endingSwath + 1)): swathDir = 's{}'.format(swathNumber) - #filter master and slave images - for burstPrefix, swath in zip([self._insar.masterBurstPrefix, self._insar.slaveBurstPrefix], - [masterTrack.frames[i].swaths[j], slaveTrack.frames[i].swaths[j]]): + #filter reference and secondary images + for burstPrefix, swath in zip([self._insar.referenceBurstPrefix, self._insar.secondaryBurstPrefix], + [referenceTrack.frames[i].swaths[j], secondaryTrack.frames[i].swaths[j]]): slcDir = os.path.join('../', frameDir, swathDir, burstPrefix) slcLowerDir = os.path.join(ionDir['subband'][0], frameDir, swathDir, burstPrefix) slcUpperDir = os.path.join(ionDir['subband'][1], frameDir, swathDir, burstPrefix) @@ -114,8 +114,8 @@ def runIonSubband(self): os.chdir(os.path.join(ionDir['subband'][l], frameDir, swathDir)) #recreate xml file to remove the file path #can also use fixImageXml.py? - for burstPrefix, swath in zip([self._insar.masterBurstPrefix, self._insar.slaveBurstPrefix], - [masterTrack.frames[i].swaths[j], slaveTrack.frames[i].swaths[j]]): + for burstPrefix, swath in zip([self._insar.referenceBurstPrefix, self._insar.secondaryBurstPrefix], + [referenceTrack.frames[i].swaths[j], secondaryTrack.frames[i].swaths[j]]): os.chdir(burstPrefix) for k in range(swath.numberOfBursts): slc = burstPrefix+'_%02d.slc'%(k+1) @@ -130,12 +130,12 @@ def runIonSubband(self): ############################################# #1. form interferogram ############################################# - masterSwath = masterTrack.frames[i].swaths[j] - slaveSwath = slaveTrack.frames[i].swaths[j] + referenceSwath = referenceTrack.frames[i].swaths[j] + secondarySwath = secondaryTrack.frames[i].swaths[j] #set up resampling parameters - width = masterSwath.numberOfSamples - length = masterSwath.numberOfLines + width = referenceSwath.numberOfSamples + length = referenceSwath.numberOfLines polyCoeff = self._insar.rangeResidualOffsetCc[i][j] rgIndex = (np.arange(width)-polyCoeff[-1][0])/polyCoeff[-1][1] azIndex = (np.arange(length)-polyCoeff[-1][2])/polyCoeff[-1][3] @@ -144,36 +144,36 @@ def runIonSubband(self): polyCoeff[2][0] * azIndex[:, None]**2 azimuthOffset = self._insar.azimuthResidualOffsetCc[i][j] - slaveBurstResampledDir = self._insar.slaveBurstPrefix + '_2_coreg_cc' + secondaryBurstResampledDir = self._insar.secondaryBurstPrefix + '_2_coreg_cc' interferogramDir = 'burst_interf_2_coreg_cc' - interferogramPrefix = self._insar.masterBurstPrefix + '-' + self._insar.slaveBurstPrefix - resampleBursts(masterSwath, slaveSwath, - self._insar.masterBurstPrefix, self._insar.slaveBurstPrefix, slaveBurstResampledDir, interferogramDir, - self._insar.masterBurstPrefix, self._insar.slaveBurstPrefix, self._insar.slaveBurstPrefix, interferogramPrefix, + interferogramPrefix = self._insar.referenceBurstPrefix + '-' + self._insar.secondaryBurstPrefix + resampleBursts(referenceSwath, secondarySwath, + self._insar.referenceBurstPrefix, self._insar.secondaryBurstPrefix, secondaryBurstResampledDir, interferogramDir, + self._insar.referenceBurstPrefix, self._insar.secondaryBurstPrefix, self._insar.secondaryBurstPrefix, interferogramPrefix, os.path.join('../../../../{}/{}'.format(frameDir, swathDir), self._insar.rangeOffset), os.path.join('../../../../{}/{}'.format(frameDir, swathDir), self._insar.azimuthOffset), rangeOffsetResidual=rangeOffset, azimuthOffsetResidual=azimuthOffset) - os.chdir(self._insar.masterBurstPrefix) - mosaicBurstAmplitude(masterSwath, self._insar.masterBurstPrefix, self._insar.masterMagnitude, numberOfLooksThreshold=4) + os.chdir(self._insar.referenceBurstPrefix) + mosaicBurstAmplitude(referenceSwath, self._insar.referenceBurstPrefix, self._insar.referenceMagnitude, numberOfLooksThreshold=4) os.chdir('../') - os.chdir(slaveBurstResampledDir) - mosaicBurstAmplitude(masterSwath, self._insar.slaveBurstPrefix, self._insar.slaveMagnitude, numberOfLooksThreshold=4) + os.chdir(secondaryBurstResampledDir) + mosaicBurstAmplitude(referenceSwath, self._insar.secondaryBurstPrefix, self._insar.secondaryMagnitude, numberOfLooksThreshold=4) os.chdir('../') os.chdir(interferogramDir) - mosaicBurstInterferogram(masterSwath, interferogramPrefix, self._insar.interferogram, numberOfLooksThreshold=4) + mosaicBurstInterferogram(referenceSwath, interferogramPrefix, self._insar.interferogram, numberOfLooksThreshold=4) os.chdir('../') - amp = np.zeros((masterSwath.numberOfLines, 2*masterSwath.numberOfSamples), dtype=np.float32) - amp[0:, 1:masterSwath.numberOfSamples*2:2] = np.fromfile(os.path.join(slaveBurstResampledDir, self._insar.slaveMagnitude), \ - dtype=np.float32).reshape(masterSwath.numberOfLines, masterSwath.numberOfSamples) - amp[0:, 0:masterSwath.numberOfSamples*2:2] = np.fromfile(os.path.join(self._insar.masterBurstPrefix, self._insar.masterMagnitude), \ - dtype=np.float32).reshape(masterSwath.numberOfLines, masterSwath.numberOfSamples) + amp = np.zeros((referenceSwath.numberOfLines, 2*referenceSwath.numberOfSamples), dtype=np.float32) + amp[0:, 1:referenceSwath.numberOfSamples*2:2] = np.fromfile(os.path.join(secondaryBurstResampledDir, self._insar.secondaryMagnitude), \ + dtype=np.float32).reshape(referenceSwath.numberOfLines, referenceSwath.numberOfSamples) + amp[0:, 0:referenceSwath.numberOfSamples*2:2] = np.fromfile(os.path.join(self._insar.referenceBurstPrefix, self._insar.referenceMagnitude), \ + dtype=np.float32).reshape(referenceSwath.numberOfLines, referenceSwath.numberOfSamples) amp.astype(np.float32).tofile(self._insar.amplitude) - create_xml(self._insar.amplitude, masterSwath.numberOfSamples, masterSwath.numberOfLines, 'amp') + create_xml(self._insar.amplitude, referenceSwath.numberOfSamples, referenceSwath.numberOfLines, 'amp') os.rename(os.path.join(interferogramDir, self._insar.interferogram), self._insar.interferogram) os.rename(os.path.join(interferogramDir, self._insar.interferogram+'.vrt'), self._insar.interferogram+'.vrt') @@ -182,9 +182,9 @@ def runIonSubband(self): ############################################# #2. delete subband slcs ############################################# - shutil.rmtree(self._insar.masterBurstPrefix) - shutil.rmtree(self._insar.slaveBurstPrefix) - shutil.rmtree(slaveBurstResampledDir) + shutil.rmtree(self._insar.referenceBurstPrefix) + shutil.rmtree(self._insar.secondaryBurstPrefix) + shutil.rmtree(secondaryBurstResampledDir) shutil.rmtree(interferogramDir) os.chdir('../../../') @@ -198,7 +198,7 @@ def runIonSubband(self): for k in range(2): os.chdir(ionDir['subband'][k]) - for i, frameNumber in enumerate(self._insar.masterFrames): + for i, frameNumber in enumerate(self._insar.referenceFrames): frameDir = 'f{}_{}'.format(i+1, frameNumber) os.chdir(frameDir) @@ -208,7 +208,7 @@ def runIonSubband(self): if self._insar.endingSwath-self._insar.startingSwath+1 == 1: import shutil - swathDir = 's{}'.format(masterTrack.frames[i].swaths[0].swathNumber) + swathDir = 's{}'.format(referenceTrack.frames[i].swaths[0].swathNumber) # if not os.path.isfile(self._insar.interferogram): # os.symlink(os.path.join('../', swathDir, self._insar.interferogram), self._insar.interferogram) @@ -231,20 +231,20 @@ def runIonSubband(self): continue #choose offsets - numberOfFrames = len(masterTrack.frames) - numberOfSwaths = len(masterTrack.frames[i].swaths) + numberOfFrames = len(referenceTrack.frames) + numberOfSwaths = len(referenceTrack.frames[i].swaths) if self.swathOffsetMatching: #no need to do this as the API support 2-d list - #rangeOffsets = (np.array(self._insar.swathRangeOffsetMatchingMaster)).reshape(numberOfFrames, numberOfSwaths) - #azimuthOffsets = (np.array(self._insar.swathAzimuthOffsetMatchingMaster)).reshape(numberOfFrames, numberOfSwaths) - rangeOffsets = self._insar.swathRangeOffsetMatchingMaster - azimuthOffsets = self._insar.swathAzimuthOffsetMatchingMaster + #rangeOffsets = (np.array(self._insar.swathRangeOffsetMatchingReference)).reshape(numberOfFrames, numberOfSwaths) + #azimuthOffsets = (np.array(self._insar.swathAzimuthOffsetMatchingReference)).reshape(numberOfFrames, numberOfSwaths) + rangeOffsets = self._insar.swathRangeOffsetMatchingReference + azimuthOffsets = self._insar.swathAzimuthOffsetMatchingReference else: - #rangeOffsets = (np.array(self._insar.swathRangeOffsetGeometricalMaster)).reshape(numberOfFrames, numberOfSwaths) - #azimuthOffsets = (np.array(self._insar.swathAzimuthOffsetGeometricalMaster)).reshape(numberOfFrames, numberOfSwaths) - rangeOffsets = self._insar.swathRangeOffsetGeometricalMaster - azimuthOffsets = self._insar.swathAzimuthOffsetGeometricalMaster + #rangeOffsets = (np.array(self._insar.swathRangeOffsetGeometricalReference)).reshape(numberOfFrames, numberOfSwaths) + #azimuthOffsets = (np.array(self._insar.swathAzimuthOffsetGeometricalReference)).reshape(numberOfFrames, numberOfSwaths) + rangeOffsets = self._insar.swathRangeOffsetGeometricalReference + azimuthOffsets = self._insar.swathAzimuthOffsetGeometricalReference rangeOffsets = rangeOffsets[i] azimuthOffsets = azimuthOffsets[i] @@ -260,16 +260,16 @@ def runIonSubband(self): #compute phase needed to be compensated using startingRange if j >= 1: - #phaseDiffSwath1 = -4.0 * np.pi * (masterTrack.frames[i].swaths[j-1].startingRange - slaveTrack.frames[i].swaths[j-1].startingRange)/subbandRadarWavelength[k] - #phaseDiffSwath2 = -4.0 * np.pi * (masterTrack.frames[i].swaths[j].startingRange - slaveTrack.frames[i].swaths[j].startingRange)/subbandRadarWavelength[k] - phaseDiffSwath1 = +4.0 * np.pi * masterTrack.frames[i].swaths[j-1].startingRange * (1.0/radarWavelength - 1.0/subbandRadarWavelength[k]) \ - -4.0 * np.pi * slaveTrack.frames[i].swaths[j-1].startingRange * (1.0/radarWavelength - 1.0/subbandRadarWavelength[k]) - phaseDiffSwath2 = +4.0 * np.pi * masterTrack.frames[i].swaths[j].startingRange * (1.0/radarWavelength - 1.0/subbandRadarWavelength[k]) \ - -4.0 * np.pi * slaveTrack.frames[i].swaths[j].startingRange * (1.0/radarWavelength - 1.0/subbandRadarWavelength[k]) - if masterTrack.frames[i].swaths[j-1].startingRange - slaveTrack.frames[i].swaths[j-1].startingRange == \ - masterTrack.frames[i].swaths[j].startingRange - slaveTrack.frames[i].swaths[j].startingRange: + #phaseDiffSwath1 = -4.0 * np.pi * (referenceTrack.frames[i].swaths[j-1].startingRange - secondaryTrack.frames[i].swaths[j-1].startingRange)/subbandRadarWavelength[k] + #phaseDiffSwath2 = -4.0 * np.pi * (referenceTrack.frames[i].swaths[j].startingRange - secondaryTrack.frames[i].swaths[j].startingRange)/subbandRadarWavelength[k] + phaseDiffSwath1 = +4.0 * np.pi * referenceTrack.frames[i].swaths[j-1].startingRange * (1.0/radarWavelength - 1.0/subbandRadarWavelength[k]) \ + -4.0 * np.pi * secondaryTrack.frames[i].swaths[j-1].startingRange * (1.0/radarWavelength - 1.0/subbandRadarWavelength[k]) + phaseDiffSwath2 = +4.0 * np.pi * referenceTrack.frames[i].swaths[j].startingRange * (1.0/radarWavelength - 1.0/subbandRadarWavelength[k]) \ + -4.0 * np.pi * secondaryTrack.frames[i].swaths[j].startingRange * (1.0/radarWavelength - 1.0/subbandRadarWavelength[k]) + if referenceTrack.frames[i].swaths[j-1].startingRange - secondaryTrack.frames[i].swaths[j-1].startingRange == \ + referenceTrack.frames[i].swaths[j].startingRange - secondaryTrack.frames[i].swaths[j].startingRange: #phaseDiff.append(phaseDiffSwath2 - phaseDiffSwath1) - #if master and slave versions are all before or after version 2.025 (starting range error < 0.5 m), + #if reference and secondary versions are all before or after version 2.025 (starting range error < 0.5 m), #it should be OK to do the above. #see results in neom where it meets the above requirement, but there is still phase diff #to be less risky, we do not input values here @@ -279,7 +279,7 @@ def runIonSubband(self): #note that frame parameters are updated after mosaicking #mosaic amplitudes - swathMosaic(masterTrack.frames[i], inputAmplitudes, self._insar.amplitude, + swathMosaic(referenceTrack.frames[i], inputAmplitudes, self._insar.amplitude, rangeOffsets, azimuthOffsets, self._insar.numberRangeLooks1, self._insar.numberAzimuthLooks1, resamplingMethod=0) #mosaic interferograms #These are for ALOS-2, may need to change for ALOS-4! @@ -294,7 +294,7 @@ def runIonSubband(self): phaseDiffFixed = None snapThreshold = None - (phaseDiffEst, phaseDiffUsed, phaseDiffSource) = swathMosaic(masterTrack.frames[i], inputInterferograms, self._insar.interferogram, + (phaseDiffEst, phaseDiffUsed, phaseDiffSource) = swathMosaic(referenceTrack.frames[i], inputInterferograms, self._insar.interferogram, rangeOffsets, azimuthOffsets, self._insar.numberRangeLooks1, self._insar.numberAzimuthLooks1, updateFrame=False, phaseCompensation=True, phaseDiff=phaseDiff, phaseDiffFixed=phaseDiffFixed, snapThreshold=snapThreshold, pcRangeLooks=1, pcAzimuthLooks=3, filt=False, resamplingMethod=1) @@ -313,8 +313,8 @@ def runIonSubband(self): phaseDiffUnstableExist = True catalog.addItem('{} subswath phase difference unstable exists'.format(ionDir['subband'][k]), phaseDiffUnstableExist, 'runIonSubband') - create_xml(self._insar.amplitude, masterTrack.frames[i].numberOfSamples, masterTrack.frames[i].numberOfLines, 'amp') - create_xml(self._insar.interferogram, masterTrack.frames[i].numberOfSamples, masterTrack.frames[i].numberOfLines, 'int') + create_xml(self._insar.amplitude, referenceTrack.frames[i].numberOfSamples, referenceTrack.frames[i].numberOfLines, 'amp') + create_xml(self._insar.interferogram, referenceTrack.frames[i].numberOfSamples, referenceTrack.frames[i].numberOfLines, 'int') os.chdir('../') os.chdir('../') @@ -334,10 +334,10 @@ def runIonSubband(self): os.makedirs(mosaicDir, exist_ok=True) os.chdir(mosaicDir) - numberOfFrames = len(masterTrack.frames) + numberOfFrames = len(referenceTrack.frames) if numberOfFrames == 1: import shutil - frameDir = os.path.join('f1_{}/mosaic'.format(self._insar.masterFrames[0])) + frameDir = os.path.join('f1_{}/mosaic'.format(self._insar.referenceFrames[0])) # if not os.path.isfile(self._insar.interferogram): # os.symlink(os.path.join('../', frameDir, self._insar.interferogram), self._insar.interferogram) # #shutil.copy2() can overwrite @@ -358,32 +358,32 @@ def runIonSubband(self): else: #choose offsets if self.frameOffsetMatching: - rangeOffsets = self._insar.frameRangeOffsetMatchingMaster - azimuthOffsets = self._insar.frameAzimuthOffsetMatchingMaster + rangeOffsets = self._insar.frameRangeOffsetMatchingReference + azimuthOffsets = self._insar.frameAzimuthOffsetMatchingReference else: - rangeOffsets = self._insar.frameRangeOffsetGeometricalMaster - azimuthOffsets = self._insar.frameAzimuthOffsetGeometricalMaster + rangeOffsets = self._insar.frameRangeOffsetGeometricalReference + azimuthOffsets = self._insar.frameAzimuthOffsetGeometricalReference #list of input files inputInterferograms = [] inputAmplitudes = [] - for i, frameNumber in enumerate(self._insar.masterFrames): + for i, frameNumber in enumerate(self._insar.referenceFrames): frameDir = 'f{}_{}'.format(i+1, frameNumber) inputInterferograms.append(os.path.join('../', frameDir, 'mosaic', self._insar.interferogram)) inputAmplitudes.append(os.path.join('../', frameDir, 'mosaic', self._insar.amplitude)) #note that track parameters are updated after mosaicking #mosaic amplitudes - frameMosaic(masterTrack, inputAmplitudes, self._insar.amplitude, + frameMosaic(referenceTrack, inputAmplitudes, self._insar.amplitude, rangeOffsets, azimuthOffsets, self._insar.numberRangeLooks1, self._insar.numberAzimuthLooks1, updateTrack=False, phaseCompensation=False, resamplingMethod=0) #mosaic interferograms - frameMosaic(masterTrack, inputInterferograms, self._insar.interferogram, + frameMosaic(referenceTrack, inputInterferograms, self._insar.interferogram, rangeOffsets, azimuthOffsets, self._insar.numberRangeLooks1, self._insar.numberAzimuthLooks1, updateTrack=False, phaseCompensation=True, resamplingMethod=1) - create_xml(self._insar.amplitude, masterTrack.numberOfSamples, masterTrack.numberOfLines, 'amp') - create_xml(self._insar.interferogram, masterTrack.numberOfSamples, masterTrack.numberOfLines, 'int') + create_xml(self._insar.amplitude, referenceTrack.numberOfSamples, referenceTrack.numberOfLines, 'amp') + create_xml(self._insar.interferogram, referenceTrack.numberOfSamples, referenceTrack.numberOfLines, 'int') os.chdir('../') os.chdir('../') @@ -397,7 +397,7 @@ def runIonSubband(self): for k in range(2): os.chdir(ionDir['subband'][k]) - for i, frameNumber in enumerate(self._insar.masterFrames): + for i, frameNumber in enumerate(self._insar.referenceFrames): frameDir = 'f{}_{}'.format(i+1, frameNumber) shutil.rmtree(frameDir) #cmd = 'rm -rf {}'.format(frameDir) @@ -418,7 +418,7 @@ def runIonSubband(self): os.makedirs(insarDir, exist_ok=True) os.chdir(insarDir) - rangePixelSize = self._insar.numberRangeLooks1 * masterTrack.rangePixelSize + rangePixelSize = self._insar.numberRangeLooks1 * referenceTrack.rangePixelSize radarWavelength = subbandRadarWavelength[k] rectRangeOffset = os.path.join('../../../', insarDir, self._insar.rectRangeOffset) diff --git a/components/isceobj/Alos2burstProc/runLookSd.py b/components/isceobj/Alos2burstProc/runLookSd.py index 0962af5..a94fe64 100644 --- a/components/isceobj/Alos2burstProc/runLookSd.py +++ b/components/isceobj/Alos2burstProc/runLookSd.py @@ -19,8 +19,8 @@ def runLookSd(self): catalog = isceobj.Catalog.createCatalog(self._insar.procDoc.name) self.updateParamemetersFromUser() - #masterTrack = self._insar.loadTrack(master=True) - #slaveTrack = self._insar.loadTrack(master=False) + #referenceTrack = self._insar.loadTrack(reference=True) + #secondaryTrack = self._insar.loadTrack(reference=False) wbdFile = os.path.abspath(self._insar.wbd) sdDir = 'sd' diff --git a/components/isceobj/Alos2burstProc/runPreprocessor.py b/components/isceobj/Alos2burstProc/runPreprocessor.py index d71cacb..5db38e4 100644 --- a/components/isceobj/Alos2burstProc/runPreprocessor.py +++ b/components/isceobj/Alos2burstProc/runPreprocessor.py @@ -27,24 +27,24 @@ def runPreprocessor(self): #find files #actually no need to use absolute path any longer, since we are able to find file from vrt now. 27-JAN-2020, CRL. #denseoffset may still need absolute path when making links - self.masterDir = os.path.abspath(self.masterDir) - self.slaveDir = os.path.abspath(self.slaveDir) + self.referenceDir = os.path.abspath(self.referenceDir) + self.secondaryDir = os.path.abspath(self.secondaryDir) - ledFilesMaster = sorted(glob.glob(os.path.join(self.masterDir, 'LED-ALOS2*-*-*'))) - imgFilesMaster = sorted(glob.glob(os.path.join(self.masterDir, 'IMG-{}-ALOS2*-*-*'.format(self.masterPolarization.upper())))) + ledFilesReference = sorted(glob.glob(os.path.join(self.referenceDir, 'LED-ALOS2*-*-*'))) + imgFilesReference = sorted(glob.glob(os.path.join(self.referenceDir, 'IMG-{}-ALOS2*-*-*'.format(self.referencePolarization.upper())))) - ledFilesSlave = sorted(glob.glob(os.path.join(self.slaveDir, 'LED-ALOS2*-*-*'))) - imgFilesSlave = sorted(glob.glob(os.path.join(self.slaveDir, 'IMG-{}-ALOS2*-*-*'.format(self.slavePolarization.upper())))) + ledFilesSecondary = sorted(glob.glob(os.path.join(self.secondaryDir, 'LED-ALOS2*-*-*'))) + imgFilesSecondary = sorted(glob.glob(os.path.join(self.secondaryDir, 'IMG-{}-ALOS2*-*-*'.format(self.secondaryPolarization.upper())))) - firstFrameMaster = ledFilesMaster[0].split('-')[-3][-4:] - firstFrameSlave = ledFilesSlave[0].split('-')[-3][-4:] - firstFrameImagesMaster = sorted(glob.glob(os.path.join(self.masterDir, 'IMG-{}-ALOS2*{}-*-*'.format(self.masterPolarization.upper(), firstFrameMaster)))) - firstFrameImagesSlave = sorted(glob.glob(os.path.join(self.slaveDir, 'IMG-{}-ALOS2*{}-*-*'.format(self.slavePolarization.upper(), firstFrameSlave)))) + firstFrameReference = ledFilesReference[0].split('-')[-3][-4:] + firstFrameSecondary = ledFilesSecondary[0].split('-')[-3][-4:] + firstFrameImagesReference = sorted(glob.glob(os.path.join(self.referenceDir, 'IMG-{}-ALOS2*{}-*-*'.format(self.referencePolarization.upper(), firstFrameReference)))) + firstFrameImagesSecondary = sorted(glob.glob(os.path.join(self.secondaryDir, 'IMG-{}-ALOS2*{}-*-*'.format(self.secondaryPolarization.upper(), firstFrameSecondary)))) #determin operation mode - masterMode = os.path.basename(ledFilesMaster[0]).split('-')[-1][0:3] - slaveMode = os.path.basename(ledFilesSlave[0]).split('-')[-1][0:3] + referenceMode = os.path.basename(ledFilesReference[0]).split('-')[-1][0:3] + secondaryMode = os.path.basename(ledFilesSecondary[0]).split('-')[-1][0:3] spotlightModes = ['SBS'] stripmapModes = ['UBS', 'UBD', 'HBS', 'HBD', 'HBQ', 'FBS', 'FBD', 'FBQ'] scansarNominalModes = ['WBS', 'WBD', 'WWS', 'WWD'] @@ -52,21 +52,21 @@ def runPreprocessor(self): scansarModes = ['WBS', 'WBD', 'WWS', 'WWD', 'VBS', 'VBD'] #usable combinations - if (masterMode in spotlightModes) and (slaveMode in spotlightModes): + if (referenceMode in spotlightModes) and (secondaryMode in spotlightModes): self._insar.modeCombination = 0 - elif (masterMode in stripmapModes) and (slaveMode in stripmapModes): + elif (referenceMode in stripmapModes) and (secondaryMode in stripmapModes): self._insar.modeCombination = 1 - elif (masterMode in scansarNominalModes) and (slaveMode in scansarNominalModes): + elif (referenceMode in scansarNominalModes) and (secondaryMode in scansarNominalModes): self._insar.modeCombination = 21 - elif (masterMode in scansarWideModes) and (slaveMode in scansarWideModes): + elif (referenceMode in scansarWideModes) and (secondaryMode in scansarWideModes): self._insar.modeCombination = 22 - elif (masterMode in scansarNominalModes) and (slaveMode in stripmapModes): + elif (referenceMode in scansarNominalModes) and (secondaryMode in stripmapModes): self._insar.modeCombination = 31 - elif (masterMode in scansarWideModes) and (slaveMode in stripmapModes): + elif (referenceMode in scansarWideModes) and (secondaryMode in stripmapModes): self._insar.modeCombination = 32 else: print('\n\nthis mode combination is not possible') - print('note that for ScanSAR-stripmap, ScanSAR must be master\n\n') + print('note that for ScanSAR-stripmap, ScanSAR must be reference\n\n') raise Exception('mode combination not supported') @@ -107,39 +107,39 @@ def runPreprocessor(self): self._insar.numberAzimuthLooksSd = 4 #define processing file names - self._insar.masterDate = os.path.basename(ledFilesMaster[0]).split('-')[2] - self._insar.slaveDate = os.path.basename(ledFilesSlave[0]).split('-')[2] - self._insar.setFilename(masterDate=self._insar.masterDate, slaveDate=self._insar.slaveDate, + self._insar.referenceDate = os.path.basename(ledFilesReference[0]).split('-')[2] + self._insar.secondaryDate = os.path.basename(ledFilesSecondary[0]).split('-')[2] + self._insar.setFilename(referenceDate=self._insar.referenceDate, secondaryDate=self._insar.secondaryDate, nrlks1=self._insar.numberRangeLooks1, nalks1=self._insar.numberAzimuthLooks1, nrlks2=self._insar.numberRangeLooks2, nalks2=self._insar.numberAzimuthLooks2) - self._insar.setFilenameSd(masterDate=self._insar.masterDate, slaveDate=self._insar.slaveDate, + self._insar.setFilenameSd(referenceDate=self._insar.referenceDate, secondaryDate=self._insar.secondaryDate, nrlks1=self._insar.numberRangeLooks1, nalks1=self._insar.numberAzimuthLooks1, nrlks_sd=self._insar.numberRangeLooksSd, nalks_sd=self._insar.numberAzimuthLooksSd, nsd=3) #find frame numbers if (self._insar.modeCombination == 31) or (self._insar.modeCombination == 32): - if (self.masterFrames == None) or (self.slaveFrames == None): - raise Exception('for ScanSAR-stripmap inteferometry, you must set master and slave frame numbers') + if (self.referenceFrames == None) or (self.secondaryFrames == None): + raise Exception('for ScanSAR-stripmap inteferometry, you must set reference and secondary frame numbers') #if not set, find frames automatically - if self.masterFrames == None: - self.masterFrames = [] - for led in ledFilesMaster: + if self.referenceFrames == None: + self.referenceFrames = [] + for led in ledFilesReference: frameNumber = os.path.basename(led).split('-')[1][-4:] - if frameNumber not in self.masterFrames: - self.masterFrames.append(frameNumber) - if self.slaveFrames == None: - self.slaveFrames = [] - for led in ledFilesSlave: + if frameNumber not in self.referenceFrames: + self.referenceFrames.append(frameNumber) + if self.secondaryFrames == None: + self.secondaryFrames = [] + for led in ledFilesSecondary: frameNumber = os.path.basename(led).split('-')[1][-4:] - if frameNumber not in self.slaveFrames: - self.slaveFrames.append(frameNumber) + if frameNumber not in self.secondaryFrames: + self.secondaryFrames.append(frameNumber) #sort frames - self.masterFrames = sorted(self.masterFrames) - self.slaveFrames = sorted(self.slaveFrames) + self.referenceFrames = sorted(self.referenceFrames) + self.secondaryFrames = sorted(self.secondaryFrames) #check number of frames - if len(self.masterFrames) != len(self.slaveFrames): - raise Exception('number of frames in master dir is not equal to number of frames \ - in slave dir. please set frame number manually') + if len(self.referenceFrames) != len(self.secondaryFrames): + raise Exception('number of frames in reference dir is not equal to number of frames \ + in secondary dir. please set frame number manually') #find swath numbers (if not ScanSAR-ScanSAR, compute valid swaths) @@ -168,7 +168,7 @@ def runPreprocessor(self): numberOfSwaths = 7 overlapSubswaths = [] for i in range(numberOfSwaths): - overlapRatio = check_overlap(ledFilesMaster[0], firstFrameImagesMaster[i], ledFilesSlave[0], firstFrameImagesSlave[0]) + overlapRatio = check_overlap(ledFilesReference[0], firstFrameImagesReference[i], ledFilesSecondary[0], firstFrameImagesSecondary[0]) if overlapRatio > 1.0 / 4.0: overlapSubswaths.append(i+1) if overlapSubswaths == []: @@ -177,8 +177,8 @@ def runPreprocessor(self): self.endingSwath = int(overlapSubswaths[-1]) #save the valid frames and swaths for future processing - self._insar.masterFrames = self.masterFrames - self._insar.slaveFrames = self.slaveFrames + self._insar.referenceFrames = self.referenceFrames + self._insar.secondaryFrames = self.secondaryFrames self._insar.startingSwath = self.startingSwath self._insar.endingSwath = self.endingSwath @@ -186,76 +186,76 @@ def runPreprocessor(self): ################################################## #1. create directories and read data ################################################## - self.master.configure() - self.slave.configure() - self.master.track.configure() - self.slave.track.configure() - for i, (masterFrame, slaveFrame) in enumerate(zip(self._insar.masterFrames, self._insar.slaveFrames)): + self.reference.configure() + self.secondary.configure() + self.reference.track.configure() + self.secondary.track.configure() + for i, (referenceFrame, secondaryFrame) in enumerate(zip(self._insar.referenceFrames, self._insar.secondaryFrames)): #frame number starts with 1 - frameDir = 'f{}_{}'.format(i+1, masterFrame) + frameDir = 'f{}_{}'.format(i+1, referenceFrame) os.makedirs(frameDir, exist_ok=True) os.chdir(frameDir) - #attach a frame to master and slave - frameObjMaster = MultiMode.createFrame() - frameObjSlave = MultiMode.createFrame() - frameObjMaster.configure() - frameObjSlave.configure() - self.master.track.frames.append(frameObjMaster) - self.slave.track.frames.append(frameObjSlave) + #attach a frame to reference and secondary + frameObjReference = MultiMode.createFrame() + frameObjSecondary = MultiMode.createFrame() + frameObjReference.configure() + frameObjSecondary.configure() + self.reference.track.frames.append(frameObjReference) + self.secondary.track.frames.append(frameObjSecondary) #swath number starts with 1 for j in range(self._insar.startingSwath, self._insar.endingSwath+1): - print('processing frame {} swath {}'.format(masterFrame, j)) + print('processing frame {} swath {}'.format(referenceFrame, j)) swathDir = 's{}'.format(j) os.makedirs(swathDir, exist_ok=True) os.chdir(swathDir) - #attach a swath to master and slave - swathObjMaster = MultiMode.createSwath() - swathObjSlave = MultiMode.createSwath() - swathObjMaster.configure() - swathObjSlave.configure() - self.master.track.frames[-1].swaths.append(swathObjMaster) - self.slave.track.frames[-1].swaths.append(swathObjSlave) + #attach a swath to reference and secondary + swathObjReference = MultiMode.createSwath() + swathObjSecondary = MultiMode.createSwath() + swathObjReference.configure() + swathObjSecondary.configure() + self.reference.track.frames[-1].swaths.append(swathObjReference) + self.secondary.track.frames[-1].swaths.append(swathObjSecondary) - #setup master - self.master.leaderFile = sorted(glob.glob(os.path.join(self.masterDir, 'LED-ALOS2*{}-*-*'.format(masterFrame))))[0] - if masterMode in scansarModes: - self.master.imageFile = sorted(glob.glob(os.path.join(self.masterDir, 'IMG-{}-ALOS2*{}-*-*-F{}'.format(self.masterPolarization.upper(), masterFrame, j))))[0] + #setup reference + self.reference.leaderFile = sorted(glob.glob(os.path.join(self.referenceDir, 'LED-ALOS2*{}-*-*'.format(referenceFrame))))[0] + if referenceMode in scansarModes: + self.reference.imageFile = sorted(glob.glob(os.path.join(self.referenceDir, 'IMG-{}-ALOS2*{}-*-*-F{}'.format(self.referencePolarization.upper(), referenceFrame, j))))[0] else: - self.master.imageFile = sorted(glob.glob(os.path.join(self.masterDir, 'IMG-{}-ALOS2*{}-*-*'.format(self.masterPolarization.upper(), masterFrame))))[0] - self.master.outputFile = self._insar.masterSlc - self.master.useVirtualFile = self.useVirtualFile - #read master - (imageFDR, imageData)=self.master.readImage() - (leaderFDR, sceneHeaderRecord, platformPositionRecord, facilityRecord)=self.master.readLeader() - self.master.setSwath(leaderFDR, sceneHeaderRecord, platformPositionRecord, facilityRecord, imageFDR, imageData) - self.master.setFrame(leaderFDR, sceneHeaderRecord, platformPositionRecord, facilityRecord, imageFDR, imageData) - self.master.setTrack(leaderFDR, sceneHeaderRecord, platformPositionRecord, facilityRecord, imageFDR, imageData) + self.reference.imageFile = sorted(glob.glob(os.path.join(self.referenceDir, 'IMG-{}-ALOS2*{}-*-*'.format(self.referencePolarization.upper(), referenceFrame))))[0] + self.reference.outputFile = self._insar.referenceSlc + self.reference.useVirtualFile = self.useVirtualFile + #read reference + (imageFDR, imageData)=self.reference.readImage() + (leaderFDR, sceneHeaderRecord, platformPositionRecord, facilityRecord)=self.reference.readLeader() + self.reference.setSwath(leaderFDR, sceneHeaderRecord, platformPositionRecord, facilityRecord, imageFDR, imageData) + self.reference.setFrame(leaderFDR, sceneHeaderRecord, platformPositionRecord, facilityRecord, imageFDR, imageData) + self.reference.setTrack(leaderFDR, sceneHeaderRecord, platformPositionRecord, facilityRecord, imageFDR, imageData) - #setup slave - self.slave.leaderFile = sorted(glob.glob(os.path.join(self.slaveDir, 'LED-ALOS2*{}-*-*'.format(slaveFrame))))[0] - if slaveMode in scansarModes: - self.slave.imageFile = sorted(glob.glob(os.path.join(self.slaveDir, 'IMG-{}-ALOS2*{}-*-*-F{}'.format(self.slavePolarization.upper(), slaveFrame, j))))[0] + #setup secondary + self.secondary.leaderFile = sorted(glob.glob(os.path.join(self.secondaryDir, 'LED-ALOS2*{}-*-*'.format(secondaryFrame))))[0] + if secondaryMode in scansarModes: + self.secondary.imageFile = sorted(glob.glob(os.path.join(self.secondaryDir, 'IMG-{}-ALOS2*{}-*-*-F{}'.format(self.secondaryPolarization.upper(), secondaryFrame, j))))[0] else: - self.slave.imageFile = sorted(glob.glob(os.path.join(self.slaveDir, 'IMG-{}-ALOS2*{}-*-*'.format(self.slavePolarization.upper(), slaveFrame))))[0] - self.slave.outputFile = self._insar.slaveSlc - self.slave.useVirtualFile = self.useVirtualFile - #read slave - (imageFDR, imageData)=self.slave.readImage() - (leaderFDR, sceneHeaderRecord, platformPositionRecord, facilityRecord)=self.slave.readLeader() - self.slave.setSwath(leaderFDR, sceneHeaderRecord, platformPositionRecord, facilityRecord, imageFDR, imageData) - self.slave.setFrame(leaderFDR, sceneHeaderRecord, platformPositionRecord, facilityRecord, imageFDR, imageData) - self.slave.setTrack(leaderFDR, sceneHeaderRecord, platformPositionRecord, facilityRecord, imageFDR, imageData) + self.secondary.imageFile = sorted(glob.glob(os.path.join(self.secondaryDir, 'IMG-{}-ALOS2*{}-*-*'.format(self.secondaryPolarization.upper(), secondaryFrame))))[0] + self.secondary.outputFile = self._insar.secondarySlc + self.secondary.useVirtualFile = self.useVirtualFile + #read secondary + (imageFDR, imageData)=self.secondary.readImage() + (leaderFDR, sceneHeaderRecord, platformPositionRecord, facilityRecord)=self.secondary.readLeader() + self.secondary.setSwath(leaderFDR, sceneHeaderRecord, platformPositionRecord, facilityRecord, imageFDR, imageData) + self.secondary.setFrame(leaderFDR, sceneHeaderRecord, platformPositionRecord, facilityRecord, imageFDR, imageData) + self.secondary.setTrack(leaderFDR, sceneHeaderRecord, platformPositionRecord, facilityRecord, imageFDR, imageData) os.chdir('../') - self._insar.saveProduct(self.master.track.frames[-1], self._insar.masterFrameParameter) - self._insar.saveProduct(self.slave.track.frames[-1], self._insar.slaveFrameParameter) + self._insar.saveProduct(self.reference.track.frames[-1], self._insar.referenceFrameParameter) + self._insar.saveProduct(self.secondary.track.frames[-1], self._insar.secondaryFrameParameter) os.chdir('../') - self._insar.saveProduct(self.master.track, self._insar.masterTrackParameter) - self._insar.saveProduct(self.slave.track, self._insar.slaveTrackParameter) + self._insar.saveProduct(self.reference.track, self._insar.referenceTrackParameter) + self._insar.saveProduct(self.secondary.track, self._insar.secondaryTrackParameter) ################################################## @@ -268,53 +268,53 @@ def runPreprocessor(self): #synTime = 0 synPercentage = 0 - numberOfFrames = len(self._insar.masterFrames) + numberOfFrames = len(self._insar.referenceFrames) numberOfSwaths = self._insar.endingSwath - self._insar.startingSwath + 1 - for i, frameNumber in enumerate(self._insar.masterFrames): + for i, frameNumber in enumerate(self._insar.referenceFrames): for j, swathNumber in enumerate(range(self._insar.startingSwath, self._insar.endingSwath + 1)): - masterSwath = self.master.track.frames[i].swaths[j] - slaveSwath = self.slave.track.frames[i].swaths[j] + referenceSwath = self.reference.track.frames[i].swaths[j] + secondarySwath = self.secondary.track.frames[i].swaths[j] #using Piyush's code for computing range and azimuth offsets - midRange = masterSwath.startingRange + masterSwath.rangePixelSize * masterSwath.numberOfSamples * 0.5 - midSensingStart = masterSwath.sensingStart + datetime.timedelta(seconds = masterSwath.numberOfLines * 0.5 / masterSwath.prf) - llh = self.master.track.orbit.rdr2geo(midSensingStart, midRange) - slvaz, slvrng = self.slave.track.orbit.geo2rdr(llh) + midRange = referenceSwath.startingRange + referenceSwath.rangePixelSize * referenceSwath.numberOfSamples * 0.5 + midSensingStart = referenceSwath.sensingStart + datetime.timedelta(seconds = referenceSwath.numberOfLines * 0.5 / referenceSwath.prf) + llh = self.reference.track.orbit.rdr2geo(midSensingStart, midRange) + slvaz, slvrng = self.secondary.track.orbit.geo2rdr(llh) ###Translate to offsets - #note that slave range pixel size and prf might be different from master, here we assume there is a virtual slave with same + #note that secondary range pixel size and prf might be different from reference, here we assume there is a virtual secondary with same #range pixel size and prf - rgoff = ((slvrng - slaveSwath.startingRange) / masterSwath.rangePixelSize) - masterSwath.numberOfSamples * 0.5 - azoff = ((slvaz - slaveSwath.sensingStart).total_seconds() * masterSwath.prf) - masterSwath.numberOfLines * 0.5 + rgoff = ((slvrng - secondarySwath.startingRange) / referenceSwath.rangePixelSize) - referenceSwath.numberOfSamples * 0.5 + azoff = ((slvaz - secondarySwath.sensingStart).total_seconds() * referenceSwath.prf) - referenceSwath.numberOfLines * 0.5 #compute burst synchronization #burst parameters for ScanSAR wide mode not estimed yet if self._insar.modeCombination == 21: - scburstStartLine = (masterSwath.burstStartTime - masterSwath.sensingStart).total_seconds() * masterSwath.prf + azoff - #slave burst start times corresponding to master burst start times (100% synchronization) - scburstStartLines = np.arange(scburstStartLine - 100000*masterSwath.burstCycleLength, \ - scburstStartLine + 100000*masterSwath.burstCycleLength, \ - masterSwath.burstCycleLength) - dscburstStartLines = -((slaveSwath.burstStartTime - slaveSwath.sensingStart).total_seconds() * slaveSwath.prf - scburstStartLines) + scburstStartLine = (referenceSwath.burstStartTime - referenceSwath.sensingStart).total_seconds() * referenceSwath.prf + azoff + #secondary burst start times corresponding to reference burst start times (100% synchronization) + scburstStartLines = np.arange(scburstStartLine - 100000*referenceSwath.burstCycleLength, \ + scburstStartLine + 100000*referenceSwath.burstCycleLength, \ + referenceSwath.burstCycleLength) + dscburstStartLines = -((secondarySwath.burstStartTime - secondarySwath.sensingStart).total_seconds() * secondarySwath.prf - scburstStartLines) #find the difference with minimum absolute value unsynLines = dscburstStartLines[np.argmin(np.absolute(dscburstStartLines))] - if np.absolute(unsynLines) >= slaveSwath.burstLength: + if np.absolute(unsynLines) >= secondarySwath.burstLength: synLines = 0 if unsynLines > 0: - unsynLines = slaveSwath.burstLength + unsynLines = secondarySwath.burstLength else: - unsynLines = -slaveSwath.burstLength + unsynLines = -secondarySwath.burstLength else: - synLines = slaveSwath.burstLength - np.absolute(unsynLines) + synLines = secondarySwath.burstLength - np.absolute(unsynLines) - unsynTime += unsynLines / masterSwath.prf - synPercentage += synLines / masterSwath.burstLength * 100.0 + unsynTime += unsynLines / referenceSwath.prf + synPercentage += synLines / referenceSwath.burstLength * 100.0 - catalog.addItem('burst synchronization of frame {} swath {}'.format(frameNumber, swathNumber), '%.1f%%'%(synLines / masterSwath.burstLength * 100.0), 'runPreprocessor') + catalog.addItem('burst synchronization of frame {} swath {}'.format(frameNumber, swathNumber), '%.1f%%'%(synLines / referenceSwath.burstLength * 100.0), 'runPreprocessor') ############################################################################################ #illustration of the sign of the number of unsynchronized lines (unsynLines) #The convention is the same as ampcor offset, that is, - # slaveLineNumber = masterLineNumber + unsynLines + # secondaryLineNumber = referenceLineNumber + unsynLines # # |-----------------------| ------------ # | | ^ @@ -326,35 +326,35 @@ def runPreprocessor(self): # | | | | # | | | | # |-----------------------| | | - # Master Burst | | + # Reference Burst | | # | | # | | # | | # | | # |-----------------------| - # Slave Burst + # Secondary Burst # # ############################################################################################ ##burst parameters for ScanSAR wide mode not estimed yet elif self._insar.modeCombination == 31: - #scansar is master - scburstStartLine = (masterSwath.burstStartTime - masterSwath.sensingStart).total_seconds() * masterSwath.prf + azoff - #slave burst start times corresponding to master burst start times (100% synchronization) + #scansar is reference + scburstStartLine = (referenceSwath.burstStartTime - referenceSwath.sensingStart).total_seconds() * referenceSwath.prf + azoff + #secondary burst start times corresponding to reference burst start times (100% synchronization) for k in range(-100000, 100000): - saz_burstx = scburstStartLine + masterSwath.burstCycleLength * k - st_burstx = slaveSwath.sensingStart + datetime.timedelta(seconds=saz_burstx / masterSwath.prf) - if saz_burstx >= 0.0 and saz_burstx <= slaveSwath.numberOfLines -1: - slaveSwath.burstStartTime = st_burstx - slaveSwath.burstLength = masterSwath.burstLength - slaveSwath.burstCycleLength = masterSwath.burstCycleLength - slaveSwath.swathNumber = masterSwath.swathNumber + saz_burstx = scburstStartLine + referenceSwath.burstCycleLength * k + st_burstx = secondarySwath.sensingStart + datetime.timedelta(seconds=saz_burstx / referenceSwath.prf) + if saz_burstx >= 0.0 and saz_burstx <= secondarySwath.numberOfLines -1: + secondarySwath.burstStartTime = st_burstx + secondarySwath.burstLength = referenceSwath.burstLength + secondarySwath.burstCycleLength = referenceSwath.burstCycleLength + secondarySwath.swathNumber = referenceSwath.swathNumber break #unsynLines = 0 - #synLines = masterSwath.burstLength - #unsynTime += unsynLines / masterSwath.prf - #synPercentage += synLines / masterSwath.burstLength * 100.0 + #synLines = referenceSwath.burstLength + #unsynTime += unsynLines / referenceSwath.prf + #synPercentage += synLines / referenceSwath.burstLength * 100.0 catalog.addItem('burst synchronization of frame {} swath {}'.format(frameNumber, swathNumber), '%.1f%%'%(100.0), 'runPreprocessor') else: pass @@ -362,7 +362,7 @@ def runPreprocessor(self): #overwrite original frame parameter file if self._insar.modeCombination == 31: frameDir = 'f{}_{}'.format(i+1, frameNumber) - self._insar.saveProduct(self.slave.track.frames[i], os.path.join(frameDir, self._insar.slaveFrameParameter)) + self._insar.saveProduct(self.secondary.track.frames[i], os.path.join(frameDir, self._insar.secondaryFrameParameter)) #getting average if self._insar.modeCombination == 21: @@ -384,8 +384,8 @@ def runPreprocessor(self): ################################################## #3. compute baseline ################################################## - #only compute baseline at four corners and center of the master track - bboxRdr = getBboxRdr(self.master.track) + #only compute baseline at four corners and center of the reference track + bboxRdr = getBboxRdr(self.reference.track) rangeMin = bboxRdr[0] rangeMax = bboxRdr[1] @@ -406,16 +406,16 @@ def runPreprocessor(self): #modify Piyush's code for computing baslines refElp = Planet(pname='Earth').ellipsoid for x in points: - masterSV = self.master.track.orbit.interpolate(x[0], method='hermite') - target = self.master.track.orbit.rdr2geo(x[0], x[1]) + referenceSV = self.reference.track.orbit.interpolate(x[0], method='hermite') + target = self.reference.track.orbit.rdr2geo(x[0], x[1]) - slvTime, slvrng = self.slave.track.orbit.geo2rdr(target) - slaveSV = self.slave.track.orbit.interpolateOrbit(slvTime, method='hermite') + slvTime, slvrng = self.secondary.track.orbit.geo2rdr(target) + secondarySV = self.secondary.track.orbit.interpolateOrbit(slvTime, method='hermite') targxyz = np.array(refElp.LLH(target[0], target[1], target[2]).ecef().tolist()) - mxyz = np.array(masterSV.getPosition()) - mvel = np.array(masterSV.getVelocity()) - sxyz = np.array(slaveSV.getPosition()) + mxyz = np.array(referenceSV.getPosition()) + mvel = np.array(referenceSV.getVelocity()) + sxyz = np.array(secondarySV.getPosition()) #to fix abrupt change near zero in baseline grid. JUN-05-2020 mvelunit = mvel / np.linalg.norm(mvel) @@ -430,27 +430,27 @@ def runPreprocessor(self): direction = np.sign(np.dot( np.cross(targxyz-mxyz, sxyz-mxyz), mvel)) Bperp.append(direction*perp) - catalog.addItem('parallel baseline at upperleft of master track', Bpar[0], 'runPreprocessor') - catalog.addItem('parallel baseline at upperright of master track', Bpar[1], 'runPreprocessor') - catalog.addItem('parallel baseline at lowerleft of master track', Bpar[2], 'runPreprocessor') - catalog.addItem('parallel baseline at lowerright of master track', Bpar[3], 'runPreprocessor') - catalog.addItem('parallel baseline at center of master track', Bpar[4], 'runPreprocessor') + catalog.addItem('parallel baseline at upperleft of reference track', Bpar[0], 'runPreprocessor') + catalog.addItem('parallel baseline at upperright of reference track', Bpar[1], 'runPreprocessor') + catalog.addItem('parallel baseline at lowerleft of reference track', Bpar[2], 'runPreprocessor') + catalog.addItem('parallel baseline at lowerright of reference track', Bpar[3], 'runPreprocessor') + catalog.addItem('parallel baseline at center of reference track', Bpar[4], 'runPreprocessor') - catalog.addItem('perpendicular baseline at upperleft of master track', Bperp[0], 'runPreprocessor') - catalog.addItem('perpendicular baseline at upperright of master track', Bperp[1], 'runPreprocessor') - catalog.addItem('perpendicular baseline at lowerleft of master track', Bperp[2], 'runPreprocessor') - catalog.addItem('perpendicular baseline at lowerright of master track', Bperp[3], 'runPreprocessor') - catalog.addItem('perpendicular baseline at center of master track', Bperp[4], 'runPreprocessor') + catalog.addItem('perpendicular baseline at upperleft of reference track', Bperp[0], 'runPreprocessor') + catalog.addItem('perpendicular baseline at upperright of reference track', Bperp[1], 'runPreprocessor') + catalog.addItem('perpendicular baseline at lowerleft of reference track', Bperp[2], 'runPreprocessor') + catalog.addItem('perpendicular baseline at lowerright of reference track', Bperp[3], 'runPreprocessor') + catalog.addItem('perpendicular baseline at center of reference track', Bperp[4], 'runPreprocessor') ################################################## #4. compute bounding box ################################################## - masterBbox = getBboxGeo(self.master.track) - slaveBbox = getBboxGeo(self.slave.track) + referenceBbox = getBboxGeo(self.reference.track) + secondaryBbox = getBboxGeo(self.secondary.track) - catalog.addItem('master bounding box', masterBbox, 'runPreprocessor') - catalog.addItem('slave bounding box', slaveBbox, 'runPreprocessor') + catalog.addItem('reference bounding box', referenceBbox, 'runPreprocessor') + catalog.addItem('secondary bounding box', secondaryBbox, 'runPreprocessor') catalog.printToLog(logger, "runPreprocessor") @@ -461,22 +461,22 @@ def runPreprocessor(self): def check_overlap(ldr_m, img_m, ldr_s, img_s): from isceobj.Constants import SPEED_OF_LIGHT - rangeSamplingRateMaster, widthMaster, nearRangeMaster = read_param_for_checking_overlap(ldr_m, img_m) - rangeSamplingRateSlave, widthSlave, nearRangeSlave = read_param_for_checking_overlap(ldr_s, img_s) + rangeSamplingRateReference, widthReference, nearRangeReference = read_param_for_checking_overlap(ldr_m, img_m) + rangeSamplingRateSecondary, widthSecondary, nearRangeSecondary = read_param_for_checking_overlap(ldr_s, img_s) - farRangeMaster = nearRangeMaster + (widthMaster-1) * 0.5 * SPEED_OF_LIGHT / rangeSamplingRateMaster - farRangeSlave = nearRangeSlave + (widthSlave-1) * 0.5 * SPEED_OF_LIGHT / rangeSamplingRateSlave + farRangeReference = nearRangeReference + (widthReference-1) * 0.5 * SPEED_OF_LIGHT / rangeSamplingRateReference + farRangeSecondary = nearRangeSecondary + (widthSecondary-1) * 0.5 * SPEED_OF_LIGHT / rangeSamplingRateSecondary #This should be good enough, although precise image offsets are not used. - if farRangeMaster <= nearRangeSlave: + if farRangeReference <= nearRangeSecondary: overlapRatio = 0.0 - elif farRangeSlave <= nearRangeMaster: + elif farRangeSecondary <= nearRangeReference: overlapRatio = 0.0 else: # 0 1 2 3 - ranges = np.array([nearRangeMaster, farRangeMaster, nearRangeSlave, farRangeSlave]) + ranges = np.array([nearRangeReference, farRangeReference, nearRangeSecondary, farRangeSecondary]) rangesIndex = np.argsort(ranges) - overlapRatio = ranges[rangesIndex[2]]-ranges[rangesIndex[1]] / (farRangeMaster-nearRangeMaster) + overlapRatio = ranges[rangesIndex[2]]-ranges[rangesIndex[1]] / (farRangeReference-nearRangeReference) return overlapRatio diff --git a/components/isceobj/Alos2burstProc/runSwathMosaic.py b/components/isceobj/Alos2burstProc/runSwathMosaic.py index 0827af5..295b4f8 100644 --- a/components/isceobj/Alos2burstProc/runSwathMosaic.py +++ b/components/isceobj/Alos2burstProc/runSwathMosaic.py @@ -19,11 +19,11 @@ def runSwathMosaic(self): catalog = isceobj.Catalog.createCatalog(self._insar.procDoc.name) self.updateParamemetersFromUser() - masterTrack = self._insar.loadTrack(master=True) - slaveTrack = self._insar.loadTrack(master=False) + referenceTrack = self._insar.loadTrack(reference=True) + secondaryTrack = self._insar.loadTrack(reference=False) - for i, frameNumber in enumerate(self._insar.masterFrames): + for i, frameNumber in enumerate(self._insar.referenceFrames): frameDir = 'f{}_{}'.format(i+1, frameNumber) os.chdir(frameDir) @@ -33,7 +33,7 @@ def runSwathMosaic(self): if self._insar.endingSwath-self._insar.startingSwath+1 == 1: import shutil - swathDir = 's{}'.format(masterTrack.frames[i].swaths[0].swathNumber) + swathDir = 's{}'.format(referenceTrack.frames[i].swaths[0].swathNumber) if not os.path.isfile(self._insar.interferogram): os.symlink(os.path.join('../', swathDir, self._insar.interferogram), self._insar.interferogram) @@ -53,7 +53,7 @@ def runSwathMosaic(self): #update frame parameters ######################################################### - frame = masterTrack.frames[i] + frame = referenceTrack.frames[i] infImg = isceobj.createImage() infImg.load(self._insar.interferogram+'.xml') #mosaic size @@ -70,9 +70,9 @@ def runSwathMosaic(self): frame.azimuthPixelSize = frame.swaths[0].azimuthPixelSize frame.azimuthLineInterval = frame.swaths[0].azimuthLineInterval - #update frame parameters, slave + #update frame parameters, secondary ######################################################### - frame = slaveTrack.frames[i] + frame = secondaryTrack.frames[i] #mosaic size frame.numberOfSamples = int(frame.swaths[0].numberOfSamples/self._insar.numberRangeLooks1) frame.numberOfLines = int(frame.swaths[0].numberOfLines/self._insar.numberAzimuthLooks1) @@ -90,28 +90,28 @@ def runSwathMosaic(self): os.chdir('../') #save parameter file - self._insar.saveProduct(masterTrack.frames[i], self._insar.masterFrameParameter) - self._insar.saveProduct(slaveTrack.frames[i], self._insar.slaveFrameParameter) + self._insar.saveProduct(referenceTrack.frames[i], self._insar.referenceFrameParameter) + self._insar.saveProduct(secondaryTrack.frames[i], self._insar.secondaryFrameParameter) os.chdir('../') continue #choose offsets - numberOfFrames = len(masterTrack.frames) - numberOfSwaths = len(masterTrack.frames[i].swaths) + numberOfFrames = len(referenceTrack.frames) + numberOfSwaths = len(referenceTrack.frames[i].swaths) if self.swathOffsetMatching: #no need to do this as the API support 2-d list - #rangeOffsets = (np.array(self._insar.swathRangeOffsetMatchingMaster)).reshape(numberOfFrames, numberOfSwaths) - #azimuthOffsets = (np.array(self._insar.swathAzimuthOffsetMatchingMaster)).reshape(numberOfFrames, numberOfSwaths) - rangeOffsets = self._insar.swathRangeOffsetMatchingMaster - azimuthOffsets = self._insar.swathAzimuthOffsetMatchingMaster + #rangeOffsets = (np.array(self._insar.swathRangeOffsetMatchingReference)).reshape(numberOfFrames, numberOfSwaths) + #azimuthOffsets = (np.array(self._insar.swathAzimuthOffsetMatchingReference)).reshape(numberOfFrames, numberOfSwaths) + rangeOffsets = self._insar.swathRangeOffsetMatchingReference + azimuthOffsets = self._insar.swathAzimuthOffsetMatchingReference else: - #rangeOffsets = (np.array(self._insar.swathRangeOffsetGeometricalMaster)).reshape(numberOfFrames, numberOfSwaths) - #azimuthOffsets = (np.array(self._insar.swathAzimuthOffsetGeometricalMaster)).reshape(numberOfFrames, numberOfSwaths) - rangeOffsets = self._insar.swathRangeOffsetGeometricalMaster - azimuthOffsets = self._insar.swathAzimuthOffsetGeometricalMaster + #rangeOffsets = (np.array(self._insar.swathRangeOffsetGeometricalReference)).reshape(numberOfFrames, numberOfSwaths) + #azimuthOffsets = (np.array(self._insar.swathAzimuthOffsetGeometricalReference)).reshape(numberOfFrames, numberOfSwaths) + rangeOffsets = self._insar.swathRangeOffsetGeometricalReference + azimuthOffsets = self._insar.swathAzimuthOffsetGeometricalReference rangeOffsets = rangeOffsets[i] azimuthOffsets = azimuthOffsets[i] @@ -126,34 +126,34 @@ def runSwathMosaic(self): #note that frame parameters are updated after mosaicking #mosaic amplitudes - swathMosaic(masterTrack.frames[i], inputAmplitudes, self._insar.amplitude, + swathMosaic(referenceTrack.frames[i], inputAmplitudes, self._insar.amplitude, rangeOffsets, azimuthOffsets, self._insar.numberRangeLooks1, self._insar.numberAzimuthLooks1, resamplingMethod=0) #mosaic interferograms - swathMosaic(masterTrack.frames[i], inputInterferograms, self._insar.interferogram, + swathMosaic(referenceTrack.frames[i], inputInterferograms, self._insar.interferogram, rangeOffsets, azimuthOffsets, self._insar.numberRangeLooks1, self._insar.numberAzimuthLooks1, updateFrame=True, resamplingMethod=1) - create_xml(self._insar.amplitude, masterTrack.frames[i].numberOfSamples, masterTrack.frames[i].numberOfLines, 'amp') - create_xml(self._insar.interferogram, masterTrack.frames[i].numberOfSamples, masterTrack.frames[i].numberOfLines, 'int') + create_xml(self._insar.amplitude, referenceTrack.frames[i].numberOfSamples, referenceTrack.frames[i].numberOfLines, 'amp') + create_xml(self._insar.interferogram, referenceTrack.frames[i].numberOfSamples, referenceTrack.frames[i].numberOfLines, 'int') - #update slave frame parameters here - #no matching for slave, always use geometry - rangeOffsets = self._insar.swathRangeOffsetGeometricalSlave - azimuthOffsets = self._insar.swathAzimuthOffsetGeometricalSlave + #update secondary frame parameters here + #no matching for secondary, always use geometry + rangeOffsets = self._insar.swathRangeOffsetGeometricalSecondary + azimuthOffsets = self._insar.swathAzimuthOffsetGeometricalSecondary rangeOffsets = rangeOffsets[i] azimuthOffsets = azimuthOffsets[i] - swathMosaicParameters(slaveTrack.frames[i], rangeOffsets, azimuthOffsets, self._insar.numberRangeLooks1, self._insar.numberAzimuthLooks1) + swathMosaicParameters(secondaryTrack.frames[i], rangeOffsets, azimuthOffsets, self._insar.numberRangeLooks1, self._insar.numberAzimuthLooks1) os.chdir('../') #save parameter file - self._insar.saveProduct(masterTrack.frames[i], self._insar.masterFrameParameter) - self._insar.saveProduct(slaveTrack.frames[i], self._insar.slaveFrameParameter) + self._insar.saveProduct(referenceTrack.frames[i], self._insar.referenceFrameParameter) + self._insar.saveProduct(secondaryTrack.frames[i], self._insar.secondaryFrameParameter) os.chdir('../') #mosaic spectral diversity interferograms - for i, frameNumber in enumerate(self._insar.masterFrames): + for i, frameNumber in enumerate(self._insar.referenceFrames): frameDir = 'f{}_{}'.format(i+1, frameNumber) os.chdir(frameDir) @@ -163,7 +163,7 @@ def runSwathMosaic(self): if self._insar.endingSwath-self._insar.startingSwath+1 == 1: import shutil - swathDir = 's{}'.format(masterTrack.frames[i].swaths[0].swathNumber) + swathDir = 's{}'.format(referenceTrack.frames[i].swaths[0].swathNumber) for sdFile in self._insar.interferogramSd: if not os.path.isfile(sdFile): @@ -176,20 +176,20 @@ def runSwathMosaic(self): continue #choose offsets - numberOfFrames = len(masterTrack.frames) - numberOfSwaths = len(masterTrack.frames[i].swaths) + numberOfFrames = len(referenceTrack.frames) + numberOfSwaths = len(referenceTrack.frames[i].swaths) if self.swathOffsetMatching: #no need to do this as the API support 2-d list - #rangeOffsets = (np.array(self._insar.swathRangeOffsetMatchingMaster)).reshape(numberOfFrames, numberOfSwaths) - #azimuthOffsets = (np.array(self._insar.swathAzimuthOffsetMatchingMaster)).reshape(numberOfFrames, numberOfSwaths) - rangeOffsets = self._insar.swathRangeOffsetMatchingMaster - azimuthOffsets = self._insar.swathAzimuthOffsetMatchingMaster + #rangeOffsets = (np.array(self._insar.swathRangeOffsetMatchingReference)).reshape(numberOfFrames, numberOfSwaths) + #azimuthOffsets = (np.array(self._insar.swathAzimuthOffsetMatchingReference)).reshape(numberOfFrames, numberOfSwaths) + rangeOffsets = self._insar.swathRangeOffsetMatchingReference + azimuthOffsets = self._insar.swathAzimuthOffsetMatchingReference else: - #rangeOffsets = (np.array(self._insar.swathRangeOffsetGeometricalMaster)).reshape(numberOfFrames, numberOfSwaths) - #azimuthOffsets = (np.array(self._insar.swathAzimuthOffsetGeometricalMaster)).reshape(numberOfFrames, numberOfSwaths) - rangeOffsets = self._insar.swathRangeOffsetGeometricalMaster - azimuthOffsets = self._insar.swathAzimuthOffsetGeometricalMaster + #rangeOffsets = (np.array(self._insar.swathRangeOffsetGeometricalReference)).reshape(numberOfFrames, numberOfSwaths) + #azimuthOffsets = (np.array(self._insar.swathAzimuthOffsetGeometricalReference)).reshape(numberOfFrames, numberOfSwaths) + rangeOffsets = self._insar.swathRangeOffsetGeometricalReference + azimuthOffsets = self._insar.swathAzimuthOffsetGeometricalReference rangeOffsets = rangeOffsets[i] azimuthOffsets = azimuthOffsets[i] @@ -203,11 +203,11 @@ def runSwathMosaic(self): #mosaic spectral diversity interferograms for inputSdList, outputSdFile in zip(inputSd, self._insar.interferogramSd): - swathMosaic(masterTrack.frames[i], inputSdList, outputSdFile, + swathMosaic(referenceTrack.frames[i], inputSdList, outputSdFile, rangeOffsets, azimuthOffsets, self._insar.numberRangeLooks1, self._insar.numberAzimuthLooks1, updateFrame=False, phaseCompensation=True, pcRangeLooks=5, pcAzimuthLooks=5, filt=True, resamplingMethod=1) for sdFile in self._insar.interferogramSd: - create_xml(sdFile, masterTrack.frames[i].numberOfSamples, masterTrack.frames[i].numberOfLines, 'int') + create_xml(sdFile, referenceTrack.frames[i].numberOfSamples, referenceTrack.frames[i].numberOfLines, 'int') os.chdir('../') os.chdir('../') diff --git a/components/isceobj/Alos2burstProc/runSwathOffset.py b/components/isceobj/Alos2burstProc/runSwathOffset.py index d856cc1..34fedea 100644 --- a/components/isceobj/Alos2burstProc/runSwathOffset.py +++ b/components/isceobj/Alos2burstProc/runSwathOffset.py @@ -17,12 +17,12 @@ def runSwathOffset(self): catalog = isceobj.Catalog.createCatalog(self._insar.procDoc.name) self.updateParamemetersFromUser() - masterTrack = self._insar.loadTrack(master=True) - slaveTrack = self._insar.loadTrack(master=False) + referenceTrack = self._insar.loadTrack(reference=True) + secondaryTrack = self._insar.loadTrack(reference=False) - for i, frameNumber in enumerate(self._insar.masterFrames): + for i, frameNumber in enumerate(self._insar.referenceFrames): frameDir = 'f{}_{}'.format(i+1, frameNumber) os.chdir(frameDir) @@ -35,34 +35,34 @@ def runSwathOffset(self): continue #compute swath offset - offsetMaster = swathOffset(masterTrack.frames[i], os.path.join(self._insar.masterBurstPrefix, self._insar.masterMagnitude), self._insar.masterSwathOffset, + offsetReference = swathOffset(referenceTrack.frames[i], os.path.join(self._insar.referenceBurstPrefix, self._insar.referenceMagnitude), self._insar.referenceSwathOffset, crossCorrelation=self.swathOffsetMatching, numberOfAzimuthLooks=1) - #only use geometrical offset for slave - offsetSlave = swathOffset(slaveTrack.frames[i], os.path.join(self._insar.slaveBurstPrefix, self._insar.slaveMagnitude), self._insar.slaveSwathOffset, + #only use geometrical offset for secondary + offsetSecondary = swathOffset(secondaryTrack.frames[i], os.path.join(self._insar.secondaryBurstPrefix, self._insar.secondaryMagnitude), self._insar.secondarySwathOffset, crossCorrelation=False, numberOfAzimuthLooks=1) #initialization if i == 0: - self._insar.swathRangeOffsetGeometricalMaster = [] - self._insar.swathAzimuthOffsetGeometricalMaster = [] - self._insar.swathRangeOffsetGeometricalSlave = [] - self._insar.swathAzimuthOffsetGeometricalSlave = [] + self._insar.swathRangeOffsetGeometricalReference = [] + self._insar.swathAzimuthOffsetGeometricalReference = [] + self._insar.swathRangeOffsetGeometricalSecondary = [] + self._insar.swathAzimuthOffsetGeometricalSecondary = [] if self.swathOffsetMatching: - self._insar.swathRangeOffsetMatchingMaster = [] - self._insar.swathAzimuthOffsetMatchingMaster = [] - #self._insar.swathRangeOffsetMatchingSlave = [] - #self._insar.swathAzimuthOffsetMatchingSlave = [] + self._insar.swathRangeOffsetMatchingReference = [] + self._insar.swathAzimuthOffsetMatchingReference = [] + #self._insar.swathRangeOffsetMatchingSecondary = [] + #self._insar.swathAzimuthOffsetMatchingSecondary = [] #append list directly, as the API support 2-d list - self._insar.swathRangeOffsetGeometricalMaster.append(offsetMaster[0]) - self._insar.swathAzimuthOffsetGeometricalMaster.append(offsetMaster[1]) - self._insar.swathRangeOffsetGeometricalSlave.append(offsetSlave[0]) - self._insar.swathAzimuthOffsetGeometricalSlave.append(offsetSlave[1]) + self._insar.swathRangeOffsetGeometricalReference.append(offsetReference[0]) + self._insar.swathAzimuthOffsetGeometricalReference.append(offsetReference[1]) + self._insar.swathRangeOffsetGeometricalSecondary.append(offsetSecondary[0]) + self._insar.swathAzimuthOffsetGeometricalSecondary.append(offsetSecondary[1]) if self.swathOffsetMatching: - self._insar.swathRangeOffsetMatchingMaster.append(offsetMaster[2]) - self._insar.swathAzimuthOffsetMatchingMaster.append(offsetMaster[3]) - #self._insar.swathRangeOffsetMatchingSlave.append(offsetSlave[2]) - #self._insar.swathAzimuthOffsetMatchingSlave.append(offsetSlave[3]) + self._insar.swathRangeOffsetMatchingReference.append(offsetReference[2]) + self._insar.swathAzimuthOffsetMatchingReference.append(offsetReference[3]) + #self._insar.swathRangeOffsetMatchingSecondary.append(offsetSecondary[2]) + #self._insar.swathAzimuthOffsetMatchingSecondary.append(offsetSecondary[3]) os.chdir('../../') diff --git a/components/isceobj/Alos2burstProc/runUnwrapSnaphuSd.py b/components/isceobj/Alos2burstProc/runUnwrapSnaphuSd.py index c9e2aed..24f5403 100644 --- a/components/isceobj/Alos2burstProc/runUnwrapSnaphuSd.py +++ b/components/isceobj/Alos2burstProc/runUnwrapSnaphuSd.py @@ -24,8 +24,8 @@ def runUnwrapSnaphuSd(self): catalog = isceobj.Catalog.createCatalog(self._insar.procDoc.name) self.updateParamemetersFromUser() - masterTrack = self._insar.loadTrack(master=True) - #slaveTrack = self._insar.loadTrack(master=False) + referenceTrack = self._insar.loadTrack(reference=True) + #secondaryTrack = self._insar.loadTrack(reference=False) sdDir = 'sd' os.makedirs(sdDir, exist_ok=True) @@ -68,9 +68,9 @@ def runUnwrapSnaphuSd(self): os.remove(amplitudeMultilook+'.vrt') os.remove(amplitudeMultilook+'.xml') else: - tmid = masterTrack.sensingStart + datetime.timedelta(seconds=(self._insar.numberAzimuthLooks1-1.0)/2.0*masterTrack.azimuthLineInterval+ - masterTrack.numberOfLines/2.0*self._insar.numberAzimuthLooks1*masterTrack.azimuthLineInterval) - snaphuUnwrap(masterTrack, tmid, + tmid = referenceTrack.sensingStart + datetime.timedelta(seconds=(self._insar.numberAzimuthLooks1-1.0)/2.0*referenceTrack.azimuthLineInterval+ + referenceTrack.numberOfLines/2.0*self._insar.numberAzimuthLooks1*referenceTrack.azimuthLineInterval) + snaphuUnwrap(referenceTrack, tmid, sdInterferogramFilt, sdCoherence, sdInterferogramUnwrap, @@ -109,17 +109,17 @@ def runUnwrapSnaphuSd(self): # STEP 4. convert to azimuth deformation ############################################################ #burst cycle in s - burstCycleLength = masterTrack.frames[0].swaths[0].burstCycleLength / masterTrack.frames[0].swaths[0].prf + burstCycleLength = referenceTrack.frames[0].swaths[0].burstCycleLength / referenceTrack.frames[0].swaths[0].prf #compute azimuth fmrate #stack all azimuth fmrates index = np.array([], dtype=np.float64) ka = np.array([], dtype=np.float64) - for frame in masterTrack.frames: + for frame in referenceTrack.frames: for swath in frame.swaths: - startingRangeMultilook = masterTrack.frames[0].swaths[0].startingRange + \ - (self._insar.numberRangeLooks1*self._insar.numberRangeLooksSd-1.0)/2.0*masterTrack.frames[0].swaths[0].rangePixelSize - rangePixelSizeMultilook = self._insar.numberRangeLooks1 * self._insar.numberRangeLooksSd * masterTrack.frames[0].swaths[0].rangePixelSize + startingRangeMultilook = referenceTrack.frames[0].swaths[0].startingRange + \ + (self._insar.numberRangeLooks1*self._insar.numberRangeLooksSd-1.0)/2.0*referenceTrack.frames[0].swaths[0].rangePixelSize + rangePixelSizeMultilook = self._insar.numberRangeLooks1 * self._insar.numberRangeLooksSd * referenceTrack.frames[0].swaths[0].rangePixelSize index0 = (swath.startingRange + np.arange(swath.numberOfSamples) * swath.rangePixelSize - startingRangeMultilook) / rangePixelSizeMultilook ka0 = np.polyval(swath.azimuthFmrateVsPixel[::-1], np.arange(swath.numberOfSamples)) index = np.concatenate((index, index0)) @@ -129,9 +129,9 @@ def runUnwrapSnaphuSd(self): ka = np.polyval(p, np.arange(width)) #compute radar beam footprint velocity at middle track - tmid = masterTrack.sensingStart + datetime.timedelta(seconds=(self._insar.numberAzimuthLooks1-1.0)/2.0*masterTrack.azimuthLineInterval+ - masterTrack.numberOfLines/2.0*self._insar.numberAzimuthLooks1*masterTrack.azimuthLineInterval) - svmid = masterTrack.orbit.interpolateOrbit(tmid, method='hermite') + tmid = referenceTrack.sensingStart + datetime.timedelta(seconds=(self._insar.numberAzimuthLooks1-1.0)/2.0*referenceTrack.azimuthLineInterval+ + referenceTrack.numberOfLines/2.0*self._insar.numberAzimuthLooks1*referenceTrack.azimuthLineInterval) + svmid = referenceTrack.orbit.interpolateOrbit(tmid, method='hermite') #earth radius in meters r = 6371 * 1000.0 #radar footprint velocity diff --git a/components/isceobj/Attitude/__init__.py b/components/isceobj/Attitude/__init__.py index e2a3acd..637ab2f 100644 --- a/components/isceobj/Attitude/__init__.py +++ b/components/isceobj/Attitude/__init__.py @@ -8,4 +8,4 @@ def getFactoriesInfo(): 'factory':'createAttitude' } - } \ No newline at end of file + } diff --git a/components/isceobj/Image/IntImage.py b/components/isceobj/Image/IntImage.py index f026e50..977c84b 100755 --- a/components/isceobj/Image/IntImage.py +++ b/components/isceobj/Image/IntImage.py @@ -108,4 +108,4 @@ class IntImage(Image): return -#end class \ No newline at end of file +#end class diff --git a/components/isceobj/InsarProc/InsarProc.py b/components/isceobj/InsarProc/InsarProc.py index 5b4d6f4..0114380 100755 --- a/components/isceobj/InsarProc/InsarProc.py +++ b/components/isceobj/InsarProc/InsarProc.py @@ -36,8 +36,8 @@ from iscesys.DateTimeUtil.DateTimeUtil import DateTimeUtil as DTU from iscesys.Compatibility import Compatibility from isceobj.Scene.Frame import FrameMixin -## Master Slave Hash Table -MASTER_SLAVE = {0:'master', 1:'slave', 'master':'master', 'slave':'slave'} +## Reference Secondary Hash Table +REFERENCE_SECONDARY = {0:'reference', 1:'secondary', 'reference':'reference', 'secondary':'secondary'} PROCEED_IF_ZERO_DEM = Component.Parameter( '_proceedIfZeroDem', @@ -419,16 +419,16 @@ SHADE_FACTOR = Component.Parameter('_shadeFactor', doc='') #ask -MASTER_SQUINT = Component.Parameter('_masterSquint', - public_name='masterSquint', +REFERENCE_SQUINT = Component.Parameter('_referenceSquint', + public_name='referenceSquint', default=0., type=float, mandatory=False, doc='') #ask -SLAVE_SQUINT = Component.Parameter('_slaveSquint', - public_name='slaveSquint', +SECONDARY_SQUINT = Component.Parameter('_secondarySquint', + public_name='secondarySquint', default=0., type=float, mandatory=False, @@ -510,8 +510,8 @@ class InsarProc(Component, FrameMixin): NUMBER_AZIMUTH_LOOKS, NUMBER_RANGE_LOOKS, SHADE_FACTOR, - MASTER_SQUINT, - SLAVE_SQUINT, + REFERENCE_SQUINT, + SECONDARY_SQUINT, GEOCODE_LIST, UNMASKED_PREFIX, UNWRAPPED_2STAGE_FILENAME, @@ -562,11 +562,11 @@ class InsarProc(Component, FrameMixin): def getLookSide(self): return self._lookSide - def getMasterSquint(self): - return self._masterSquint + def getReferenceSquint(self): + return self._referenceSquint - def getSlaveSquint(self): - return self._slaveSquint + def getSecondarySquint(self): + return self._secondarySquint def getFormSLC1(self): return self._formSLC1 @@ -619,38 +619,38 @@ class InsarProc(Component, FrameMixin): def getSecondProcVelocity(self): return self._pegV2 - def getMasterFrame(self): - return self._masterFrame + def getReferenceFrame(self): + return self._referenceFrame - def getSlaveFrame(self): - return self._slaveFrame + def getSecondaryFrame(self): + return self._secondaryFrame - def getMasterOrbit(self): - return self._masterOrbit + def getReferenceOrbit(self): + return self._referenceOrbit - def getSlaveOrbit(self): - return self._slaveOrbit + def getSecondaryOrbit(self): + return self._secondaryOrbit - def getMasterDoppler(self): - return self._masterDoppler + def getReferenceDoppler(self): + return self._referenceDoppler - def getSlaveDoppler(self): - return self._slaveDoppler + def getSecondaryDoppler(self): + return self._secondaryDoppler def getPeg(self): return self._peg - def getMasterRawImage(self): - return self._masterRawImage + def getReferenceRawImage(self): + return self._referenceRawImage - def getSlaveRawImage(self): - return self._slaveRawImage + def getSecondaryRawImage(self): + return self._secondaryRawImage - def getMasterSlcImage(self): - return self._masterSlcImage + def getReferenceSlcImage(self): + return self._referenceSlcImage - def getSlaveSlcImage(self): - return self._slaveSlcImage + def getSecondarySlcImage(self): + return self._secondarySlcImage def getSimAmpImage(self): return self._simAmpImage @@ -852,11 +852,11 @@ class InsarProc(Component, FrameMixin): def getGeocodeList(self): return self._geocode_list - def getRawMasterIQImage(self): - return self._rawMasterIQImage + def getRawReferenceIQImage(self): + return self._rawReferenceIQImage - def getRawSlaveIQImage(self): - return self._rawSlaveIQImage + def getRawSecondaryIQImage(self): + return self._rawSecondaryIQImage @property def azResFactor(self): return self._azResFactor @@ -877,11 +877,11 @@ class InsarProc(Component, FrameMixin): def setLookSide(self, lookSide): self._lookSide = lookSide - def setMasterSquint(self, squint): - self._masterSquint = squint + def setReferenceSquint(self, squint): + self._referenceSquint = squint - def setSlaveSquint(self, squint): - self._slaveSquint = squint + def setSecondarySquint(self, squint): + self._secondarySquint = squint def setFormSLC1(self, fslc): self._formSLC1 = fslc @@ -917,38 +917,38 @@ class InsarProc(Component, FrameMixin): self._pegV2 = v2 - def setMasterFrame(self, frame): - self._masterFrame = frame + def setReferenceFrame(self, frame): + self._referenceFrame = frame - def setSlaveFrame(self, frame): - self._slaveFrame = frame + def setSecondaryFrame(self, frame): + self._secondaryFrame = frame - def setMasterOrbit(self, orbit): - self._masterOrbit = orbit + def setReferenceOrbit(self, orbit): + self._referenceOrbit = orbit - def setSlaveOrbit(self, orbit): - self._slaveOrbit = orbit + def setSecondaryOrbit(self, orbit): + self._secondaryOrbit = orbit - def setMasterDoppler(self, doppler): - self._masterDoppler = doppler + def setReferenceDoppler(self, doppler): + self._referenceDoppler = doppler - def setSlaveDoppler(self, doppler): - self._slaveDoppler = doppler + def setSecondaryDoppler(self, doppler): + self._secondaryDoppler = doppler def setPeg(self, peg): self._peg = peg - def setMasterRawImage(self, image): - self._masterRawImage = image + def setReferenceRawImage(self, image): + self._referenceRawImage = image - def setSlaveRawImage(self, image): - self._slaveRawImage = image + def setSecondaryRawImage(self, image): + self._secondaryRawImage = image - def setMasterSlcImage(self, image): - self._masterSlcImage = image + def setReferenceSlcImage(self, image): + self._referenceSlcImage = image - def setSlaveSlcImage(self, image): - self._slaveSlcImage = image + def setSecondarySlcImage(self, image): + self._secondarySlcImage = image def setSimAmpImage(self, image): self._simAmpImage = image @@ -1162,11 +1162,11 @@ class InsarProc(Component, FrameMixin): def setGeocodeList(self,prd): self._geocode_list = prd - def setRawMasterIQImage(self,im): - self._rawMasterIQImage = im + def setRawReferenceIQImage(self,im): + self._rawReferenceIQImage = im - def setRawSlaveIQImage(self,im): - self._rawSlaveIQImage = im + def setRawSecondaryIQImage(self,im): + self._rawSecondaryIQImage = im @azResFactor.setter def azResFactor(self,val): @@ -1182,7 +1182,7 @@ class InsarProc(Component, FrameMixin): self._unmaskedPrefix = val ## folowing are tbd to split formSLC. def _hasher(self, index, Attr): - return getattr(self, MASTER_SLAVE[index] + Attr) + return getattr(self, REFERENCE_SECONDARY[index] + Attr) def select_frame(self, index): return self._hasher(index, 'Frame') def select_orbit(self, index): return self._hasher(index, 'Orbit') @@ -1205,19 +1205,19 @@ class InsarProc(Component, FrameMixin): ## This overides the _FrameMixin.frame @property def frame(self): - return self.masterFrame + return self.referenceFrame # Some line violate PEP008 in order to facilitate using "grep" # for development refinedOffsetField = property(getRefinedOffsetField, setRefinedOffsetField) offsetField = property(getOffsetField, setOffsetField) demCropFilename = property(getDemCropFilename, setDemCropFilename) - masterFrame = property(getMasterFrame, setMasterFrame) - slaveFrame = property(getSlaveFrame, setSlaveFrame) - masterOrbit = property(getMasterOrbit, setMasterOrbit) - slaveOrbit = property(getSlaveOrbit, setSlaveOrbit) - masterDoppler = property(getMasterDoppler, setMasterDoppler) - slaveDoppler = property(getSlaveDoppler, setSlaveDoppler) + referenceFrame = property(getReferenceFrame, setReferenceFrame) + secondaryFrame = property(getSecondaryFrame, setSecondaryFrame) + referenceOrbit = property(getReferenceOrbit, setReferenceOrbit) + secondaryOrbit = property(getSecondaryOrbit, setSecondaryOrbit) + referenceDoppler = property(getReferenceDoppler, setReferenceDoppler) + secondaryDoppler = property(getSecondaryDoppler, setSecondaryDoppler) peg = property(getPeg, setPeg) pegH1 = property(getFirstAverageHeight, setFirstAverageHeight) pegH2 = property(getSecondAverageHeight, setSecondAverageHeight) @@ -1225,10 +1225,10 @@ class InsarProc(Component, FrameMixin): fdH2 = property(getSecondFdHeight, setSecondFdHeight) pegV1 = property(getFirstProcVelocity, setFirstProcVelocity) pegV2 = property(getSecondProcVelocity, setSecondProcVelocity) - masterRawImage = property(getMasterRawImage, setMasterRawImage) - slaveRawImage = property(getSlaveRawImage, setSlaveRawImage) - masterSlcImage = property(getMasterSlcImage, setMasterSlcImage) - slaveSlcImage = property(getSlaveSlcImage, setSlaveSlcImage) + referenceRawImage = property(getReferenceRawImage, setReferenceRawImage) + secondaryRawImage = property(getSecondaryRawImage, setSecondaryRawImage) + referenceSlcImage = property(getReferenceSlcImage, setReferenceSlcImage) + secondarySlcImage = property(getSecondarySlcImage, setSecondarySlcImage) simAmpImage = property(getSimAmpImage, setSimAmpImage) demImage = property(getDemImage, setDemImage) demInitFile = property(getDemInitFile, setDemInitFile) @@ -1294,16 +1294,16 @@ class InsarProc(Component, FrameMixin): mocompBaseline = property(getMocompBaseline, setMocompBaseline) topocorrect = property(getTopocorrect, setTopocorrect) topo = property(getTopo, setTopo) - masterSquint = property(getMasterSquint, setMasterSquint) - slaveSquint = property(getSlaveSquint, setSlaveSquint) + referenceSquint = property(getReferenceSquint, setReferenceSquint) + secondarySquint = property(getSecondarySquint, setSecondarySquint) geocode_list = property(getGeocodeList, setGeocodeList) - rawMasterIQImage = property(getRawMasterIQImage, setRawMasterIQImage) - rawSlaveIQImage = property(getRawSlaveIQImage, setRawSlaveIQImage) + rawReferenceIQImage = property(getRawReferenceIQImage, setRawReferenceIQImage) + rawSecondaryIQImage = property(getRawSecondaryIQImage, setRawSecondaryIQImage) pass -## Why this: the code bloat with master this and slave that indicates the +## Why this: the code bloat with reference this and secondary that indicates the ## design princple does not use composition, this is an attempt to ## fix that class RadarSwath(object): diff --git a/components/isceobj/InsarProc/SConscript b/components/isceobj/InsarProc/SConscript index 2235b18..927e04d 100644 --- a/components/isceobj/InsarProc/SConscript +++ b/components/isceobj/InsarProc/SConscript @@ -62,4 +62,4 @@ envInsarProc.Install(install,listFiles) envInsarProc.Alias('install',install) helpList,installHelp = envInsarProc['HELP_BUILDER'](envInsarProc,'__init__.py',install) envInsarProc.Install(installHelp,helpList) -envInsarProc.Alias('install',installHelp) \ No newline at end of file +envInsarProc.Alias('install',installHelp) diff --git a/components/isceobj/InsarProc/__InsarProc.py b/components/isceobj/InsarProc/__InsarProc.py index 0c452bd..5a33266 100644 --- a/components/isceobj/InsarProc/__InsarProc.py +++ b/components/isceobj/InsarProc/__InsarProc.py @@ -117,36 +117,36 @@ LOOK_SIDE = Component.Parameter('_lookSide', private=True, doc='') -MASTER_FRAME = Component.Facility('_masterFrame', - public_name='masterFrame', +REFERENCE_FRAME = Component.Facility('_referenceFrame', + public_name='referenceFrame', factory='default', mandatory=True, private=True, - doc='Master frame') + doc='Reference frame') -SLAVE_FRAME = Component.Facility('_slaveFrame', - public_name='slaveFrame', +SECONDARY_FRAME = Component.Facility('_secondaryFrame', + public_name='secondaryFrame', factory='default', mandatory=True, private=True, - doc='Slave frame') + doc='Secondary frame') -MASTER_ORBIT = Component.Facility('_masterOrbit', - public_name='masterOrbit', +REFERENCE_ORBIT = Component.Facility('_referenceOrbit', + public_name='referenceOrbit', factory='default', mandatory=True, private=True, - doc='Master orbit') + doc='Reference orbit') -SLAVE_ORBIT = Component.Facility('_slaveOrbit', - public_name='slaveOrbit', +SECONDARY_ORBIT = Component.Facility('_secondaryOrbit', + public_name='secondaryOrbit', factory='default', mandatory=True, private=True, - doc='Slave orbit') + doc='Secondary orbit') #ask DOPPLER_CENTROID = Component.Facility('_dopplerCentroid', @@ -156,47 +156,47 @@ DOPPLER_CENTROID = Component.Facility('_dopplerCentroid', private=True, doc='') -MASTER_DOPPLER = Component.Facility('_masterDoppler', - public_name='masterDoppler', +REFERENCE_DOPPLER = Component.Facility('_referenceDoppler', + public_name='referenceDoppler', factory='default', mandatory=True, private=True, doc='') -SLAVE_DOPPLER = Component.Facility('_slaveDoppler', - public_name='slaveDoppler', +SECONDARY_DOPPLER = Component.Facility('_secondaryDoppler', + public_name='secondaryDoppler', factory='default', mandatory=True, private=True, doc='') -MASTER_RAW_IMAGE = Component.Facility('_masterRawImage', - public_name='masterRawImage', +REFERENCE_RAW_IMAGE = Component.Facility('_referenceRawImage', + public_name='referenceRawImage', factory='default', mandatory=True, private=True, doc='') -SLAVE_RAW_IMAGE = Component.Facility('_slaveRawImage', - public_name='slaveRawImage', +SECONDARY_RAW_IMAGE = Component.Facility('_secondaryRawImage', + public_name='secondaryRawImage', factory='default', mandatory=True, private=True, doc='') -MASTER_SLC_IMAGE = Component.Facility('_masterSlcImage', - public_name='masterSlcImage', +REFERENCE_SLC_IMAGE = Component.Facility('_referenceSlcImage', + public_name='referenceSlcImage', factory='default', mandatory=True, private=True, doc='') -SLAVE_SLC_IMAGE = Component.Facility('_slaveSlcImage', - public_name='slaveSlcImage', +SECONDARY_SLC_IMAGE = Component.Facility('_secondarySlcImage', + public_name='secondarySlcImage', factory='default', mandatory=True, private=True, @@ -334,16 +334,16 @@ TOPO = Component.Facility('_topo', private=True, doc='') -RAW_MASTER_IQ_IMAGE = Component.Facility('_rawMasterIQImage', - public_name='rawMasterIQImage', +RAW_REFERENCE_IQ_IMAGE = Component.Facility('_rawReferenceIQImage', + public_name='rawReferenceIQImage', factory='default', mandatory=True, private=True, doc='') -RAW_SLAVE_IQ_IMAGE = Component.Facility('_rawSlaveIQImage', - public_name='rawSlaveIQImage', +RAW_SECONDARY_IQ_IMAGE = Component.Facility('_rawSecondaryIQImage', + public_name='rawSecondaryIQImage', factory='default', mandatory=True, private=True, @@ -403,17 +403,17 @@ parameter_list = ( NUMBER_RESAMP_LINES ) facility_list = ( - MASTER_FRAME, - SLAVE_FRAME, - MASTER_ORBIT, - SLAVE_ORBIT, - MASTER_DOPPLER, - SLAVE_DOPPLER, + REFERENCE_FRAME, + SECONDARY_FRAME, + REFERENCE_ORBIT, + SECONDARY_ORBIT, + REFERENCE_DOPPLER, + SECONDARY_DOPPLER, DOPPLER_CENTROID, - MASTER_RAW_IMAGE, - SLAVE_RAW_IMAGE, - MASTER_SLC_IMAGE, - SLAVE_SLC_IMAGE, + REFERENCE_RAW_IMAGE, + SECONDARY_RAW_IMAGE, + REFERENCE_SLC_IMAGE, + SECONDARY_SLC_IMAGE, OFFSET_AZIMUTH_IMAGE, OFFSET_RANGE_IMAGE, RESAMP_AMP_IMAGE, @@ -430,8 +430,8 @@ facility_list = ( MOCOMP_BASELINE, TOPOCORRECT, TOPO, - RAW_MASTER_IQ_IMAGE, - RAW_SLAVE_IQ_IMAGE, + RAW_REFERENCE_IQ_IMAGE, + RAW_SECONDARY_IQ_IMAGE, TOPOCORRECT_FLAT_IMAGE, OFFSET_FIELD, REFINED_OFFSET_FIELD, diff --git a/components/isceobj/InsarProc/__init__.py b/components/isceobj/InsarProc/__init__.py index 266e316..93a7297 100755 --- a/components/isceobj/InsarProc/__init__.py +++ b/components/isceobj/InsarProc/__init__.py @@ -43,4 +43,4 @@ def getFactoriesInfo(): def createInsarProc(name=None, procDoc= None): from .InsarProc import InsarProc - return InsarProc(name = name,procDoc = procDoc) \ No newline at end of file + return InsarProc(name = name,procDoc = procDoc) diff --git a/components/isceobj/InsarProc/extractInfo.py b/components/isceobj/InsarProc/extractInfo.py index eadd894..1eee1be 100755 --- a/components/isceobj/InsarProc/extractInfo.py +++ b/components/isceobj/InsarProc/extractInfo.py @@ -31,16 +31,16 @@ import isceobj.Catalog import logging logger = logging.getLogger('isce.insar.extractInfo') -def extractInfo(self, master, slave): +def extractInfo(self, reference, secondary): from contrib.frameUtils.FrameInfoExtractor import FrameInfoExtractor FIE = FrameInfoExtractor() - masterInfo = FIE.extractInfoFromFrame(master) - slaveInfo = FIE.extractInfoFromFrame(slave) - masterInfo.sensingStart = [masterInfo.sensingStart, slaveInfo.sensingStart] - masterInfo.sensingStop = [masterInfo.sensingStop, slaveInfo.sensingStop] + referenceInfo = FIE.extractInfoFromFrame(reference) + secondaryInfo = FIE.extractInfoFromFrame(secondary) + referenceInfo.sensingStart = [referenceInfo.sensingStart, secondaryInfo.sensingStart] + referenceInfo.sensingStop = [referenceInfo.sensingStop, secondaryInfo.sensingStop] # for stitched frames do not make sense anymore - mbb = masterInfo.getBBox() - sbb = slaveInfo.getBBox() + mbb = referenceInfo.getBBox() + sbb = secondaryInfo.getBBox() latEarlyNear = mbb[0][0] latLateNear = mbb[2][0] @@ -62,7 +62,7 @@ def extractInfo(self, master, slave): ret.append([min(mbb[2][0], sbb[2][0]), max(mbb[2][1], sbb[2][1])]) ret.append([min(mbb[3][0], sbb[3][0]), min(mbb[3][1], sbb[3][1])]) - masterInfo.bbox = ret - return masterInfo + referenceInfo.bbox = ret + return referenceInfo # the track should be the same for both diff --git a/components/isceobj/InsarProc/runCorrect.py b/components/isceobj/InsarProc/runCorrect.py index 321554b..038cab4 100755 --- a/components/isceobj/InsarProc/runCorrect.py +++ b/components/isceobj/InsarProc/runCorrect.py @@ -52,14 +52,14 @@ def runCorrect(self): posIndx = 1 mocompPosition1 = objFormSlc1.mocompPosition - planet = self.insar.masterFrame.instrument.platform.planet - prf1 = self.insar.masterFrame.instrument.PRF + planet = self.insar.referenceFrame.instrument.platform.planet + prf1 = self.insar.referenceFrame.instrument.PRF objCorrect = stdproc.createCorrect() objCorrect.wireInputPort(name='peg', object=self.insar.peg) - objCorrect.wireInputPort(name='frame', object=self.insar.masterFrame) + objCorrect.wireInputPort(name='frame', object=self.insar.referenceFrame) objCorrect.wireInputPort(name='planet', object=planet) objCorrect.wireInputPort(name='interferogram', object=intImage) - objCorrect.wireInputPort(name='masterslc', object=self.insar.formSLC1) #Piyush + objCorrect.wireInputPort(name='referenceslc', object=self.insar.formSLC1) #Piyush # Average velocity and height measurements v = self.insar.procVelocity h = self.insar.averageHeight diff --git a/components/isceobj/InsarProc/runEstimateHeights.py b/components/isceobj/InsarProc/runEstimateHeights.py index 405ce82..d02e88f 100755 --- a/components/isceobj/InsarProc/runEstimateHeights.py +++ b/components/isceobj/InsarProc/runEstimateHeights.py @@ -36,11 +36,11 @@ logger = logging.getLogger('isce.insar.runEstimateHeights') def runEstimateHeights(self): from isceobj.Catalog import recordInputsAndOutputs chv = [] - for frame, orbit, tag in zip((self._insar.getMasterFrame(), - self._insar.getSlaveFrame()), - (self.insar.masterOrbit, - self.insar.slaveOrbit), - ('master', 'slave')): + for frame, orbit, tag in zip((self._insar.getReferenceFrame(), + self._insar.getSecondaryFrame()), + (self.insar.referenceOrbit, + self.insar.secondaryOrbit), + ('reference', 'secondary')): chv.append(stdproc.createCalculateFdHeights()) chv[-1](frame=frame, orbit=orbit, planet=self.planet) diff --git a/components/isceobj/InsarProc/runEstimateHeights_peg.py b/components/isceobj/InsarProc/runEstimateHeights_peg.py index fad70a3..51fa993 100755 --- a/components/isceobj/InsarProc/runEstimateHeights_peg.py +++ b/components/isceobj/InsarProc/runEstimateHeights_peg.py @@ -37,11 +37,11 @@ logger = logging.getLogger('isce.isceProc.runEstimateHeights') def runEstimateHeights(self): from isceobj.Catalog import recordInputsAndOutputs chv = [] - for frame, orbit, tag in zip((self._insar.getMasterFrame(), - self._insar.getSlaveFrame()), - (self.insar.masterOrbit, - self.insar.slaveOrbit), - ('master', 'slave')): + for frame, orbit, tag in zip((self._insar.getReferenceFrame(), + self._insar.getSecondaryFrame()), + (self.insar.referenceOrbit, + self.insar.secondaryOrbit), + ('reference', 'secondary')): (time, position, velocity, offset) = orbit._unpackOrbit() diff --git a/components/isceobj/InsarProc/runFdMocomp.py b/components/isceobj/InsarProc/runFdMocomp.py index 83c6d6b..d231ac5 100755 --- a/components/isceobj/InsarProc/runFdMocomp.py +++ b/components/isceobj/InsarProc/runFdMocomp.py @@ -32,10 +32,10 @@ import stdproc import sys logger = logging.getLogger('isce.insar.runFdMocomp') -## Mapping from use_dop kewword to f(masterDop, slaveDrop) +## Mapping from use_dop kewword to f(referenceDop, secondaryDrop) USE_DOP = {'AVERAGE' : lambda x, y: (x+y)/2., - 'MASTER': lambda x, y: x, - 'SLAVE': lambda x, y: y} + 'REFERENCE': lambda x, y: x, + 'SECONDARY': lambda x, y: y} def runFdMocomp(self, use_dop="average"): """ @@ -45,27 +45,27 @@ def runFdMocomp(self, use_dop="average"): H2 = self.insar.fdH2 peg = self.insar.peg lookSide = self.insar._lookSide - masterOrbit = self.insar.masterOrbit - slaveOrbit = self.insar.slaveOrbit + referenceOrbit = self.insar.referenceOrbit + secondaryOrbit = self.insar.secondaryOrbit rangeSamplingRate = ( - self.insar.getMasterFrame().instrument.rangeSamplingRate) + self.insar.getReferenceFrame().instrument.rangeSamplingRate) rangePulseDuration = ( - self.insar.getSlaveFrame().instrument.pulseLength) + self.insar.getSecondaryFrame().instrument.pulseLength) chirpExtension = self.insar.chirpExtension chirpSize = int(rangeSamplingRate * rangePulseDuration) number_range_bins = self.insar.numberRangeBins - masterCentroid = self.insar.masterDoppler.fractionalCentroid - slaveCentroid = self.insar.slaveDoppler.fractionalCentroid + referenceCentroid = self.insar.referenceDoppler.fractionalCentroid + secondaryCentroid = self.insar.secondaryDoppler.fractionalCentroid logger.info("Correcting Doppler centroid for motion compensation") result = [] - for centroid, frame, orbit, H in zip((masterCentroid, slaveCentroid), - (self.insar.masterFrame, - self.insar.slaveFrame), - (masterOrbit, slaveOrbit), + for centroid, frame, orbit, H in zip((referenceCentroid, secondaryCentroid), + (self.insar.referenceFrame, + self.insar.secondaryFrame), + (referenceOrbit, secondaryOrbit), (H1, H2) ): fdmocomp = stdproc.createFdMocomp() @@ -80,13 +80,13 @@ def runFdMocomp(self, use_dop="average"): result.append( fdmocomp.dopplerCentroid ) pass - masterDopplerCorrection, slaveDopplerCorrection = result + referenceDopplerCorrection, secondaryDopplerCorrection = result -# print masterDopplerCorrection, slaveDopplerCorrection +# print referenceDopplerCorrection, secondaryDopplerCorrection # use_dop = "F" try: - fd = USE_DOP[use_dop.upper()](masterDopplerCorrection, - slaveDopplerCorrection) + fd = USE_DOP[use_dop.upper()](referenceDopplerCorrection, + secondaryDopplerCorrection) except KeyError: print("Unrecognized use_dop option. use_dop = ",use_dop) print("Not found in dictionary:",USE_DOP.keys()) diff --git a/components/isceobj/InsarProc/runFormSLC.py b/components/isceobj/InsarProc/runFormSLC.py index 023ee20..52ff603 100755 --- a/components/isceobj/InsarProc/runFormSLC.py +++ b/components/isceobj/InsarProc/runFormSLC.py @@ -35,8 +35,8 @@ from isceobj.Util.decorators import use_api logger = logging.getLogger('isce.insar.runFormSLC') -#Run FormSLC for master -def master(self, deltaf=None): +#Run FormSLC for reference +def reference(self, deltaf=None): from isceobj.Catalog import recordInputsAndOutputs from iscesys.ImageUtil.ImageUtil import ImageUtil as IU @@ -45,9 +45,9 @@ def master(self, deltaf=None): v,h = self.insar.vh() - objRaw = self.insar.rawMasterIQImage.clone() + objRaw = self.insar.rawReferenceIQImage.clone() objRaw.accessMode = 'read' - objFormSlc = stdproc.createFormSLC(name='insarapp_formslc_master') + objFormSlc = stdproc.createFormSLC(name='insarapp_formslc_reference') objFormSlc.setBodyFixedVelocity(v) objFormSlc.setSpacecraftHeight(h) objFormSlc.setAzimuthPatchSize(self.patchSize) @@ -55,18 +55,18 @@ def master(self, deltaf=None): objFormSlc.setNumberPatches(self.numPatches) objFormSlc.setLookSide(self.insar._lookSide) objFormSlc.setNumberAzimuthLooks(self.insar.numberAzimuthLooks) - logger.info("Focusing Master image") + logger.info("Focusing Reference image") objFormSlc.stdWriter = self.stdWriter if (deltaf is not None) and (objFormSlc.azimuthResolution is None): - ins = self.insar.masterFrame.getInstrument() + ins = self.insar.referenceFrame.getInstrument() prf = ins.getPulseRepetitionFrequency() res = ins.getPlatform().getAntennaLength() / 2.0 azbw = min(v/res, prf) res = v/azbw factor = 1.0 - (abs(deltaf)/azbw) - logger.info('MASTER AZIMUTH BANDWIDTH FACTOR = %f'%(factor)) + logger.info('REFERENCE AZIMUTH BANDWIDTH FACTOR = %f'%(factor)) azres = res / factor #jng This is a temporary solution seems it looks that same banding problem #can be resolved by doubling the azres. The default azResFactor is still one. @@ -74,9 +74,9 @@ def master(self, deltaf=None): ####newInputs objSlc = objFormSlc(rawImage=objRaw, - orbit=self.insar.masterOrbit, - frame=self.insar.masterFrame, - planet=self.insar.masterFrame.instrument.platform.planet, + orbit=self.insar.referenceOrbit, + frame=self.insar.referenceFrame, + planet=self.insar.referenceFrame.instrument.platform.planet, doppler=self.insar.dopplerCentroid, peg=self.insar.peg) @@ -86,23 +86,23 @@ def master(self, deltaf=None): objSlc.finalizeImage() objRaw.finalizeImage() recordInputsAndOutputs(self.insar.procDoc, objFormSlc, - "runFormSLC.master", logger, "runFormSLC.master") + "runFormSLC.reference", logger, "runFormSLC.reference") logger.info('New Width = %d'%(imageSlc.getWidth())) - self.insar.masterSlcImage = imageSlc + self.insar.referenceSlcImage = imageSlc self.insar.formSLC1 = objFormSlc return objFormSlc.numberPatches -#Run FormSLC on slave -def slave(self, deltaf=None): +#Run FormSLC on secondary +def secondary(self, deltaf=None): from isceobj.Catalog import recordInputsAndOutputs from iscesys.ImageUtil.ImageUtil import ImageUtil as IU v,h = self.insar.vh() - objRaw = self.insar.rawSlaveIQImage.clone() + objRaw = self.insar.rawSecondaryIQImage.clone() objRaw.accessMode = 'read' - objFormSlc = stdproc.createFormSLC(name='insarapp_formslc_slave') + objFormSlc = stdproc.createFormSLC(name='insarapp_formslc_secondary') objFormSlc.setBodyFixedVelocity(v) objFormSlc.setSpacecraftHeight(h) objFormSlc.setAzimuthPatchSize(self.patchSize) @@ -110,24 +110,24 @@ def slave(self, deltaf=None): objFormSlc.setNumberPatches(self.numPatches) objFormSlc.setNumberAzimuthLooks(self.insar.numberAzimuthLooks) objFormSlc.setLookSide(self.insar._lookSide) - logger.info("Focusing Master image") + logger.info("Focusing Reference image") objFormSlc.stdWriter = self.stdWriter if (deltaf is not None) and (objFormSlc.azimuthResolution is None): - ins = self.insar.slaveFrame.getInstrument() + ins = self.insar.secondaryFrame.getInstrument() prf = ins.getPulseRepetitionFrequency() res = ins.getPlatform().getAntennaLength()/2.0 azbw = min(v / res, prf) res = v / azbw factor = 1.0 - (abs(deltaf) / azbw) - logger.info('SLAVE AZIMUTH BANDWIDTH FACTOR = %f'%(factor)) + logger.info('SECONDARY AZIMUTH BANDWIDTH FACTOR = %f'%(factor)) azres = res/factor objFormSlc.setAzimuthResolution(azres) objSlc = objFormSlc(rawImage=objRaw, - orbit=self.insar.slaveOrbit, - frame=self.insar.slaveFrame, - planet=self.insar.slaveFrame.instrument.platform.planet, + orbit=self.insar.secondaryOrbit, + frame=self.insar.secondaryFrame, + planet=self.insar.secondaryFrame.instrument.platform.planet, doppler=self.insar.dopplerCentroid, peg=self.insar.peg) @@ -137,22 +137,22 @@ def slave(self, deltaf=None): objSlc.finalizeImage() objRaw.finalizeImage() recordInputsAndOutputs(self.insar.procDoc, objFormSlc, - "runFormSLC.slave", logger, "runFormSLC.slave") + "runFormSLC.secondary", logger, "runFormSLC.secondary") logger.info('New Width = %d'%(imageSlc.getWidth())) - self.insar.slaveSlcImage = imageSlc + self.insar.secondarySlcImage = imageSlc self.insar.formSLC2 = objFormSlc return objFormSlc.numberPatches @use_api def runFormSLC(self): - mDoppler = self.insar.masterDoppler.getDopplerCoefficients(inHz=True) - sDoppler = self.insar.slaveDoppler.getDopplerCoefficients(inHz=True) + mDoppler = self.insar.referenceDoppler.getDopplerCoefficients(inHz=True) + sDoppler = self.insar.secondaryDoppler.getDopplerCoefficients(inHz=True) deltaf = abs(mDoppler[0] - sDoppler[0]) - n_master = master(self, deltaf=deltaf) - n_slave = slave(self, deltaf=deltaf) - self.insar.setNumberPatches(min(n_master, n_slave)) + n_reference = reference(self, deltaf=deltaf) + n_secondary = secondary(self, deltaf=deltaf) + self.insar.setNumberPatches(min(n_reference, n_secondary)) self.is_mocomp = int( (self.insar.formSLC1.azimuthPatchSize - self.insar.formSLC1.numberValidPulses)/2 diff --git a/components/isceobj/InsarProc/runFormSLCTSX.py b/components/isceobj/InsarProc/runFormSLCTSX.py index b6dd462..9433ded 100755 --- a/components/isceobj/InsarProc/runFormSLCTSX.py +++ b/components/isceobj/InsarProc/runFormSLCTSX.py @@ -49,7 +49,7 @@ def runFormSLC(self, patchSize=None, goodLines=None, numPatches=None): v = self.insar.procVelocity h = self.insar.averageHeight - imageSlc1 = self.insar.masterRawImage + imageSlc1 = self.insar.referenceRawImage imSlc1 = isceobj.createSlcImage() IU.copyAttributes(imageSlc1, imSlc1) imSlc1.setAccessMode('read') @@ -61,11 +61,11 @@ def runFormSLC(self, patchSize=None, goodLines=None, numPatches=None): formSlc1.wireInputPort(name='doppler', object = self.insar.dopplerCentroid) formSlc1.wireInputPort(name='peg', object=self.insar.peg) - formSlc1.wireInputPort(name='frame', object=self.insar.masterFrame) - formSlc1.wireInputPort(name='orbit', object=self.insar.masterOrbit) + formSlc1.wireInputPort(name='frame', object=self.insar.referenceFrame) + formSlc1.wireInputPort(name='orbit', object=self.insar.referenceOrbit) formSlc1.wireInputPort(name='slcInImage', object=imSlc1) formSlc1.wireInputPort(name='planet', - object=self.insar.masterFrame.instrument.platform.planet) + object=self.insar.referenceFrame.instrument.platform.planet) self._stdWriter.setFileTag("formslcTSX", "log") self._stdWriter.setFileTag("formslcTSX", "err") self._stdWriter.setFileTag("formslcTSX", "out") @@ -73,10 +73,10 @@ def runFormSLC(self, patchSize=None, goodLines=None, numPatches=None): formSlc1.setLookSide(self.insar._lookSide) -# self.insar.setMasterSlcImage(formSlc1.formslc()) - self.insar.masterSlcImage = formSlc1() +# self.insar.setReferenceSlcImage(formSlc1.formslc()) + self.insar.referenceSlcImage = formSlc1() - imageSlc2 = self.insar.slaveRawImage + imageSlc2 = self.insar.secondaryRawImage imSlc2 = isceobj.createSlcImage() IU.copyAttributes(imageSlc2, imSlc2) imSlc2.setAccessMode('read') @@ -88,19 +88,19 @@ def runFormSLC(self, patchSize=None, goodLines=None, numPatches=None): formSlc2.wireInputPort(name='doppler', object=self.insar.dopplerCentroid) formSlc2.wireInputPort(name='peg', object=self.insar.peg) - formSlc2.wireInputPort(name='frame', object=self.insar.slaveFrame) - formSlc2.wireInputPort(name='orbit', object=self.insar.slaveOrbit) + formSlc2.wireInputPort(name='frame', object=self.insar.secondaryFrame) + formSlc2.wireInputPort(name='orbit', object=self.insar.secondaryOrbit) formSlc2.wireInputPort(name='slcInImage', object=imSlc2) formSlc2.wireInputPort(name='planet', - object=self.insar.slaveFrame.instrument.platform.planet) + object=self.insar.secondaryFrame.instrument.platform.planet) self._stdWriter.setFileTag("formslcTSX", "log") self._stdWriter.setFileTag("formslcTSX", "err") self._stdWriter.setFileTag("formslcTSX", "out") formSlc2.setStdWriter(self._stdWriter) formSlc2.setLookSide(self.insar._lookSide) -# self.insar.setSlaveSlcImage(formSlc2.formslc()) - self.insar.slaveSlcImage = formSlc2() +# self.insar.setSecondarySlcImage(formSlc2.formslc()) + self.insar.secondarySlcImage = formSlc2() self.insar.setNumberPatches( imSlc1.getLength()/float(self.insar.numberValidPulses) ) diff --git a/components/isceobj/InsarProc/runFormSLCisce.py b/components/isceobj/InsarProc/runFormSLCisce.py index 45d3d37..c547485 100755 --- a/components/isceobj/InsarProc/runFormSLCisce.py +++ b/components/isceobj/InsarProc/runFormSLCisce.py @@ -50,7 +50,7 @@ def runFormSLC(self, patchSize=None, goodLines=None, numPatches=None): v = self.insar.getFirstProcVelocity() h = self.insar.averageHeight - imageSlc1 = self.insar.masterRawImage + imageSlc1 = self.insar.referenceRawImage imSlc1 = isceobj.createSlcImage() IU.copyAttributes(imageSlc1, imSlc1) imSlc1.setAccessMode('read') @@ -62,18 +62,18 @@ def runFormSLC(self, patchSize=None, goodLines=None, numPatches=None): formSlc1.wireInputPort(name='doppler', object = self.insar.dopplerCentroid) formSlc1.wireInputPort(name='peg', object=self.insar.peg) - formSlc1.wireInputPort(name='frame', object=self.insar.masterFrame) - formSlc1.wireInputPort(name='orbit', object=self.insar.masterOrbit) + formSlc1.wireInputPort(name='frame', object=self.insar.referenceFrame) + formSlc1.wireInputPort(name='orbit', object=self.insar.referenceOrbit) formSlc1.wireInputPort(name='rawImage', object=None) formSlc1.wireInputPort(name='planet', - object=self.insar.masterFrame.instrument.platform.planet) + object=self.insar.referenceFrame.instrument.platform.planet) for item in formSlc1.inputPorts: item() formSlc1.slcWidth = imSlc1.getWidth() formSlc1.startingRange = formSlc1.rangeFirstSample formSlc1.rangeChirpExtensionPoints = 0 - formSlc1.slcSensingStart = self.insar.masterFrame.getSensingStart() - formSlc1.outOrbit = self.insar.masterOrbit + formSlc1.slcSensingStart = self.insar.referenceFrame.getSensingStart() + formSlc1.outOrbit = self.insar.referenceOrbit self._stdWriter.setFileTag("formslcISCE", "log") self._stdWriter.setFileTag("formslcISCE", "err") @@ -81,11 +81,11 @@ def runFormSLC(self, patchSize=None, goodLines=None, numPatches=None): formSlc1.setStdWriter(self._stdWriter) formSlc1.setLookSide(self.insar._lookSide) -# self.insar.setMasterSlcImage(formSlc1.formslc()) -# self.insar.masterSlcImage = formSlc1() +# self.insar.setReferenceSlcImage(formSlc1.formslc()) +# self.insar.referenceSlcImage = formSlc1() self.insar.formSLC1 = formSlc1 - self.insar.masterSlcImage = imSlc1 - time, position, velocity, relTo = self.insar.masterOrbit._unpackOrbit() + self.insar.referenceSlcImage = imSlc1 + time, position, velocity, relTo = self.insar.referenceOrbit._unpackOrbit() mocomp_array = [[],[]] for (t, p) in zip(time, position): mocomp_array[0].append(t-time[0]) @@ -97,7 +97,7 @@ def runFormSLC(self, patchSize=None, goodLines=None, numPatches=None): formSlc1.dim2_mocompPosition = len(time) formSlc1.dim1_mocompIndx = len(time) - imageSlc2 = self.insar.slaveRawImage + imageSlc2 = self.insar.secondaryRawImage imSlc2 = isceobj.createSlcImage() IU.copyAttributes(imageSlc2, imSlc2) imSlc2.setAccessMode('read') @@ -109,28 +109,28 @@ def runFormSLC(self, patchSize=None, goodLines=None, numPatches=None): formSlc2.wireInputPort(name='doppler', object=self.insar.dopplerCentroid) formSlc2.wireInputPort(name='peg', object=self.insar.peg) - formSlc2.wireInputPort(name='frame', object=self.insar.slaveFrame) - formSlc2.wireInputPort(name='orbit', object=self.insar.slaveOrbit) + formSlc2.wireInputPort(name='frame', object=self.insar.secondaryFrame) + formSlc2.wireInputPort(name='orbit', object=self.insar.secondaryOrbit) formSlc2.wireInputPort(name='rawImage', object=None) formSlc2.wireInputPort(name='planet', - object=self.insar.slaveFrame.instrument.platform.planet) + object=self.insar.secondaryFrame.instrument.platform.planet) for item in formSlc2.inputPorts: item() formSlc2.slcWidth = imSlc2.getWidth() formSlc2.startingRange = formSlc2.rangeFirstSample formSlc2.rangeChirpExtensionPoints = 0 - formSlc2.slcSensingStart = self.insar.slaveFrame.getSensingStart() - formSlc2.outOrbit = self.insar.slaveOrbit + formSlc2.slcSensingStart = self.insar.secondaryFrame.getSensingStart() + formSlc2.outOrbit = self.insar.secondaryOrbit self._stdWriter.setFileTag("formslcISCE", "log") self._stdWriter.setFileTag("formslcISCE", "err") self._stdWriter.setFileTag("formslcISCE", "out") formSlc2.setStdWriter(self._stdWriter) formSlc2.setLookSide(self.insar._lookSide) -# self.insar.setSlaveSlcImage(formSlc2.formslc()) +# self.insar.setSecondarySlcImage(formSlc2.formslc()) self.insar.formSLC2 = formSlc2 - self.insar.slaveSlcImage = imSlc2 - time, position, velocity, relTo = self.insar.slaveOrbit._unpackOrbit() + self.insar.secondarySlcImage = imSlc2 + time, position, velocity, relTo = self.insar.secondaryOrbit._unpackOrbit() mocomp_array = [[],[]] for (t, p) in zip(time, position): mocomp_array[0].append(t-time[0]) @@ -148,9 +148,9 @@ def runFormSLC(self, patchSize=None, goodLines=None, numPatches=None): imSlc1.finalizeImage() imSlc2.finalizeImage() recordInputsAndOutputs(self.insar.procDoc, formSlc1, - "runFormSLC.master", logger, "runFormSLC.master") + "runFormSLC.reference", logger, "runFormSLC.reference") recordInputsAndOutputs(self.insar.procDoc, formSlc2, - "runFormSLC.slave", logger, "runFormSLC.slave") + "runFormSLC.secondary", logger, "runFormSLC.secondary") self.insar.setFormSLC1(formSlc1) self.insar.setFormSLC2(formSlc2) diff --git a/components/isceobj/InsarProc/runGeocode.py b/components/isceobj/InsarProc/runGeocode.py index dcb01e6..5cb6498 100755 --- a/components/isceobj/InsarProc/runGeocode.py +++ b/components/isceobj/InsarProc/runGeocode.py @@ -60,7 +60,7 @@ def runGeocode(self, prodlist, unwrapflag, bbox): stdWriter = create_writer("log", "", True, filename="geo.log") v,h = insar.vh() - planet = insar.masterFrame._instrument._platform._planet + planet = insar.referenceFrame._instrument._platform._planet if bbox is None: @@ -125,9 +125,9 @@ def runGeocode(self, prodlist, unwrapflag, bbox): #demImage = isceobj.createDemImage() #IU.copyAttributes(insar.demImage, demImage) demImage = insar.demImage.clone() - objGeo(peg=insar.peg, frame=insar.masterFrame, + objGeo(peg=insar.peg, frame=insar.referenceFrame, planet=planet, dem=demImage, tobegeocoded=inImage, - geoPosting=None, masterslc=insar.formSLC1) + geoPosting=None, referenceslc=insar.formSLC1) recordInputsAndOutputs(self._insar.procDoc, objGeo, "runGeocode", diff --git a/components/isceobj/InsarProc/runMaskImages.py b/components/isceobj/InsarProc/runMaskImages.py index d61014e..d9e6e85 100755 --- a/components/isceobj/InsarProc/runMaskImages.py +++ b/components/isceobj/InsarProc/runMaskImages.py @@ -81,4 +81,4 @@ def runMaskImages(self): wrapImage.filename = newWrapName wrapImage.dump(newWrapName+'.xml') ampImage.filename = newAmpName - ampImage.dump(newAmpName+'.xml') \ No newline at end of file + ampImage.dump(newAmpName+'.xml') diff --git a/components/isceobj/InsarProc/runMocompbaseline.py b/components/isceobj/InsarProc/runMocompbaseline.py index 9e780ee..93300df 100755 --- a/components/isceobj/InsarProc/runMocompbaseline.py +++ b/components/isceobj/InsarProc/runMocompbaseline.py @@ -39,7 +39,7 @@ posIndx = 1 def runMocompbaseline(self): logger.info("Calculating Baseline") - ellipsoid = self._insar.getMasterFrame().getInstrument().getPlatform().getPlanet().get_elp() + ellipsoid = self._insar.getReferenceFrame().getInstrument().getPlatform().getPlanet().get_elp() # schPositions computed in orbit2sch # objFormSlc's created during formSlc @@ -58,10 +58,10 @@ def runMocompbaseline(self): objMocompbaseline.setMocompPosition2(mocompPosition2[posIndx]) objMocompbaseline.setMocompPositionIndex2(mocompIndex2) - objMocompbaseline.wireInputPort(name='masterOrbit', - object=self.insar.masterOrbit) - objMocompbaseline.wireInputPort(name='slaveOrbit', - object=self.insar.slaveOrbit) + objMocompbaseline.wireInputPort(name='referenceOrbit', + object=self.insar.referenceOrbit) + objMocompbaseline.wireInputPort(name='secondaryOrbit', + object=self.insar.secondaryOrbit) objMocompbaseline.wireInputPort(name='ellipsoid', object=ellipsoid) objMocompbaseline.wireInputPort(name='peg', object=self.insar.peg) objMocompbaseline.setHeight(h) diff --git a/components/isceobj/InsarProc/runOffsetprf.py b/components/isceobj/InsarProc/runOffsetprf.py index bf3b3d5..0c93981 100755 --- a/components/isceobj/InsarProc/runOffsetprf.py +++ b/components/isceobj/InsarProc/runOffsetprf.py @@ -41,15 +41,15 @@ def runOffsetprf(self): logger.info("Calculate offset between slcs") - masterFrame = self._insar.getMasterFrame() - slaveFrame = self._insar.getSlaveFrame() - masterOrbit = self._insar.getMasterOrbit() - slaveOrbit = self._insar.getSlaveOrbit() - prf1 = masterFrame.getInstrument().getPulseRepetitionFrequency() - prf2 = slaveFrame.getInstrument().getPulseRepetitionFrequency() + referenceFrame = self._insar.getReferenceFrame() + secondaryFrame = self._insar.getSecondaryFrame() + referenceOrbit = self._insar.getReferenceOrbit() + secondaryOrbit = self._insar.getSecondaryOrbit() + prf1 = referenceFrame.getInstrument().getPulseRepetitionFrequency() + prf2 = secondaryFrame.getInstrument().getPulseRepetitionFrequency() nearRange1 = self.insar.formSLC1.startingRange nearRange2 = self.insar.formSLC2.startingRange - fs1 = masterFrame.getInstrument().getRangeSamplingRate() + fs1 = referenceFrame.getInstrument().getRangeSamplingRate() ###There seems to be no other way of determining image length - Piyush patchSize = self._insar.getPatchSize() @@ -59,10 +59,10 @@ def runOffsetprf(self): firstDown = self._insar.getFirstSampleDownPrf() numLocationAcross = self._insar.getNumberLocationAcrossPrf() numLocationDown = self._insar.getNumberLocationDownPrf() - objSlc = self._insar.getMasterSlcImage() -# widthSlc = max(self._insar.getMasterSlcImage().getWidth(), -# self._insar.getSlaveSlcImage().getWidth()) - widthSlc = self._insar.getMasterSlcImage().getWidth() + objSlc = self._insar.getReferenceSlcImage() +# widthSlc = max(self._insar.getReferenceSlcImage().getWidth(), +# self._insar.getSecondarySlcImage().getWidth()) + widthSlc = self._insar.getReferenceSlcImage().getWidth() coarseRange = (nearRange1 - nearRange2) / (CN.SPEED_OF_LIGHT / (2 * fs1)) coarseAcross = int(coarseRange + 0.5) @@ -76,8 +76,8 @@ def runOffsetprf(self): coarseAcross = self.grossRg pass - time1, schPosition1, schVelocity1, offset1 = masterOrbit._unpackOrbit() - time2, schPosition2, schVelocity2, offset2 = slaveOrbit._unpackOrbit() + time1, schPosition1, schVelocity1, offset1 = referenceOrbit._unpackOrbit() + time2, schPosition2, schVelocity2, offset2 = secondaryOrbit._unpackOrbit() s1 = schPosition1[0][0] s1_2 = schPosition1[1][0] s2 = schPosition2[0][0] @@ -101,7 +101,7 @@ def runOffsetprf(self): coarseAcross = 0 + coarseAcross coarseDown = 0 + coarseDown - mSlcImage = self._insar.getMasterSlcImage() + mSlcImage = self._insar.getReferenceSlcImage() mSlc = isceobj.createSlcImage() IU.copyAttributes(mSlcImage, mSlc) # scheme = 'BIL' @@ -110,7 +110,7 @@ def runOffsetprf(self): mSlc.setAccessMode(accessMode) mSlc.createImage() - sSlcImage = self._insar.getSlaveSlcImage() + sSlcImage = self._insar.getSecondarySlcImage() sSlc = isceobj.createSlcImage() IU.copyAttributes(sSlcImage, sSlc) # scheme = 'BIL' diff --git a/components/isceobj/InsarProc/runOffsetprf_ampcor.py b/components/isceobj/InsarProc/runOffsetprf_ampcor.py index 6ae04e7..408f1b5 100755 --- a/components/isceobj/InsarProc/runOffsetprf_ampcor.py +++ b/components/isceobj/InsarProc/runOffsetprf_ampcor.py @@ -41,16 +41,16 @@ def runOffsetprf(self): from isceobj.Catalog import recordInputs logger.info("Calculate offset between slcs using ampcor") - masterFrame = self._insar.getMasterFrame() - slaveFrame = self._insar.getSlaveFrame() - masterOrbit = self._insar.getMasterOrbit() - slaveOrbit = self._insar.getSlaveOrbit() - prf1 = masterFrame.getInstrument().getPulseRepetitionFrequency() - prf2 = slaveFrame.getInstrument().getPulseRepetitionFrequency() + referenceFrame = self._insar.getReferenceFrame() + secondaryFrame = self._insar.getSecondaryFrame() + referenceOrbit = self._insar.getReferenceOrbit() + secondaryOrbit = self._insar.getSecondaryOrbit() + prf1 = referenceFrame.getInstrument().getPulseRepetitionFrequency() + prf2 = secondaryFrame.getInstrument().getPulseRepetitionFrequency() nearRange1 = self.insar.formSLC1.startingRange nearRange2 = self.insar.formSLC2.startingRange - fs1 = masterFrame.getInstrument().getRangeSamplingRate() - fs2 = slaveFrame.getInstrument().getRangeSamplingRate() + fs1 = referenceFrame.getInstrument().getRangeSamplingRate() + fs2 = secondaryFrame.getInstrument().getRangeSamplingRate() ###There seems to be no other way of determining image length - Piyush patchSize = self._insar.getPatchSize() @@ -95,23 +95,23 @@ def runOffsetprf(self): coarseAcross = 0 + coarseAcross coarseDown = 0 + coarseDown - mSlcImage = self._insar.getMasterSlcImage() + mSlcImage = self._insar.getReferenceSlcImage() mSlc = isceobj.createSlcImage() IU.copyAttributes(mSlcImage, mSlc) accessMode = 'read' mSlc.setAccessMode(accessMode) mSlc.createImage() - masterWidth = mSlc.getWidth() - masterLength = mSlc.getLength() + referenceWidth = mSlc.getWidth() + referenceLength = mSlc.getLength() - sSlcImage = self._insar.getSlaveSlcImage() + sSlcImage = self._insar.getSecondarySlcImage() sSlc = isceobj.createSlcImage() IU.copyAttributes(sSlcImage, sSlc) accessMode = 'read' sSlc.setAccessMode(accessMode) sSlc.createImage() - slaveWidth = sSlc.getWidth() - slaveLength = sSlc.getLength() + secondaryWidth = sSlc.getWidth() + secondaryLength = sSlc.getLength() objAmpcor = Ampcor(name='insarapp_slcs_ampcor') objAmpcor.configure() @@ -134,13 +134,13 @@ def runOffsetprf(self): offAc = max(firstAc,-coarseAcross)+xMargin offDn = max(firstDown,-coarseDown)+yMargin - offAcmax = int(coarseAcross + ((fs2/fs1)-1)*masterWidth) + offAcmax = int(coarseAcross + ((fs2/fs1)-1)*referenceWidth) logger.debug("Gross Max Across: %s" % (offAcmax)) - lastAc = int(min(masterWidth, slaveWidth- offAcmax) - xMargin) + lastAc = int(min(referenceWidth, secondaryWidth- offAcmax) - xMargin) - offDnmax = int(coarseDown + ((prf2/prf1)-1)*masterLength) + offDnmax = int(coarseDown + ((prf2/prf1)-1)*referenceLength) logger.debug("Gross Max Down: %s" % (offDnmax)) - lastDown = int( min(masterLength, slaveLength-offDnmax) - yMargin) + lastDown = int( min(referenceLength, secondaryLength-offDnmax) - yMargin) if not objAmpcor.firstSampleAcross: diff --git a/components/isceobj/InsarProc/runOffsetprf_nstage.py b/components/isceobj/InsarProc/runOffsetprf_nstage.py index c8a0642..bb9fe26 100755 --- a/components/isceobj/InsarProc/runOffsetprf_nstage.py +++ b/components/isceobj/InsarProc/runOffsetprf_nstage.py @@ -40,16 +40,16 @@ logger = logging.getLogger('isce.insar.runOffsetprf') def runOffsetprf(self): from isceobj.Catalog import recordInputs, recordOutputs - masterFrame = self._insar.getMasterFrame() - slaveFrame = self._insar.getSlaveFrame() - masterOrbit = self._insar.getMasterOrbit() - slaveOrbit = self._insar.getSlaveOrbit() - prf1 = masterFrame.getInstrument().getPulseRepetitionFrequency() - prf2 = slaveFrame.getInstrument().getPulseRepetitionFrequency() + referenceFrame = self._insar.getReferenceFrame() + secondaryFrame = self._insar.getSecondaryFrame() + referenceOrbit = self._insar.getReferenceOrbit() + secondaryOrbit = self._insar.getSecondaryOrbit() + prf1 = referenceFrame.getInstrument().getPulseRepetitionFrequency() + prf2 = secondaryFrame.getInstrument().getPulseRepetitionFrequency() nearRange1 = self.insar.formSLC1.startingRange nearRange2 = self.insar.formSLC2.startingRange - fs1 = masterFrame.getInstrument().getRangeSamplingRate() - fs2 = slaveFrame.getInstrument().getRangeSamplingRate() + fs1 = referenceFrame.getInstrument().getRangeSamplingRate() + fs2 = secondaryFrame.getInstrument().getRangeSamplingRate() ###There seems to be no other way of determining image length - Piyush patchSize = self._insar.getPatchSize() @@ -98,23 +98,23 @@ def runOffsetprf(self): coarseAcross = 0 + coarseAcross coarseDown = 0 + coarseDown - mSlcImage = self._insar.getMasterSlcImage() + mSlcImage = self._insar.getReferenceSlcImage() mSlc = isceobj.createSlcImage() IU.copyAttributes(mSlcImage, mSlc) accessMode = 'read' mSlc.setAccessMode(accessMode) mSlc.createImage() - masterWidth = mSlc.getWidth() - masterLength = mSlc.getLength() + referenceWidth = mSlc.getWidth() + referenceLength = mSlc.getLength() - sSlcImage = self._insar.getSlaveSlcImage() + sSlcImage = self._insar.getSecondarySlcImage() sSlc = isceobj.createSlcImage() IU.copyAttributes(sSlcImage, sSlc) accessMode = 'read' sSlc.setAccessMode(accessMode) sSlc.createImage() - slaveWidth = sSlc.getWidth() - slaveLength = sSlc.getLength() + secondaryWidth = sSlc.getWidth() + secondaryLength = sSlc.getLength() nStageObj = NStage(name='insarapp_slcs_nstage') diff --git a/components/isceobj/InsarProc/runOrbit2sch.py b/components/isceobj/InsarProc/runOrbit2sch.py index a6eb973..4d91890 100755 --- a/components/isceobj/InsarProc/runOrbit2sch.py +++ b/components/isceobj/InsarProc/runOrbit2sch.py @@ -47,17 +47,17 @@ def runOrbit2sch(self): pegHavg = self.insar.averageHeight planet = self.insar.planet -# if self.pegSelect.upper() == 'MASTER': +# if self.pegSelect.upper() == 'REFERENCE': # pegHavg = self.insar.getFirstAverageHeight() -# elif self.pegSelect.upper() == 'SLAVE': +# elif self.pegSelect.upper() == 'SECONDARY': # pegHavg = self.insar.getSecondAverageHeight() # elif self.pegSelect.upper() == 'AVERAGE': # pegHavg = self.insar.averageHeight # else: # raise Exception('Unknown peg selection method: ', self.pegSelect) - masterOrbit = self.insar.masterOrbit - slaveOrbit = self.insar.slaveOrbit + referenceOrbit = self.insar.referenceOrbit + secondaryOrbit = self.insar.secondaryOrbit objOrbit2sch1 = stdproc.createOrbit2sch(averageHeight=pegHavg) objOrbit2sch1.stdWriter = self.stdWriter.set_file_tags("orbit2sch", @@ -67,10 +67,10 @@ def runOrbit2sch(self): objOrbit2sch2 = stdproc.createOrbit2sch(averageHeight=pegHavg) objOrbit2sch2.stdWriter = self.stdWriter - ## loop over master/slave orbits + ## loop over reference/secondary orbits for obj, orb, tag, order in zip((objOrbit2sch1, objOrbit2sch2), - (self.insar.masterOrbit, self.insar.slaveOrbit), - ('master', 'slave'), + (self.insar.referenceOrbit, self.insar.secondaryOrbit), + ('reference', 'secondary'), ('First', 'Second')): obj(planet=planet, orbit=orb, peg=peg) recordInputsAndOutputs(self.insar.procDoc, obj, @@ -78,7 +78,7 @@ def runOrbit2sch(self): logger, "runOrbit2sch." + tag) - #equivalent to self.insar.masterOrbit = + #equivalent to self.insar.referenceOrbit = setattr(self.insar,'%sOrbit'%(tag), obj.orbit) #Piyush diff --git a/components/isceobj/InsarProc/runPrepareResamps.py b/components/isceobj/InsarProc/runPrepareResamps.py index 8e3720f..9215e9e 100755 --- a/components/isceobj/InsarProc/runPrepareResamps.py +++ b/components/isceobj/InsarProc/runPrepareResamps.py @@ -36,11 +36,11 @@ logger = logging.getLogger('isce.insar.runPrepareResamps') def runPrepareResamps(self, rangeLooks=None, azLooks=None): import math - slaveOrbit = self.insar.slaveOrbit - masterFrame = self.insar.masterFrame + secondaryOrbit = self.insar.secondaryOrbit + referenceFrame = self.insar.referenceFrame peg = self.insar.peg - masterSlcImage = self.insar.masterSlcImage - time2, schPosition2, schVelocity2, offset2 = slaveOrbit._unpackOrbit() + referenceSlcImage = self.insar.referenceSlcImage + time2, schPosition2, schVelocity2, offset2 = secondaryOrbit._unpackOrbit() s2 = schPosition2[0][0] s2_2 = schPosition2[1][0] @@ -49,19 +49,19 @@ def runPrepareResamps(self, rangeLooks=None, azLooks=None): numPatches = self.insar.numberPatches lines = numPatches * valid_az_samples - fs = masterFrame.getInstrument().getRangeSamplingRate() + fs = referenceFrame.getInstrument().getRangeSamplingRate() dr = (SPEED_OF_LIGHT / (2 * fs)) self._insar.setSlantRangePixelSpacing(dr) -# widthSlc = max(self._insar.getMasterSlcImage().getWidth(), self._insar.getSlaveSlcImage().getWidth()) - widthSlc = self._insar.getMasterSlcImage().getWidth() +# widthSlc = max(self._insar.getReferenceSlcImage().getWidth(), self._insar.getSecondarySlcImage().getWidth()) + widthSlc = self._insar.getReferenceSlcImage().getWidth() - radarWavelength = masterFrame.getInstrument().getRadarWavelength() + radarWavelength = referenceFrame.getInstrument().getRadarWavelength() rc = peg.getRadiusOfCurvature() ht = self._insar.getAverageHeight() - r0 = masterFrame.getStartingRange() + r0 = referenceFrame.getStartingRange() range = r0 + (widthSlc / 2 * dr) diff --git a/components/isceobj/InsarProc/runPreprocessor.py b/components/isceobj/InsarProc/runPreprocessor.py index 455e9d7..fb06699 100755 --- a/components/isceobj/InsarProc/runPreprocessor.py +++ b/components/isceobj/InsarProc/runPreprocessor.py @@ -35,35 +35,35 @@ from isceobj.Util.decorators import use_api logger = logging.getLogger('isce.insar.runPreprocessor') @use_api def runPreprocessor(self): - master = make_raw(self.master, self.masterdop) - self.insar.rawMasterIQImage = master.iqImage - slave = make_raw(self.slave, self.slavedop) - self.insar.rawSlaveIQImage = slave.iqImage - self._insar.numberRangeBins = master.frame.numberRangeBins + reference = make_raw(self.reference, self.referencedop) + self.insar.rawReferenceIQImage = reference.iqImage + secondary = make_raw(self.secondary, self.secondarydop) + self.insar.rawSecondaryIQImage = secondary.iqImage + self._insar.numberRangeBins = reference.frame.numberRangeBins #add raw images to main object - masterRaw = initRawImage(master) - self._insar.setMasterRawImage(masterRaw) - slaveRaw = initRawImage(slave) - self._insar.setSlaveRawImage(slaveRaw) + referenceRaw = initRawImage(reference) + self._insar.setReferenceRawImage(referenceRaw) + secondaryRaw = initRawImage(secondary) + self._insar.setSecondaryRawImage(secondaryRaw) #add frames to main object - self._insar.setMasterFrame(master.frame) - self._insar.setSlaveFrame(slave.frame) + self._insar.setReferenceFrame(reference.frame) + self._insar.setSecondaryFrame(secondary.frame) #add doppler to main object - self._insar.setMasterDoppler(master.getDopplerValues()) - self._insar.setSlaveDoppler(slave.getDopplerValues()) + self._insar.setReferenceDoppler(reference.getDopplerValues()) + self._insar.setSecondaryDoppler(secondary.getDopplerValues()) #add squints to main object - self._insar.setMasterSquint(master.getSquint()) - self._insar.setSlaveSquint(slave.getSquint()) + self._insar.setReferenceSquint(reference.getSquint()) + self._insar.setSecondarySquint(secondary.getSquint()) #add look direction - self._insar.setLookSide(master.frame.getInstrument().getPlatform().pointingDirection) + self._insar.setLookSide(reference.frame.getInstrument().getPlatform().pointingDirection) catalog = isceobj.Catalog.createCatalog(self._insar.procDoc.name) - frame = self._insar.getMasterFrame() + frame = self._insar.getReferenceFrame() instrument = frame.getInstrument() platform = instrument.getPlatform() @@ -71,43 +71,43 @@ def runPreprocessor(self): catalog.addInputsFrom(planet, 'planet') catalog.addInputsFrom(planet.get_elp(), 'planet.ellipsoid') - catalog.addInputsFrom(master.sensor, 'master.sensor') - catalog.addItem('width', masterRaw.getWidth(), 'master') - catalog.addItem('xmin', masterRaw.getXmin(), 'master') - catalog.addItem('iBias', instrument.getInPhaseValue(), 'master') - catalog.addItem('qBias', instrument.getQuadratureValue(), 'master') - catalog.addItem('range_sampling_rate', instrument.getRangeSamplingRate(), 'master') - catalog.addItem('prf', instrument.getPulseRepetitionFrequency(), 'master') - catalog.addItem('pri', 1.0/instrument.getPulseRepetitionFrequency(), 'master') - catalog.addItem('pulse_length', instrument.getPulseLength(), 'master') - catalog.addItem('chirp_slope', instrument.getChirpSlope(), 'master') - catalog.addItem('wavelength', instrument.getRadarWavelength(), 'master') - catalog.addItem('lookSide', platform.pointingDirection, 'master') - catalog.addInputsFrom(frame, 'master.frame') - catalog.addInputsFrom(instrument, 'master.instrument') - catalog.addInputsFrom(platform, 'master.platform') - catalog.addInputsFrom(frame.orbit, 'master.orbit') + catalog.addInputsFrom(reference.sensor, 'reference.sensor') + catalog.addItem('width', referenceRaw.getWidth(), 'reference') + catalog.addItem('xmin', referenceRaw.getXmin(), 'reference') + catalog.addItem('iBias', instrument.getInPhaseValue(), 'reference') + catalog.addItem('qBias', instrument.getQuadratureValue(), 'reference') + catalog.addItem('range_sampling_rate', instrument.getRangeSamplingRate(), 'reference') + catalog.addItem('prf', instrument.getPulseRepetitionFrequency(), 'reference') + catalog.addItem('pri', 1.0/instrument.getPulseRepetitionFrequency(), 'reference') + catalog.addItem('pulse_length', instrument.getPulseLength(), 'reference') + catalog.addItem('chirp_slope', instrument.getChirpSlope(), 'reference') + catalog.addItem('wavelength', instrument.getRadarWavelength(), 'reference') + catalog.addItem('lookSide', platform.pointingDirection, 'reference') + catalog.addInputsFrom(frame, 'reference.frame') + catalog.addInputsFrom(instrument, 'reference.instrument') + catalog.addInputsFrom(platform, 'reference.platform') + catalog.addInputsFrom(frame.orbit, 'reference.orbit') - frame = self._insar.getSlaveFrame() + frame = self._insar.getSecondaryFrame() instrument = frame.getInstrument() platform = instrument.getPlatform() - catalog.addInputsFrom(slave.sensor, 'slave.sensor') - catalog.addItem('width', slaveRaw.getWidth(), 'slave') - catalog.addItem('xmin', slaveRaw.getXmin(), 'slave') - catalog.addItem('iBias', instrument.getInPhaseValue(), 'slave') - catalog.addItem('qBias', instrument.getQuadratureValue(), 'slave') - catalog.addItem('range_sampling_rate', instrument.getRangeSamplingRate(), 'slave') - catalog.addItem('prf', instrument.getPulseRepetitionFrequency(), 'slave') - catalog.addItem('pri', 1.0/instrument.getPulseRepetitionFrequency(), 'slave') - catalog.addItem('pulse_length', instrument.getPulseLength(), 'slave') - catalog.addItem('chirp_slope', instrument.getChirpSlope(), 'slave') - catalog.addItem('wavelength', instrument.getRadarWavelength(), 'slave') - catalog.addItem('lookSide', platform.pointingDirection, 'slave') - catalog.addInputsFrom(frame, 'slave.frame') - catalog.addInputsFrom(instrument, 'slave.instrument') - catalog.addInputsFrom(platform, 'slave.platform') - catalog.addInputsFrom(frame.orbit, 'slave.orbit') + catalog.addInputsFrom(secondary.sensor, 'secondary.sensor') + catalog.addItem('width', secondaryRaw.getWidth(), 'secondary') + catalog.addItem('xmin', secondaryRaw.getXmin(), 'secondary') + catalog.addItem('iBias', instrument.getInPhaseValue(), 'secondary') + catalog.addItem('qBias', instrument.getQuadratureValue(), 'secondary') + catalog.addItem('range_sampling_rate', instrument.getRangeSamplingRate(), 'secondary') + catalog.addItem('prf', instrument.getPulseRepetitionFrequency(), 'secondary') + catalog.addItem('pri', 1.0/instrument.getPulseRepetitionFrequency(), 'secondary') + catalog.addItem('pulse_length', instrument.getPulseLength(), 'secondary') + catalog.addItem('chirp_slope', instrument.getChirpSlope(), 'secondary') + catalog.addItem('wavelength', instrument.getRadarWavelength(), 'secondary') + catalog.addItem('lookSide', platform.pointingDirection, 'secondary') + catalog.addInputsFrom(frame, 'secondary.frame') + catalog.addInputsFrom(instrument, 'secondary.instrument') + catalog.addInputsFrom(platform, 'secondary.platform') + catalog.addInputsFrom(frame.orbit, 'secondary.orbit') optlist = ['all', 'top', 'middle', 'bottom'] @@ -118,8 +118,8 @@ def runPreprocessor(self): baseObj = Baseline() baseObj.configure() baseObj.baselineLocation = option - baseObj.wireInputPort(name='masterFrame',object=self._insar.getMasterFrame()) - baseObj.wireInputPort(name='slaveFrame',object=self._insar.getSlaveFrame()) + baseObj.wireInputPort(name='referenceFrame',object=self._insar.getReferenceFrame()) + baseObj.wireInputPort(name='secondaryFrame',object=self._insar.getSecondaryFrame()) try: baseObj.baseline() success=True diff --git a/components/isceobj/InsarProc/runPulseTiming.py b/components/isceobj/InsarProc/runPulseTiming.py index ed219f8..2d99f04 100755 --- a/components/isceobj/InsarProc/runPulseTiming.py +++ b/components/isceobj/InsarProc/runPulseTiming.py @@ -35,11 +35,11 @@ from isceobj.Orbit.Orbit import Orbit logger = logging.getLogger('isce.insar.runPulseTiming') def runPulseTiming(self): - master = self.insar.masterFrame - slave = self.insar.slaveFrame + reference = self.insar.referenceFrame + secondary = self.insar.secondaryFrame # add orbits to main object -law of demeter pls. - self.insar.masterOrbit = pulseTiming(master, self.insar.procDoc, 'master') - self.insar.slaveOrbit = pulseTiming(slave, self.insar.procDoc, 'slave') + self.insar.referenceOrbit = pulseTiming(reference, self.insar.procDoc, 'reference') + self.insar.secondaryOrbit = pulseTiming(secondary, self.insar.procDoc, 'secondary') return None def pulseTiming(frame, catalog, which): diff --git a/components/isceobj/InsarProc/runResamp.py b/components/isceobj/InsarProc/runResamp.py index f5ad2dc..b61235f 100755 --- a/components/isceobj/InsarProc/runResamp.py +++ b/components/isceobj/InsarProc/runResamp.py @@ -38,8 +38,8 @@ logger = logging.getLogger('isce.insar.runResamp') def runResamp(self): logger.info("Resampling interferogram") - imageSlc1 = self.insar.masterSlcImage - imageSlc2 = self.insar.slaveSlcImage + imageSlc1 = self.insar.referenceSlcImage + imageSlc2 = self.insar.secondarySlcImage resampName = self.insar.resampImageName @@ -86,21 +86,21 @@ def runResamp(self): self.insar.resampAmpImage = imageAmp - instrument = self.insar.masterFrame.getInstrument() + instrument = self.insar.referenceFrame.getInstrument() offsetField = self.insar.refinedOffsetField lines = self.insar.numberResampLines - ####Modified to deal with slave PRF correctly + ####Modified to deal with secondary PRF correctly dopplerCoeff = self.insar.dopplerCentroid.getDopplerCoefficients(inHz=True) for num in range(len(dopplerCoeff)): - dopplerCoeff[num] /= self.insar.slaveFrame.getInstrument().getPulseRepetitionFrequency() + dopplerCoeff[num] /= self.insar.secondaryFrame.getInstrument().getPulseRepetitionFrequency() numFitCoeff = self.insar.numberFitCoefficients # pixelSpacing = self.insar.slantRangePixelSpacing - fS = self._insar.getSlaveFrame().getInstrument().getRangeSamplingRate() + fS = self._insar.getSecondaryFrame().getInstrument().getRangeSamplingRate() pixelSpacing = CN.SPEED_OF_LIGHT/(2.*fS) objResamp = stdproc.createResamp() diff --git a/components/isceobj/InsarProc/runResamp_image.py b/components/isceobj/InsarProc/runResamp_image.py index fa03d11..c4ec89c 100755 --- a/components/isceobj/InsarProc/runResamp_image.py +++ b/components/isceobj/InsarProc/runResamp_image.py @@ -37,11 +37,11 @@ from iscesys.ImageUtil.ImageUtil import ImageUtil as IU logger = logging.getLogger('isce.insar.runResamp_image') def runResamp_image(self): - imageSlc = self._insar.getMasterSlcImage() - widthSlc = max(self._insar.getMasterSlcImage().getWidth(), self._insar.getSlaveSlcImage().getWidth()) + imageSlc = self._insar.getReferenceSlcImage() + widthSlc = max(self._insar.getReferenceSlcImage().getWidth(), self._insar.getSecondarySlcImage().getWidth()) offsetField = self._insar.getRefinedOffsetField() - instrument = self._insar.getMasterFrame().getInstrument() + instrument = self._insar.getReferenceFrame().getInstrument() dopplerCoeff = self._insar.getDopplerCentroid().getDopplerCoefficients(inHz=False) diff --git a/components/isceobj/InsarProc/runResamp_only.py b/components/isceobj/InsarProc/runResamp_only.py index 05d1bb0..16e8e95 100755 --- a/components/isceobj/InsarProc/runResamp_only.py +++ b/components/isceobj/InsarProc/runResamp_only.py @@ -69,7 +69,7 @@ def runResamp_only(self): numRangeBin = objInt.getWidth() lines = objInt.getLength() - instrument = self._insar.getMasterFrame().getInstrument() + instrument = self._insar.getReferenceFrame().getInstrument() offsetField = self._insar.getRefinedOffsetField() diff --git a/components/isceobj/InsarProc/runRgoffset.py b/components/isceobj/InsarProc/runRgoffset.py index 66b5cf7..4994b4d 100755 --- a/components/isceobj/InsarProc/runRgoffset.py +++ b/components/isceobj/InsarProc/runRgoffset.py @@ -106,7 +106,7 @@ def runRgoffset(self): self._stdWriter.setFileTag("rgoffset", "err") self._stdWriter.setFileTag("rgoffset", "out") objOffset.setStdWriter(self._stdWriter) - prf = self._insar.getMasterFrame().getInstrument().getPulseRepetitionFrequency() + prf = self._insar.getReferenceFrame().getInstrument().getPulseRepetitionFrequency() objOffset.setFirstPRF(prf) objOffset.setSecondPRF(prf) diff --git a/components/isceobj/InsarProc/runRgoffset_ampcor.py b/components/isceobj/InsarProc/runRgoffset_ampcor.py index 9ef55b9..dbec387 100755 --- a/components/isceobj/InsarProc/runRgoffset_ampcor.py +++ b/components/isceobj/InsarProc/runRgoffset_ampcor.py @@ -66,7 +66,7 @@ def runRgoffset(self): simWidth = imageSim.getWidth() simLength = imageSim.getLength() - fs1 = self._insar.getMasterFrame().getInstrument().getRangeSamplingRate() ##check + fs1 = self._insar.getReferenceFrame().getInstrument().getRangeSamplingRate() ##check delRg1 = CN.SPEED_OF_LIGHT / (2*fs1) ## if it's correct objAmpcor = Ampcor(name='insarapp_intsim_ampcor') @@ -117,7 +117,7 @@ def runRgoffset(self): self._stdWriter.setFileTag("rgoffset", "err") self._stdWriter.setFileTag("rgoffset", "out") objAmpcor.setStdWriter(self._stdWriter) - prf = self._insar.getMasterFrame().getInstrument().getPulseRepetitionFrequency() + prf = self._insar.getReferenceFrame().getInstrument().getPulseRepetitionFrequency() objAmpcor.setFirstPRF(prf) diff --git a/components/isceobj/InsarProc/runRgoffset_nstage.py b/components/isceobj/InsarProc/runRgoffset_nstage.py index 807b91f..b5763b0 100755 --- a/components/isceobj/InsarProc/runRgoffset_nstage.py +++ b/components/isceobj/InsarProc/runRgoffset_nstage.py @@ -47,25 +47,25 @@ def runRgoffset(self): firstDn = self._insar.getFirstSampleDown() ampImage = self._insar.getResampAmpImage() - slaveWidth = ampImage.getWidth() - slaveLength = ampImage.getLength() + secondaryWidth = ampImage.getWidth() + secondaryLength = ampImage.getLength() objAmp = isceobj.createSlcImage() objAmp.dataType = 'CFLOAT' objAmp.bands = 1 objAmp.setFilename(ampImage.getFilename()) objAmp.setAccessMode('read') - objAmp.setWidth(slaveWidth) + objAmp.setWidth(secondaryWidth) objAmp.createImage() simImage = self._insar.getSimAmpImage() - masterWidth = simImage.getWidth() + referenceWidth = simImage.getWidth() objSim = isceobj.createImage() objSim.setFilename(simImage.getFilename()) objSim.dataType = 'FLOAT' - objSim.setWidth(masterWidth) + objSim.setWidth(referenceWidth) objSim.setAccessMode('read') objSim.createImage() - masterLength = simImage.getLength() + referenceLength = simImage.getLength() nStageObj = NStage(name='insarapp_intsim_nstage') diff --git a/components/isceobj/InsarProc/runSetmocomppath.py b/components/isceobj/InsarProc/runSetmocomppath.py index 29ac426..c191b99 100755 --- a/components/isceobj/InsarProc/runSetmocomppath.py +++ b/components/isceobj/InsarProc/runSetmocomppath.py @@ -60,28 +60,28 @@ def runSetmocomppath(self, peg=None): logger.info("Selecting individual peg points") - planet = self._insar.getMasterFrame().getInstrument().getPlatform().getPlanet() - masterOrbit = self._insar.getMasterOrbit() - slaveOrbit = self._insar.getSlaveOrbit() + planet = self._insar.getReferenceFrame().getInstrument().getPlatform().getPlanet() + referenceOrbit = self._insar.getReferenceOrbit() + secondaryOrbit = self._insar.getSecondaryOrbit() if peg: self._insar.setPeg(peg) logger.info("Using the given peg = %r", peg) self._insar.setFirstAverageHeight( - averageHeightAboveElp(planet, peg, masterOrbit)) + averageHeightAboveElp(planet, peg, referenceOrbit)) self._insar.setSecondAverageHeight( - averageHeightAboveElp(planet, peg, slaveOrbit)) + averageHeightAboveElp(planet, peg, secondaryOrbit)) self._insar.setFirstProcVelocity( - sVelocityAtMidOrbit(planet, peg, masterOrbit)) + sVelocityAtMidOrbit(planet, peg, referenceOrbit)) self._insar.setSecondProcVelocity( - sVelocityAtMidOrbit(planet, peg, slaveOrbit)) + sVelocityAtMidOrbit(planet, peg, secondaryOrbit)) return pegpts = [] - for orbitObj, order in zip((masterOrbit, slaveOrbit) + for orbitObj, order in zip((referenceOrbit, secondaryOrbit) ,('First', 'Second')): objGetpeg = stdproc.createGetpeg() if peg: @@ -109,11 +109,11 @@ def runSetmocomppath(self, peg=None): logger.info('Combining individual peg points.') peg = averagePeg(pegpts, planet) - if self.pegSelect.upper() == 'MASTER': - logger.info('Using master info for peg point') + if self.pegSelect.upper() == 'REFERENCE': + logger.info('Using reference info for peg point') self._insar.setPeg(pegpts[0]) - elif self.pegSelect.upper() == 'SLAVE': - logger.info('Using slave infor for peg point') + elif self.pegSelect.upper() == 'SECONDARY': + logger.info('Using secondary infor for peg point') self._insar.setPeg(pegpts[1]) elif self.pegSelect.upper() == 'AVERAGE': logger.info('Using average peg point') diff --git a/components/isceobj/InsarProc/runSetmocomppathFromFrame.py b/components/isceobj/InsarProc/runSetmocomppathFromFrame.py index 63b34a9..da1effe 100755 --- a/components/isceobj/InsarProc/runSetmocomppathFromFrame.py +++ b/components/isceobj/InsarProc/runSetmocomppathFromFrame.py @@ -63,22 +63,22 @@ def runSetmocomppath(self, peg=None): """ planet = ( - self._insar.getMasterFrame().getInstrument().getPlatform().getPlanet()) - masterOrbit = self._insar.getMasterOrbit() - slaveOrbit = self._insar.getSlaveOrbit() + self._insar.getReferenceFrame().getInstrument().getPlatform().getPlanet()) + referenceOrbit = self._insar.getReferenceOrbit() + secondaryOrbit = self._insar.getSecondaryOrbit() if peg: #If the input peg is set, then use it self._insar.setPeg(peg) logger.info("Using the given peg = %r", peg) self._insar.setFirstAverageHeight( - averageHeightAboveElp(planet, peg, masterOrbit)) + averageHeightAboveElp(planet, peg, referenceOrbit)) self._insar.setSecondAverageHeight( - averageHeightAboveElp(planet, peg, slaveOrbit)) + averageHeightAboveElp(planet, peg, secondaryOrbit)) self._insar.setFirstProcVelocity( - sVelocityAtMidOrbit(planet, peg, masterOrbit)) + sVelocityAtMidOrbit(planet, peg, referenceOrbit)) self._insar.setSecondProcVelocity( - sVelocityAtMidOrbit(planet, peg, slaveOrbit)) + sVelocityAtMidOrbit(planet, peg, secondaryOrbit)) # recordInputsAndOutputs(self._insar.procDoc, peg, "peg", # logger, "runSetmocomppath") return @@ -86,17 +86,17 @@ def runSetmocomppath(self, peg=None): logger.info("Selecting peg points from frames") pegpts = [] - pegpts.append(self._insar.getMasterFrame().peg) - pegpts.append(self._insar.getMasterFrame().peg) + pegpts.append(self._insar.getReferenceFrame().peg) + pegpts.append(self._insar.getReferenceFrame().peg) peg = averagePeg(pegpts, planet) self._insar.setPeg(peg) self._insar.setFirstAverageHeight( - self._insar.getMasterFrame().platformHeight) + self._insar.getReferenceFrame().platformHeight) self._insar.setSecondAverageHeight( - self._insar.getSlaveFrame().platformHeight) + self._insar.getSecondaryFrame().platformHeight) self._insar.setFirstProcVelocity( - self._insar.getMasterFrame().procVelocity) + self._insar.getReferenceFrame().procVelocity) self._insar.setSecondProcVelocity( - self._insar.getSlaveFrame().procVelocity) + self._insar.getSecondaryFrame().procVelocity) diff --git a/components/isceobj/InsarProc/runTopo.py b/components/isceobj/InsarProc/runTopo.py index 77e037a..b79aae7 100755 --- a/components/isceobj/InsarProc/runTopo.py +++ b/components/isceobj/InsarProc/runTopo.py @@ -61,16 +61,16 @@ def runTopo(self): - planet = self.insar.masterFrame.getInstrument().getPlatform().getPlanet() - prf1 = self.insar.masterFrame.getInstrument().getPulseRepetitionFrequency() + planet = self.insar.referenceFrame.getInstrument().getPlatform().getPlanet() + prf1 = self.insar.referenceFrame.getInstrument().getPulseRepetitionFrequency() objTopo = stdproc.createTopo() objTopo.wireInputPort(name='peg', object=self.insar.peg) - objTopo.wireInputPort(name='frame', object=self.insar.masterFrame) + objTopo.wireInputPort(name='frame', object=self.insar.referenceFrame) objTopo.wireInputPort(name='planet', object=planet) objTopo.wireInputPort(name='dem', object=objDem) objTopo.wireInputPort(name='interferogram', object=intImage) - objTopo.wireInputPort(name='masterslc', object = self.insar.formSLC1) #Piyush + objTopo.wireInputPort(name='referenceslc', object = self.insar.formSLC1) #Piyush centroid = self.insar.dopplerCentroid.getDopplerCoefficients(inHz=False)[0] objTopo.setDopplerCentroidConstantTerm(centroid) diff --git a/components/isceobj/InsarProc/runUnwrapSnaphu.py b/components/isceobj/InsarProc/runUnwrapSnaphu.py index 5aa4005..cf93afb 100755 --- a/components/isceobj/InsarProc/runUnwrapSnaphu.py +++ b/components/isceobj/InsarProc/runUnwrapSnaphu.py @@ -50,7 +50,7 @@ def runUnwrap(self,costMode = None,initMethod = None, defomax = None, initOnly = wrapName = self.insar.topophaseFlatFilename unwrapName = self.insar.unwrappedIntFilename - wavelength = self.insar.masterFrame.getInstrument().getRadarWavelength() + wavelength = self.insar.referenceFrame.getInstrument().getRadarWavelength() width = self.insar.resampIntImage.width earthRadius = self.insar.peg.radiusOfCurvature altitude = self.insar.averageHeight @@ -58,10 +58,10 @@ def runUnwrap(self,costMode = None,initMethod = None, defomax = None, initOnly = rangeLooks = self.insar.topo.numberRangeLooks azimuthLooks = self.insar.topo.numberAzimuthLooks - azres = self.insar.masterFrame.platform.antennaLength/2.0 + azres = self.insar.referenceFrame.platform.antennaLength/2.0 azfact = self.insar.topo.numberAzimuthLooks *azres / self.insar.topo.azimuthSpacing - rBW = self.insar.masterFrame.instrument.pulseLength * self.insar.masterFrame.instrument.chirpSlope + rBW = self.insar.referenceFrame.instrument.pulseLength * self.insar.referenceFrame.instrument.chirpSlope rgres = abs(SPEED_OF_LIGHT / (2.0 * rBW)) rngfact = rgres/self.insar.topo.slantRangePixelSpacing diff --git a/components/isceobj/InsarProc/runUpdatePreprocInfo.py b/components/isceobj/InsarProc/runUpdatePreprocInfo.py index 6095c6e..5c782a7 100755 --- a/components/isceobj/InsarProc/runUpdatePreprocInfo.py +++ b/components/isceobj/InsarProc/runUpdatePreprocInfo.py @@ -33,17 +33,17 @@ def runUpdatePreprocInfo(self, use_dop="average"): peg = self.insar.peg pegRc = peg.radiusOfCurvature - masterFrame = self.insar.masterFrame - slaveFrame = self.insar.slaveFrame - prf1 = masterFrame.getInstrument().getPulseRepetitionFrequency() - prf2 = slaveFrame.getInstrument().getPulseRepetitionFrequency() - masterDoppler = self.insar.masterDoppler - slaveDoppler = self.insar.slaveDoppler + referenceFrame = self.insar.referenceFrame + secondaryFrame = self.insar.secondaryFrame + prf1 = referenceFrame.getInstrument().getPulseRepetitionFrequency() + prf2 = secondaryFrame.getInstrument().getPulseRepetitionFrequency() + referenceDoppler = self.insar.referenceDoppler + secondaryDoppler = self.insar.secondaryDoppler ## red flag. fd = runFdMocomp(self, use_dop=use_dop) - averageDoppler = masterDoppler.average(slaveDoppler) + averageDoppler = referenceDoppler.average(secondaryDoppler) averageDoppler.fractionalCentroid = fd self.insar.dopplerCentroid =averageDoppler return None diff --git a/components/isceobj/IsceProc/IsceProc.py b/components/isceobj/IsceProc/IsceProc.py index 9a9aa01..a1f201a 100755 --- a/components/isceobj/IsceProc/IsceProc.py +++ b/components/isceobj/IsceProc/IsceProc.py @@ -417,7 +417,7 @@ class IsceProc(Component, FrameMixin): -## Why this: the code bloat with master this and slave that indicates the +## Why this: the code bloat with reference this and secondary that indicates the ## design princple does not use composition, this is an attempt to ## fix that class RadarSwath(object): diff --git a/components/isceobj/IsceProc/runCorrect.py b/components/isceobj/IsceProc/runCorrect.py index 13f64fb..7c057ad 100755 --- a/components/isceobj/IsceProc/runCorrect.py +++ b/components/isceobj/IsceProc/runCorrect.py @@ -93,7 +93,7 @@ def run(frame1, objFormSLC1, objMocompbaseline, intImage, velocity, height, info objCorrect.wireInputPort(name='frame', object=frame1) objCorrect.wireInputPort(name='planet', object=planet) objCorrect.wireInputPort(name='interferogram', object=intImage) - objCorrect.wireInputPort(name='masterslc', object=objFormSLC1) #Piyush + objCorrect.wireInputPort(name='referenceslc', object=objFormSLC1) #Piyush #objCorrect.setDopplerCentroidConstantTerm(centroid) #ML 2014-08-05 # Average velocity and height measurements objCorrect.setBodyFixedVelocity(velocity) diff --git a/components/isceobj/IsceProc/runGeocode.py b/components/isceobj/IsceProc/runGeocode.py index 5dd285a..8a94fc3 100755 --- a/components/isceobj/IsceProc/runGeocode.py +++ b/components/isceobj/IsceProc/runGeocode.py @@ -152,7 +152,7 @@ def run(tobeGeocoded, frame1, formSLC1, velocity, height, snwe, infos, catalog=N IU.copyAttributes(infos['demImage'], demImage) objGeo(peg=infos['peg'], frame=frame1, planet=planet, dem=demImage, tobegeocoded=inImage, - geoPosting=None, masterslc=formSLC1) + geoPosting=None, referenceslc=formSLC1) if catalog is not None: isceobj.Catalog.recordInputsAndOutputs(catalog, objGeo, diff --git a/components/isceobj/IsceProc/runMocompbaseline.py b/components/isceobj/IsceProc/runMocompbaseline.py index cfc17f3..27a84dc 100755 --- a/components/isceobj/IsceProc/runMocompbaseline.py +++ b/components/isceobj/IsceProc/runMocompbaseline.py @@ -77,8 +77,8 @@ def run(objFormSlc1, objFormSlc2, orbit1, orbit2, ellipsoid, averageHeight, peg, objMocompbaseline.setMocompPosition2(mocompPosition2[posIndx]) objMocompbaseline.setMocompPositionIndex2(mocompIndex2) - objMocompbaseline.wireInputPort(name='masterOrbit', object=orbit1) - objMocompbaseline.wireInputPort(name='slaveOrbit', object=orbit2) + objMocompbaseline.wireInputPort(name='referenceOrbit', object=orbit1) + objMocompbaseline.wireInputPort(name='secondaryOrbit', object=orbit2) objMocompbaseline.wireInputPort(name='ellipsoid', object=ellipsoid) objMocompbaseline.wireInputPort(name='peg', object=peg) objMocompbaseline.setHeight(averageHeight) diff --git a/components/isceobj/IsceProc/runOffsetprf_nstage.py b/components/isceobj/IsceProc/runOffsetprf_nstage.py index 5487e12..06c5d5c 100755 --- a/components/isceobj/IsceProc/runOffsetprf_nstage.py +++ b/components/isceobj/IsceProc/runOffsetprf_nstage.py @@ -115,16 +115,16 @@ def run(frame1, frame2, formSlc1, formSlc2, imSlc1, imSlc2, nstages, scale, info accessMode = 'read' mSlc.setAccessMode(accessMode) mSlc.createImage() - masterWidth = mSlc.getWidth() - masterLength = mSlc.getLength() + referenceWidth = mSlc.getWidth() + referenceLength = mSlc.getLength() sSlc = isceobj.createSlcImage() IU.copyAttributes(imSlc2, sSlc) accessMode = 'read' sSlc.setAccessMode(accessMode) sSlc.createImage() - slaveWidth = sSlc.getWidth() - slaveLength = sSlc.getLength() + secondaryWidth = sSlc.getWidth() + secondaryLength = sSlc.getLength() finalIteration = False for iterNum in xrange(nstages-1,-1,-1): @@ -166,14 +166,14 @@ def run(frame1, frame2, formSlc1, formSlc2, imSlc1, imSlc2, nstages, scale, info offAc = max(firstAc,-coarseAcross)+xMargin offDn = max(firstDown,-coarseDown)+yMargin - offAcmax = int(coarseAcross + ((fs2/fs1)-1)*masterWidth) + offAcmax = int(coarseAcross + ((fs2/fs1)-1)*referenceWidth) logger.debug("Gross Max Across: %s" % (offAcmax)) - lastAc = int(min(masterWidth, slaveWidth-offAcmax) - xMargin) + lastAc = int(min(referenceWidth, secondaryWidth-offAcmax) - xMargin) - offDnmax = int(coarseDown + ((prf2/prf1)-1)*masterLength) + offDnmax = int(coarseDown + ((prf2/prf1)-1)*referenceLength) logger.debug("Gross Max Down: %s" % (offDnmax)) - lastDn = int(min(masterLength, slaveLength-offDnmax) - yMargin) + lastDn = int(min(referenceLength, secondaryLength-offDnmax) - yMargin) objAmpcor.setFirstSampleAcross(offAc) objAmpcor.setLastSampleAcross(lastAc) @@ -190,8 +190,8 @@ def run(frame1, frame2, formSlc1, formSlc2, imSlc1, imSlc2, nstages, scale, info logger.debug('Looks = %d'%scaleFactor) logger.debug('Correlation window sizes: %d %d'%(objAmpcor.windowSizeWidth, objAmpcor.windowSizeHeight)) logger.debug('Search window sizes: %d %d'%(objAmpcor.searchWindowSizeWidth, objAmpcor.searchWindowSizeHeight)) - logger.debug(' Across pos: %d %d out of (%d,%d)'%(objAmpcor.firstSampleAcross, objAmpcor.lastSampleAcross, masterWidth, slaveWidth)) - logger.debug(' Down pos: %d %d out of (%d,%d)'%(objAmpcor.firstSampleDown, objAmpcor.lastSampleDown, masterLength, slaveLength)) + logger.debug(' Across pos: %d %d out of (%d,%d)'%(objAmpcor.firstSampleAcross, objAmpcor.lastSampleAcross, referenceWidth, secondaryWidth)) + logger.debug(' Down pos: %d %d out of (%d,%d)'%(objAmpcor.firstSampleDown, objAmpcor.lastSampleDown, referenceLength, secondaryLength)) if (iterNum == 0) or finalIteration: if catalog is not None: # Record the inputs diff --git a/components/isceobj/IsceProc/runPreprocessor.py b/components/isceobj/IsceProc/runPreprocessor.py index a3bb623..bedda64 100755 --- a/components/isceobj/IsceProc/runPreprocessor.py +++ b/components/isceobj/IsceProc/runPreprocessor.py @@ -59,9 +59,9 @@ def runPreprocessor(self): if not 'uavsar_rpi' in sensorname.lower(): sensor = getsensorobj(scene, pol, rawfile, sensorname, sceneid) else: - #uavsar_rpi requires that we name a 'master' and a 'slave' + #uavsar_rpi requires that we name a 'reference' and a 'secondary' #this sensor is strictly pairwise processing - name = 'master' if sceneid == self._isce.refScene else 'slave' + name = 'reference' if sceneid == self._isce.refScene else 'secondary' sensor = getsensorobj(scene, pol, rawfile, sensorname, name) catalog = isceobj.Catalog.createCatalog(self._isce.procDoc.name) @@ -114,8 +114,8 @@ def getBaseline(frame1, frame2, catalog=None, sceneid='NO_ID'): baseObj = Baseline() baseObj.configure() baseObj.baselineLocation = option - baseObj.wireInputPort(name='masterFrame',object=frame1) - baseObj.wireInputPort(name='slaveFrame',object=frame2) + baseObj.wireInputPort(name='referenceFrame',object=frame1) + baseObj.wireInputPort(name='secondaryFrame',object=frame2) try: baseObj.baseline() success = True diff --git a/components/isceobj/IsceProc/runRgoffset.py b/components/isceobj/IsceProc/runRgoffset.py index 4478b83..358a040 100755 --- a/components/isceobj/IsceProc/runRgoffset.py +++ b/components/isceobj/IsceProc/runRgoffset.py @@ -168,7 +168,7 @@ def run(imageAmp, imageSim, prf, infos, stdWriter, catalog=None, sceneid='NO_ID' ##self._stdWriter.setFileTag("rgoffset", "err") ##self._stdWriter.setFileTag("rgoffset", "out") ##objOffset.setStdWriter(self._stdWriter) - ##prf = self._insar.getMasterFrame().getInstrument().getPulseRepetitionFrequency() + ##prf = self._insar.getReferenceFrame().getInstrument().getPulseRepetitionFrequency() objOffset.setFirstPRF(prf) objOffset.setSecondPRF(prf) diff --git a/components/isceobj/IsceProc/runRgoffset_nstage.py b/components/isceobj/IsceProc/runRgoffset_nstage.py index f8e54a1..a90a128 100755 --- a/components/isceobj/IsceProc/runRgoffset_nstage.py +++ b/components/isceobj/IsceProc/runRgoffset_nstage.py @@ -93,24 +93,24 @@ def run(imageAmp, imageSim, numBand, infos, nstages, scale, stdWriter, catalog=N numLocationAcross = infos['numberLocationAcross'] numLocationDown = infos['numberLocationDown'] - slaveWidth = imageAmp.getWidth() - slaveLength = imageAmp.getLength() + secondaryWidth = imageAmp.getWidth() + secondaryLength = imageAmp.getLength() objAmp = isceobj.createSlcImage() objAmp.dataType = 'CFLOAT' objAmp.bands = 1 objAmp.setFilename(imageAmp.getFilename()) objAmp.setAccessMode('read') - objAmp.setWidth(slaveWidth) + objAmp.setWidth(secondaryWidth) objAmp.createImage() - masterWidth = imageSim.getWidth() + referenceWidth = imageSim.getWidth() objSim = isceobj.createImage() objSim.setFilename(imageSim.getFilename()) objSim.dataType = 'FLOAT' - objSim.setWidth(masterWidth) + objSim.setWidth(referenceWidth) objSim.setAccessMode('read') objSim.createImage() - masterLength = imageSim.getLength() + referenceLength = imageSim.getLength() finalIteration = False for iterNum in xrange(nstages-1,-1,-1): @@ -157,12 +157,12 @@ def run(imageAmp, imageSim, numBand, infos, nstages, scale, stdWriter, catalog=N offAcmax = int(coarseAcross) logger.debug("Gross Max Across: %s" % (offAcmax)) - lastAc = int(min(masterWidth, slaveWidth-offAcmax) - xMargin) + lastAc = int(min(referenceWidth, secondaryWidth-offAcmax) - xMargin) offDnmax = int(coarseDown) logger.debug("Gross Max Down: %s" % (offDnmax)) - lastDn = int(min(masterLength, slaveLength-offDnmax) - yMargin) + lastDn = int(min(referenceLength, secondaryLength-offDnmax) - yMargin) logger.debug("Last Down: %s" %(lastDn)) objAmpcor.setFirstSampleAcross(offAc) objAmpcor.setLastSampleAcross(lastAc) @@ -184,8 +184,8 @@ def run(imageAmp, imageSim, numBand, infos, nstages, scale, stdWriter, catalog=N logger.debug('Looks = %d'%scaleFactor) logger.debug('Correlation window sizes: %d %d'%(objAmpcor.windowSizeWidth, objAmpcor.windowSizeHeight)) logger.debug('Search window sizes: %d %d'%(objAmpcor.searchWindowSizeWidth, objAmpcor.searchWindowSizeHeight)) - logger.debug(' Across pos: %d %d out of (%d,%d)'%(objAmpcor.firstSampleAcross, objAmpcor.lastSampleAcross, masterWidth, slaveWidth)) - logger.debug(' Down pos: %d %d out of (%d,%d)'%(objAmpcor.firstSampleDown, objAmpcor.lastSampleDown, masterLength, slaveLength)) + logger.debug(' Across pos: %d %d out of (%d,%d)'%(objAmpcor.firstSampleAcross, objAmpcor.lastSampleAcross, referenceWidth, secondaryWidth)) + logger.debug(' Down pos: %d %d out of (%d,%d)'%(objAmpcor.firstSampleDown, objAmpcor.lastSampleDown, referenceLength, secondaryLength)) if (iterNum == 0) or finalIteration: if catalog is not None: # Record the inputs diff --git a/components/isceobj/IsceProc/runTopo.py b/components/isceobj/IsceProc/runTopo.py index 730988d..a5543c4 100755 --- a/components/isceobj/IsceProc/runTopo.py +++ b/components/isceobj/IsceProc/runTopo.py @@ -90,7 +90,7 @@ def run(objFormSlc1, intImage, frame1, velocity, height, infos, stdWriter, catal objTopo.wireInputPort(name='planet', object=planet) objTopo.wireInputPort(name='dem', object=objDem) objTopo.wireInputPort(name='interferogram', object=intImage) #ML 2014-09-26 - objTopo.wireInputPort(name='masterslc', object=objFormSlc1) #Piyush + objTopo.wireInputPort(name='referenceslc', object=objFormSlc1) #Piyush objTopo.setDopplerCentroidConstantTerm(centroid) objTopo.setBodyFixedVelocity(velocity) diff --git a/components/isceobj/Orbit/__init__.py b/components/isceobj/Orbit/__init__.py index adfb7cf..9afcfe2 100644 --- a/components/isceobj/Orbit/__init__.py +++ b/components/isceobj/Orbit/__init__.py @@ -9,4 +9,4 @@ def getFactoriesInfo(): { 'factory':'createOrbit' } - } \ No newline at end of file + } diff --git a/components/isceobj/Orbit/test/test_odr.py b/components/isceobj/Orbit/test/test_odr.py index 9f76d95..97c3a88 100644 --- a/components/isceobj/Orbit/test/test_odr.py +++ b/components/isceobj/Orbit/test/test_odr.py @@ -15,4 +15,4 @@ class ODRTest(unittest.TestCase): odr.parseHeader() for sv in odr._ephemeris: print(sv) - pass \ No newline at end of file + pass diff --git a/components/isceobj/Planet/__init__.py b/components/isceobj/Planet/__init__.py index 70442a9..76caaf3 100644 --- a/components/isceobj/Planet/__init__.py +++ b/components/isceobj/Planet/__init__.py @@ -1,4 +1,4 @@ #!/usr/bin/env python3 def createPlanet(pname,name=''): from isceobj.Planet.Planet import Planet - return Planet(name=name,pname=pname) \ No newline at end of file + return Planet(name=name,pname=pname) diff --git a/components/isceobj/RtcProc/RtcProc.py b/components/isceobj/RtcProc/RtcProc.py index aac8b9a..346e07b 100644 --- a/components/isceobj/RtcProc/RtcProc.py +++ b/components/isceobj/RtcProc/RtcProc.py @@ -13,7 +13,7 @@ from iscesys.Compatibility import Compatibility OUTPUT_FOLDER = Component.Parameter('outputFolder', public_name='output folder with imagery', - default='master', + default='reference', type=str, mandatory=False, doc = 'Directory name of the unpacked GRD product') @@ -207,14 +207,14 @@ class RtcProc(Component): return validlist - def getMasterPolarizations(self, masterPol, inlist): + def getReferencePolarizations(self, referencePol, inlist): ''' - Check available list to pick co-pol master if none is provided. + Check available list to pick co-pol reference if none is provided. ''' validlist = self.getValidPolarizationList(self, inlist) - if masterPol is None: + if referencePol is None: if 'HH' in validlist: return 'HH' @@ -226,10 +226,10 @@ class RtcProc(Component): return validlist[0] else: - if masterPol not in validlist: - raise Exception('Requested master polarization {0} not in available polarizations'.format(masterPol)) + if referencePol not in validlist: + raise Exception('Requested reference polarization {0} not in available polarizations'.format(referencePol)) else: - return masterPol + return referencePol def getLooks(self,posting, delaz, delrg, azl, rgl): diff --git a/components/isceobj/RtcProc/runLooks.py b/components/isceobj/RtcProc/runLooks.py index ba14070..a94527c 100644 --- a/components/isceobj/RtcProc/runLooks.py +++ b/components/isceobj/RtcProc/runLooks.py @@ -46,10 +46,10 @@ def runLooks(self): ''' refPol = self._grd.polarizations[0] - master = self._grd.loadProduct( os.path.join(self._grd.outputFolder, 'beta_{0}.xml'.format(refPol))) + reference = self._grd.loadProduct( os.path.join(self._grd.outputFolder, 'beta_{0}.xml'.format(refPol))) - azlooks, rglooks = self._grd.getLooks( self.posting, master.groundRangePixelSize, master.azimuthPixelSize, self.numberAzimuthLooks, self.numberRangeLooks) + azlooks, rglooks = self._grd.getLooks( self.posting, reference.groundRangePixelSize, reference.azimuthPixelSize, self.numberAzimuthLooks, self.numberRangeLooks) if (azlooks == 1) and (rglooks == 1): @@ -61,7 +61,7 @@ def runLooks(self): takeLooks(inname, azlooks, rglooks) if not slantRange: - inname = master.slantRangeImage.filename + inname = reference.slantRangeImage.filename takeLooks(inname, azlooks, rglooks) slantRange = True diff --git a/components/isceobj/RtcProc/runNormalize.py b/components/isceobj/RtcProc/runNormalize.py index 70ce9cb..81de002 100644 --- a/components/isceobj/RtcProc/runNormalize.py +++ b/components/isceobj/RtcProc/runNormalize.py @@ -24,10 +24,10 @@ def runNormalize(self): Make sure that a DEM is available for processing the given data. ''' refPol = self._grd.polarizations[0] - master = self._grd.loadProduct( os.path.join(self._grd.outputFolder, 'beta_{0}.xml'.format(refPol))) + reference = self._grd.loadProduct( os.path.join(self._grd.outputFolder, 'beta_{0}.xml'.format(refPol))) - azlooks, rglooks = self._grd.getLooks( self.posting, master.groundRangePixelSize, master.azimuthPixelSize, self.numberAzimuthLooks, self.numberRangeLooks) + azlooks, rglooks = self._grd.getLooks( self.posting, reference.groundRangePixelSize, reference.azimuthPixelSize, self.numberAzimuthLooks, self.numberRangeLooks) for pol in self._grd.polarizations: diff --git a/components/isceobj/RtcProc/runPreprocessor.py b/components/isceobj/RtcProc/runPreprocessor.py index 0a20117..b010db6 100644 --- a/components/isceobj/RtcProc/runPreprocessor.py +++ b/components/isceobj/RtcProc/runPreprocessor.py @@ -23,9 +23,9 @@ def runPreprocessor(self): polList = ['HH', 'HV', 'VV', 'VH', 'RH', 'RV'] - self.master.configure() + self.reference.configure() - os.makedirs(self.master.output, exist_ok=True) + os.makedirs(self.reference.output, exist_ok=True) slantRangeExtracted = False @@ -33,16 +33,16 @@ def runPreprocessor(self): r0max = 0. for pol in polList: - ###Process master pol-by-pol - frame = copy.deepcopy(self.master) + ###Process reference pol-by-pol + frame = copy.deepcopy(self.reference) frame.polarization = pol - frame.output = os.path.join(self.master.output, 'beta_{0}.img'.format(pol)) - frame.slantRangeFile = os.path.join(self.master.output, 'slantrange.img') + frame.output = os.path.join(self.reference.output, 'beta_{0}.img'.format(pol)) + frame.slantRangeFile = os.path.join(self.reference.output, 'slantrange.img') frame.product.startingSlantRange = r0min frame.product.endingSlantRange = r0max try: - master = extract_slc(frame, slantRange=(not slantRangeExtracted)) + reference = extract_slc(frame, slantRange=(not slantRangeExtracted)) success=True if not slantRangeExtracted: r0min = frame.product.startingSlantRange @@ -58,16 +58,16 @@ def runPreprocessor(self): if success: - catalog.addInputsFrom(frame.product, 'master.sensor') - catalog.addItem('numberOfSamples', frame.product.numberOfSamples, 'master') - catalog.addItem('numberOfLines', frame.product.numberOfLines, 'master') - catalog.addItem('groundRangePixelSize', frame.product.groundRangePixelSize, 'master') + catalog.addInputsFrom(frame.product, 'reference.sensor') + catalog.addItem('numberOfSamples', frame.product.numberOfSamples, 'reference') + catalog.addItem('numberOfLines', frame.product.numberOfLines, 'reference') + catalog.addItem('groundRangePixelSize', frame.product.groundRangePixelSize, 'reference') self._grd.polarizations.append(pol) self._grd.saveProduct( frame.product, os.path.splitext(frame.output)[0] + '.xml') - self._grd.outputFolder = self.master.output + self._grd.outputFolder = self.reference.output catalog.printToLog(logger, "runPreprocessor") self._grd.procDoc.addAllFromCatalog(catalog) diff --git a/components/isceobj/RtcProc/runTopo.py b/components/isceobj/RtcProc/runTopo.py index 4c6a4cf..03afe77 100755 --- a/components/isceobj/RtcProc/runTopo.py +++ b/components/isceobj/RtcProc/runTopo.py @@ -22,20 +22,20 @@ def runTopo(self, method='legendre'): refPol = self._grd.polarizations[0] - master = self._grd.loadProduct( os.path.join(self._grd.outputFolder, + reference = self._grd.loadProduct( os.path.join(self._grd.outputFolder, 'beta_{0}.xml'.format(refPol))) - azlooks, rglooks = self._grd.getLooks(self.posting, master.azimuthPixelSize, - master.groundRangePixelSize, self.numberAzimuthLooks, + azlooks, rglooks = self._grd.getLooks(self.posting, reference.azimuthPixelSize, + reference.groundRangePixelSize, self.numberAzimuthLooks, self.numberRangeLooks) if (azlooks == 1) and (rglooks == 1): - rangeName = master.slantRangeImage.filename + rangeName = reference.slantRangeImage.filename else: - rangeName = filenameWithLooks(master.slantRangeImage.filename, + rangeName = filenameWithLooks(reference.slantRangeImage.filename, azlooks, rglooks) print('Range name : ', rangeName) @@ -52,17 +52,17 @@ def runTopo(self, method='legendre'): #####Run Topo planet = Planet(pname='Earth') topo = createTopozero() - topo.prf = 1.0 / master.azimuthTimeInterval - topo.radarWavelength = master.radarWavelength - topo.orbit = master.orbit - topo.width = master.numberOfSamples // rglooks - topo.length = master.numberOfLines // azlooks + topo.prf = 1.0 / reference.azimuthTimeInterval + topo.radarWavelength = reference.radarWavelength + topo.orbit = reference.orbit + topo.width = reference.numberOfSamples // rglooks + topo.length = reference.numberOfLines // azlooks topo.wireInputPort(name='dem', object=demImg) topo.wireInputPort(name='planet', object=planet) topo.numberRangeLooks = 1 topo.numberAzimuthLooks = azlooks - topo.lookSide = master.side - topo.sensingStart = master.sensingStart + datetime.timedelta(seconds = ((azlooks - 1) /2) * master.azimuthTimeInterval) + topo.lookSide = reference.side + topo.sensingStart = reference.sensingStart + datetime.timedelta(seconds = ((azlooks - 1) /2) * reference.azimuthTimeInterval) topo.slantRangeFilename = rangeName topo.demInterpolationMethod='BIQUINTIC' diff --git a/components/isceobj/RtcProc/runVerifyDEM.py b/components/isceobj/RtcProc/runVerifyDEM.py index 6b9bce6..506648d 100644 --- a/components/isceobj/RtcProc/runVerifyDEM.py +++ b/components/isceobj/RtcProc/runVerifyDEM.py @@ -46,8 +46,8 @@ def runVerifyDEM(self): refPol = self._grd.polarizations[0] - master = self._grd.loadProduct( os.path.join(self._grd.outputFolder, 'beta_{0}.xml'.format(refPol))) - bbox = master.getBbox() + reference = self._grd.loadProduct( os.path.join(self._grd.outputFolder, 'beta_{0}.xml'.format(refPol))) + bbox = reference.getBbox() ####Truncate to integers tbox = [np.floor(bbox[0]), np.ceil(bbox[1]), diff --git a/components/isceobj/Scene/__init__.py b/components/isceobj/Scene/__init__.py index d141fa8..133f984 100644 --- a/components/isceobj/Scene/__init__.py +++ b/components/isceobj/Scene/__init__.py @@ -1,3 +1,3 @@ def createFrame(name=None): from .Frame import Frame - return Frame(name=name) \ No newline at end of file + return Frame(name=name) diff --git a/components/isceobj/Sensor/ERS_EnviSAT.py b/components/isceobj/Sensor/ERS_EnviSAT.py index 2ead5fc..351a053 100644 --- a/components/isceobj/Sensor/ERS_EnviSAT.py +++ b/components/isceobj/Sensor/ERS_EnviSAT.py @@ -616,4 +616,4 @@ class ImageFile(BaseErsEnvisatFile): imageDict.update(self.mdsr) imageDict.update(self.tmpData) - return imageDict \ No newline at end of file + return imageDict diff --git a/components/isceobj/Sensor/UAVSAR_RPI.py b/components/isceobj/Sensor/UAVSAR_RPI.py index ddc1663..90e8d58 100755 --- a/components/isceobj/Sensor/UAVSAR_RPI.py +++ b/components/isceobj/Sensor/UAVSAR_RPI.py @@ -125,7 +125,7 @@ class UAVSAR_RPI(Sensor): if self.metadata['UAVSAR RPI Annotation File Version Number']: # print("UAVSAR_RPI._populateFrame, pair = True") - if self.name.lower() == 'master': + if self.name.lower() == 'reference': sip1 = str(1) else: sip1 = str(2) @@ -280,9 +280,9 @@ class UAVSAR_RPI(Sensor): self.populateMetadata() slcImage = isceobj.createSlcImage() - if self.name == 'master' or self.name == 'scene1': + if self.name == 'reference' or self.name == 'scene1': self.slcname = self.metadata['Single Look Complex Data of Pass 1'] - elif self.name == 'slave' or self.name == 'scene2': + elif self.name == 'secondary' or self.name == 'scene2': self.slcname = self.metadata['Single Look Complex Data of Pass 2'] else: print("Unrecognized sensor.name = ", sensor.name) diff --git a/components/isceobj/Sensor/__init__.py b/components/isceobj/Sensor/__init__.py index e4ba2f2..5e0639b 100755 --- a/components/isceobj/Sensor/__init__.py +++ b/components/isceobj/Sensor/__init__.py @@ -142,9 +142,9 @@ sfmt.format(*(sorted(SENSORS.keys())))+ A convenience method, createXXX, where XXX is one of the above 'sensor names' can be use to create an instance of one of the Sensors as follows, using ALOS: -x = Sensor.createALOS('master') +x = Sensor.createALOS('reference') -where 'master' is the instance name in this case that can be used in +where 'reference' is the instance name in this case that can be used in configuring this instance. """ ) diff --git a/components/isceobj/Sensor/db/alos/calibration_record.xml b/components/isceobj/Sensor/db/alos/calibration_record.xml index 238d994..7189cac 100644 --- a/components/isceobj/Sensor/db/alos/calibration_record.xml +++ b/components/isceobj/Sensor/db/alos/calibration_record.xml @@ -22,4 +22,4 @@ - \ No newline at end of file + diff --git a/components/isceobj/Sensor/db/alos/data_quality_summary_record.xml b/components/isceobj/Sensor/db/alos/data_quality_summary_record.xml index a920fc1..9f3e7ab 100644 --- a/components/isceobj/Sensor/db/alos/data_quality_summary_record.xml +++ b/components/isceobj/Sensor/db/alos/data_quality_summary_record.xml @@ -13,4 +13,4 @@ - \ No newline at end of file + diff --git a/components/isceobj/Sensor/db/alos/facility_record.xml b/components/isceobj/Sensor/db/alos/facility_record.xml index 5907ab6..bbf7fe2 100644 --- a/components/isceobj/Sensor/db/alos/facility_record.xml +++ b/components/isceobj/Sensor/db/alos/facility_record.xml @@ -11,4 +11,4 @@ - \ No newline at end of file + diff --git a/components/isceobj/Sensor/db/alos/file_pointer_record.xml b/components/isceobj/Sensor/db/alos/file_pointer_record.xml index 0c1564e..c50dbb7 100644 --- a/components/isceobj/Sensor/db/alos/file_pointer_record.xml +++ b/components/isceobj/Sensor/db/alos/file_pointer_record.xml @@ -26,4 +26,4 @@ - \ No newline at end of file + diff --git a/components/isceobj/Sensor/db/alos/leader_file.xml b/components/isceobj/Sensor/db/alos/leader_file.xml index b8b32a8..b709030 100644 --- a/components/isceobj/Sensor/db/alos/leader_file.xml +++ b/components/isceobj/Sensor/db/alos/leader_file.xml @@ -61,4 +61,4 @@ - \ No newline at end of file + diff --git a/components/isceobj/Sensor/db/alos/map_proj_record.xml b/components/isceobj/Sensor/db/alos/map_proj_record.xml index 0007d20..d134c62 100644 --- a/components/isceobj/Sensor/db/alos/map_proj_record.xml +++ b/components/isceobj/Sensor/db/alos/map_proj_record.xml @@ -37,4 +37,4 @@ - \ No newline at end of file + diff --git a/components/isceobj/Sensor/db/alos/processed_data_record.xml b/components/isceobj/Sensor/db/alos/processed_data_record.xml index 938a5ce..c778cf0 100644 --- a/components/isceobj/Sensor/db/alos/processed_data_record.xml +++ b/components/isceobj/Sensor/db/alos/processed_data_record.xml @@ -47,4 +47,4 @@ - \ No newline at end of file + diff --git a/components/isceobj/Sensor/db/alos/radiometric_record.xml b/components/isceobj/Sensor/db/alos/radiometric_record.xml index 214e549..9a5979b 100644 --- a/components/isceobj/Sensor/db/alos/radiometric_record.xml +++ b/components/isceobj/Sensor/db/alos/radiometric_record.xml @@ -30,4 +30,4 @@ - \ No newline at end of file + diff --git a/components/isceobj/Sensor/db/alos/text_record.xml b/components/isceobj/Sensor/db/alos/text_record.xml index ee93743..ecfa38d 100644 --- a/components/isceobj/Sensor/db/alos/text_record.xml +++ b/components/isceobj/Sensor/db/alos/text_record.xml @@ -16,4 +16,4 @@ - \ No newline at end of file + diff --git a/components/isceobj/Sensor/db/alos/trailer_file.xml b/components/isceobj/Sensor/db/alos/trailer_file.xml index bc45183..88c6c76 100644 --- a/components/isceobj/Sensor/db/alos/trailer_file.xml +++ b/components/isceobj/Sensor/db/alos/trailer_file.xml @@ -61,4 +61,4 @@ - \ No newline at end of file + diff --git a/components/isceobj/Sensor/db/alos/volume_descriptor.xml b/components/isceobj/Sensor/db/alos/volume_descriptor.xml index 1c6ec25..a52a974 100644 --- a/components/isceobj/Sensor/db/alos/volume_descriptor.xml +++ b/components/isceobj/Sensor/db/alos/volume_descriptor.xml @@ -31,4 +31,4 @@ - \ No newline at end of file + diff --git a/components/isceobj/Sensor/db/alos2_slc/data_histogram_record.xml b/components/isceobj/Sensor/db/alos2_slc/data_histogram_record.xml index fbaac76..3f0fbb8 100644 --- a/components/isceobj/Sensor/db/alos2_slc/data_histogram_record.xml +++ b/components/isceobj/Sensor/db/alos2_slc/data_histogram_record.xml @@ -33,4 +33,4 @@ - \ No newline at end of file + diff --git a/components/isceobj/Sensor/db/alos2_slc/detailed_processing_record.xml b/components/isceobj/Sensor/db/alos2_slc/detailed_processing_record.xml index bfff223..4a7386b 100644 --- a/components/isceobj/Sensor/db/alos2_slc/detailed_processing_record.xml +++ b/components/isceobj/Sensor/db/alos2_slc/detailed_processing_record.xml @@ -33,7 +33,7 @@ - + @@ -164,4 +164,4 @@ - \ No newline at end of file + diff --git a/components/isceobj/Sensor/db/alos2_slc/file_pointer_record.xml b/components/isceobj/Sensor/db/alos2_slc/file_pointer_record.xml index 61ab513..af30320 100644 --- a/components/isceobj/Sensor/db/alos2_slc/file_pointer_record.xml +++ b/components/isceobj/Sensor/db/alos2_slc/file_pointer_record.xml @@ -26,4 +26,4 @@ - \ No newline at end of file + diff --git a/components/isceobj/Sensor/db/alos2_slc/map_proj_record.xml b/components/isceobj/Sensor/db/alos2_slc/map_proj_record.xml index c43be26..66a1b2f 100644 --- a/components/isceobj/Sensor/db/alos2_slc/map_proj_record.xml +++ b/components/isceobj/Sensor/db/alos2_slc/map_proj_record.xml @@ -34,4 +34,4 @@ - \ No newline at end of file + diff --git a/components/isceobj/Sensor/db/alos2_slc/radiometric_compensation_record.xml b/components/isceobj/Sensor/db/alos2_slc/radiometric_compensation_record.xml index cf10f33..5c611b4 100644 --- a/components/isceobj/Sensor/db/alos2_slc/radiometric_compensation_record.xml +++ b/components/isceobj/Sensor/db/alos2_slc/radiometric_compensation_record.xml @@ -15,4 +15,4 @@ - \ No newline at end of file + diff --git a/components/isceobj/Sensor/db/alos2_slc/radiometric_record.xml b/components/isceobj/Sensor/db/alos2_slc/radiometric_record.xml index 0ae9ed3..859fd7d 100644 --- a/components/isceobj/Sensor/db/alos2_slc/radiometric_record.xml +++ b/components/isceobj/Sensor/db/alos2_slc/radiometric_record.xml @@ -21,4 +21,4 @@ - \ No newline at end of file + diff --git a/components/isceobj/Sensor/db/alos2_slc/text_record.xml b/components/isceobj/Sensor/db/alos2_slc/text_record.xml index 1c160d6..05ea254 100644 --- a/components/isceobj/Sensor/db/alos2_slc/text_record.xml +++ b/components/isceobj/Sensor/db/alos2_slc/text_record.xml @@ -17,4 +17,4 @@ - \ No newline at end of file + diff --git a/components/isceobj/Sensor/db/alos2_slc/trailer_file.xml b/components/isceobj/Sensor/db/alos2_slc/trailer_file.xml index 0fa658b..72aeb73 100644 --- a/components/isceobj/Sensor/db/alos2_slc/trailer_file.xml +++ b/components/isceobj/Sensor/db/alos2_slc/trailer_file.xml @@ -61,4 +61,4 @@ - \ No newline at end of file + diff --git a/components/isceobj/Sensor/db/alos2_slc/volume_descriptor.xml b/components/isceobj/Sensor/db/alos2_slc/volume_descriptor.xml index f9b6528..2602097 100644 --- a/components/isceobj/Sensor/db/alos2_slc/volume_descriptor.xml +++ b/components/isceobj/Sensor/db/alos2_slc/volume_descriptor.xml @@ -31,4 +31,4 @@ - \ No newline at end of file + diff --git a/components/isceobj/Sensor/db/alos_slc/attitude_record.xml b/components/isceobj/Sensor/db/alos_slc/attitude_record.xml index ec64265..f839c94 100644 --- a/components/isceobj/Sensor/db/alos_slc/attitude_record.xml +++ b/components/isceobj/Sensor/db/alos_slc/attitude_record.xml @@ -24,4 +24,4 @@ - \ No newline at end of file + diff --git a/components/isceobj/Sensor/db/alos_slc/data_histogram_record.xml b/components/isceobj/Sensor/db/alos_slc/data_histogram_record.xml index fbaac76..3f0fbb8 100644 --- a/components/isceobj/Sensor/db/alos_slc/data_histogram_record.xml +++ b/components/isceobj/Sensor/db/alos_slc/data_histogram_record.xml @@ -33,4 +33,4 @@ - \ No newline at end of file + diff --git a/components/isceobj/Sensor/db/alos_slc/detailed_processing_record.xml b/components/isceobj/Sensor/db/alos_slc/detailed_processing_record.xml index bfff223..4a7386b 100644 --- a/components/isceobj/Sensor/db/alos_slc/detailed_processing_record.xml +++ b/components/isceobj/Sensor/db/alos_slc/detailed_processing_record.xml @@ -33,7 +33,7 @@ - + @@ -164,4 +164,4 @@ - \ No newline at end of file + diff --git a/components/isceobj/Sensor/db/alos_slc/file_pointer_record.xml b/components/isceobj/Sensor/db/alos_slc/file_pointer_record.xml index 61ab513..af30320 100644 --- a/components/isceobj/Sensor/db/alos_slc/file_pointer_record.xml +++ b/components/isceobj/Sensor/db/alos_slc/file_pointer_record.xml @@ -26,4 +26,4 @@ - \ No newline at end of file + diff --git a/components/isceobj/Sensor/db/alos_slc/map_proj_record.xml b/components/isceobj/Sensor/db/alos_slc/map_proj_record.xml index c43be26..66a1b2f 100644 --- a/components/isceobj/Sensor/db/alos_slc/map_proj_record.xml +++ b/components/isceobj/Sensor/db/alos_slc/map_proj_record.xml @@ -34,4 +34,4 @@ - \ No newline at end of file + diff --git a/components/isceobj/Sensor/db/alos_slc/radiometric_compensation_record.xml b/components/isceobj/Sensor/db/alos_slc/radiometric_compensation_record.xml index cf10f33..5c611b4 100644 --- a/components/isceobj/Sensor/db/alos_slc/radiometric_compensation_record.xml +++ b/components/isceobj/Sensor/db/alos_slc/radiometric_compensation_record.xml @@ -15,4 +15,4 @@ - \ No newline at end of file + diff --git a/components/isceobj/Sensor/db/alos_slc/text_record.xml b/components/isceobj/Sensor/db/alos_slc/text_record.xml index 1c160d6..05ea254 100644 --- a/components/isceobj/Sensor/db/alos_slc/text_record.xml +++ b/components/isceobj/Sensor/db/alos_slc/text_record.xml @@ -17,4 +17,4 @@ - \ No newline at end of file + diff --git a/components/isceobj/Sensor/db/alos_slc/trailer_file.xml b/components/isceobj/Sensor/db/alos_slc/trailer_file.xml index 0fa658b..72aeb73 100644 --- a/components/isceobj/Sensor/db/alos_slc/trailer_file.xml +++ b/components/isceobj/Sensor/db/alos_slc/trailer_file.xml @@ -61,4 +61,4 @@ - \ No newline at end of file + diff --git a/components/isceobj/Sensor/db/alos_slc/volume_descriptor.xml b/components/isceobj/Sensor/db/alos_slc/volume_descriptor.xml index f9b6528..2602097 100644 --- a/components/isceobj/Sensor/db/alos_slc/volume_descriptor.xml +++ b/components/isceobj/Sensor/db/alos_slc/volume_descriptor.xml @@ -31,4 +31,4 @@ - \ No newline at end of file + diff --git a/components/isceobj/Sensor/db/ers/facility_record.xml b/components/isceobj/Sensor/db/ers/facility_record.xml index 96316cc..02bcbc3 100644 --- a/components/isceobj/Sensor/db/ers/facility_record.xml +++ b/components/isceobj/Sensor/db/ers/facility_record.xml @@ -177,4 +177,4 @@ - \ No newline at end of file + diff --git a/components/isceobj/Sensor/db/ers/facility_related_pcs_record.xml b/components/isceobj/Sensor/db/ers/facility_related_pcs_record.xml index d64d11e..9860330 100644 --- a/components/isceobj/Sensor/db/ers/facility_related_pcs_record.xml +++ b/components/isceobj/Sensor/db/ers/facility_related_pcs_record.xml @@ -11,4 +11,4 @@ - \ No newline at end of file + diff --git a/components/isceobj/Sensor/db/ers/file_pointer_record.xml b/components/isceobj/Sensor/db/ers/file_pointer_record.xml index 354bf0c..b78c1c9 100644 --- a/components/isceobj/Sensor/db/ers/file_pointer_record.xml +++ b/components/isceobj/Sensor/db/ers/file_pointer_record.xml @@ -26,4 +26,4 @@ - \ No newline at end of file + diff --git a/components/isceobj/Sensor/db/ers/image_file.xml b/components/isceobj/Sensor/db/ers/image_file.xml index 5a093cb..48883b8 100644 --- a/components/isceobj/Sensor/db/ers/image_file.xml +++ b/components/isceobj/Sensor/db/ers/image_file.xml @@ -61,4 +61,4 @@ - \ No newline at end of file + diff --git a/components/isceobj/Sensor/db/ers/map_proj_record.xml b/components/isceobj/Sensor/db/ers/map_proj_record.xml index a478701..af06e95 100644 --- a/components/isceobj/Sensor/db/ers/map_proj_record.xml +++ b/components/isceobj/Sensor/db/ers/map_proj_record.xml @@ -37,4 +37,4 @@ - \ No newline at end of file + diff --git a/components/isceobj/Sensor/db/ers/scene_record.xml b/components/isceobj/Sensor/db/ers/scene_record.xml index 14fc492..c227e24 100644 --- a/components/isceobj/Sensor/db/ers/scene_record.xml +++ b/components/isceobj/Sensor/db/ers/scene_record.xml @@ -130,4 +130,4 @@ - \ No newline at end of file + diff --git a/components/isceobj/Sensor/db/ers/text_record.xml b/components/isceobj/Sensor/db/ers/text_record.xml index 1ecf282..fb3e345 100644 --- a/components/isceobj/Sensor/db/ers/text_record.xml +++ b/components/isceobj/Sensor/db/ers/text_record.xml @@ -16,4 +16,4 @@ - \ No newline at end of file + diff --git a/components/isceobj/Sensor/db/ers_slc/facility_record.xml b/components/isceobj/Sensor/db/ers_slc/facility_record.xml index 96316cc..02bcbc3 100644 --- a/components/isceobj/Sensor/db/ers_slc/facility_record.xml +++ b/components/isceobj/Sensor/db/ers_slc/facility_record.xml @@ -177,4 +177,4 @@ - \ No newline at end of file + diff --git a/components/isceobj/Sensor/db/ers_slc/facility_related_pcs_record.xml b/components/isceobj/Sensor/db/ers_slc/facility_related_pcs_record.xml index d64d11e..9860330 100644 --- a/components/isceobj/Sensor/db/ers_slc/facility_related_pcs_record.xml +++ b/components/isceobj/Sensor/db/ers_slc/facility_related_pcs_record.xml @@ -11,4 +11,4 @@ - \ No newline at end of file + diff --git a/components/isceobj/Sensor/db/ers_slc/file_pointer_record.xml b/components/isceobj/Sensor/db/ers_slc/file_pointer_record.xml index 354bf0c..b78c1c9 100644 --- a/components/isceobj/Sensor/db/ers_slc/file_pointer_record.xml +++ b/components/isceobj/Sensor/db/ers_slc/file_pointer_record.xml @@ -26,4 +26,4 @@ - \ No newline at end of file + diff --git a/components/isceobj/Sensor/db/ers_slc/image_file.xml b/components/isceobj/Sensor/db/ers_slc/image_file.xml index 5a093cb..48883b8 100644 --- a/components/isceobj/Sensor/db/ers_slc/image_file.xml +++ b/components/isceobj/Sensor/db/ers_slc/image_file.xml @@ -61,4 +61,4 @@ - \ No newline at end of file + diff --git a/components/isceobj/Sensor/db/ers_slc/text_record.xml b/components/isceobj/Sensor/db/ers_slc/text_record.xml index 1ecf282..fb3e345 100644 --- a/components/isceobj/Sensor/db/ers_slc/text_record.xml +++ b/components/isceobj/Sensor/db/ers_slc/text_record.xml @@ -16,4 +16,4 @@ - \ No newline at end of file + diff --git a/components/isceobj/Sensor/db/jers/facility_record.xml b/components/isceobj/Sensor/db/jers/facility_record.xml index 0816df6..67e9128 100644 --- a/components/isceobj/Sensor/db/jers/facility_record.xml +++ b/components/isceobj/Sensor/db/jers/facility_record.xml @@ -134,4 +134,4 @@ - \ No newline at end of file + diff --git a/components/isceobj/Sensor/db/jers/file_pointer_record.xml b/components/isceobj/Sensor/db/jers/file_pointer_record.xml index 277847d..90fb062 100644 --- a/components/isceobj/Sensor/db/jers/file_pointer_record.xml +++ b/components/isceobj/Sensor/db/jers/file_pointer_record.xml @@ -26,4 +26,4 @@ - \ No newline at end of file + diff --git a/components/isceobj/Sensor/db/jers/image_file.xml b/components/isceobj/Sensor/db/jers/image_file.xml index e3ed8cb..5193bfe 100644 --- a/components/isceobj/Sensor/db/jers/image_file.xml +++ b/components/isceobj/Sensor/db/jers/image_file.xml @@ -61,4 +61,4 @@ - \ No newline at end of file + diff --git a/components/isceobj/Sensor/db/jers/image_record.xml b/components/isceobj/Sensor/db/jers/image_record.xml index 7390218..d081afc 100644 --- a/components/isceobj/Sensor/db/jers/image_record.xml +++ b/components/isceobj/Sensor/db/jers/image_record.xml @@ -2,4 +2,4 @@ - \ No newline at end of file + diff --git a/components/isceobj/Sensor/db/jers/leader_file.xml b/components/isceobj/Sensor/db/jers/leader_file.xml index efddec0..7bc2a81 100644 --- a/components/isceobj/Sensor/db/jers/leader_file.xml +++ b/components/isceobj/Sensor/db/jers/leader_file.xml @@ -61,4 +61,4 @@ - \ No newline at end of file + diff --git a/components/isceobj/Sensor/db/jers/map_proj_record.xml b/components/isceobj/Sensor/db/jers/map_proj_record.xml index 7057674..461900c 100644 --- a/components/isceobj/Sensor/db/jers/map_proj_record.xml +++ b/components/isceobj/Sensor/db/jers/map_proj_record.xml @@ -35,4 +35,4 @@ - \ No newline at end of file + diff --git a/components/isceobj/Sensor/db/jers/scene_record.xml b/components/isceobj/Sensor/db/jers/scene_record.xml index fd06a76..ec0dc2d 100644 --- a/components/isceobj/Sensor/db/jers/scene_record.xml +++ b/components/isceobj/Sensor/db/jers/scene_record.xml @@ -130,4 +130,4 @@ - \ No newline at end of file + diff --git a/components/isceobj/Sensor/db/jers/text_record.xml b/components/isceobj/Sensor/db/jers/text_record.xml index 6df0cae..a461d5e 100644 --- a/components/isceobj/Sensor/db/jers/text_record.xml +++ b/components/isceobj/Sensor/db/jers/text_record.xml @@ -16,4 +16,4 @@ - \ No newline at end of file + diff --git a/components/isceobj/Sensor/db/jers/volume_descriptor.xml b/components/isceobj/Sensor/db/jers/volume_descriptor.xml index d83c215..3366740 100644 --- a/components/isceobj/Sensor/db/jers/volume_descriptor.xml +++ b/components/isceobj/Sensor/db/jers/volume_descriptor.xml @@ -31,4 +31,4 @@ - \ No newline at end of file + diff --git a/components/isceobj/Sensor/db/radarsat/attitude_record.xml b/components/isceobj/Sensor/db/radarsat/attitude_record.xml index ec64265..f839c94 100644 --- a/components/isceobj/Sensor/db/radarsat/attitude_record.xml +++ b/components/isceobj/Sensor/db/radarsat/attitude_record.xml @@ -24,4 +24,4 @@ - \ No newline at end of file + diff --git a/components/isceobj/Sensor/db/radarsat/data_histogram_record.xml b/components/isceobj/Sensor/db/radarsat/data_histogram_record.xml index fbaac76..3f0fbb8 100644 --- a/components/isceobj/Sensor/db/radarsat/data_histogram_record.xml +++ b/components/isceobj/Sensor/db/radarsat/data_histogram_record.xml @@ -33,4 +33,4 @@ - \ No newline at end of file + diff --git a/components/isceobj/Sensor/db/radarsat/data_quality_summary_record.xml b/components/isceobj/Sensor/db/radarsat/data_quality_summary_record.xml index 8a9bd0c..359430f 100644 --- a/components/isceobj/Sensor/db/radarsat/data_quality_summary_record.xml +++ b/components/isceobj/Sensor/db/radarsat/data_quality_summary_record.xml @@ -12,4 +12,4 @@ - \ No newline at end of file + diff --git a/components/isceobj/Sensor/db/radarsat/detailed_processing_record.xml b/components/isceobj/Sensor/db/radarsat/detailed_processing_record.xml index bfff223..4a7386b 100644 --- a/components/isceobj/Sensor/db/radarsat/detailed_processing_record.xml +++ b/components/isceobj/Sensor/db/radarsat/detailed_processing_record.xml @@ -33,7 +33,7 @@ - + @@ -164,4 +164,4 @@ - \ No newline at end of file + diff --git a/components/isceobj/Sensor/db/radarsat/file_pointer_record.xml b/components/isceobj/Sensor/db/radarsat/file_pointer_record.xml index 61ab513..af30320 100644 --- a/components/isceobj/Sensor/db/radarsat/file_pointer_record.xml +++ b/components/isceobj/Sensor/db/radarsat/file_pointer_record.xml @@ -26,4 +26,4 @@ - \ No newline at end of file + diff --git a/components/isceobj/Sensor/db/radarsat/map_proj_record.xml b/components/isceobj/Sensor/db/radarsat/map_proj_record.xml index c43be26..66a1b2f 100644 --- a/components/isceobj/Sensor/db/radarsat/map_proj_record.xml +++ b/components/isceobj/Sensor/db/radarsat/map_proj_record.xml @@ -34,4 +34,4 @@ - \ No newline at end of file + diff --git a/components/isceobj/Sensor/db/radarsat/radiometric_compensation_record.xml b/components/isceobj/Sensor/db/radarsat/radiometric_compensation_record.xml index cf10f33..5c611b4 100644 --- a/components/isceobj/Sensor/db/radarsat/radiometric_compensation_record.xml +++ b/components/isceobj/Sensor/db/radarsat/radiometric_compensation_record.xml @@ -15,4 +15,4 @@ - \ No newline at end of file + diff --git a/components/isceobj/Sensor/db/radarsat/radiometric_record.xml b/components/isceobj/Sensor/db/radarsat/radiometric_record.xml index 0ae9ed3..859fd7d 100644 --- a/components/isceobj/Sensor/db/radarsat/radiometric_record.xml +++ b/components/isceobj/Sensor/db/radarsat/radiometric_record.xml @@ -21,4 +21,4 @@ - \ No newline at end of file + diff --git a/components/isceobj/Sensor/db/radarsat/scene_record.xml b/components/isceobj/Sensor/db/radarsat/scene_record.xml index 36e9c47..d026abd 100644 --- a/components/isceobj/Sensor/db/radarsat/scene_record.xml +++ b/components/isceobj/Sensor/db/radarsat/scene_record.xml @@ -122,4 +122,4 @@ - \ No newline at end of file + diff --git a/components/isceobj/Sensor/db/radarsat/text_record.xml b/components/isceobj/Sensor/db/radarsat/text_record.xml index 1c160d6..05ea254 100644 --- a/components/isceobj/Sensor/db/radarsat/text_record.xml +++ b/components/isceobj/Sensor/db/radarsat/text_record.xml @@ -17,4 +17,4 @@ - \ No newline at end of file + diff --git a/components/isceobj/Sensor/db/radarsat/trailer_file.xml b/components/isceobj/Sensor/db/radarsat/trailer_file.xml index 0fa658b..72aeb73 100644 --- a/components/isceobj/Sensor/db/radarsat/trailer_file.xml +++ b/components/isceobj/Sensor/db/radarsat/trailer_file.xml @@ -61,4 +61,4 @@ - \ No newline at end of file + diff --git a/components/isceobj/Sensor/db/radarsat/volume_descriptor.xml b/components/isceobj/Sensor/db/radarsat/volume_descriptor.xml index f9b6528..2602097 100644 --- a/components/isceobj/Sensor/db/radarsat/volume_descriptor.xml +++ b/components/isceobj/Sensor/db/radarsat/volume_descriptor.xml @@ -31,4 +31,4 @@ - \ No newline at end of file + diff --git a/components/isceobj/Sensor/db/radarsat_slc/attitude_record.xml b/components/isceobj/Sensor/db/radarsat_slc/attitude_record.xml index ec64265..f839c94 100644 --- a/components/isceobj/Sensor/db/radarsat_slc/attitude_record.xml +++ b/components/isceobj/Sensor/db/radarsat_slc/attitude_record.xml @@ -24,4 +24,4 @@ - \ No newline at end of file + diff --git a/components/isceobj/Sensor/db/radarsat_slc/data_histogram_record.xml b/components/isceobj/Sensor/db/radarsat_slc/data_histogram_record.xml index fbaac76..3f0fbb8 100644 --- a/components/isceobj/Sensor/db/radarsat_slc/data_histogram_record.xml +++ b/components/isceobj/Sensor/db/radarsat_slc/data_histogram_record.xml @@ -33,4 +33,4 @@ - \ No newline at end of file + diff --git a/components/isceobj/Sensor/db/radarsat_slc/data_quality_summary_record.xml b/components/isceobj/Sensor/db/radarsat_slc/data_quality_summary_record.xml index 8a9bd0c..359430f 100644 --- a/components/isceobj/Sensor/db/radarsat_slc/data_quality_summary_record.xml +++ b/components/isceobj/Sensor/db/radarsat_slc/data_quality_summary_record.xml @@ -12,4 +12,4 @@ - \ No newline at end of file + diff --git a/components/isceobj/Sensor/db/radarsat_slc/detailed_processing_record.xml b/components/isceobj/Sensor/db/radarsat_slc/detailed_processing_record.xml index bfff223..4a7386b 100644 --- a/components/isceobj/Sensor/db/radarsat_slc/detailed_processing_record.xml +++ b/components/isceobj/Sensor/db/radarsat_slc/detailed_processing_record.xml @@ -33,7 +33,7 @@ - + @@ -164,4 +164,4 @@ - \ No newline at end of file + diff --git a/components/isceobj/Sensor/db/radarsat_slc/file_pointer_record.xml b/components/isceobj/Sensor/db/radarsat_slc/file_pointer_record.xml index 61ab513..af30320 100644 --- a/components/isceobj/Sensor/db/radarsat_slc/file_pointer_record.xml +++ b/components/isceobj/Sensor/db/radarsat_slc/file_pointer_record.xml @@ -26,4 +26,4 @@ - \ No newline at end of file + diff --git a/components/isceobj/Sensor/db/radarsat_slc/image_file.xml b/components/isceobj/Sensor/db/radarsat_slc/image_file.xml index 1dbf140..f98fa83 100644 --- a/components/isceobj/Sensor/db/radarsat_slc/image_file.xml +++ b/components/isceobj/Sensor/db/radarsat_slc/image_file.xml @@ -61,4 +61,4 @@ - \ No newline at end of file + diff --git a/components/isceobj/Sensor/db/radarsat_slc/image_record.xml b/components/isceobj/Sensor/db/radarsat_slc/image_record.xml index 63596ed..b5b5aad 100644 --- a/components/isceobj/Sensor/db/radarsat_slc/image_record.xml +++ b/components/isceobj/Sensor/db/radarsat_slc/image_record.xml @@ -40,4 +40,4 @@ - \ No newline at end of file + diff --git a/components/isceobj/Sensor/db/radarsat_slc/map_proj_record.xml b/components/isceobj/Sensor/db/radarsat_slc/map_proj_record.xml index c43be26..66a1b2f 100644 --- a/components/isceobj/Sensor/db/radarsat_slc/map_proj_record.xml +++ b/components/isceobj/Sensor/db/radarsat_slc/map_proj_record.xml @@ -34,4 +34,4 @@ - \ No newline at end of file + diff --git a/components/isceobj/Sensor/db/radarsat_slc/radiometric_compensation_record.xml b/components/isceobj/Sensor/db/radarsat_slc/radiometric_compensation_record.xml index cf10f33..5c611b4 100644 --- a/components/isceobj/Sensor/db/radarsat_slc/radiometric_compensation_record.xml +++ b/components/isceobj/Sensor/db/radarsat_slc/radiometric_compensation_record.xml @@ -15,4 +15,4 @@ - \ No newline at end of file + diff --git a/components/isceobj/Sensor/db/radarsat_slc/radiometric_record.xml b/components/isceobj/Sensor/db/radarsat_slc/radiometric_record.xml index 0ae9ed3..859fd7d 100644 --- a/components/isceobj/Sensor/db/radarsat_slc/radiometric_record.xml +++ b/components/isceobj/Sensor/db/radarsat_slc/radiometric_record.xml @@ -21,4 +21,4 @@ - \ No newline at end of file + diff --git a/components/isceobj/Sensor/db/radarsat_slc/scene_record.xml b/components/isceobj/Sensor/db/radarsat_slc/scene_record.xml index 36e9c47..d026abd 100644 --- a/components/isceobj/Sensor/db/radarsat_slc/scene_record.xml +++ b/components/isceobj/Sensor/db/radarsat_slc/scene_record.xml @@ -122,4 +122,4 @@ - \ No newline at end of file + diff --git a/components/isceobj/Sensor/db/radarsat_slc/text_record.xml b/components/isceobj/Sensor/db/radarsat_slc/text_record.xml index 1c160d6..05ea254 100644 --- a/components/isceobj/Sensor/db/radarsat_slc/text_record.xml +++ b/components/isceobj/Sensor/db/radarsat_slc/text_record.xml @@ -17,4 +17,4 @@ - \ No newline at end of file + diff --git a/components/isceobj/Sensor/db/radarsat_slc/trailer_file.xml b/components/isceobj/Sensor/db/radarsat_slc/trailer_file.xml index 0fa658b..72aeb73 100644 --- a/components/isceobj/Sensor/db/radarsat_slc/trailer_file.xml +++ b/components/isceobj/Sensor/db/radarsat_slc/trailer_file.xml @@ -61,4 +61,4 @@ - \ No newline at end of file + diff --git a/components/isceobj/Sensor/db/radarsat_slc/volume_descriptor.xml b/components/isceobj/Sensor/db/radarsat_slc/volume_descriptor.xml index f9b6528..2602097 100644 --- a/components/isceobj/Sensor/db/radarsat_slc/volume_descriptor.xml +++ b/components/isceobj/Sensor/db/radarsat_slc/volume_descriptor.xml @@ -31,4 +31,4 @@ - \ No newline at end of file + diff --git a/components/isceobj/Sensor/db/risat/detailed_processing_record.xml b/components/isceobj/Sensor/db/risat/detailed_processing_record.xml index 37d3497..65e51b7 100644 --- a/components/isceobj/Sensor/db/risat/detailed_processing_record.xml +++ b/components/isceobj/Sensor/db/risat/detailed_processing_record.xml @@ -33,7 +33,7 @@ - + diff --git a/components/isceobj/Sensor/db/risat_slc/detailed_processing_record.xml b/components/isceobj/Sensor/db/risat_slc/detailed_processing_record.xml index 37d3497..65e51b7 100644 --- a/components/isceobj/Sensor/db/risat_slc/detailed_processing_record.xml +++ b/components/isceobj/Sensor/db/risat_slc/detailed_processing_record.xml @@ -33,7 +33,7 @@ - + diff --git a/components/isceobj/Sensor/src/ALOS_pre_process/utils.c b/components/isceobj/Sensor/src/ALOS_pre_process/utils.c index 0aec95d..50ba815 100644 --- a/components/isceobj/Sensor/src/ALOS_pre_process/utils.c +++ b/components/isceobj/Sensor/src/ALOS_pre_process/utils.c @@ -66,7 +66,7 @@ void get_seconds(struct PRM p, double *start, double *end) int m; double dyear, doy; double n_secs_day; -double prf_master; +double prf_reference; n_secs_day = 24.0*60.0*60.0; dyear = 1000.0*floor(p.SC_clock_start/1000.0); @@ -74,12 +74,12 @@ doy = p.SC_clock_start - dyear; m = p.nrows - p.num_valid_az; /* adjust the prf to use the a_rsatretch_a scale factor which was - needed to match the slave image to the master image */ + needed to match the secondary image to the reference image */ -prf_master = p.prf/(1.+p.a_stretch_a); +prf_reference = p.prf/(1.+p.a_stretch_a); -*start = n_secs_day*doy + (1.0*m)/(2.0*prf_master); -*end = *start + p.num_patches * p.num_valid_az/prf_master; +*start = n_secs_day*doy + (1.0*m)/(2.0*prf_reference); +*end = *start + p.num_patches * p.num_valid_az/prf_reference; } /*---------------------------------------------------------------------------*/ diff --git a/components/isceobj/StripmapProc/CMakeLists.txt b/components/isceobj/StripmapProc/CMakeLists.txt index 80c774b..c2936fc 100644 --- a/components/isceobj/StripmapProc/CMakeLists.txt +++ b/components/isceobj/StripmapProc/CMakeLists.txt @@ -12,7 +12,7 @@ InstallSameDir( runGeocode.py runInterferogram.py runPreprocessor.py - runRefineSlaveTiming.py + runRefineSecondaryTiming.py runResampleSlc.py runResampleSubbandSlc.py runROI.py diff --git a/components/isceobj/StripmapProc/Factories.py b/components/isceobj/StripmapProc/Factories.py index 27497d8..db74191 100644 --- a/components/isceobj/StripmapProc/Factories.py +++ b/components/isceobj/StripmapProc/Factories.py @@ -110,7 +110,7 @@ createGeo2rdr = _factory("runGeo2rdr") createSplitSpectrum = _factory("runSplitSpectrum") createResampleSlc = _factory("runResampleSlc") createResampleSubbandSlc = _factory("runResampleSubbandSlc") -createRefineSlaveTiming = _factory("runRefineSlaveTiming") +createRefineSecondaryTiming = _factory("runRefineSecondaryTiming") createDenseOffsets = _factory("runDenseOffsets") createRubbersheetAzimuth = _factory("runRubbersheetAzimuth") # Modified by V. Brancato (10.07.2019) createRubbersheetRange = _factory("runRubbersheetRange") # Modified by V. Brancato (10.07.2019) diff --git a/components/isceobj/StripmapProc/SConscript b/components/isceobj/StripmapProc/SConscript index 89adcb2..585d11f 100644 --- a/components/isceobj/StripmapProc/SConscript +++ b/components/isceobj/StripmapProc/SConscript @@ -45,7 +45,7 @@ project = 'StripmapProc' install = os.path.join(envisceobj['PRJ_SCONS_INSTALL'],package,project) listFiles = ['StripmapProc.py', 'runPreprocessor.py', 'runSplitSpectrum.py', - 'runCoherence.py' , 'runRefineSlaveTiming.py', 'runTopo.py', + 'runCoherence.py' , 'runRefineSecondaryTiming.py', 'runTopo.py', 'Factories.py' , 'runDenseOffsets.py', 'runResampleSlc.py' , 'runUnwrapGrass.py', '__init__.py' , 'runDispersive.py' , 'runResampleSubbandSlc.py', 'runUnwrapIcu.py', 'runFilter.py' , 'runROI.py' , 'runUnwrapSnaphu.py', 'runCrop.py', diff --git a/components/isceobj/StripmapProc/StripmapProc.py b/components/isceobj/StripmapProc/StripmapProc.py index c0f5344..bf2eb99 100755 --- a/components/isceobj/StripmapProc/StripmapProc.py +++ b/components/isceobj/StripmapProc/StripmapProc.py @@ -13,8 +13,8 @@ from iscesys.DateTimeUtil.DateTimeUtil import DateTimeUtil as DTU from iscesys.Compatibility import Compatibility from isceobj.Scene.Frame import FrameMixin -## Master Slave Hash Table -MASTER_SLAVE = {0:'master', 1:'slave', 'master':'master', 'slave':'slave'} +## Reference Secondary Hash Table +REFERENCE_SECONDARY = {0:'reference', 1:'secondary', 'reference':'reference', 'secondary':'secondary'} FIRST_SAMPLE_ACROSS = Component.Parameter('firstSampleAcross', @@ -48,71 +48,71 @@ NUMBER_LOCATION_DOWN = Component.Parameter('numberLocationDown', mandatory=False, doc='') -MASTER_RAW_PRODUCT = Component.Parameter('masterRawProduct', - public_name = 'master raw product', +REFERENCE_RAW_PRODUCT = Component.Parameter('referenceRawProduct', + public_name = 'reference raw product', default = None, type = str, mandatory = False, - doc = 'master raw product xml name') + doc = 'reference raw product xml name') -SLAVE_RAW_PRODUCT = Component.Parameter('slaveRawProduct', - public_name = 'slave raw product', +SECONDARY_RAW_PRODUCT = Component.Parameter('secondaryRawProduct', + public_name = 'secondary raw product', default = None, type = str, mandatory = False, - doc = 'slave raw product xml name') + doc = 'secondary raw product xml name') -MASTER_RAW_CROP_PRODUCT = Component.Parameter('masterRawCropProduct', - public_name = 'master raw cropped product', +REFERENCE_RAW_CROP_PRODUCT = Component.Parameter('referenceRawCropProduct', + public_name = 'reference raw cropped product', default = None, type = str, mandatory = False, - doc = 'master raw cropped product xml name') + doc = 'reference raw cropped product xml name') -SLAVE_RAW_CROP_PRODUCT = Component.Parameter('slaveRawCropProduct', - public_name = 'slave raw cropped product', +SECONDARY_RAW_CROP_PRODUCT = Component.Parameter('secondaryRawCropProduct', + public_name = 'secondary raw cropped product', default = None, type = str, mandatory = False, - doc = 'slave raw cropped product xml name') -MASTER_SLC_PRODUCT = Component.Parameter('masterSlcProduct', - public_name = 'master slc product', + doc = 'secondary raw cropped product xml name') +REFERENCE_SLC_PRODUCT = Component.Parameter('referenceSlcProduct', + public_name = 'reference slc product', default = None, type = str, mandatory = False, - doc = 'master slc product xml name') + doc = 'reference slc product xml name') -SLAVE_SLC_PRODUCT = Component.Parameter('slaveSlcProduct', - public_name = 'slave slc product', +SECONDARY_SLC_PRODUCT = Component.Parameter('secondarySlcProduct', + public_name = 'secondary slc product', default = None, type = str, mandatory = False, - doc = 'slave slc product xml name') + doc = 'secondary slc product xml name') -MASTER_SLC_CROP_PRODUCT = Component.Parameter('masterSlcCropProduct', - public_name = 'master slc cropped product', +REFERENCE_SLC_CROP_PRODUCT = Component.Parameter('referenceSlcCropProduct', + public_name = 'reference slc cropped product', default = None, type = str, mandatory = False, - doc = 'master slc cropped product xml name') + doc = 'reference slc cropped product xml name') -SLAVE_SLC_CROP_PRODUCT = Component.Parameter('slaveSlcCropProduct', - public_name = 'slave slc cropped product', +SECONDARY_SLC_CROP_PRODUCT = Component.Parameter('secondarySlcCropProduct', + public_name = 'secondary slc cropped product', default = None, type = str, mandatory = False, - doc = 'slave slc cropped product xml name') + doc = 'secondary slc cropped product xml name') -MASTER_GEOMETRY_SYSTEM = Component.Parameter('masterGeometrySystem', - public_name = 'master geometry system', +REFERENCE_GEOMETRY_SYSTEM = Component.Parameter('referenceGeometrySystem', + public_name = 'reference geometry system', default = None, type = str, mandatory = False, doc = 'zero doppler or native doppler') -SLAVE_GEOMETRY_SYSTEM = Component.Parameter('slaveGeometrySystem', - public_name = 'slave geometry system', +SECONDARY_GEOMETRY_SYSTEM = Component.Parameter('secondaryGeometrySystem', + public_name = 'secondary geometry system', default = None, type = str, mandatory = False, @@ -445,16 +445,16 @@ class StripmapProc(Component, FrameMixin): to modify and return their values. """ - parameter_list = (MASTER_RAW_PRODUCT, - SLAVE_RAW_PRODUCT, - MASTER_RAW_CROP_PRODUCT, - SLAVE_RAW_CROP_PRODUCT, - MASTER_SLC_PRODUCT, - SLAVE_SLC_PRODUCT, - MASTER_SLC_CROP_PRODUCT, - SLAVE_SLC_CROP_PRODUCT, - MASTER_GEOMETRY_SYSTEM, - SLAVE_GEOMETRY_SYSTEM, + parameter_list = (REFERENCE_RAW_PRODUCT, + SECONDARY_RAW_PRODUCT, + REFERENCE_RAW_CROP_PRODUCT, + SECONDARY_RAW_CROP_PRODUCT, + REFERENCE_SLC_PRODUCT, + SECONDARY_SLC_PRODUCT, + REFERENCE_SLC_CROP_PRODUCT, + SECONDARY_SLC_CROP_PRODUCT, + REFERENCE_GEOMETRY_SYSTEM, + SECONDARY_GEOMETRY_SYSTEM, GEOMETRY_DIRECTORY, OFFSETS_DIRECTORY, DENSE_OFFSETS_DIRECTORY, @@ -531,11 +531,11 @@ class StripmapProc(Component, FrameMixin): # self.geocode_list[i] = y return - def getMasterFrame(self): - return self._masterFrame + def getReferenceFrame(self): + return self._referenceFrame - def getSlaveFrame(self): - return self._slaveFrame + def getSecondaryFrame(self): + return self._secondaryFrame def getDemImage(self): return self._demImage @@ -546,23 +546,23 @@ class StripmapProc(Component, FrameMixin): def getTopo(self): return self._topo - def setMasterRawImage(self, image): - self._masterRawImage = image + def setReferenceRawImage(self, image): + self._referenceRawImage = image - def setSlaveRawImage(self, image): - self._slaveRawImage = image + def setSecondaryRawImage(self, image): + self._secondaryRawImage = image - def setMasterFrame(self, frame): - self._masterFrame = frame + def setReferenceFrame(self, frame): + self._referenceFrame = frame - def setSlaveFrame(self, frame): - self._slaveFrame = frame + def setSecondaryFrame(self, frame): + self._secondaryFrame = frame - def setMasterSquint(self, squint): - self._masterSquint = squint + def setReferenceSquint(self, squint): + self._referenceSquint = squint - def setSlaveSquint(self, squint): - self._slaveSquint = squint + def setSecondarySquint(self, squint): + self._secondarySquint = squint def setLookSide(self, lookSide): self._lookSide = lookSide @@ -579,12 +579,12 @@ class StripmapProc(Component, FrameMixin): ## This overides the _FrameMixin.frame @property def frame(self): - return self.masterFrame + return self.referenceFrame # Some line violate PEP008 in order to facilitate using "grep" # for development - masterFrame = property(getMasterFrame, setMasterFrame) - slaveFrame = property(getSlaveFrame, setSlaveFrame) + referenceFrame = property(getReferenceFrame, setReferenceFrame) + secondaryFrame = property(getSecondaryFrame, setSecondaryFrame) demImage = property(getDemImage, setDemImage) numberPatches = property(getNumberPatches, setNumberPatches) topo = property(getTopo, setTopo) diff --git a/components/isceobj/StripmapProc/__StripmapProc.py b/components/isceobj/StripmapProc/__StripmapProc.py index 3c34683..f4abab3 100644 --- a/components/isceobj/StripmapProc/__StripmapProc.py +++ b/components/isceobj/StripmapProc/__StripmapProc.py @@ -114,36 +114,36 @@ LOOK_SIDE = Component.Parameter('_lookSide', private=True, doc='') -MASTER_FRAME = Component.Facility('_masterFrame', - public_name='masterFrame', +REFERENCE_FRAME = Component.Facility('_referenceFrame', + public_name='referenceFrame', factory='default', mandatory=True, private=True, - doc='Master frame') + doc='Reference frame') -SLAVE_FRAME = Component.Facility('_slaveFrame', - public_name='slaveFrame', +SECONDARY_FRAME = Component.Facility('_secondaryFrame', + public_name='secondaryFrame', factory='default', mandatory=True, private=True, - doc='Slave frame') + doc='Secondary frame') -MASTER_ORBIT = Component.Facility('_masterOrbit', - public_name='masterOrbit', +REFERENCE_ORBIT = Component.Facility('_referenceOrbit', + public_name='referenceOrbit', factory='default', mandatory=True, private=True, - doc='Master orbit') + doc='Reference orbit') -SLAVE_ORBIT = Component.Facility('_slaveOrbit', - public_name='slaveOrbit', +SECONDARY_ORBIT = Component.Facility('_secondaryOrbit', + public_name='secondaryOrbit', factory='default', mandatory=True, private=True, - doc='Slave orbit') + doc='Secondary orbit') #ask DOPPLER_CENTROID = Component.Facility('_dopplerCentroid', @@ -153,47 +153,47 @@ DOPPLER_CENTROID = Component.Facility('_dopplerCentroid', private=True, doc='') -MASTER_DOPPLER = Component.Facility('_masterDoppler', - public_name='masterDoppler', +REFERENCE_DOPPLER = Component.Facility('_referenceDoppler', + public_name='referenceDoppler', factory='default', mandatory=True, private=True, doc='') -SLAVE_DOPPLER = Component.Facility('_slaveDoppler', - public_name='slaveDoppler', +SECONDARY_DOPPLER = Component.Facility('_secondaryDoppler', + public_name='secondaryDoppler', factory='default', mandatory=True, private=True, doc='') -MASTER_RAW_IMAGE = Component.Facility('_masterRawImage', - public_name='masterRawImage', +REFERENCE_RAW_IMAGE = Component.Facility('_referenceRawImage', + public_name='referenceRawImage', factory='default', mandatory=True, private=True, doc='') -SLAVE_RAW_IMAGE = Component.Facility('_slaveRawImage', - public_name='slaveRawImage', +SECONDARY_RAW_IMAGE = Component.Facility('_secondaryRawImage', + public_name='secondaryRawImage', factory='default', mandatory=True, private=True, doc='') -MASTER_SLC_IMAGE = Component.Facility('_masterSlcImage', - public_name='masterSlcImage', +REFERENCE_SLC_IMAGE = Component.Facility('_referenceSlcImage', + public_name='referenceSlcImage', factory='default', mandatory=True, private=True, doc='') -SLAVE_SLC_IMAGE = Component.Facility('_slaveSlcImage', - public_name='slaveSlcImage', +SECONDARY_SLC_IMAGE = Component.Facility('_secondarySlcImage', + public_name='secondarySlcImage', factory='default', mandatory=True, private=True, @@ -324,16 +324,16 @@ TOPO = Component.Facility('_topo', private=True, doc='') -RAW_MASTER_IQ_IMAGE = Component.Facility('_rawMasterIQImage', - public_name='rawMasterIQImage', +RAW_REFERENCE_IQ_IMAGE = Component.Facility('_rawReferenceIQImage', + public_name='rawReferenceIQImage', factory='default', mandatory=True, private=True, doc='') -RAW_SLAVE_IQ_IMAGE = Component.Facility('_rawSlaveIQImage', - public_name='rawSlaveIQImage', +RAW_SECONDARY_IQ_IMAGE = Component.Facility('_rawSecondaryIQImage', + public_name='rawSecondaryIQImage', factory='default', mandatory=True, private=True, @@ -393,17 +393,17 @@ parameter_list = ( NUMBER_RESAMP_LINES ) facility_list = ( - MASTER_FRAME, - SLAVE_FRAME, - MASTER_ORBIT, - SLAVE_ORBIT, - MASTER_DOPPLER, - SLAVE_DOPPLER, + REFERENCE_FRAME, + SECONDARY_FRAME, + REFERENCE_ORBIT, + SECONDARY_ORBIT, + REFERENCE_DOPPLER, + SECONDARY_DOPPLER, DOPPLER_CENTROID, - MASTER_RAW_IMAGE, - SLAVE_RAW_IMAGE, - MASTER_SLC_IMAGE, - SLAVE_SLC_IMAGE, + REFERENCE_RAW_IMAGE, + SECONDARY_RAW_IMAGE, + REFERENCE_SLC_IMAGE, + SECONDARY_SLC_IMAGE, OFFSET_AZIMUTH_IMAGE, OFFSET_RANGE_IMAGE, RESAMP_AMP_IMAGE, @@ -420,8 +420,8 @@ facility_list = ( MOCOMP_BASELINE, TOPOCORRECT, TOPO, - RAW_MASTER_IQ_IMAGE, - RAW_SLAVE_IQ_IMAGE, + RAW_REFERENCE_IQ_IMAGE, + RAW_SECONDARY_IQ_IMAGE, TOPOCORRECT_FLAT_IMAGE, OFFSET_FIELD, REFINED_OFFSET_FIELD, diff --git a/components/isceobj/StripmapProc/extractInfo.py b/components/isceobj/StripmapProc/extractInfo.py index dc61e70..c04f9b0 100755 --- a/components/isceobj/StripmapProc/extractInfo.py +++ b/components/isceobj/StripmapProc/extractInfo.py @@ -34,16 +34,16 @@ import isceobj.Catalog import logging logger = logging.getLogger('isce.insar.extractInfo') -def extractInfo(self, master, slave): +def extractInfo(self, reference, secondary): from contrib.frameUtils.FrameInfoExtractor import FrameInfoExtractor FIE = FrameInfoExtractor() - masterInfo = FIE.extractInfoFromFrame(master) - slaveInfo = FIE.extractInfoFromFrame(slave) - masterInfo.sensingStart = [masterInfo.sensingStart, slaveInfo.sensingStart] - masterInfo.sensingStop = [masterInfo.sensingStop, slaveInfo.sensingStop] + referenceInfo = FIE.extractInfoFromFrame(reference) + secondaryInfo = FIE.extractInfoFromFrame(secondary) + referenceInfo.sensingStart = [referenceInfo.sensingStart, secondaryInfo.sensingStart] + referenceInfo.sensingStop = [referenceInfo.sensingStop, secondaryInfo.sensingStop] # for stitched frames do not make sense anymore - mbb = masterInfo.getBBox() - sbb = slaveInfo.getBBox() + mbb = referenceInfo.getBBox() + sbb = secondaryInfo.getBBox() latEarlyNear = mbb[0][0] latLateNear = mbb[2][0] @@ -65,7 +65,7 @@ def extractInfo(self, master, slave): ret.append([min(mbb[2][0], sbb[2][0]), max(mbb[2][1], sbb[2][1])]) ret.append([min(mbb[3][0], sbb[3][0]), min(mbb[3][1], sbb[3][1])]) - masterInfo.bbox = ret - return masterInfo + referenceInfo.bbox = ret + return referenceInfo # the track should be the same for both diff --git a/components/isceobj/StripmapProc/runCrop.py b/components/isceobj/StripmapProc/runCrop.py index b40bd48..58b9f93 100755 --- a/components/isceobj/StripmapProc/runCrop.py +++ b/components/isceobj/StripmapProc/runCrop.py @@ -220,20 +220,20 @@ def runCrop(self, raw=False): if raw: if self.regionOfInterest is None: - self._insar.masterRawCropProduct = self._insar.masterRawProduct - self._insar.slaveRawCropProduct = self._insar.slaveRawProduct + self._insar.referenceRawCropProduct = self._insar.referenceRawProduct + self._insar.secondaryRawCropProduct = self._insar.secondaryRawProduct print('No region of interesting provided, skipping cropping of raw data') return - ###Check if master started at raw - if self._insar.masterRawProduct is None: - self._insar.masterRawCropProduct = self._insar.masterRawProduct - print('Looks like master product is SLC, skipping raw cropping') + ###Check if reference started at raw + if self._insar.referenceRawProduct is None: + self._insar.referenceRawCropProduct = self._insar.referenceRawProduct + print('Looks like reference product is SLC, skipping raw cropping') else: - frame = self._insar.loadProduct( self._insar.masterRawProduct) + frame = self._insar.loadProduct( self._insar.referenceRawProduct) - outdir = os.path.splitext(self._insar.masterRawProduct)[0] + '_crop' - outname = os.path.join( outdir, os.path.basename(self.master.output) + '.raw') + outdir = os.path.splitext(self._insar.referenceRawProduct)[0] + '_crop' + outname = os.path.join( outdir, os.path.basename(self.reference.output) + '.raw') limits = geoboxToAzrgbox(frame, self.regionOfInterest, israw=True, zrange=self.heightRange) @@ -241,20 +241,20 @@ def runCrop(self, raw=False): israw=True) self._insar.saveProduct( outframe, outdir + '.xml') - self._insar.masterRawCropProduct = outdir + '.xml' + self._insar.referenceRawCropProduct = outdir + '.xml' frame = None outframe = None - ###Check if slave started at raw - if self._insar.slaveRawProduct is None: - self._insar.slaveRawCropProduct = self._insar.slaveRawProduct - print('Looks like slave product is SLC, skipping raw cropping') + ###Check if secondary started at raw + if self._insar.secondaryRawProduct is None: + self._insar.secondaryRawCropProduct = self._insar.secondaryRawProduct + print('Looks like secondary product is SLC, skipping raw cropping') else: - frame = self._insar.loadProduct( self._insar.slaveRawProduct) + frame = self._insar.loadProduct( self._insar.secondaryRawProduct) - outdir = os.path.splitext(self._insar.slaveRawProduct)[0] + '_crop' - outname = os.path.join( outdir, os.path.basename(self.slave.output) + '.raw') + outdir = os.path.splitext(self._insar.secondaryRawProduct)[0] + '_crop' + outname = os.path.join( outdir, os.path.basename(self.secondary.output) + '.raw') limits = geoboxToAzrgbox(frame, self.regionOfInterest, israw=True, zrange=self.heightRange) @@ -262,7 +262,7 @@ def runCrop(self, raw=False): israw=True) self._insar.saveProduct( outframe, outdir + '.xml') - self._insar.slaveRawCropProduct = outdir + '.xml' + self._insar.secondaryRawCropProduct = outdir + '.xml' frame = None outframe = None @@ -270,45 +270,45 @@ def runCrop(self, raw=False): return else: if self.regionOfInterest is None: - self._insar.masterSlcCropProduct = self._insar.masterSlcProduct - self._insar.slaveSlcCropProduct = self._insar.slaveSlcProduct + self._insar.referenceSlcCropProduct = self._insar.referenceSlcProduct + self._insar.secondarySlcCropProduct = self._insar.secondarySlcProduct print('No region of interesting provided, skipping cropping of slc data') return - ###Crop master SLC - frame = self._insar.loadProduct( self._insar.masterSlcProduct) + ###Crop reference SLC + frame = self._insar.loadProduct( self._insar.referenceSlcProduct) - outdir = os.path.splitext(self._insar.masterSlcProduct)[0] + '_crop' - outname = os.path.join( outdir, os.path.basename(self.master.output) + '.slc') + outdir = os.path.splitext(self._insar.referenceSlcProduct)[0] + '_crop' + outname = os.path.join( outdir, os.path.basename(self.reference.output) + '.slc') limits = geoboxToAzrgbox(frame, self.regionOfInterest, - israw=False, isnative=self.insar.masterGeometrySystem.upper().startswith('NATIVE'), + israw=False, isnative=self.insar.referenceGeometrySystem.upper().startswith('NATIVE'), zrange=self.heightRange) outframe = cropFrame(frame, limits, outname, israw=False) self._insar.saveProduct( outframe, outdir + '.xml') - self._insar.masterSlcCropProduct = outdir + '.xml' + self._insar.referenceSlcCropProduct = outdir + '.xml' frame = None outframe = None - ###Crop master SLC - frame = self._insar.loadProduct( self._insar.slaveSlcProduct) + ###Crop reference SLC + frame = self._insar.loadProduct( self._insar.secondarySlcProduct) - outdir = os.path.splitext(self._insar.slaveSlcProduct)[0] + '_crop' - outname = os.path.join( outdir, os.path.basename(self.slave.output) + '.slc') + outdir = os.path.splitext(self._insar.secondarySlcProduct)[0] + '_crop' + outname = os.path.join( outdir, os.path.basename(self.secondary.output) + '.slc') limits = geoboxToAzrgbox(frame, self.regionOfInterest, - israw=False, isnative=self.insar.masterGeometrySystem.upper().startswith('NATIVE'), + israw=False, isnative=self.insar.referenceGeometrySystem.upper().startswith('NATIVE'), zrange=self.heightRange) outframe = cropFrame(frame, limits, outname, israw=False) self._insar.saveProduct( outframe, outdir + '.xml') - self._insar.slaveSlcCropProduct = outdir + '.xml' + self._insar.secondarySlcCropProduct = outdir + '.xml' frame = None outframe = None diff --git a/components/isceobj/StripmapProc/runDenseOffsets.py b/components/isceobj/StripmapProc/runDenseOffsets.py index cdcd0f2..f92ec62 100644 --- a/components/isceobj/StripmapProc/runDenseOffsets.py +++ b/components/isceobj/StripmapProc/runDenseOffsets.py @@ -11,7 +11,7 @@ import logging logger = logging.getLogger('isce.insar.runDenseOffsets') @use_api -def estimateOffsetField(master, slave, denseOffsetFileName, +def estimateOffsetField(reference, secondary, denseOffsetFileName, ww=64, wh=64, sw=20, shh=20, kw=32, kh=32): @@ -19,15 +19,15 @@ def estimateOffsetField(master, slave, denseOffsetFileName, Estimate offset field between burst and simamp. ''' - ###Loading the slave image object + ###Loading the secondary image object sim = isceobj.createSlcImage() - sim.load(slave+'.xml') + sim.load(secondary+'.xml') sim.setAccessMode('READ') sim.createImage() - ###Loading the master image object + ###Loading the reference image object sar = isceobj.createSlcImage() - sar.load(master + '.xml') + sar.load(reference + '.xml') sar.setAccessMode('READ') sar.createImage() @@ -84,17 +84,17 @@ def runDenseOffsets(self): else: return - masterFrame = self.insar.loadProduct( self._insar.masterSlcCropProduct) - masterSlc = masterFrame.getImage().filename + referenceFrame = self.insar.loadProduct( self._insar.referenceSlcCropProduct) + referenceSlc = referenceFrame.getImage().filename - slaveSlc = os.path.join(self.insar.coregDirname, self._insar.refinedCoregFilename ) + secondarySlc = os.path.join(self.insar.coregDirname, self._insar.refinedCoregFilename ) dirname = self.insar.denseOffsetsDirname os.makedirs(dirname, exist_ok=True) denseOffsetFilename = os.path.join(dirname , self.insar.denseOffsetFilename) - field = estimateOffsetField(masterSlc, slaveSlc, denseOffsetFilename, + field = estimateOffsetField(referenceSlc, secondarySlc, denseOffsetFilename, ww = self.denseWindowWidth, wh = self.denseWindowHeight, sw = self.denseSearchWidth, diff --git a/components/isceobj/StripmapProc/runDispersive.py b/components/isceobj/StripmapProc/runDispersive.py index 465f570..c757fe1 100644 --- a/components/isceobj/StripmapProc/runDispersive.py +++ b/components/isceobj/StripmapProc/runDispersive.py @@ -426,9 +426,9 @@ def runDispersive(self): maskFile = os.path.join(outputDir, "mask.bil") - masterFrame = self._insar.loadProduct( self._insar.masterSlcCropProduct) + referenceFrame = self._insar.loadProduct( self._insar.referenceSlcCropProduct) - wvl = masterFrame.radarWavelegth + wvl = referenceFrame.radarWavelegth wvlL = self.insar.lowBandRadarWavelength wvlH = self.insar.highBandRadarWavelength @@ -437,15 +437,15 @@ def runDispersive(self): fL = SPEED_OF_LIGHT/wvlL fH = SPEED_OF_LIGHT/wvlH - pulseLength = masterFrame.instrument.pulseLength - chirpSlope = masterFrame.instrument.chirpSlope + pulseLength = referenceFrame.instrument.pulseLength + chirpSlope = referenceFrame.instrument.chirpSlope # Total Bandwidth B = np.abs(chirpSlope)*pulseLength ###Determine looks - azLooks, rgLooks = self.insar.numberOfLooks( masterFrame, self.posting, + azLooks, rgLooks = self.insar.numberOfLooks( referenceFrame, self.posting, self.numberAzimuthLooks, self.numberRangeLooks) # estimating the dispersive and non-dispersive components diff --git a/components/isceobj/StripmapProc/runGeo2rdr.py b/components/isceobj/StripmapProc/runGeo2rdr.py index 4fb1efb..d20af00 100755 --- a/components/isceobj/StripmapProc/runGeo2rdr.py +++ b/components/isceobj/StripmapProc/runGeo2rdr.py @@ -49,7 +49,7 @@ def runGeo2rdr(self): logger.info("Running geo2rdr") - info = self._insar.loadProduct( self._insar.slaveSlcCropProduct) + info = self._insar.loadProduct( self._insar.secondarySlcCropProduct) offsetsDir = self.insar.offsetsDirname os.makedirs(offsetsDir, exist_ok=True) @@ -74,7 +74,7 @@ def runGeo2rdr(self): grdr.numberAzimuthLooks = 1 - if self.insar.slaveGeometrySystem.lower().startswith('native'): + if self.insar.secondaryGeometrySystem.lower().startswith('native'): p = [x/info.PRF for x in info._dopplerVsPixel] else: p = [0.] diff --git a/components/isceobj/StripmapProc/runGeocode.py b/components/isceobj/StripmapProc/runGeocode.py index b7cc758..a0a7568 100644 --- a/components/isceobj/StripmapProc/runGeocode.py +++ b/components/isceobj/StripmapProc/runGeocode.py @@ -52,7 +52,7 @@ def runGeocode(self, prodlist, bbox, is_offset_mode=False): ###Read in the product - burst = self._insar.loadProduct( self._insar.masterSlcCropProduct) + burst = self._insar.loadProduct( self._insar.referenceSlcCropProduct) ####Get required values from product t0 = burst.sensingStart @@ -87,7 +87,7 @@ def runGeocode(self, prodlist, bbox, is_offset_mode=False): ###Ughhh!! Doppler handling - if self._insar.masterGeometrySystem.lower().startswith('native'): + if self._insar.referenceGeometrySystem.lower().startswith('native'): ###Need to fit polynomials ###Geozero fortran assumes that starting range for radar image and polynomial are same ###Also assumes that the polynomial spacing is original spacing at full looks diff --git a/components/isceobj/StripmapProc/runInterferogram.py b/components/isceobj/StripmapProc/runInterferogram.py index c78cf63..58168bc 100644 --- a/components/isceobj/StripmapProc/runInterferogram.py +++ b/components/isceobj/StripmapProc/runInterferogram.py @@ -37,7 +37,7 @@ def compute_FlatEarth(self,ifgFilename,width,length,radarWavelength): # If rubbersheeting has been performed add back the range sheet offsets - info = self._insar.loadProduct(self._insar.slaveSlcCropProduct) + info = self._insar.loadProduct(self._insar.secondarySlcCropProduct) #radarWavelength = info.getInstrument().getRadarWavelength() rangePixelSize = info.getInstrument().getRangePixelSize() fact = 4 * np.pi* rangePixelSize / radarWavelength @@ -210,13 +210,13 @@ def generateIgram(self,imageSlc1, imageSlc2, resampName, azLooks, rgLooks,radarW return imageInt, imageAmp -def subBandIgram(self, masterSlc, slaveSlc, subBandDir,radarWavelength): +def subBandIgram(self, referenceSlc, secondarySlc, subBandDir,radarWavelength): img1 = isceobj.createImage() - img1.load(masterSlc + '.xml') + img1.load(referenceSlc + '.xml') img2 = isceobj.createImage() - img2.load(slaveSlc + '.xml') + img2.load(secondarySlc + '.xml') azLooks = self.numberAzimuthLooks rgLooks = self.numberRangeLooks @@ -235,10 +235,10 @@ def runSubBandInterferograms(self): logger.info("Generating sub-band interferograms") - masterFrame = self._insar.loadProduct( self._insar.masterSlcCropProduct) - slaveFrame = self._insar.loadProduct( self._insar.slaveSlcCropProduct) + referenceFrame = self._insar.loadProduct( self._insar.referenceSlcCropProduct) + secondaryFrame = self._insar.loadProduct( self._insar.secondarySlcCropProduct) - azLooks, rgLooks = self.insar.numberOfLooks( masterFrame, self.posting, + azLooks, rgLooks = self.insar.numberOfLooks( referenceFrame, self.posting, self.numberAzimuthLooks, self.numberRangeLooks) self.numberAzimuthLooks = azLooks @@ -247,41 +247,41 @@ def runSubBandInterferograms(self): print("azimuth and range looks: ", azLooks, rgLooks) ########### - masterSlc = masterFrame.getImage().filename + referenceSlc = referenceFrame.getImage().filename lowBandDir = os.path.join(self.insar.splitSpectrumDirname, self.insar.lowBandSlcDirname) highBandDir = os.path.join(self.insar.splitSpectrumDirname, self.insar.highBandSlcDirname) - masterLowBandSlc = os.path.join(lowBandDir, os.path.basename(masterSlc)) - masterHighBandSlc = os.path.join(highBandDir, os.path.basename(masterSlc)) + referenceLowBandSlc = os.path.join(lowBandDir, os.path.basename(referenceSlc)) + referenceHighBandSlc = os.path.join(highBandDir, os.path.basename(referenceSlc)) ########## - slaveSlc = slaveFrame.getImage().filename + secondarySlc = secondaryFrame.getImage().filename coregDir = os.path.join(self.insar.coregDirname, self.insar.lowBandSlcDirname) - slaveLowBandSlc = os.path.join(coregDir , os.path.basename(slaveSlc)) + secondaryLowBandSlc = os.path.join(coregDir , os.path.basename(secondarySlc)) coregDir = os.path.join(self.insar.coregDirname, self.insar.highBandSlcDirname) - slaveHighBandSlc = os.path.join(coregDir , os.path.basename(slaveSlc)) + secondaryHighBandSlc = os.path.join(coregDir , os.path.basename(secondarySlc)) ########## - interferogramName = subBandIgram(self, masterLowBandSlc, slaveLowBandSlc, self.insar.lowBandSlcDirname,self.insar.lowBandRadarWavelength) + interferogramName = subBandIgram(self, referenceLowBandSlc, secondaryLowBandSlc, self.insar.lowBandSlcDirname,self.insar.lowBandRadarWavelength) - interferogramName = subBandIgram(self, masterHighBandSlc, slaveHighBandSlc, self.insar.highBandSlcDirname,self.insar.highBandRadarWavelength) + interferogramName = subBandIgram(self, referenceHighBandSlc, secondaryHighBandSlc, self.insar.highBandSlcDirname,self.insar.highBandRadarWavelength) def runFullBandInterferogram(self): logger.info("Generating interferogram") - masterFrame = self._insar.loadProduct( self._insar.masterSlcCropProduct) - masterSlc = masterFrame.getImage().filename + referenceFrame = self._insar.loadProduct( self._insar.referenceSlcCropProduct) + referenceSlc = referenceFrame.getImage().filename if (self.doRubbersheetingRange | self.doRubbersheetingAzimuth): - slaveSlc = os.path.join(self._insar.coregDirname, self._insar.fineCoregFilename) + secondarySlc = os.path.join(self._insar.coregDirname, self._insar.fineCoregFilename) else: - slaveSlc = os.path.join(self._insar.coregDirname, self._insar.refinedCoregFilename) + secondarySlc = os.path.join(self._insar.coregDirname, self._insar.refinedCoregFilename) img1 = isceobj.createImage() - img1.load(masterSlc + '.xml') + img1.load(referenceSlc + '.xml') img2 = isceobj.createImage() - img2.load(slaveSlc + '.xml') + img2.load(secondarySlc + '.xml') - azLooks, rgLooks = self.insar.numberOfLooks( masterFrame, self.posting, + azLooks, rgLooks = self.insar.numberOfLooks( referenceFrame, self.posting, self.numberAzimuthLooks, self.numberRangeLooks) self.numberAzimuthLooks = azLooks @@ -297,7 +297,7 @@ def runFullBandInterferogram(self): interferogramName = os.path.join(ifgDir , self.insar.ifgFilename) - info = self._insar.loadProduct(self._insar.slaveSlcCropProduct) + info = self._insar.loadProduct(self._insar.secondarySlcCropProduct) radarWavelength = info.getInstrument().getRadarWavelength() generateIgram(self,img1, img2, interferogramName, azLooks, rgLooks,radarWavelength) @@ -305,7 +305,7 @@ def runFullBandInterferogram(self): ###Compute coherence cohname = os.path.join(self.insar.ifgDirname, self.insar.correlationFilename) - computeCoherence(masterSlc, slaveSlc, cohname+'.full') + computeCoherence(referenceSlc, secondarySlc, cohname+'.full') multilook(cohname+'.full', outname=cohname, alks=azLooks, rlks=rgLooks) diff --git a/components/isceobj/StripmapProc/runPreprocessor.py b/components/isceobj/StripmapProc/runPreprocessor.py index 60c81ec..ef27bbf 100755 --- a/components/isceobj/StripmapProc/runPreprocessor.py +++ b/components/isceobj/StripmapProc/runPreprocessor.py @@ -43,158 +43,158 @@ def runPreprocessor(self): from .Factories import isRawSensor, isZeroDopplerSLC, getDopplerMethod - ###Unpack master - sensor = copy.deepcopy(self.master) + ###Unpack reference + sensor = copy.deepcopy(self.reference) dirname = sensor.output - if self.masterSensorName is None: - self.masterSensorName = self.sensorName + if self.referenceSensorName is None: + self.referenceSensorName = self.sensorName - israwdata = isRawSensor(self.masterSensorName) + israwdata = isRawSensor(self.referenceSensorName) - if self.masterDopplerMethod is None: - mdop = getDopplerMethod(self.masterSensorName) + if self.referenceDopplerMethod is None: + mdop = getDopplerMethod(self.referenceSensorName) else: - mdop = self.masterDopplerMethod + mdop = self.referenceDopplerMethod - masterdop = isceobj.Doppler.createDoppler(mdop) + referencedop = isceobj.Doppler.createDoppler(mdop) if israwdata: - print('Master data is in RAW format. Adding _raw to output name.') + print('Reference data is in RAW format. Adding _raw to output name.') sensor.output = os.path.join(dirname + '_raw', os.path.basename(dirname)+'.raw') os.makedirs(os.path.dirname(sensor.output), exist_ok=True) #sensor._resampleFlag = 'single2dual' - master = make_raw(sensor, masterdop) + reference = make_raw(sensor, referencedop) ###Weird handling here because of way make_raw is structured ###DOPIQ uses weird dict to store coeffs if mdop == 'useDOPIQ': - #master._dopplerVsPixel = [masterdop.quadratic[x]*master.PRF for x in ['a','b','c']] - master.frame._dopplerVsPixel = [masterdop.quadratic[x]*master.PRF for x in ['a','b','c']] + #reference._dopplerVsPixel = [referencedop.quadratic[x]*reference.PRF for x in ['a','b','c']] + reference.frame._dopplerVsPixel = [referencedop.quadratic[x]*reference.PRF for x in ['a','b','c']] - if self._insar.masterRawProduct is None: - self._insar.masterRawProduct = dirname + '_raw.xml' + if self._insar.referenceRawProduct is None: + self._insar.referenceRawProduct = dirname + '_raw.xml' - self._insar.saveProduct(master.frame, self._insar.masterRawProduct) + self._insar.saveProduct(reference.frame, self._insar.referenceRawProduct) else: - print('Master data is in SLC format. Adding _slc to output name.') - iszerodop = isZeroDopplerSLC(self.masterSensorName) + print('Reference data is in SLC format. Adding _slc to output name.') + iszerodop = isZeroDopplerSLC(self.referenceSensorName) sensor.output = os.path.join(dirname + '_slc', os.path.basename(dirname)+'.slc') os.makedirs(os.path.dirname(sensor.output), exist_ok=True) - master = make_raw(sensor, masterdop) + reference = make_raw(sensor, referencedop) - if self._insar.masterSlcProduct is None: - self._insar.masterSlcProduct = dirname + '_slc.xml' + if self._insar.referenceSlcProduct is None: + self._insar.referenceSlcProduct = dirname + '_slc.xml' if iszerodop: - self._insar.masterGeometrySystem = 'Zero Doppler' + self._insar.referenceGeometrySystem = 'Zero Doppler' else: - self._insar.masterGeometrySystem = 'Native Doppler' + self._insar.referenceGeometrySystem = 'Native Doppler' - self._insar.saveProduct(master.frame, self._insar.masterSlcProduct) + self._insar.saveProduct(reference.frame, self._insar.referenceSlcProduct) - ###Unpack slave - sensor = copy.deepcopy(self.slave) + ###Unpack secondary + sensor = copy.deepcopy(self.secondary) dirname = sensor.output - if self.slaveSensorName is None: - self.slaveSensorName = self.sensorName + if self.secondarySensorName is None: + self.secondarySensorName = self.sensorName - israwdata = isRawSensor(self.slaveSensorName) + israwdata = isRawSensor(self.secondarySensorName) - if self.slaveDopplerMethod is None: - sdop = getDopplerMethod( self.slaveSensorName) + if self.secondaryDopplerMethod is None: + sdop = getDopplerMethod( self.secondarySensorName) else: - sdop = self.slaveDopplerMethod + sdop = self.secondaryDopplerMethod - slavedop = isceobj.Doppler.createDoppler(sdop) + secondarydop = isceobj.Doppler.createDoppler(sdop) if israwdata: - print('Slave data is in RAW format. Adding _raw to output name.') + print('Secondary data is in RAW format. Adding _raw to output name.') sensor.output = os.path.join(dirname + '_raw', os.path.basename(dirname)+'.raw') os.makedirs(os.path.dirname(sensor.output), exist_ok=True) - slave = make_raw(sensor, slavedop) + secondary = make_raw(sensor, secondarydop) ###Weird handling here because of make_raw structure ###DOPIQ uses weird dict to store coefficients if sdop == 'useDOPIQ': - #slave._dopplerVsPixel = [slavedop.quadratic[x]*slave.PRF for x in ['a','b','c']] - slave.frame._dopplerVsPixel = [slavedop.quadratic[x]*slave.PRF for x in ['a','b','c']] + #secondary._dopplerVsPixel = [secondarydop.quadratic[x]*secondary.PRF for x in ['a','b','c']] + secondary.frame._dopplerVsPixel = [secondarydop.quadratic[x]*secondary.PRF for x in ['a','b','c']] - if self._insar.slaveRawProduct is None: - self._insar.slaveRawProduct = dirname + '_raw.xml' + if self._insar.secondaryRawProduct is None: + self._insar.secondaryRawProduct = dirname + '_raw.xml' - self._insar.saveProduct(slave.frame, self._insar.slaveRawProduct) + self._insar.saveProduct(secondary.frame, self._insar.secondaryRawProduct) else: - print('Slave data is in SLC format. Adding _slc to output name.') - iszerodop = isZeroDopplerSLC(self.slaveSensorName) + print('Secondary data is in SLC format. Adding _slc to output name.') + iszerodop = isZeroDopplerSLC(self.secondarySensorName) sensor.output = os.path.join(dirname + '_slc', os.path.basename(dirname)+'.slc') os.makedirs( os.path.dirname(sensor.output), exist_ok=True) - slave = make_raw(sensor, slavedop) + secondary = make_raw(sensor, secondarydop) - if self._insar.slaveSlcProduct is None: - self._insar.slaveSlcProduct = dirname + '_slc.xml' + if self._insar.secondarySlcProduct is None: + self._insar.secondarySlcProduct = dirname + '_slc.xml' if iszerodop: - self._insar.slaveGeometrySystem = 'Zero Doppler' + self._insar.secondaryGeometrySystem = 'Zero Doppler' else: - self._insar.slaveGeometrySystem = 'Native Doppler' + self._insar.secondaryGeometrySystem = 'Native Doppler' - self._insar.saveProduct(slave.frame, self._insar.slaveSlcProduct) + self._insar.saveProduct(secondary.frame, self._insar.secondarySlcProduct) catalog = isceobj.Catalog.createCatalog(self._insar.procDoc.name) - frame = master.frame + frame = reference.frame instrument = frame.getInstrument() platform = instrument.getPlatform() - catalog.addInputsFrom(master.sensor, 'master.sensor') - catalog.addItem('width', frame.numberOfSamples, 'master') - catalog.addItem('iBias', instrument.getInPhaseValue(), 'master') - catalog.addItem('qBias', instrument.getQuadratureValue(), 'master') - catalog.addItem('range_sampling_rate', instrument.getRangeSamplingRate(), 'master') - catalog.addItem('prf', instrument.getPulseRepetitionFrequency(), 'master') - catalog.addItem('pri', 1.0/instrument.getPulseRepetitionFrequency(), 'master') - catalog.addItem('pulse_length', instrument.getPulseLength(), 'master') - catalog.addItem('chirp_slope', instrument.getChirpSlope(), 'master') - catalog.addItem('wavelength', instrument.getRadarWavelength(), 'master') - catalog.addItem('lookSide', platform.pointingDirection, 'master') - catalog.addInputsFrom(frame, 'master.frame') - catalog.addInputsFrom(instrument, 'master.instrument') - catalog.addInputsFrom(platform, 'master.platform') - catalog.addInputsFrom(frame.orbit, 'master.orbit') + catalog.addInputsFrom(reference.sensor, 'reference.sensor') + catalog.addItem('width', frame.numberOfSamples, 'reference') + catalog.addItem('iBias', instrument.getInPhaseValue(), 'reference') + catalog.addItem('qBias', instrument.getQuadratureValue(), 'reference') + catalog.addItem('range_sampling_rate', instrument.getRangeSamplingRate(), 'reference') + catalog.addItem('prf', instrument.getPulseRepetitionFrequency(), 'reference') + catalog.addItem('pri', 1.0/instrument.getPulseRepetitionFrequency(), 'reference') + catalog.addItem('pulse_length', instrument.getPulseLength(), 'reference') + catalog.addItem('chirp_slope', instrument.getChirpSlope(), 'reference') + catalog.addItem('wavelength', instrument.getRadarWavelength(), 'reference') + catalog.addItem('lookSide', platform.pointingDirection, 'reference') + catalog.addInputsFrom(frame, 'reference.frame') + catalog.addInputsFrom(instrument, 'reference.instrument') + catalog.addInputsFrom(platform, 'reference.platform') + catalog.addInputsFrom(frame.orbit, 'reference.orbit') - frame = slave.frame + frame = secondary.frame instrument = frame.getInstrument() platform = instrument.getPlatform() - catalog.addInputsFrom(slave.sensor, 'slave.sensor') - catalog.addItem('width', frame.numberOfSamples, 'slave') - catalog.addItem('iBias', instrument.getInPhaseValue(), 'slave') - catalog.addItem('qBias', instrument.getQuadratureValue(), 'slave') - catalog.addItem('range_sampling_rate', instrument.getRangeSamplingRate(), 'slave') - catalog.addItem('prf', instrument.getPulseRepetitionFrequency(), 'slave') - catalog.addItem('pri', 1.0/instrument.getPulseRepetitionFrequency(), 'slave') - catalog.addItem('pulse_length', instrument.getPulseLength(), 'slave') - catalog.addItem('chirp_slope', instrument.getChirpSlope(), 'slave') - catalog.addItem('wavelength', instrument.getRadarWavelength(), 'slave') - catalog.addItem('lookSide', platform.pointingDirection, 'slave') - catalog.addInputsFrom(frame, 'slave.frame') - catalog.addInputsFrom(instrument, 'slave.instrument') - catalog.addInputsFrom(platform, 'slave.platform') - catalog.addInputsFrom(frame.orbit, 'slave.orbit') + catalog.addInputsFrom(secondary.sensor, 'secondary.sensor') + catalog.addItem('width', frame.numberOfSamples, 'secondary') + catalog.addItem('iBias', instrument.getInPhaseValue(), 'secondary') + catalog.addItem('qBias', instrument.getQuadratureValue(), 'secondary') + catalog.addItem('range_sampling_rate', instrument.getRangeSamplingRate(), 'secondary') + catalog.addItem('prf', instrument.getPulseRepetitionFrequency(), 'secondary') + catalog.addItem('pri', 1.0/instrument.getPulseRepetitionFrequency(), 'secondary') + catalog.addItem('pulse_length', instrument.getPulseLength(), 'secondary') + catalog.addItem('chirp_slope', instrument.getChirpSlope(), 'secondary') + catalog.addItem('wavelength', instrument.getRadarWavelength(), 'secondary') + catalog.addItem('lookSide', platform.pointingDirection, 'secondary') + catalog.addInputsFrom(frame, 'secondary.frame') + catalog.addInputsFrom(instrument, 'secondary.instrument') + catalog.addInputsFrom(platform, 'secondary.platform') + catalog.addInputsFrom(frame.orbit, 'secondary.orbit') catalog.printToLog(logger, "runPreprocessor") self._insar.procDoc.addAllFromCatalog(catalog) diff --git a/components/isceobj/StripmapProc/runROI.py b/components/isceobj/StripmapProc/runROI.py index e75fb0e..f50659a 100755 --- a/components/isceobj/StripmapProc/runROI.py +++ b/components/isceobj/StripmapProc/runROI.py @@ -225,44 +225,44 @@ def focus(frame, outname, amb=0.0): def runFormSLC(self): - if self._insar.masterRawProduct is None: - print('Master product was unpacked as an SLC. Skipping focusing ....') - if self._insar.masterSlcProduct is None: - raise Exception('However, No master SLC product found') + if self._insar.referenceRawProduct is None: + print('Reference product was unpacked as an SLC. Skipping focusing ....') + if self._insar.referenceSlcProduct is None: + raise Exception('However, No reference SLC product found') else: - frame = self._insar.loadProduct(self._insar.masterRawProduct) - outdir = os.path.join(self.master.output + '_slc') - outname = os.path.join( outdir, os.path.basename(self.master.output) + '.slc') + frame = self._insar.loadProduct(self._insar.referenceRawProduct) + outdir = os.path.join(self.reference.output + '_slc') + outname = os.path.join( outdir, os.path.basename(self.reference.output) + '.slc') xmlname = outdir + '.xml' os.makedirs(outdir, exist_ok=True) slcFrame = focus(frame, outname) - self._insar.masterGeometrySystem = 'Native Doppler' + self._insar.referenceGeometrySystem = 'Native Doppler' self._insar.saveProduct( slcFrame, xmlname) - self._insar.masterSlcProduct = xmlname + self._insar.referenceSlcProduct = xmlname slcFrame = None frame = None - if self._insar.slaveRawProduct is None: - print('Slave product was unpacked as an SLC. Skipping focusing ....') - if self._insar.slaveSlcProduct is None: - raise Exception('However, No slave SLC product found') + if self._insar.secondaryRawProduct is None: + print('Secondary product was unpacked as an SLC. Skipping focusing ....') + if self._insar.secondarySlcProduct is None: + raise Exception('However, No secondary SLC product found') else: - frame = self._insar.loadProduct(self._insar.slaveRawProduct) - outdir = os.path.join(self.slave.output + '_slc') - outname = os.path.join( outdir, os.path.basename(self.slave.output) + '.slc') + frame = self._insar.loadProduct(self._insar.secondaryRawProduct) + outdir = os.path.join(self.secondary.output + '_slc') + outname = os.path.join( outdir, os.path.basename(self.secondary.output) + '.slc') xmlname = outdir + '.xml' os.makedirs(outdir, exist_ok=True) slcFrame = focus(frame, outname) - self._insar.slaveGeometrySystem = 'Native Doppler' + self._insar.secondaryGeometrySystem = 'Native Doppler' self._insar.saveProduct( slcFrame, xmlname) - self._insar.slaveSlcProduct = xmlname + self._insar.secondarySlcProduct = xmlname slcFrame = None frame = None diff --git a/components/isceobj/StripmapProc/runRefineSlaveTiming.py b/components/isceobj/StripmapProc/runRefineSecondaryTiming.py similarity index 81% rename from components/isceobj/StripmapProc/runRefineSlaveTiming.py rename to components/isceobj/StripmapProc/runRefineSecondaryTiming.py index 8994c95..5418f4b 100644 --- a/components/isceobj/StripmapProc/runRefineSlaveTiming.py +++ b/components/isceobj/StripmapProc/runRefineSecondaryTiming.py @@ -10,29 +10,29 @@ import os import shelve import logging -logger = logging.getLogger('isce.insar.runRefineSlaveTiming') +logger = logging.getLogger('isce.insar.runRefineSecondaryTiming') -def estimateOffsetField(master, slave, azoffset=0, rgoffset=0): +def estimateOffsetField(reference, secondary, azoffset=0, rgoffset=0): ''' Estimate offset field between burst and simamp. ''' sim = isceobj.createSlcImage() - sim.load(slave+'.xml') + sim.load(secondary+'.xml') sim.setAccessMode('READ') sim.createImage() sar = isceobj.createSlcImage() - sar.load(master + '.xml') + sar.load(reference + '.xml') sar.setAccessMode('READ') sar.createImage() width = sar.getWidth() length = sar.getLength() - objOffset = Ampcor(name='master_offset1') + objOffset = Ampcor(name='reference_offset1') objOffset.configure() objOffset.setAcrossGrossOffset(rgoffset) objOffset.setDownGrossOffset(azoffset) @@ -124,20 +124,20 @@ def fitOffsets(field,azrgOrder=0,azazOrder=0, return (aa, rr), field -def runRefineSlaveTiming(self): +def runRefineSecondaryTiming(self): - logger.info("Running refine slave timing") - slaveFrame = self._insar.loadProduct( self._insar.slaveSlcCropProduct) - masterFrame = self._insar.loadProduct( self._insar.masterSlcCropProduct) - masterSlc = masterFrame.getImage().filename + logger.info("Running refine secondary timing") + secondaryFrame = self._insar.loadProduct( self._insar.secondarySlcCropProduct) + referenceFrame = self._insar.loadProduct( self._insar.referenceSlcCropProduct) + referenceSlc = referenceFrame.getImage().filename - slvImg = slaveFrame.getImage() - slaveSlc = os.path.join(self.insar.coregDirname , self._insar.coarseCoregFilename) + slvImg = secondaryFrame.getImage() + secondarySlc = os.path.join(self.insar.coregDirname , self._insar.coarseCoregFilename) - field = estimateOffsetField(masterSlc, slaveSlc) + field = estimateOffsetField(referenceSlc, secondarySlc) - rgratio = masterFrame.instrument.getRangePixelSize()/slaveFrame.instrument.getRangePixelSize() - azratio = slaveFrame.PRF / masterFrame.PRF + rgratio = referenceFrame.instrument.getRangePixelSize()/secondaryFrame.instrument.getRangePixelSize() + azratio = secondaryFrame.PRF / referenceFrame.PRF print ('*************************************') print ('rgratio, azratio: ', rgratio, azratio) diff --git a/components/isceobj/StripmapProc/runResampleSlc.py b/components/isceobj/StripmapProc/runResampleSlc.py index 8712c2f..b058d0c 100644 --- a/components/isceobj/StripmapProc/runResampleSlc.py +++ b/components/isceobj/StripmapProc/runResampleSlc.py @@ -27,26 +27,26 @@ def runResampleSlc(self, kind='coarse'): print('Rubber sheeting not requested, skipping resampling ....') return - logger.info("Resampling slave SLC") + logger.info("Resampling secondary SLC") - slaveFrame = self._insar.loadProduct( self._insar.slaveSlcCropProduct) - masterFrame = self._insar.loadProduct( self._insar.masterSlcCropProduct) + secondaryFrame = self._insar.loadProduct( self._insar.secondarySlcCropProduct) + referenceFrame = self._insar.loadProduct( self._insar.referenceSlcCropProduct) inimg = isceobj.createSlcImage() - inimg.load(slaveFrame.getImage().filename + '.xml') + inimg.load(secondaryFrame.getImage().filename + '.xml') inimg.setAccessMode('READ') - prf = slaveFrame.PRF + prf = secondaryFrame.PRF - doppler = slaveFrame._dopplerVsPixel + doppler = secondaryFrame._dopplerVsPixel coeffs = [2*np.pi*val/prf for val in doppler] dpoly = Poly2D() dpoly.initPoly(rangeOrder=len(coeffs)-1, azimuthOrder=0, coeffs=[coeffs]) rObj = stdproc.createResamp_slc() - rObj.slantRangePixelSpacing = slaveFrame.getInstrument().getRangePixelSize() - rObj.radarWavelength = slaveFrame.getInstrument().getRadarWavelength() + rObj.slantRangePixelSpacing = secondaryFrame.getInstrument().getRangePixelSize() + rObj.radarWavelength = secondaryFrame.getInstrument().getRadarWavelength() rObj.dopplerPoly = dpoly # for now let's start with None polynomial. Later this should change to @@ -107,20 +107,20 @@ def runResampleSlc(self, kind='coarse'): rObj.residualRangeImage = rngImg rObj.residualAzimuthImage = aziImg - if masterFrame is not None: - rObj.startingRange = slaveFrame.startingRange - rObj.referenceStartingRange = masterFrame.startingRange - rObj.referenceSlantRangePixelSpacing = masterFrame.getInstrument().getRangePixelSize() - rObj.referenceWavelength = masterFrame.getInstrument().getRadarWavelength() + if referenceFrame is not None: + rObj.startingRange = secondaryFrame.startingRange + rObj.referenceStartingRange = referenceFrame.startingRange + rObj.referenceSlantRangePixelSpacing = referenceFrame.getInstrument().getRangePixelSize() + rObj.referenceWavelength = referenceFrame.getInstrument().getRadarWavelength() - # preparing the output directory for coregistered slave slc + # preparing the output directory for coregistered secondary slc coregDir = self.insar.coregDirname os.makedirs(coregDir, exist_ok=True) - # output file name of the coregistered slave slc - img = slaveFrame.getImage() + # output file name of the coregistered secondary slc + img = secondaryFrame.getImage() if kind == 'coarse': coregFilename = os.path.join(coregDir , self._insar.coarseCoregFilename) diff --git a/components/isceobj/StripmapProc/runResampleSubbandSlc.py b/components/isceobj/StripmapProc/runResampleSubbandSlc.py index 92f2ac9..aa56cc2 100644 --- a/components/isceobj/StripmapProc/runResampleSubbandSlc.py +++ b/components/isceobj/StripmapProc/runResampleSubbandSlc.py @@ -15,19 +15,19 @@ import shelve logger = logging.getLogger('isce.insar.runResampleSubbandSlc') # Modified by V. Brancato 10.14.2019 added "self" as input parameter of resampleSLC -def resampleSlc(self,masterFrame, slaveFrame, imageSlc2, radarWavelength, coregDir, +def resampleSlc(self,referenceFrame, secondaryFrame, imageSlc2, radarWavelength, coregDir, azoffname, rgoffname, azpoly = None, rgpoly = None, misreg=False): - logger.info("Resampling slave SLC") + logger.info("Resampling secondary SLC") - imageSlc1 = masterFrame.getImage().filename + imageSlc1 = referenceFrame.getImage().filename inimg = isceobj.createSlcImage() inimg.load(imageSlc2 + '.xml') inimg.setAccessMode('READ') - prf = slaveFrame.PRF + prf = secondaryFrame.PRF - doppler = slaveFrame._dopplerVsPixel + doppler = secondaryFrame._dopplerVsPixel factor = 1.0 # this should be zero for zero Doppler SLC. coeffs = [factor * 2*np.pi*val/prf/prf for val in doppler] @@ -35,8 +35,8 @@ def resampleSlc(self,masterFrame, slaveFrame, imageSlc2, radarWavelength, coregD dpoly.initPoly(rangeOrder=len(coeffs)-1, azimuthOrder=0, coeffs=[coeffs]) rObj = stdproc.createResamp_slc() - rObj.slantRangePixelSpacing = slaveFrame.getInstrument().getRangePixelSize() - #rObj.radarWavelength = slaveFrame.getInstrument().getRadarWavelength() + rObj.slantRangePixelSpacing = secondaryFrame.getInstrument().getRangePixelSize() + #rObj.radarWavelength = secondaryFrame.getInstrument().getRadarWavelength() rObj.radarWavelength = radarWavelength rObj.dopplerPoly = dpoly @@ -74,19 +74,19 @@ def resampleSlc(self,masterFrame, slaveFrame, imageSlc2, radarWavelength, coregD rObj.residualRangeImage = rngImg rObj.residualAzimuthImage = aziImg - if masterFrame is not None: - rObj.startingRange = slaveFrame.startingRange - rObj.referenceStartingRange = masterFrame.startingRange - rObj.referenceSlantRangePixelSpacing = masterFrame.getInstrument().getRangePixelSize() + if referenceFrame is not None: + rObj.startingRange = secondaryFrame.startingRange + rObj.referenceStartingRange = referenceFrame.startingRange + rObj.referenceSlantRangePixelSpacing = referenceFrame.getInstrument().getRangePixelSize() rObj.referenceWavelength = radarWavelength - # preparing the output directory for coregistered slave slc + # preparing the output directory for coregistered secondary slc #coregDir = self.insar.coregDirname os.makedirs(coregDir, exist_ok=True) - # output file name of the coregistered slave slc - img = slaveFrame.getImage() + # output file name of the coregistered secondary slc + img = secondaryFrame.getImage() coregFilename = os.path.join(coregDir , os.path.basename(img.filename)) imgOut = isceobj.createSlcImage() @@ -109,8 +109,8 @@ def runResampleSubbandSlc(self, misreg=False): print('Split spectrum not requested. Skipping...') return - masterFrame = self._insar.loadProduct( self._insar.masterSlcCropProduct) - slaveFrame = self._insar.loadProduct( self._insar.slaveSlcCropProduct) + referenceFrame = self._insar.loadProduct( self._insar.referenceSlcCropProduct) + secondaryFrame = self._insar.loadProduct( self._insar.secondarySlcCropProduct) # Modified by V. Brancato 10.14.2019 @@ -136,20 +136,20 @@ def runResampleSubbandSlc(self, misreg=False): imageSlc2 = os.path.join(self.insar.splitSpectrumDirname, self.insar.lowBandSlcDirname, - os.path.basename(slaveFrame.getImage().filename)) + os.path.basename(secondaryFrame.getImage().filename)) wvlL = self.insar.lowBandRadarWavelength coregDir = os.path.join(self.insar.coregDirname, self.insar.lowBandSlcDirname) - lowbandCoregFilename = resampleSlc(self,masterFrame, slaveFrame, imageSlc2, wvlL, coregDir, + lowbandCoregFilename = resampleSlc(self,referenceFrame, secondaryFrame, imageSlc2, wvlL, coregDir, azoffname, rgoffname, azpoly=azpoly, rgpoly=rgpoly,misreg=False) imageSlc2 = os.path.join(self.insar.splitSpectrumDirname, self.insar.highBandSlcDirname, - os.path.basename(slaveFrame.getImage().filename)) + os.path.basename(secondaryFrame.getImage().filename)) wvlH = self.insar.highBandRadarWavelength coregDir = os.path.join(self.insar.coregDirname, self.insar.highBandSlcDirname) - highbandCoregFilename = resampleSlc(self,masterFrame, slaveFrame, imageSlc2, wvlH, coregDir, + highbandCoregFilename = resampleSlc(self,referenceFrame, secondaryFrame, imageSlc2, wvlH, coregDir, azoffname, rgoffname, azpoly=azpoly, rgpoly=rgpoly, misreg=False) self.insar.lowBandSlc2 = lowbandCoregFilename diff --git a/components/isceobj/StripmapProc/runSplitSpectrum.py b/components/isceobj/StripmapProc/runSplitSpectrum.py index da18ab5..3b6d811 100644 --- a/components/isceobj/StripmapProc/runSplitSpectrum.py +++ b/components/isceobj/StripmapProc/runSplitSpectrum.py @@ -88,40 +88,40 @@ def runSplitSpectrum(self): print('Split spectrum processing not requested. Skipping ....') return - masterFrame = self._insar.loadProduct( self._insar.masterSlcCropProduct) - slaveFrame = self._insar.loadProduct( self._insar.slaveSlcCropProduct) + referenceFrame = self._insar.loadProduct( self._insar.referenceSlcCropProduct) + secondaryFrame = self._insar.loadProduct( self._insar.secondarySlcCropProduct) - masterSlc = masterFrame.getImage().filename - slaveSlc = slaveFrame.getImage().filename + referenceSlc = referenceFrame.getImage().filename + secondarySlc = secondaryFrame.getImage().filename - width1 = masterFrame.getImage().getWidth() - width2 = slaveFrame.getImage().getWidth() + width1 = referenceFrame.getImage().getWidth() + width2 = secondaryFrame.getImage().getWidth() - fs_master = masterFrame.rangeSamplingRate - pulseLength_master = masterFrame.instrument.pulseLength - chirpSlope_master = masterFrame.instrument.chirpSlope + fs_reference = referenceFrame.rangeSamplingRate + pulseLength_reference = referenceFrame.instrument.pulseLength + chirpSlope_reference = referenceFrame.instrument.chirpSlope #Bandwidth - B_master = np.abs(chirpSlope_master)*pulseLength_master + B_reference = np.abs(chirpSlope_reference)*pulseLength_reference - fs_slave = slaveFrame.rangeSamplingRate - pulseLength_slave = slaveFrame.instrument.pulseLength - chirpSlope_slave = slaveFrame.instrument.chirpSlope + fs_secondary = secondaryFrame.rangeSamplingRate + pulseLength_secondary = secondaryFrame.instrument.pulseLength + chirpSlope_secondary = secondaryFrame.instrument.chirpSlope #Bandwidth - B_slave = np.abs(chirpSlope_slave)*pulseLength_slave + B_secondary = np.abs(chirpSlope_secondary)*pulseLength_secondary - print("master image range sampling rate: {0} MHz".format(fs_master/(1.0e6))) - print("slave image range sampling rate: {0} MHz".format(fs_slave/(1.0e6))) + print("reference image range sampling rate: {0} MHz".format(fs_reference/(1.0e6))) + print("secondary image range sampling rate: {0} MHz".format(fs_secondary/(1.0e6))) - print("master image total range bandwidth: {0} MHz".format(B_master/(1.0e6))) - print("slave image total range bandwidth: {0} MHz".format(B_slave/(1.0e6))) + print("reference image total range bandwidth: {0} MHz".format(B_reference/(1.0e6))) + print("secondary image total range bandwidth: {0} MHz".format(B_secondary/(1.0e6))) - # If the bandwidth of master and slave are different, choose the smaller bandwidth + # If the bandwidth of reference and secondary are different, choose the smaller bandwidth # for range split spectrum - B = np.min([B_slave, B_master]) + B = np.min([B_secondary, B_reference]) print("Bandwidth used for split spectrum: {0} MHz".format(B/(1.e6))) # Dividing the total bandwidth of B to three bands and consider the sub bands on @@ -145,30 +145,30 @@ def runSplitSpectrum(self): os.makedirs(lowBandDir, exist_ok=True) os.makedirs(highBandDir, exist_ok=True) - masterLowBandSlc = os.path.join(lowBandDir, os.path.basename(masterSlc)) - masterHighBandSlc = os.path.join(highBandDir, os.path.basename(masterSlc)) + referenceLowBandSlc = os.path.join(lowBandDir, os.path.basename(referenceSlc)) + referenceHighBandSlc = os.path.join(highBandDir, os.path.basename(referenceSlc)) - slaveLowBandSlc = os.path.join(lowBandDir, os.path.basename(slaveSlc)) - slaveHighBandSlc = os.path.join(highBandDir, os.path.basename(slaveSlc)) + secondaryLowBandSlc = os.path.join(lowBandDir, os.path.basename(secondarySlc)) + secondaryHighBandSlc = os.path.join(highBandDir, os.path.basename(secondarySlc)) - radarWavelength = masterFrame.radarWavelegth + radarWavelength = referenceFrame.radarWavelegth print("deviation of low-band's center frequency from full-band's center frequency: {0} MHz".format(fL/1.0e6)) print("deviation of high-band's center frequency from full-band's center frequency: {0} MHz".format(fH/1.0e6)) print("%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%") - print("splitting the range-spectrum of master SLC") - split(masterSlc, masterLowBandSlc, masterHighBandSlc, fs_master, bL, bH, fL, fH) + print("splitting the range-spectrum of reference SLC") + split(referenceSlc, referenceLowBandSlc, referenceHighBandSlc, fs_reference, bL, bH, fL, fH) print("%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%") - print("splitting the range-spectrum of slave SLC") - split(slaveSlc, slaveLowBandSlc, slaveHighBandSlc, fs_slave, bL, bH, fL, fH) + print("splitting the range-spectrum of secondary SLC") + split(secondarySlc, secondaryLowBandSlc, secondaryHighBandSlc, fs_secondary, bL, bH, fL, fH) ######################## - createSlcImage(masterLowBandSlc, width1) - createSlcImage(masterHighBandSlc, width1) - createSlcImage(slaveLowBandSlc, width2) - createSlcImage(slaveHighBandSlc, width2) + createSlcImage(referenceLowBandSlc, width1) + createSlcImage(referenceHighBandSlc, width1) + createSlcImage(secondaryLowBandSlc, width2) + createSlcImage(secondaryHighBandSlc, width2) ######################## @@ -181,11 +181,11 @@ def runSplitSpectrum(self): self.insar.lowBandRadarWavelength = wavelengthL self.insar.highBandRadarWavelength = wavelengthH - self.insar.lowBandSlc1 = masterLowBandSlc - self.insar.lowBandSlc2 = slaveLowBandSlc + self.insar.lowBandSlc1 = referenceLowBandSlc + self.insar.lowBandSlc2 = secondaryLowBandSlc - self.insar.highBandSlc1 = masterHighBandSlc - self.insar.highBandSlc2 = slaveHighBandSlc + self.insar.highBandSlc1 = referenceHighBandSlc + self.insar.highBandSlc2 = secondaryHighBandSlc ######################## diff --git a/components/isceobj/StripmapProc/runTopo.py b/components/isceobj/StripmapProc/runTopo.py index 7ec1533..d1e031a 100755 --- a/components/isceobj/StripmapProc/runTopo.py +++ b/components/isceobj/StripmapProc/runTopo.py @@ -58,7 +58,7 @@ def runTopo(self): objDem = isceobj.createDemImage() objDem.load(demFilename + '.xml') - info = self._insar.loadProduct(self._insar.masterSlcCropProduct) + info = self._insar.loadProduct(self._insar.referenceSlcCropProduct) intImage = info.getImage() @@ -95,7 +95,7 @@ def runTopo(self): doppler.setWidth(topo.width // topo.numberRangeLooks) doppler.setLength(topo.length // topo.numberAzimuthLooks) - if self._insar.masterGeometrySystem.lower().startswith('native'): + if self._insar.referenceGeometrySystem.lower().startswith('native'): doppler.initPoly(rangeOrder = len(dop)-1, azimuthOrder=0, coeffs=[dop]) else: doppler.initPoly(rangeOrder=0, azimuthOrder=0, coeffs=[[0.]]) diff --git a/components/isceobj/StripmapProc/runUnwrapSnaphu.py b/components/isceobj/StripmapProc/runUnwrapSnaphu.py index 8e69848..fa3550b 100755 --- a/components/isceobj/StripmapProc/runUnwrapSnaphu.py +++ b/components/isceobj/StripmapProc/runUnwrapSnaphu.py @@ -82,17 +82,17 @@ def runSnaphu(self, igramSpectrum = "full", costMode = None,initMethod = None, d corName = os.path.join(ifgDirname , self.insar.coherenceFilename) - masterFrame = self._insar.loadProduct( self._insar.masterSlcCropProduct) - wavelength = masterFrame.getInstrument().getRadarWavelength() + referenceFrame = self._insar.loadProduct( self._insar.referenceSlcCropProduct) + wavelength = referenceFrame.getInstrument().getRadarWavelength() img1 = isceobj.createImage() img1.load(wrapName + '.xml') width = img1.getWidth() #width = self.insar.resampIntImage.width - orbit = masterFrame.orbit - prf = masterFrame.PRF - elp = copy.copy(masterFrame.instrument.platform.planet.ellipsoid) - sv = orbit.interpolate(masterFrame.sensingMid, method='hermite') + orbit = referenceFrame.orbit + prf = referenceFrame.PRF + elp = copy.copy(referenceFrame.instrument.platform.planet.ellipsoid) + sv = orbit.interpolate(referenceFrame.sensingMid, method='hermite') hdg = orbit.getHeading() llh = elp.xyz_to_llh(sv.getPosition()) elp.setSCH(llh[0], llh[1], hdg) @@ -113,12 +113,12 @@ def runSnaphu(self, igramSpectrum = "full", costMode = None,initMethod = None, d if not self.numberRangeLooks: self.numberRangeLooks = 1 - azres = masterFrame.platform.antennaLength/2.0 + azres = referenceFrame.platform.antennaLength/2.0 azfact = self.numberAzimuthLooks * azres / azimuthSpacing - rBW = masterFrame.instrument.pulseLength * masterFrame.instrument.chirpSlope + rBW = referenceFrame.instrument.pulseLength * referenceFrame.instrument.chirpSlope rgres = abs(SPEED_OF_LIGHT / (2.0 * rBW)) - rngfact = rgres/masterFrame.getInstrument().getRangePixelSize() + rngfact = rgres/referenceFrame.getInstrument().getRangePixelSize() corrLooks = self.numberRangeLooks * self.numberAzimuthLooks/(azfact*rngfact) maxComponents = 20 diff --git a/components/isceobj/StripmapProc/runVerifyDEM.py b/components/isceobj/StripmapProc/runVerifyDEM.py index 62f0879..85475a7 100644 --- a/components/isceobj/StripmapProc/runVerifyDEM.py +++ b/components/isceobj/StripmapProc/runVerifyDEM.py @@ -26,7 +26,7 @@ def getBbox(frame, zrange=[-500., 9000.],geom='zero doppler', margin=0.05): ''' from isceobj.Util.Poly2D import Poly2D - #### Master box + #### Reference box r0 = frame.startingRange rmax = frame.getFarRange() t0 = frame.getSensingStart() @@ -106,8 +106,8 @@ def runVerifyDEM(self): else: - master = self._insar.loadProduct(self._insar.masterSlcCropProduct) - slave = self._insar.loadProduct(self._insar.slaveSlcCropProduct) + reference = self._insar.loadProduct(self._insar.referenceSlcCropProduct) + secondary = self._insar.loadProduct(self._insar.secondarySlcCropProduct) bboxes = [] @@ -119,10 +119,10 @@ def runVerifyDEM(self): zrange = self.heightRange else: zrange = [-500., 9000.] - mbox = getBbox(master, geom=self._insar.masterGeometrySystem, + mbox = getBbox(reference, geom=self._insar.referenceGeometrySystem, zrange = zrange) - sbox = getBbox(slave, geom=self._insar.slaveGeometrySystem, + sbox = getBbox(secondary, geom=self._insar.secondaryGeometrySystem, zrange = zrange) bboxes.append(mbox) diff --git a/components/isceobj/TopsProc/TopsProc.py b/components/isceobj/TopsProc/TopsProc.py index 9e250e8..1bd9c42 100644 --- a/components/isceobj/TopsProc/TopsProc.py +++ b/components/isceobj/TopsProc/TopsProc.py @@ -11,36 +11,36 @@ from iscesys.DateTimeUtil.DateTimeUtil import DateTimeUtil as DTU from iscesys.Compatibility import Compatibility -MASTER_SLC_PRODUCT = Component.Parameter('masterSlcProduct', - public_name='master slc product', - default='master', +REFERENCE_SLC_PRODUCT = Component.Parameter('referenceSlcProduct', + public_name='reference slc product', + default='reference', type=str, mandatory=False, - doc='Directory name of the master SLC product') + doc='Directory name of the reference SLC product') -SLAVE_SLC_PRODUCT = Component.Parameter('slaveSlcProduct', - public_name='slave slc product', - default='slave', +SECONDARY_SLC_PRODUCT = Component.Parameter('secondarySlcProduct', + public_name='secondary slc product', + default='secondary', type=str, mandatory=False, - doc='Directory name of the slave SLC product') + doc='Directory name of the secondary SLC product') -COMMON_BURST_START_MASTER_INDEX = Component.Parameter('commonBurstStartMasterIndex', - public_name = 'common burst start master index', +COMMON_BURST_START_REFERENCE_INDEX = Component.Parameter('commonBurstStartReferenceIndex', + public_name = 'common burst start reference index', default = None, type = int, container=list, mandatory = False, - doc = 'Master burst start index for common bursts') + doc = 'Reference burst start index for common bursts') -COMMON_BURST_START_SLAVE_INDEX = Component.Parameter('commonBurstStartSlaveIndex', - public_name = 'common burst start slave index', +COMMON_BURST_START_SECONDARY_INDEX = Component.Parameter('commonBurstStartSecondaryIndex', + public_name = 'common burst start secondary index', default = None, type = int, container=list, mandatory = False, - doc = 'Slave burst start index for common bursts') + doc = 'Secondary burst start index for common bursts') NUMBER_COMMON_BURSTS = Component.Parameter('numberOfCommonBursts', public_name = 'number of common bursts', @@ -48,7 +48,7 @@ NUMBER_COMMON_BURSTS = Component.Parameter('numberOfCommonBursts', type = int, container=list, mandatory = False, - doc = 'Number of common bursts between slave and master') + doc = 'Number of common bursts between secondary and reference') DEM_FILENAME = Component.Parameter('demFilename', @@ -60,7 +60,7 @@ DEM_FILENAME = Component.Parameter('demFilename', GEOMETRY_DIRNAME = Component.Parameter('geometryDirname', public_name='geometry directory name', - default='geom_master', + default='geom_reference', type=str, mandatory=False, doc = 'Geometry directory') @@ -130,19 +130,19 @@ OVERLAPS_SUBDIRECTORY = Component.Parameter('overlapsSubDirname', mandatory = False, doc = 'Overlap region processing directory') -SLAVE_RANGE_CORRECTION = Component.Parameter('slaveRangeCorrection', - public_name = 'slave range correction', +SECONDARY_RANGE_CORRECTION = Component.Parameter('secondaryRangeCorrection', + public_name = 'secondary range correction', default = 0.0, type = float, mandatory = False, - doc = 'Range correction in m to apply to slave') + doc = 'Range correction in m to apply to secondary') -SLAVE_TIMING_CORRECTION = Component.Parameter('slaveTimingCorrection', - public_name = 'slave timing correction', +SECONDARY_TIMING_CORRECTION = Component.Parameter('secondaryTimingCorrection', + public_name = 'secondary timing correction', default = 0.0, type = float, mandatory = False, - doc = 'Timing correction in secs to apply to slave') + doc = 'Timing correction in secs to apply to secondary') NUMBER_OF_SWATHS = Component.Parameter('numberOfSwaths', public_name = 'number of swaths', @@ -356,10 +356,10 @@ class TopsProc(Component): to modify and return their values. """ - parameter_list = (MASTER_SLC_PRODUCT, - SLAVE_SLC_PRODUCT, - COMMON_BURST_START_MASTER_INDEX, - COMMON_BURST_START_SLAVE_INDEX, + parameter_list = (REFERENCE_SLC_PRODUCT, + SECONDARY_SLC_PRODUCT, + COMMON_BURST_START_REFERENCE_INDEX, + COMMON_BURST_START_SECONDARY_INDEX, NUMBER_COMMON_BURSTS, DEM_FILENAME, GEOMETRY_DIRNAME, @@ -370,8 +370,8 @@ class TopsProc(Component): FINE_COREG_DIRECTORY, FINE_IFG_DIRECTORY, OVERLAPS_SUBDIRECTORY, - SLAVE_RANGE_CORRECTION, - SLAVE_TIMING_CORRECTION, + SECONDARY_RANGE_CORRECTION, + SECONDARY_TIMING_CORRECTION, NUMBER_OF_SWATHS, ESD_DIRNAME, APPLY_WATER_MASK, @@ -467,8 +467,8 @@ class TopsProc(Component): return None @property - def masterSlcOverlapProduct(self): - return os.path.join(self.masterSlcProduct, self.overlapsSubDirname) + def referenceSlcOverlapProduct(self): + return os.path.join(self.referenceSlcProduct, self.overlapsSubDirname) @property def coregOverlapProduct(self): @@ -478,11 +478,11 @@ class TopsProc(Component): def coarseIfgOverlapProduct(self): return os.path.join(self.coarseIfgDirname, self.overlapsSubDirname) - def commonMasterBurstLimits(self, ind): - return (self.commonBurstStartMasterIndex[ind], self.commonBurstStartMasterIndex[ind] + self.numberOfCommonBursts[ind]) + def commonReferenceBurstLimits(self, ind): + return (self.commonBurstStartReferenceIndex[ind], self.commonBurstStartReferenceIndex[ind] + self.numberOfCommonBursts[ind]) - def commonSlaveBurstLimits(self, ind): - return (self.commonBurstStartSlaveIndex[ind], self.commonBurstStartSlaveIndex[ind] + self.numberOfCommonBursts[ind]) + def commonSecondaryBurstLimits(self, ind): + return (self.commonBurstStartSecondaryIndex[ind], self.commonBurstStartSecondaryIndex[ind] + self.numberOfCommonBursts[ind]) def getMergedOrbit(self, product): diff --git a/components/isceobj/TopsProc/runBurstIfg.py b/components/isceobj/TopsProc/runBurstIfg.py index dab4e37..0e73942 100644 --- a/components/isceobj/TopsProc/runBurstIfg.py +++ b/components/isceobj/TopsProc/runBurstIfg.py @@ -23,7 +23,7 @@ def loadVirtualArray(fname): ds = None return data -def multiply(masname, slvname, outname, rngname, fact, masterFrame, +def multiply(masname, slvname, outname, rngname, fact, referenceFrame, flatten=True, alks=3, rlks=7, virtual=True): @@ -35,11 +35,11 @@ def multiply(masname, slvname, outname, rngname, fact, masterFrame, if not virtual: - master = np.memmap(masname, dtype=np.complex64, mode='r', shape=(length,width)) + reference = np.memmap(masname, dtype=np.complex64, mode='r', shape=(length,width)) else: - master = loadVirtualArray(masname + '.vrt') + reference = loadVirtualArray(masname + '.vrt') - slave = np.memmap(slvname, dtype=np.complex64, mode='r', shape=(length, width)) + secondary = np.memmap(slvname, dtype=np.complex64, mode='r', shape=(length, width)) if os.path.exists(rngname): rng2 = np.memmap(rngname, dtype=np.float32, mode='r', shape=(length,width)) @@ -51,19 +51,19 @@ def multiply(masname, slvname, outname, rngname, fact, masterFrame, #Zero out anytging outside the valid region: ifg = np.memmap(outname, dtype=np.complex64, mode='w+', shape=(length,width)) - firstS = masterFrame.firstValidSample - lastS = masterFrame.firstValidSample + masterFrame.numValidSamples -1 - firstL = masterFrame.firstValidLine - lastL = masterFrame.firstValidLine + masterFrame.numValidLines - 1 + firstS = referenceFrame.firstValidSample + lastS = referenceFrame.firstValidSample + referenceFrame.numValidSamples -1 + firstL = referenceFrame.firstValidLine + lastL = referenceFrame.firstValidLine + referenceFrame.numValidLines - 1 for kk in range(firstL,lastL + 1): - ifg[kk,firstS:lastS + 1] = master[kk,firstS:lastS + 1] * np.conj(slave[kk,firstS:lastS + 1]) + ifg[kk,firstS:lastS + 1] = reference[kk,firstS:lastS + 1] * np.conj(secondary[kk,firstS:lastS + 1]) if flatten: phs = np.exp(cJ*fact*rng2[kk,firstS:lastS + 1]) ifg[kk,firstS:lastS + 1] *= phs #### - master=None - slave=None + reference=None + secondary=None ifg = None objInt = isceobj.createIntImage() @@ -134,21 +134,21 @@ def computeCoherence(slc1name, slc2name, corname, virtual=True): return -def adjustValidLineSample(master,slave): +def adjustValidLineSample(reference,secondary): - master_lastValidLine = master.firstValidLine + master.numValidLines - 1 - master_lastValidSample = master.firstValidSample + master.numValidSamples - 1 - slave_lastValidLine = slave.firstValidLine + slave.numValidLines - 1 - slave_lastValidSample = slave.firstValidSample + slave.numValidSamples - 1 + reference_lastValidLine = reference.firstValidLine + reference.numValidLines - 1 + reference_lastValidSample = reference.firstValidSample + reference.numValidSamples - 1 + secondary_lastValidLine = secondary.firstValidLine + secondary.numValidLines - 1 + secondary_lastValidSample = secondary.firstValidSample + secondary.numValidSamples - 1 - igram_lastValidLine = min(master_lastValidLine, slave_lastValidLine) - igram_lastValidSample = min(master_lastValidSample, slave_lastValidSample) + igram_lastValidLine = min(reference_lastValidLine, secondary_lastValidLine) + igram_lastValidSample = min(reference_lastValidSample, secondary_lastValidSample) - master.firstValidLine = max(master.firstValidLine, slave.firstValidLine) - master.firstValidSample = max(master.firstValidSample, slave.firstValidSample) + reference.firstValidLine = max(reference.firstValidLine, secondary.firstValidLine) + reference.firstValidSample = max(reference.firstValidSample, secondary.firstValidSample) - master.numValidLines = igram_lastValidLine - master.firstValidLine + 1 - master.numValidSamples = igram_lastValidSample - master.firstValidSample + 1 + reference.numValidLines = igram_lastValidLine - reference.firstValidLine + 1 + reference.numValidSamples = igram_lastValidSample - reference.firstValidSample + 1 def runBurstIfg(self): '''Create burst interferograms. @@ -161,7 +161,7 @@ def runBurstIfg(self): for swath in swathList: - minBurst, maxBurst = self._insar.commonMasterBurstLimits(swath-1) + minBurst, maxBurst = self._insar.commonReferenceBurstLimits(swath-1) nBurst = maxBurst - minBurst if nBurst == 0: @@ -171,8 +171,8 @@ def runBurstIfg(self): os.makedirs(ifgdir, exist_ok=True) ####Load relevant products - master = self._insar.loadProduct( os.path.join(self._insar.masterSlcProduct, 'IW{0}.xml'.format(swath))) - slave = self._insar.loadProduct( os.path.join(self._insar.fineCoregDirname, 'IW{0}.xml'.format(swath))) + reference = self._insar.loadProduct( os.path.join(self._insar.referenceSlcProduct, 'IW{0}.xml'.format(swath))) + secondary = self._insar.loadProduct( os.path.join(self._insar.fineCoregDirname, 'IW{0}.xml'.format(swath))) coregdir = os.path.join(self._insar.fineOffsetsDirname, 'IW{0}'.format(swath)) @@ -185,11 +185,11 @@ def runBurstIfg(self): ####Process the top bursts - masBurst = master.bursts[ii] - slvBurst = slave.bursts[jj] + masBurst = reference.bursts[ii] + slvBurst = secondary.bursts[jj] - mastername = masBurst.image.filename - slavename = slvBurst.image.filename + referencename = masBurst.image.filename + secondaryname = slvBurst.image.filename rdict = {'rangeOff' : os.path.join(coregdir, 'range_%02d.off'%(ii+1)), 'azimuthOff': os.path.join(coregdir, 'azimuth_%02d.off'%(ii+1))} @@ -200,7 +200,7 @@ def runBurstIfg(self): if self.doInSAR: intname = os.path.join(ifgdir, '%s_%02d.int'%('burst',ii+1)) fact = 4 * np.pi * slvBurst.rangePixelSize / slvBurst.radarWavelength - intimage = multiply(mastername, slavename, intname, + intimage = multiply(referencename, secondaryname, intname, rdict['rangeOff'], fact, masBurst, flatten=True, alks = self.numberAzimuthLooks, rlks=self.numberRangeLooks, virtual=virtual) @@ -216,7 +216,7 @@ def runBurstIfg(self): if self.doInSAR: ####Estimate coherence corname = os.path.join(ifgdir, '%s_%02d.cor'%('burst',ii+1)) - computeCoherence(mastername, slavename, corname) + computeCoherence(referencename, secondaryname, corname) fineIfg.numberOfBursts = len(fineIfg.bursts) diff --git a/components/isceobj/TopsProc/runCoarseOffsets.py b/components/isceobj/TopsProc/runCoarseOffsets.py index 4fb2db3..20aa935 100644 --- a/components/isceobj/TopsProc/runCoarseOffsets.py +++ b/components/isceobj/TopsProc/runCoarseOffsets.py @@ -78,11 +78,11 @@ def runCoarseOffsets(self): ##Catalog catalog = isceobj.Catalog.createCatalog(self._insar.procDoc.name) - misreg_az = self._insar.slaveTimingCorrection - catalog.addItem('Initial slave azimuth timing correction', misreg_az, 'coarseoff') + misreg_az = self._insar.secondaryTimingCorrection + catalog.addItem('Initial secondary azimuth timing correction', misreg_az, 'coarseoff') - misreg_rg = self._insar.slaveRangeCorrection - catalog.addItem('Initial slave range timing correction', misreg_rg, 'coarseoff') + misreg_rg = self._insar.secondaryRangeCorrection + catalog.addItem('Initial secondary range timing correction', misreg_rg, 'coarseoff') swathList = self._insar.getValidSwathList(self.swaths) @@ -92,8 +92,8 @@ def runCoarseOffsets(self): print('Skipping coarse offsets for swath IW{0}'.format(swath)) continue - ##Load slave metadata - slave = self._insar.loadProduct(os.path.join(self._insar.slaveSlcProduct, 'IW{0}.xml'.format(swath))) + ##Load secondary metadata + secondary = self._insar.loadProduct(os.path.join(self._insar.secondarySlcProduct, 'IW{0}.xml'.format(swath))) ###Offsets output directory @@ -102,24 +102,24 @@ def runCoarseOffsets(self): os.makedirs(outdir, exist_ok=True) - ###Burst indices w.r.t master - minBurst = self._insar.commonBurstStartMasterIndex[swath-1] + ###Burst indices w.r.t reference + minBurst = self._insar.commonBurstStartReferenceIndex[swath-1] maxBurst = minBurst + self._insar.numberOfCommonBursts[swath-1] - 1 ###-1 for overlaps - masterOverlapDir = os.path.join(self._insar.masterSlcOverlapProduct, 'IW{0}'.format(swath)) + referenceOverlapDir = os.path.join(self._insar.referenceSlcOverlapProduct, 'IW{0}'.format(swath)) geomOverlapDir = os.path.join(self._insar.geometryDirname, self._insar.overlapsSubDirname, 'IW{0}'.format(swath)) - slaveBurstStart = self._insar.commonBurstStartSlaveIndex[swath-1] + secondaryBurstStart = self._insar.commonBurstStartSecondaryIndex[swath-1] catalog.addItem('Number of overlap pairs - IW-{0}'.format(swath), maxBurst - minBurst, 'coarseoff') for mBurst in range(minBurst, maxBurst): - ###Corresponding slave burst - sBurst = slaveBurstStart + (mBurst - minBurst) - burstTop = slave.bursts[sBurst] - burstBot = slave.bursts[sBurst+1] + ###Corresponding secondary burst + sBurst = secondaryBurstStart + (mBurst - minBurst) + burstTop = secondary.bursts[sBurst] + burstBot = secondary.bursts[sBurst+1] - logger.info('Overlap pair {0}, IW-{3}: Burst {1} of master matched with Burst {2} of slave'.format(mBurst-minBurst, mBurst, sBurst, swath)) + logger.info('Overlap pair {0}, IW-{3}: Burst {1} of reference matched with Burst {2} of secondary'.format(mBurst-minBurst, mBurst, sBurst, swath)) ####Generate offsets for top burst rdict = {'lat': os.path.join(geomOverlapDir,'lat_%02d_%02d.rdr'%(mBurst+1,mBurst+2)), 'lon': os.path.join(geomOverlapDir,'lon_%02d_%02d.rdr'%(mBurst+1,mBurst+2)), @@ -129,7 +129,7 @@ def runCoarseOffsets(self): runGeo2rdr(burstTop, rdict, misreg_az=misreg_az, misreg_rg=misreg_rg) - logger.info('Overlap pair {0} - IW-{3}: Burst {1} of master matched with Burst {2} of slave'.format(mBurst-minBurst, mBurst+1, sBurst+1, swath)) + logger.info('Overlap pair {0} - IW-{3}: Burst {1} of reference matched with Burst {2} of secondary'.format(mBurst-minBurst, mBurst+1, sBurst+1, swath)) ####Generate offsets for bottom burst rdict = {'lat': os.path.join(geomOverlapDir,'lat_%02d_%02d.rdr'%(mBurst+1,mBurst+2)), diff --git a/components/isceobj/TopsProc/runCoarseResamp.py b/components/isceobj/TopsProc/runCoarseResamp.py index 0643a19..31b8978 100755 --- a/components/isceobj/TopsProc/runCoarseResamp.py +++ b/components/isceobj/TopsProc/runCoarseResamp.py @@ -14,7 +14,7 @@ import copy from isceobj.Sensor.TOPS import createTOPSSwathSLCProduct from .runFineResamp import getRelativeShifts, adjustValidSampleLine -def resampSlave(mas, slv, rdict, outname ): +def resampSecondary(mas, slv, rdict, outname ): ''' Resample burst by burst. ''' @@ -75,7 +75,7 @@ def resampSlave(mas, slv, rdict, outname ): def runCoarseResamp(self): ''' - Create coregistered overlap slaves. + Create coregistered overlap secondarys. ''' if not self.doESD: @@ -90,15 +90,15 @@ def runCoarseResamp(self): print('Skipping coarse resamp for swath IW{0}'.format(swath)) continue - ####Load slave metadata - master = self._insar.loadProduct( os.path.join(self._insar.masterSlcProduct, 'IW{0}.xml'.format(swath))) - slave = self._insar.loadProduct( os.path.join(self._insar.slaveSlcProduct, 'IW{0}.xml'.format(swath))) - masterTop = self._insar.loadProduct( os.path.join(self._insar.masterSlcOverlapProduct, 'top_IW{0}.xml'.format(swath))) - masterBottom = self._insar.loadProduct( os.path.join(self._insar.masterSlcOverlapProduct, 'bottom_IW{0}.xml'.format(swath))) + ####Load secondary metadata + reference = self._insar.loadProduct( os.path.join(self._insar.referenceSlcProduct, 'IW{0}.xml'.format(swath))) + secondary = self._insar.loadProduct( os.path.join(self._insar.secondarySlcProduct, 'IW{0}.xml'.format(swath))) + referenceTop = self._insar.loadProduct( os.path.join(self._insar.referenceSlcOverlapProduct, 'top_IW{0}.xml'.format(swath))) + referenceBottom = self._insar.loadProduct( os.path.join(self._insar.referenceSlcOverlapProduct, 'bottom_IW{0}.xml'.format(swath))) - dt = slave.bursts[0].azimuthTimeInterval - dr = slave.bursts[0].rangePixelSize + dt = secondary.bursts[0].azimuthTimeInterval + dr = secondary.bursts[0].rangePixelSize ###Output directory for coregistered SLCs @@ -109,12 +109,12 @@ def runCoarseResamp(self): ###Directory with offsets offdir = os.path.join(self._insar.coarseOffsetsDirname, self._insar.overlapsSubDirname, 'IW{0}'.format(swath)) - ####Indices w.r.t master - minBurst, maxBurst = self._insar.commonMasterBurstLimits(swath-1) - slaveBurstStart, slaveBurstEnd = self._insar.commonSlaveBurstLimits(swath-1) + ####Indices w.r.t reference + minBurst, maxBurst = self._insar.commonReferenceBurstLimits(swath-1) + secondaryBurstStart, secondaryBurstEnd = self._insar.commonSecondaryBurstLimits(swath-1) - relShifts = getRelativeShifts(master, slave, minBurst, maxBurst, slaveBurstStart) + relShifts = getRelativeShifts(reference, secondary, minBurst, maxBurst, secondaryBurstStart) maxBurst = maxBurst - 1 ###For overlaps print('Shifts for swath IW-{0}: {1}'.format(swath,relShifts)) @@ -135,11 +135,11 @@ def runCoarseResamp(self): botCoreg.configure() for ii in range(minBurst, maxBurst): - jj = slaveBurstStart + ii - minBurst + jj = secondaryBurstStart + ii - minBurst - topBurst = masterTop.bursts[ii-minBurst] - botBurst = masterBottom.bursts[ii-minBurst] - slvBurst = slave.bursts[jj] + topBurst = referenceTop.bursts[ii-minBurst] + botBurst = referenceBottom.bursts[ii-minBurst] + slvBurst = secondary.bursts[jj] @@ -147,7 +147,7 @@ def runCoarseResamp(self): try: offset = relShifts[jj] except: - raise Exception('Trying to access shift for slave burst index {0}, which may not overlap with master - IW-{1}'.format(jj, swath)) + raise Exception('Trying to access shift for secondary burst index {0}, which may not overlap with reference - IW-{1}'.format(jj, swath)) outname = os.path.join(outdir, 'burst_top_%02d_%02d.slc'%(ii+1,ii+2)) @@ -161,12 +161,12 @@ def runCoarseResamp(self): ###For future - should account for azimuth and range misreg here .. ignoring for now. - azCarrPoly, dpoly = slave.estimateAzimuthCarrierPolynomials(slvBurst, offset = -1.0 * offset) + azCarrPoly, dpoly = secondary.estimateAzimuthCarrierPolynomials(slvBurst, offset = -1.0 * offset) rdict['carrPoly'] = azCarrPoly rdict['doppPoly'] = dpoly - outimg = resampSlave(topBurst, slvBurst, rdict, outname) + outimg = resampSecondary(topBurst, slvBurst, rdict, outname) copyBurst = topBurst.clone() adjustValidSampleLine(copyBurst, slvBurst) @@ -176,7 +176,7 @@ def runCoarseResamp(self): ####################################################### - slvBurst = slave.bursts[jj+1] + slvBurst = secondary.bursts[jj+1] outname = os.path.join(outdir, 'burst_bot_%02d_%02d.slc'%(ii+1,ii+2)) ####Setup initial polynomials @@ -187,12 +187,12 @@ def runCoarseResamp(self): 'rangeOff' : os.path.join(offdir, 'range_bot_%02d_%02d.off'%(ii+1,ii+2)), 'azimuthOff': os.path.join(offdir, 'azimuth_bot_%02d_%02d.off'%(ii+1,ii+2))} - azCarrPoly, dpoly = slave.estimateAzimuthCarrierPolynomials(slvBurst, offset = -1.0 * offset) + azCarrPoly, dpoly = secondary.estimateAzimuthCarrierPolynomials(slvBurst, offset = -1.0 * offset) rdict['carrPoly'] = azCarrPoly rdict['doppPoly'] = dpoly - outimg = resampSlave(botBurst, slvBurst, rdict, outname) + outimg = resampSecondary(botBurst, slvBurst, rdict, outname) copyBurst = botBurst.clone() adjustValidSampleLine(copyBurst, slvBurst) diff --git a/components/isceobj/TopsProc/runComputeBaseline.py b/components/isceobj/TopsProc/runComputeBaseline.py index 970084d..b991bc2 100644 --- a/components/isceobj/TopsProc/runComputeBaseline.py +++ b/components/isceobj/TopsProc/runComputeBaseline.py @@ -17,8 +17,8 @@ def runComputeBaseline(self): swathList = self._insar.getInputSwathList(self.swaths) - commonBurstStartMasterIndex = [-1] * self._insar.numberOfSwaths - commonBurstStartSlaveIndex = [-1] * self._insar.numberOfSwaths + commonBurstStartReferenceIndex = [-1] * self._insar.numberOfSwaths + commonBurstStartSecondaryIndex = [-1] * self._insar.numberOfSwaths numberOfCommonBursts = [0] * self._insar.numberOfSwaths @@ -26,15 +26,15 @@ def runComputeBaseline(self): for swath in swathList: - masterxml = os.path.join( self._insar.masterSlcProduct,'IW{0}.xml'.format(swath)) - slavexml = os.path.join( self._insar.slaveSlcProduct, 'IW{0}.xml'.format(swath)) + referencexml = os.path.join( self._insar.referenceSlcProduct,'IW{0}.xml'.format(swath)) + secondaryxml = os.path.join( self._insar.secondarySlcProduct, 'IW{0}.xml'.format(swath)) - if os.path.exists(masterxml) and os.path.exists(slavexml): - master = self._insar.loadProduct(masterxml) - slave = self._insar.loadProduct(slavexml) + if os.path.exists(referencexml) and os.path.exists(secondaryxml): + reference = self._insar.loadProduct(referencexml) + secondary = self._insar.loadProduct(secondaryxml) - burstOffset, minBurst, maxBurst = master.getCommonBurstLimits(slave) - commonSlaveIndex = minBurst + burstOffset + burstOffset, minBurst, maxBurst = reference.getCommonBurstLimits(secondary) + commonSecondaryIndex = minBurst + burstOffset numberCommon = maxBurst - minBurst if numberCommon == 0: @@ -42,17 +42,17 @@ def runComputeBaseline(self): else: ###Bookkeeping - commonBurstStartMasterIndex[swath-1] = minBurst - commonBurstStartSlaveIndex[swath-1] = commonSlaveIndex + commonBurstStartReferenceIndex[swath-1] = minBurst + commonBurstStartSecondaryIndex[swath-1] = commonSecondaryIndex numberOfCommonBursts[swath-1] = numberCommon - catalog.addItem('IW-{0} Number of bursts in master'.format(swath), master.numberOfBursts, 'baseline') - catalog.addItem('IW-{0} First common burst in master'.format(swath), minBurst, 'baseline') - catalog.addItem('IW-{0} Last common burst in master'.format(swath), maxBurst, 'baseline') - catalog.addItem('IW-{0} Number of bursts in slave'.format(swath), slave.numberOfBursts, 'baseline') - catalog.addItem('IW-{0} First common burst in slave'.format(swath), minBurst + burstOffset, 'baseline') - catalog.addItem('IW-{0} Last common burst in slave'.format(swath), maxBurst + burstOffset, 'baseline') + catalog.addItem('IW-{0} Number of bursts in reference'.format(swath), reference.numberOfBursts, 'baseline') + catalog.addItem('IW-{0} First common burst in reference'.format(swath), minBurst, 'baseline') + catalog.addItem('IW-{0} Last common burst in reference'.format(swath), maxBurst, 'baseline') + catalog.addItem('IW-{0} Number of bursts in secondary'.format(swath), secondary.numberOfBursts, 'baseline') + catalog.addItem('IW-{0} First common burst in secondary'.format(swath), minBurst + burstOffset, 'baseline') + catalog.addItem('IW-{0} Last common burst in secondary'.format(swath), maxBurst + burstOffset, 'baseline') catalog.addItem('IW-{0} Number of common bursts'.format(swath), numberCommon, 'baseline') refElp = Planet(pname='Earth').ellipsoid @@ -61,22 +61,22 @@ def runComputeBaseline(self): for boff in [0, numberCommon-1]: ###Baselines at top of common bursts - mBurst = master.bursts[minBurst + boff] - sBurst = slave.bursts[commonSlaveIndex + boff] + mBurst = reference.bursts[minBurst + boff] + sBurst = secondary.bursts[commonSecondaryIndex + boff] ###Target at mid range tmid = mBurst.sensingMid rng = mBurst.midRange - masterSV = mBurst.orbit.interpolate(tmid, method='hermite') + referenceSV = mBurst.orbit.interpolate(tmid, method='hermite') target = mBurst.orbit.rdr2geo(tmid, rng) slvTime, slvrng = sBurst.orbit.geo2rdr(target) - slaveSV = sBurst.orbit.interpolateOrbit(slvTime, method='hermite') + secondarySV = sBurst.orbit.interpolateOrbit(slvTime, method='hermite') targxyz = np.array(refElp.LLH(target[0], target[1], target[2]).ecef().tolist()) - mxyz = np.array(masterSV.getPosition()) - mvel = np.array(masterSV.getVelocity()) - sxyz = np.array(slaveSV.getPosition()) + mxyz = np.array(referenceSV.getPosition()) + mvel = np.array(referenceSV.getVelocity()) + sxyz = np.array(secondarySV.getPosition()) mvelunit = mvel / np.linalg.norm(mvel) sxyz = sxyz - np.dot ( sxyz-mxyz, mvelunit) * mvelunit @@ -100,8 +100,8 @@ def runComputeBaseline(self): print('Skipping processing for swath number IW-{0}'.format(swath)) - self._insar.commonBurstStartMasterIndex = commonBurstStartMasterIndex - self._insar.commonBurstStartSlaveIndex = commonBurstStartSlaveIndex + self._insar.commonBurstStartReferenceIndex = commonBurstStartReferenceIndex + self._insar.commonBurstStartSecondaryIndex = commonBurstStartSecondaryIndex self._insar.numberOfCommonBursts = numberOfCommonBursts diff --git a/components/isceobj/TopsProc/runDenseOffsets.py b/components/isceobj/TopsProc/runDenseOffsets.py index 364cb69..75023cf 100644 --- a/components/isceobj/TopsProc/runDenseOffsets.py +++ b/components/isceobj/TopsProc/runDenseOffsets.py @@ -32,7 +32,7 @@ def runDenseOffsets(self): @use_api def runDenseOffsetsCPU(self): ''' - Estimate dense offset field between merged master bursts and slave bursts. + Estimate dense offset field between merged reference bursts and secondary bursts. ''' from mroipac.ampcor.DenseAmpcor import DenseAmpcor @@ -42,17 +42,17 @@ def runDenseOffsetsCPU(self): print('Configuring DenseAmpcor object for processing...\n') ### Determine appropriate filenames - mf = 'master.slc' - sf = 'slave.slc' + mf = 'reference.slc' + sf = 'secondary.slc' if not ((self.numberRangeLooks == 1) and (self.numberAzimuthLooks==1)): mf += '.full' sf += '.full' - master = os.path.join(self._insar.mergedDirname, mf) - slave = os.path.join(self._insar.mergedDirname, sf) + reference = os.path.join(self._insar.mergedDirname, mf) + secondary = os.path.join(self._insar.mergedDirname, sf) ####For this module currently, we need to create an actual file on disk - for infile in [master,slave]: + for infile in [reference,secondary]: if os.path.isfile(infile): continue cmd = 'gdal_translate -of ENVI {0}.vrt {0}'.format(infile) @@ -62,15 +62,15 @@ def runDenseOffsetsCPU(self): - ### Load the master object + ### Load the reference object m = isceobj.createSlcImage() - m.load(master + '.xml') + m.load(reference + '.xml') m.setAccessMode('READ') # m.createImage() - ### Load the slave object + ### Load the secondary object s = isceobj.createSlcImage() - s.load(slave + '.xml') + s.load(secondary + '.xml') s.setAccessMode('READ') # s.createImage() @@ -82,8 +82,8 @@ def runDenseOffsetsCPU(self): # objOffset.numberThreads = 1 ### Configure dense Ampcor object - print('\nMaster frame: %s' % (mf)) - print('Slave frame: %s' % (sf)) + print('\nReference frame: %s' % (mf)) + print('Secondary frame: %s' % (sf)) print('Main window size width: %d' % (self.winwidth)) print('Main window size height: %d' % (self.winhgt)) print('Search window size width: %d' % (self.srcwidth)) @@ -138,7 +138,7 @@ def runDenseOffsetsCPU(self): def runDenseOffsetsGPU(self): ''' - Estimate dense offset field between merged master bursts and slave bursts. + Estimate dense offset field between merged reference bursts and secondary bursts. ''' from contrib.PyCuAmpcor import PyCuAmpcor @@ -147,17 +147,17 @@ def runDenseOffsetsGPU(self): print('Configuring PyCuAmpcor object for processing...\n') ### Determine appropriate filenames - mf = 'master.slc' - sf = 'slave.slc' + mf = 'reference.slc' + sf = 'secondary.slc' if not ((self.numberRangeLooks == 1) and (self.numberAzimuthLooks==1)): mf += '.full' sf += '.full' - master = os.path.join(self._insar.mergedDirname, mf) - slave = os.path.join(self._insar.mergedDirname, sf) + reference = os.path.join(self._insar.mergedDirname, mf) + secondary = os.path.join(self._insar.mergedDirname, sf) ####For this module currently, we need to create an actual file on disk - for infile in [master,slave]: + for infile in [reference,secondary]: if os.path.isfile(infile): continue @@ -166,15 +166,15 @@ def runDenseOffsetsGPU(self): if status: raise Exception('{0} could not be executed'.format(status)) - ### Load the master object + ### Load the reference object m = isceobj.createSlcImage() - m.load(master + '.xml') + m.load(reference + '.xml') m.setAccessMode('READ') # m.createImage() - ### Load the slave object + ### Load the secondary object s = isceobj.createSlcImage() - s.load(slave + '.xml') + s.load(secondary + '.xml') s.setAccessMode('READ') # s.createImage() @@ -186,12 +186,12 @@ def runDenseOffsetsGPU(self): objOffset.deviceID = -1 objOffset.nStreams = 2 objOffset.derampMethod = 0 - objOffset.masterImageName = master + '.vrt' - objOffset.masterImageHeight = length - objOffset.masterImageWidth = width - objOffset.slaveImageName = slave + '.vrt' - objOffset.slaveImageHeight = length - objOffset.slaveImageWidth = width + objOffset.referenceImageName = reference + '.vrt' + objOffset.referenceImageHeight = length + objOffset.referenceImageWidth = width + objOffset.secondaryImageName = secondary + '.vrt' + objOffset.secondaryImageHeight = length + objOffset.secondaryImageWidth = width objOffset.numberWindowDown = (length-100-self.winhgt)//self.skiphgt objOffset.numberWindowAcross = (width-100-self.winwidth)//self.skipwidth @@ -202,8 +202,8 @@ def runDenseOffsetsGPU(self): objOffset.halfSearchRangeDown = self.srchgt objOffset.halfSearchRangeAcross = self.srcwidth - objOffset.masterStartPixelDownStatic = 50 - objOffset.masterStartPixelAcrossStatic = 50 + objOffset.referenceStartPixelDownStatic = 50 + objOffset.referenceStartPixelAcrossStatic = 50 objOffset.skipSampleDown = self.skiphgt objOffset.skipSampleAcross = self.skipwidth @@ -223,8 +223,8 @@ def runDenseOffsetsGPU(self): # objOffset.numberThreads = 1 ### Configure dense Ampcor object - print('\nMaster frame: %s' % (mf)) - print('Slave frame: %s' % (sf)) + print('\nReference frame: %s' % (mf)) + print('Secondary frame: %s' % (sf)) print('Main window size width: %d' % (self.winwidth)) print('Main window size height: %d' % (self.winhgt)) print('Search window size width: %d' % (self.srcwidth)) @@ -286,7 +286,7 @@ def runDenseOffsetsGPU(self): if __name__ == '__main__' : ''' - Default routine to plug master.slc.full/slave.slc.full into + Default routine to plug reference.slc.full/secondary.slc.full into Dense Offsets Ampcor module. ''' diff --git a/components/isceobj/TopsProc/runESD.py b/components/isceobj/TopsProc/runESD.py index fcf5a04..7800e31 100755 --- a/components/isceobj/TopsProc/runESD.py +++ b/components/isceobj/TopsProc/runESD.py @@ -32,10 +32,10 @@ def runESD(self, debugPlot=True): print('Skipping ESD for swath IW{0}'.format(swath)) continue - master = self._insar.loadProduct( os.path.join(self._insar.masterSlcProduct, 'IW{0}.xml'.format(swath))) + reference = self._insar.loadProduct( os.path.join(self._insar.referenceSlcProduct, 'IW{0}.xml'.format(swath))) - minBurst, maxBurst = self._insar.commonMasterBurstLimits(swath-1) - slaveBurstStart, slaveBurstEnd = self._insar.commonSlaveBurstLimits(swath-1) + minBurst, maxBurst = self._insar.commonReferenceBurstLimits(swath-1) + secondaryBurstStart, secondaryBurstEnd = self._insar.commonSecondaryBurstLimits(swath-1) esddir = self._insar.esdDirname alks = self.esdAzimuthLooks @@ -156,7 +156,7 @@ def runESD(self, debugPlot=True): catalog.printToLog(logger, "runESD") self._insar.procDoc.addAllFromCatalog(catalog) - self._insar.slaveTimingCorrection = medianval * master.bursts[0].azimuthTimeInterval + self._insar.secondaryTimingCorrection = medianval * reference.bursts[0].azimuthTimeInterval return diff --git a/components/isceobj/TopsProc/runFineOffsets.py b/components/isceobj/TopsProc/runFineOffsets.py index e1ff7dc..c6ff1bd 100644 --- a/components/isceobj/TopsProc/runFineOffsets.py +++ b/components/isceobj/TopsProc/runFineOffsets.py @@ -184,18 +184,18 @@ def runFineOffsets(self): ##Catalog catalog = isceobj.Catalog.createCatalog(self._insar.procDoc.name) - misreg_az = self._insar.slaveTimingCorrection - catalog.addItem('Initial slave azimuth timing correction', misreg_az, 'fineoff') + misreg_az = self._insar.secondaryTimingCorrection + catalog.addItem('Initial secondary azimuth timing correction', misreg_az, 'fineoff') - misreg_rg = self._insar.slaveRangeCorrection - catalog.addItem('Initial slave range timing correction', misreg_rg, 'fineoff') + misreg_rg = self._insar.secondaryRangeCorrection + catalog.addItem('Initial secondary range timing correction', misreg_rg, 'fineoff') swathList = self._insar.getValidSwathList(self.swaths) for swath in swathList: - ##Load slave metadata - slave = self._insar.loadProduct( os.path.join(self._insar.slaveSlcProduct, 'IW{0}.xml'.format(swath))) + ##Load secondary metadata + secondary = self._insar.loadProduct( os.path.join(self._insar.secondarySlcProduct, 'IW{0}.xml'.format(swath))) ###Offsets output directory outdir = os.path.join(self._insar.fineOffsetsDirname, 'IW{0}'.format(swath)) @@ -203,8 +203,8 @@ def runFineOffsets(self): os.makedirs(outdir, exist_ok=True) - ###Burst indices w.r.t master - minBurst, maxBurst = self._insar.commonMasterBurstLimits(swath-1) + ###Burst indices w.r.t reference + minBurst, maxBurst = self._insar.commonReferenceBurstLimits(swath-1) geomDir = os.path.join(self._insar.geometryDirname, 'IW{0}'.format(swath)) if minBurst == maxBurst: @@ -212,17 +212,17 @@ def runFineOffsets(self): continue - slaveBurstStart = self._insar.commonBurstStartSlaveIndex[swath-1] + secondaryBurstStart = self._insar.commonBurstStartSecondaryIndex[swath-1] catalog.addItem('Number of bursts - IW{0}'.format(swath), maxBurst - minBurst, 'fineoff') for mBurst in range(minBurst, maxBurst): - ###Corresponding slave burst - sBurst = slaveBurstStart + (mBurst - minBurst) - burst = slave.bursts[sBurst] + ###Corresponding secondary burst + sBurst = secondaryBurstStart + (mBurst - minBurst) + burst = secondary.bursts[sBurst] - logger.info('IW{3} - Burst {1} of master matched with Burst {2} of slave'.format(mBurst-minBurst, mBurst, sBurst, swath)) + logger.info('IW{3} - Burst {1} of reference matched with Burst {2} of secondary'.format(mBurst-minBurst, mBurst, sBurst, swath)) ####Generate offsets for top burst rdict = {'lat': os.path.join(geomDir,'lat_%02d.rdr'%(mBurst+1)), 'lon': os.path.join(geomDir,'lon_%02d.rdr'%(mBurst+1)), diff --git a/components/isceobj/TopsProc/runFineResamp.py b/components/isceobj/TopsProc/runFineResamp.py index d8e5b9b..8484949 100755 --- a/components/isceobj/TopsProc/runFineResamp.py +++ b/components/isceobj/TopsProc/runFineResamp.py @@ -13,7 +13,7 @@ import os import copy from isceobj.Sensor.TOPS import createTOPSSwathSLCProduct -def resampSlave(mas, slv, rdict, outname ): +def resampSecondary(mas, slv, rdict, outname ): ''' Resample burst by burst. ''' @@ -71,98 +71,98 @@ def resampSlave(mas, slv, rdict, outname ): return imgOut -def getRelativeShifts(mFrame, sFrame, minBurst, maxBurst, slaveBurstStart): +def getRelativeShifts(mFrame, sFrame, minBurst, maxBurst, secondaryBurstStart): ''' Estimate the relative shifts between the start of the bursts. ''' - azMasterOff = {} - azSlaveOff = {} + azReferenceOff = {} + azSecondaryOff = {} azRelOff = {} tm = mFrame.bursts[minBurst].sensingStart dt = mFrame.bursts[minBurst].azimuthTimeInterval - ts = sFrame.bursts[slaveBurstStart].sensingStart + ts = sFrame.bursts[secondaryBurstStart].sensingStart for index in range(minBurst, maxBurst): burst = mFrame.bursts[index] - azMasterOff[index] = int(np.round((burst.sensingStart - tm).total_seconds() / dt)) + azReferenceOff[index] = int(np.round((burst.sensingStart - tm).total_seconds() / dt)) - burst = sFrame.bursts[slaveBurstStart + index - minBurst] - azSlaveOff[slaveBurstStart + index - minBurst] = int(np.round((burst.sensingStart - ts).total_seconds() / dt)) + burst = sFrame.bursts[secondaryBurstStart + index - minBurst] + azSecondaryOff[secondaryBurstStart + index - minBurst] = int(np.round((burst.sensingStart - ts).total_seconds() / dt)) - azRelOff[slaveBurstStart + index - minBurst] = azSlaveOff[slaveBurstStart + index - minBurst] - azMasterOff[index] + azRelOff[secondaryBurstStart + index - minBurst] = azSecondaryOff[secondaryBurstStart + index - minBurst] - azReferenceOff[index] return azRelOff -def adjustValidSampleLine(master, slave, minAz=0, maxAz=0, minRng=0, maxRng=0): +def adjustValidSampleLine(reference, secondary, minAz=0, maxAz=0, minRng=0, maxRng=0): ####Adjust valid samples and first valid sample here print ("Adjust valid samples") - print('Before: ', master.firstValidSample, master.numValidSamples) + print('Before: ', reference.firstValidSample, reference.numValidSamples) print('Offsets : ', minRng, maxRng) if (minRng > 0) and (maxRng > 0): - master.firstValidSample = slave.firstValidSample - int(np.floor(maxRng)-4) - lastValidSample = master.firstValidSample - 8 + slave.numValidSamples + reference.firstValidSample = secondary.firstValidSample - int(np.floor(maxRng)-4) + lastValidSample = reference.firstValidSample - 8 + secondary.numValidSamples - if lastValidSample < master.numberOfSamples: - master.numValidSamples = slave.numValidSamples - 8 + if lastValidSample < reference.numberOfSamples: + reference.numValidSamples = secondary.numValidSamples - 8 else: - master.numValidSamples = master.numberOfSamples - master.firstValidSample + reference.numValidSamples = reference.numberOfSamples - reference.firstValidSample elif (minRng < 0) and (maxRng < 0): - master.firstValidSample = slave.firstValidSample - int(np.floor(minRng) - 4) - lastValidSample = master.firstValidSample + slave.numValidSamples - 8 - if lastValidSample < master.numberOfSamples: - master.numValidSamples = slave.numValidSamples - 8 + reference.firstValidSample = secondary.firstValidSample - int(np.floor(minRng) - 4) + lastValidSample = reference.firstValidSample + secondary.numValidSamples - 8 + if lastValidSample < reference.numberOfSamples: + reference.numValidSamples = secondary.numValidSamples - 8 else: - master.numValidSamples = master.numberOfSamples - master.firstValidSample + reference.numValidSamples = reference.numberOfSamples - reference.firstValidSample elif (minRng < 0) and (maxRng > 0): - master.firstValidSample = slave.firstValidSample - int(np.floor(minRng) - 4) - lastValidSample = master.firstValidSample + slave.numValidSamples + int(np.floor(minRng) - 8) - int(np.ceil(maxRng)) - if lastValidSample < master.numberOfSamples: - master.numValidSamples = slave.numValidSamples + int(np.floor(minRng) - 8) - int(np.ceil(maxRng)) + reference.firstValidSample = secondary.firstValidSample - int(np.floor(minRng) - 4) + lastValidSample = reference.firstValidSample + secondary.numValidSamples + int(np.floor(minRng) - 8) - int(np.ceil(maxRng)) + if lastValidSample < reference.numberOfSamples: + reference.numValidSamples = secondary.numValidSamples + int(np.floor(minRng) - 8) - int(np.ceil(maxRng)) else: - master.numValidSamples = master.numberOfSamples - master.firstValidSample + reference.numValidSamples = reference.numberOfSamples - reference.firstValidSample - master.firstValidSample = np.max([0, master.firstValidSample]) + reference.firstValidSample = np.max([0, reference.firstValidSample]) ###Adjust valid lines and first valid line here print ("Adjust valid lines") - print('Before: ', master.firstValidLine, master.numValidLines) + print('Before: ', reference.firstValidLine, reference.numValidLines) print('Offsets : ', minAz, maxAz) if (minAz > 0) and (maxAz > 0): - master.firstValidLine = slave.firstValidLine - int(np.floor(maxAz) - 4) - lastValidLine = master.firstValidLine - 8 + slave.numValidLines + reference.firstValidLine = secondary.firstValidLine - int(np.floor(maxAz) - 4) + lastValidLine = reference.firstValidLine - 8 + secondary.numValidLines - if lastValidLine < master.numberOfLines: - master.numValidLines = slave.numValidLines - 8 + if lastValidLine < reference.numberOfLines: + reference.numValidLines = secondary.numValidLines - 8 else: - master.numValidLines = master.numberOfLines - master.firstValidLine + reference.numValidLines = reference.numberOfLines - reference.firstValidLine elif (minAz < 0) and (maxAz < 0): - master.firstValidLine = slave.firstValidLine - int(np.floor(minAz) - 4) - lastValidLine = master.firstValidLine + slave.numValidLines - 8 - if lastValidLine < master.numberOfLines: - master.numValidLines = slave.numValidLines - 8 + reference.firstValidLine = secondary.firstValidLine - int(np.floor(minAz) - 4) + lastValidLine = reference.firstValidLine + secondary.numValidLines - 8 + if lastValidLine < reference.numberOfLines: + reference.numValidLines = secondary.numValidLines - 8 else: - master.numValidLines = master.numberOfLines - master.firstValidLine + reference.numValidLines = reference.numberOfLines - reference.firstValidLine elif (minAz < 0) and (maxAz > 0): - master.firstValidLine = slave.firstValidLine - int(np.floor(minAz) - 4) - lastValidLine = master.firstValidLine + slave.numValidLines + int(np.floor(minAz) - 8) - int(np.ceil(maxAz)) - if lastValidLine < master.numberOfLines: - master.numValidLines = slave.numValidLines + int(np.floor(minAz) - 8) - int(np.ceil(maxAz)) + reference.firstValidLine = secondary.firstValidLine - int(np.floor(minAz) - 4) + lastValidLine = reference.firstValidLine + secondary.numValidLines + int(np.floor(minAz) - 8) - int(np.ceil(maxAz)) + if lastValidLine < reference.numberOfLines: + reference.numValidLines = secondary.numValidLines + int(np.floor(minAz) - 8) - int(np.ceil(maxAz)) else: - master.numValidLines = master.numberOfLines - master.firstValidLine + reference.numValidLines = reference.numberOfLines - reference.firstValidLine -def getValidLines(slave, rdict, inname, misreg_az=0.0, misreg_rng=0.0): +def getValidLines(secondary, rdict, inname, misreg_az=0.0, misreg_rng=0.0): ''' - Looks at the master, slave and azimuth offsets and gets the Interferogram valid lines + Looks at the reference, secondary and azimuth offsets and gets the Interferogram valid lines ''' dimg = isceobj.createSlcImage() dimg.load(inname + '.xml') @@ -189,7 +189,7 @@ def getValidLines(slave, rdict, inname, misreg_az=0.0, misreg_rng=0.0): def runFineResamp(self): ''' - Create coregistered overlap slaves. + Create coregistered overlap secondarys. ''' @@ -197,12 +197,12 @@ def runFineResamp(self): for swath in swathList: - ####Load slave metadata - master = self._insar.loadProduct( os.path.join(self._insar.masterSlcProduct, 'IW{0}.xml'.format(swath))) - slave = self._insar.loadProduct( os.path.join(self._insar.slaveSlcProduct, 'IW{0}.xml'.format(swath))) + ####Load secondary metadata + reference = self._insar.loadProduct( os.path.join(self._insar.referenceSlcProduct, 'IW{0}.xml'.format(swath))) + secondary = self._insar.loadProduct( os.path.join(self._insar.secondarySlcProduct, 'IW{0}.xml'.format(swath))) - dt = slave.bursts[0].azimuthTimeInterval - dr = slave.bursts[0].rangePixelSize + dt = secondary.bursts[0].azimuthTimeInterval + dr = secondary.bursts[0].rangePixelSize ###Output directory for coregistered SLCs @@ -213,15 +213,15 @@ def runFineResamp(self): ###Directory with offsets offdir = os.path.join(self._insar.fineOffsetsDirname, 'IW{0}'.format(swath)) - ####Indices w.r.t master - minBurst, maxBurst = self._insar.commonMasterBurstLimits(swath-1) - slaveBurstStart, slaveBurstEnd = self._insar.commonSlaveBurstLimits(swath-1) + ####Indices w.r.t reference + minBurst, maxBurst = self._insar.commonReferenceBurstLimits(swath-1) + secondaryBurstStart, secondaryBurstEnd = self._insar.commonSecondaryBurstLimits(swath-1) if minBurst == maxBurst: print('Skipping processing of swath {0}'.format(swath)) continue - relShifts = getRelativeShifts(master, slave, minBurst, maxBurst, slaveBurstStart) + relShifts = getRelativeShifts(reference, secondary, minBurst, maxBurst, secondaryBurstStart) print('Shifts IW-{0}: '.format(swath), relShifts) ####Can corporate known misregistration here @@ -232,23 +232,23 @@ def runFineResamp(self): rpoly.initPoly(rangeOrder=0,azimuthOrder=0,coeffs=[[0.]]) - misreg_az = self._insar.slaveTimingCorrection / dt - misreg_rg = self._insar.slaveRangeCorrection / dr + misreg_az = self._insar.secondaryTimingCorrection / dt + misreg_rg = self._insar.secondaryRangeCorrection / dr coreg = createTOPSSwathSLCProduct() coreg.configure() for ii in range(minBurst, maxBurst): - jj = slaveBurstStart + ii - minBurst + jj = secondaryBurstStart + ii - minBurst - masBurst = master.bursts[ii] - slvBurst = slave.bursts[jj] + masBurst = reference.bursts[ii] + slvBurst = secondary.bursts[jj] try: offset = relShifts[jj] except: - raise Exception('Trying to access shift for slave burst index {0}, which may not overlap with master for swath {1}'.format(jj, swath)) + raise Exception('Trying to access shift for secondary burst index {0}, which may not overlap with reference for swath {1}'.format(jj, swath)) outname = os.path.join(outdir, 'burst_%02d.slc'%(ii+1)) @@ -262,12 +262,12 @@ def runFineResamp(self): ###For future - should account for azimuth and range misreg here .. ignoring for now. - azCarrPoly, dpoly = slave.estimateAzimuthCarrierPolynomials(slvBurst, offset = -1.0 * offset) + azCarrPoly, dpoly = secondary.estimateAzimuthCarrierPolynomials(slvBurst, offset = -1.0 * offset) rdict['carrPoly'] = azCarrPoly rdict['doppPoly'] = dpoly - outimg = resampSlave(masBurst, slvBurst, rdict, outname) + outimg = resampSecondary(masBurst, slvBurst, rdict, outname) minAz, maxAz, minRg, maxRg = getValidLines(slvBurst, rdict, outname, misreg_az = misreg_az - offset, misreg_rng = misreg_rg) diff --git a/components/isceobj/TopsProc/runIon.py b/components/isceobj/TopsProc/runIon.py index 70bf060..4a0164e 100644 --- a/components/isceobj/TopsProc/runIon.py +++ b/components/isceobj/TopsProc/runIon.py @@ -136,8 +136,8 @@ def setup(self): ionParam.ioncalDirname = 'ion_cal' ionParam.ionBurstDirname = 'ion_burst' #these are same directory names as topsApp.py/TopsProc.py - #ionParam.masterSlcProduct = 'master' - #ionParam.slaveSlcProduct = 'slave' + #ionParam.referenceSlcProduct = 'reference' + #ionParam.secondarySlcProduct = 'secondary' #ionParam.fineCoregDirname = 'fine_coreg' ionParam.fineIfgDirname = 'fine_interferogram' ionParam.mergedDirname = 'merged' @@ -161,27 +161,27 @@ def setup(self): #SECTION 4. DEFINE WAVELENGTHS AND DETERMINE IF CALCULATE IONOSPHERE WITH MERGED INTERFEROGRAM getParamFromData = False - masterStartingRange = np.zeros(3) - slaveStartingRange = np.zeros(3) + referenceStartingRange = np.zeros(3) + secondaryStartingRange = np.zeros(3) swathList = self._insar.getValidSwathList(self.swaths) for swath in swathList: - ####Load slave metadata - master = self._insar.loadProduct( os.path.join(self._insar.masterSlcProduct, 'IW{0}.xml'.format(swath))) - slave = self._insar.loadProduct( os.path.join(self._insar.slaveSlcProduct, 'IW{0}.xml'.format(swath))) + ####Load secondary metadata + reference = self._insar.loadProduct( os.path.join(self._insar.referenceSlcProduct, 'IW{0}.xml'.format(swath))) + secondary = self._insar.loadProduct( os.path.join(self._insar.secondarySlcProduct, 'IW{0}.xml'.format(swath))) - ####Indices w.r.t master - minBurst, maxBurst = self._insar.commonMasterBurstLimits(swath-1) - slaveBurstStart, slaveBurstEnd = self._insar.commonSlaveBurstLimits(swath-1) + ####Indices w.r.t reference + minBurst, maxBurst = self._insar.commonReferenceBurstLimits(swath-1) + secondaryBurstStart, secondaryBurstEnd = self._insar.commonSecondaryBurstLimits(swath-1) if minBurst == maxBurst: #print('Skipping processing of swath {0}'.format(swath)) continue else: ii = minBurst - jj = slaveBurstStart + ii - minBurst + jj = secondaryBurstStart + ii - minBurst - masBurst = master.bursts[ii] - slvBurst = slave.bursts[jj] + masBurst = reference.bursts[ii] + slvBurst = secondary.bursts[jj] #use the 1/3, 1/3, 1/3 scheme for splitting ionParam.radarWavelength = masBurst.radarWavelength @@ -190,12 +190,12 @@ def setup(self): #use this to determine which polynomial to use to calculate a ramp when calculating ionosphere for cross A/B interferogram ionParam.passDirection = masBurst.passDirection.lower() - masterStartingRange[swath-1] = masBurst.startingRange - slaveStartingRange[swath-1] = slvBurst.startingRange + referenceStartingRange[swath-1] = masBurst.startingRange + secondaryStartingRange[swath-1] = slvBurst.startingRange getParamFromData = True #determine if calculate ionosphere using merged interferogram - if np.sum(masterStartingRange==slaveStartingRange) != 3: + if np.sum(referenceStartingRange==secondaryStartingRange) != 3: ionParam.calIonWithMerged = False else: ionParam.calIonWithMerged = True @@ -204,16 +204,16 @@ def setup(self): if len(swathList) == 1: ionParam.calIonWithMerged = True #for cross Sentinel-1A/B interferogram, always not using merged interferogram - if master.mission != slave.mission: + if reference.mission != secondary.mission: ionParam.calIonWithMerged = False #determine if remove an empirical ramp - if master.mission == slave.mission: + if reference.mission == secondary.mission: ionParam.rampRemovel = 0 else: #estimating ionospheric phase for cross Sentinel-1A/B interferogram #an empirical ramp will be removed from the estimated ionospheric phase - if master.mission == 'S1A' and slave.mission == 'S1B': + if reference.mission == 'S1A' and secondary.mission == 'S1B': ionParam.rampRemovel = 1 else: ionParam.rampRemovel = -1 @@ -289,24 +289,24 @@ def runCmd(cmd, silent=0): raise Exception('error when running:\n{}\n'.format(cmd)) -def adjustValidLineSample(master,slave): +def adjustValidLineSample(reference,secondary): - master_lastValidLine = master.firstValidLine + master.numValidLines - 1 - master_lastValidSample = master.firstValidSample + master.numValidSamples - 1 - slave_lastValidLine = slave.firstValidLine + slave.numValidLines - 1 - slave_lastValidSample = slave.firstValidSample + slave.numValidSamples - 1 + reference_lastValidLine = reference.firstValidLine + reference.numValidLines - 1 + reference_lastValidSample = reference.firstValidSample + reference.numValidSamples - 1 + secondary_lastValidLine = secondary.firstValidLine + secondary.numValidLines - 1 + secondary_lastValidSample = secondary.firstValidSample + secondary.numValidSamples - 1 - igram_lastValidLine = min(master_lastValidLine, slave_lastValidLine) - igram_lastValidSample = min(master_lastValidSample, slave_lastValidSample) + igram_lastValidLine = min(reference_lastValidLine, secondary_lastValidLine) + igram_lastValidSample = min(reference_lastValidSample, secondary_lastValidSample) - master.firstValidLine = max(master.firstValidLine, slave.firstValidLine) - master.firstValidSample = max(master.firstValidSample, slave.firstValidSample) + reference.firstValidLine = max(reference.firstValidLine, secondary.firstValidLine) + reference.firstValidSample = max(reference.firstValidSample, secondary.firstValidSample) - master.numValidLines = igram_lastValidLine - master.firstValidLine + 1 - master.numValidSamples = igram_lastValidSample - master.firstValidSample + 1 + reference.numValidLines = igram_lastValidLine - reference.firstValidLine + 1 + reference.numValidSamples = igram_lastValidSample - reference.firstValidSample + 1 -def multiply2(mastername, slavename, fact, rngname=None, ionname=None, infname=None, overlapBox=None, valid=True, virtual=True): +def multiply2(referencename, secondaryname, fact, rngname=None, ionname=None, infname=None, overlapBox=None, valid=True, virtual=True): ''' This routine forms interferogram and possibly removes topographic and ionospheric phases. all the following indexes start from 1 @@ -316,25 +316,25 @@ def multiply2(mastername, slavename, fact, rngname=None, ionname=None, infname=N overlapBox[3]: last sample ''' - #use master image + #use reference image img = isceobj.createSlcImage() - img.load(mastername + '.xml') + img.load(referencename + '.xml') width = img.getWidth() length = img.getLength() - #master + #reference if not virtual: - master = np.memmap(mastername, dtype=np.complex64, mode='r', shape=(length,width)) + reference = np.memmap(referencename, dtype=np.complex64, mode='r', shape=(length,width)) else: - master = loadVirtualArray(mastername + '.vrt') + reference = loadVirtualArray(referencename + '.vrt') - #slave - slave = np.memmap(slavename, dtype=np.complex64, mode='r', shape=(length, width)) + #secondary + secondary = np.memmap(secondaryname, dtype=np.complex64, mode='r', shape=(length, width)) #interferogram cJ = np.complex64(-1j) - inf = master[overlapBox[0]-1:overlapBox[1]-1+1, overlapBox[2]-1:overlapBox[3]-1+1] \ - * np.conj(slave[overlapBox[0]-1:overlapBox[1]-1+1, overlapBox[2]-1:overlapBox[3]-1+1]) + inf = reference[overlapBox[0]-1:overlapBox[1]-1+1, overlapBox[2]-1:overlapBox[3]-1+1] \ + * np.conj(secondary[overlapBox[0]-1:overlapBox[1]-1+1, overlapBox[2]-1:overlapBox[3]-1+1]) #topography if rngname != None: @@ -352,8 +352,8 @@ def multiply2(mastername, slavename, fact, rngname=None, ionname=None, infname=N inf2 = np.zeros((length,width), dtype=np.complex64) inf2[overlapBox[0]-1:overlapBox[1]-1+1, overlapBox[2]-1:overlapBox[3]-1+1] = inf - #inf = master[overlapBox[0]-1:overlapBox[1]-1+1, overlapBox[2]-1:overlapBox[3]-1+1] \ - # * np.conj(slave[overlapBox[0]-1:overlapBox[1]-1+1, overlapBox[2]-1:overlapBox[3]-1+1]) \ + #inf = reference[overlapBox[0]-1:overlapBox[1]-1+1, overlapBox[2]-1:overlapBox[3]-1+1] \ + # * np.conj(secondary[overlapBox[0]-1:overlapBox[1]-1+1, overlapBox[2]-1:overlapBox[3]-1+1]) \ # * np.exp(cJ*ion[overlapBox[0]-1:overlapBox[1]-1+1, overlapBox[2]-1:overlapBox[3]-1+1]) \ # * np.exp(cJ*fact*rng2[overlapBox[0]-1:overlapBox[1]-1+1, overlapBox[2]-1:overlapBox[3]-1+1]) @@ -382,7 +382,7 @@ def subband(self, ionParam): from isceobj.Util.Poly2D import Poly2D from contrib.alos2proc.alos2proc import rg_filter - from isceobj.TopsProc.runFineResamp import resampSlave + from isceobj.TopsProc.runFineResamp import resampSecondary from isceobj.TopsProc.runFineResamp import getRelativeShifts from isceobj.TopsProc.runFineResamp import adjustValidSampleLine from isceobj.TopsProc.runFineResamp import getValidLines @@ -393,19 +393,19 @@ def subband(self, ionParam): virtual = self.useVirtualFiles swathList = self._insar.getValidSwathList(self.swaths) for swath in swathList: - ####Load slave metadata - master = self._insar.loadProduct( os.path.join(self._insar.masterSlcProduct, 'IW{0}.xml'.format(swath))) - slave = self._insar.loadProduct( os.path.join(self._insar.slaveSlcProduct, 'IW{0}.xml'.format(swath))) + ####Load secondary metadata + reference = self._insar.loadProduct( os.path.join(self._insar.referenceSlcProduct, 'IW{0}.xml'.format(swath))) + secondary = self._insar.loadProduct( os.path.join(self._insar.secondarySlcProduct, 'IW{0}.xml'.format(swath))) - dt = slave.bursts[0].azimuthTimeInterval - dr = slave.bursts[0].rangePixelSize + dt = secondary.bursts[0].azimuthTimeInterval + dr = secondary.bursts[0].rangePixelSize ###Directory with offsets offdir = os.path.join(self._insar.fineOffsetsDirname, 'IW{0}'.format(swath)) - ####Indices w.r.t master - minBurst, maxBurst = self._insar.commonMasterBurstLimits(swath-1) - slaveBurstStart, slaveBurstEnd = self._insar.commonSlaveBurstLimits(swath-1) + ####Indices w.r.t reference + minBurst, maxBurst = self._insar.commonReferenceBurstLimits(swath-1) + secondaryBurstStart, secondaryBurstEnd = self._insar.commonSecondaryBurstLimits(swath-1) if minBurst == maxBurst: print('Skipping processing of swath {0}'.format(swath)) @@ -419,7 +419,7 @@ def subband(self, ionParam): ############################################################## #for resampling - relShifts = getRelativeShifts(master, slave, minBurst, maxBurst, slaveBurstStart) + relShifts = getRelativeShifts(reference, secondary, minBurst, maxBurst, secondaryBurstStart) print('Shifts IW-{0}: '.format(swath), relShifts) ####Can corporate known misregistration here @@ -429,8 +429,8 @@ def subband(self, ionParam): rpoly = Poly2D() rpoly.initPoly(rangeOrder=0,azimuthOrder=0,coeffs=[[0.]]) - misreg_az = self._insar.slaveTimingCorrection / dt - misreg_rg = self._insar.slaveRangeCorrection / dr + misreg_az = self._insar.secondaryTimingCorrection / dt + misreg_rg = self._insar.secondaryRangeCorrection / dr ############################################################## fineIfgLower = createTOPSSwathSLCProduct() @@ -441,26 +441,26 @@ def subband(self, ionParam): #only process common bursts for ii in range(minBurst, maxBurst): - jj = slaveBurstStart + ii - minBurst + jj = secondaryBurstStart + ii - minBurst - masBurst = master.bursts[ii] - slvBurst = slave.bursts[jj] + masBurst = reference.bursts[ii] + slvBurst = secondary.bursts[jj] - print('processing master burst: %02d, slave burst: %02d, swath: %d'%(ii+1, jj+1, swath)) + print('processing reference burst: %02d, secondary burst: %02d, swath: %d'%(ii+1, jj+1, swath)) ################################################################ #1. removing window and subband - for ms in ['master', 'slave']: + for ms in ['reference', 'secondary']: #setup something - if ms == 'master': + if ms == 'reference': burst = masBurst #put the temporary file in the lower directory - tmpFilename = os.path.join(lowerDir, 'master_dw_'+os.path.basename(burst.image.filename)) - tmpFilename2 = 'master_'+os.path.basename(burst.image.filename) + tmpFilename = os.path.join(lowerDir, 'reference_dw_'+os.path.basename(burst.image.filename)) + tmpFilename2 = 'reference_'+os.path.basename(burst.image.filename) else: burst = slvBurst #put the temporary file in the lower directory - tmpFilename = os.path.join(lowerDir, 'slave_dw_'+os.path.basename(burst.image.filename)) - tmpFilename2 = 'slave_'+os.path.basename(burst.image.filename) + tmpFilename = os.path.join(lowerDir, 'secondary_dw_'+os.path.basename(burst.image.filename)) + tmpFilename2 = 'secondary_'+os.path.basename(burst.image.filename) #removing window rangeSamplingRate = SPEED_OF_LIGHT / (2.0 * burst.rangePixelSize) @@ -493,7 +493,7 @@ def subband(self, ionParam): try: offset = relShifts[jj] except: - raise Exception('Trying to access shift for slave burst index {0}, which may not overlap with master for swath {1}'.format(jj, swath)) + raise Exception('Trying to access shift for secondary burst index {0}, which may not overlap with reference for swath {1}'.format(jj, swath)) ####Setup initial polynomials ### If no misregs are given, these are zero @@ -505,7 +505,7 @@ def subband(self, ionParam): ###For future - should account for azimuth and range misreg here .. ignoring for now. - azCarrPoly, dpoly = slave.estimateAzimuthCarrierPolynomials(slvBurst, offset = -1.0 * offset) + azCarrPoly, dpoly = secondary.estimateAzimuthCarrierPolynomials(slvBurst, offset = -1.0 * offset) rdict['carrPoly'] = azCarrPoly rdict['doppPoly'] = dpoly @@ -518,28 +518,28 @@ def subband(self, ionParam): if lu == 'lower': masBurst2.radarWavelength = ionParam.radarWavelengthLower masBurst2.rangeProcessingBandwidth = ionParam.rgBandwidthSub - masBurst2.image.filename = os.path.join(lowerDir, 'master_'+os.path.basename(masBurst.image.filename)) + masBurst2.image.filename = os.path.join(lowerDir, 'reference_'+os.path.basename(masBurst.image.filename)) slvBurst2.radarWavelength = ionParam.radarWavelengthLower slvBurst2.rangeProcessingBandwidth = ionParam.rgBandwidthSub - slvBurst2.image.filename = os.path.join(lowerDir, 'slave_'+os.path.basename(slvBurst.image.filename)) + slvBurst2.image.filename = os.path.join(lowerDir, 'secondary_'+os.path.basename(slvBurst.image.filename)) slvBurstResamp2.radarWavelength = ionParam.radarWavelengthLower slvBurstResamp2.rangeProcessingBandwidth = ionParam.rgBandwidthSub - slvBurstResamp2.image.filename = os.path.join(lowerDir, 'master_'+os.path.basename(masBurst.image.filename)) - outname = os.path.join(lowerDir, 'slave_resamp_'+os.path.basename(slvBurst.image.filename)) + slvBurstResamp2.image.filename = os.path.join(lowerDir, 'reference_'+os.path.basename(masBurst.image.filename)) + outname = os.path.join(lowerDir, 'secondary_resamp_'+os.path.basename(slvBurst.image.filename)) ifgdir = lowerDir else: masBurst2.radarWavelength = ionParam.radarWavelengthUpper masBurst2.rangeProcessingBandwidth = ionParam.rgBandwidthSub - masBurst2.image.filename = os.path.join(upperDir, 'master_'+os.path.basename(masBurst.image.filename)) + masBurst2.image.filename = os.path.join(upperDir, 'reference_'+os.path.basename(masBurst.image.filename)) slvBurst2.radarWavelength = ionParam.radarWavelengthUpper slvBurst2.rangeProcessingBandwidth = ionParam.rgBandwidthSub - slvBurst2.image.filename = os.path.join(upperDir, 'slave_'+os.path.basename(slvBurst.image.filename)) + slvBurst2.image.filename = os.path.join(upperDir, 'secondary_'+os.path.basename(slvBurst.image.filename)) slvBurstResamp2.radarWavelength = ionParam.radarWavelengthUpper slvBurstResamp2.rangeProcessingBandwidth = ionParam.rgBandwidthSub - slvBurstResamp2.image.filename = os.path.join(upperDir, 'master_'+os.path.basename(masBurst.image.filename)) - outname = os.path.join(upperDir, 'slave_resamp_'+os.path.basename(slvBurst.image.filename)) + slvBurstResamp2.image.filename = os.path.join(upperDir, 'reference_'+os.path.basename(masBurst.image.filename)) + outname = os.path.join(upperDir, 'secondary_resamp_'+os.path.basename(slvBurst.image.filename)) ifgdir = upperDir - outimg = resampSlave(masBurst2, slvBurst2, rdict, outname) + outimg = resampSecondary(masBurst2, slvBurst2, rdict, outname) minAz, maxAz, minRg, maxRg = getValidLines(slvBurst2, rdict, outname, misreg_az = misreg_az - offset, misreg_rng = misreg_rg) adjustValidSampleLine(slvBurstResamp2, slvBurst2, @@ -548,8 +548,8 @@ def subband(self, ionParam): slvBurstResamp2.image.filename = outimg.filename #forming interferogram - mastername = masBurst2.image.filename - slavename = slvBurstResamp2.image.filename + referencename = masBurst2.image.filename + secondaryname = slvBurstResamp2.image.filename rngname = os.path.join(offdir, 'range_%02d.off'%(ii+1)) infname = os.path.join(ifgdir, 'burst_%02d.int'%(ii+1)) @@ -558,7 +558,7 @@ def subband(self, ionParam): #in original runBurstIfg.py, valid samples in the interferogram are the following (indexes in the numpy matrix): - #masterFrame.firstValidLine:masterFrame.firstValidLine + masterFrame.numValidLines, masterFrame.firstValidSample:masterFrame.firstValidSample + masterFrame.numValidSamples + #referenceFrame.firstValidLine:referenceFrame.firstValidLine + referenceFrame.numValidLines, referenceFrame.firstValidSample:referenceFrame.firstValidSample + referenceFrame.numValidSamples #after the following processing, valid samples in the interferogram are the following (indexes in the numpy matrix): #[masBurst.firstValidLine:masBurst.firstValidLine + masBurst.numValidLines, masBurst.firstValidSample:masBurst.firstValidSample + masBurst.numValidSamples] #SO THEY ARE EXACTLY THE SAME @@ -567,7 +567,7 @@ def subband(self, ionParam): firstcolumn = masBurst2.firstValidSample + 1 lastcolumn = firstcolumn + masBurst2.numValidSamples - 1 overlapBox = [firstline, lastline, firstcolumn, lastcolumn] - multiply2(mastername, slavename, fact, rngname=rngname, ionname=None, infname=infname, overlapBox=overlapBox, valid=False, virtual=virtual) + multiply2(referencename, secondaryname, fact, rngname=rngname, ionname=None, infname=infname, overlapBox=overlapBox, valid=False, virtual=virtual) #directly from multiply() of runBurstIfg.py img = isceobj.createIntImage() @@ -587,7 +587,7 @@ def subband(self, ionParam): else: fineIfgUpper.bursts.append(masBurst2) - #remove master and slave subband slcs + #remove reference and secondary subband slcs os.remove(masBurst2_filename) os.remove(masBurst2_filename+'.xml') os.remove(masBurst2_filename+'.vrt') @@ -608,7 +608,7 @@ def cal_coherence(inf, win=5, edge=0): ''' compute coherence uisng only interferogram (phase). This routine still follows the regular equation for computing coherence, - but assumes the amplitudes of master and slave are one, so that coherence + but assumes the amplitudes of reference and secondary are one, so that coherence can be computed using phase only. inf: interferogram @@ -683,7 +683,7 @@ def getMergeBox(self, xmlDirname, numberRangeLooks=1, numberAzimuthLooks=1): #get bursts frames=[] for swath in swathList: - minBurst, maxBurst = self._insar.commonMasterBurstLimits(swath-1) + minBurst, maxBurst = self._insar.commonReferenceBurstLimits(swath-1) if minBurst==maxBurst: #print('Skipping processing of swath {0}'.format(swath)) continue @@ -723,7 +723,7 @@ def merge(self, ionParam): burstList = [] swathList = self._insar.getValidSwathList(self.swaths) for swath in swathList: - minBurst, maxBurst = self._insar.commonMasterBurstLimits(swath-1) + minBurst, maxBurst = self._insar.commonReferenceBurstLimits(swath-1) if minBurst==maxBurst: continue ifg = self._insar.loadProduct( os.path.join(xmlDirname, 'IW{0}.xml'.format(swath))) @@ -1395,7 +1395,7 @@ def ionSwathBySwath(self, ionParam): numValidSwaths = 0 swathList = self._insar.getValidSwathList(self.swaths) for swath in swathList: - minBurst, maxBurst = self._insar.commonMasterBurstLimits(swath-1) + minBurst, maxBurst = self._insar.commonReferenceBurstLimits(swath-1) if minBurst==maxBurst: #print('Skipping processing of swath {0}'.format(swath)) continue @@ -1415,7 +1415,7 @@ def ionSwathBySwath(self, ionParam): ii = -1 for i in range(nswath): swath = swathList[i] - minBurst, maxBurst = self._insar.commonMasterBurstLimits(swath-1) + minBurst, maxBurst = self._insar.commonReferenceBurstLimits(swath-1) if minBurst==maxBurst: print('Skipping processing of swath {0}'.format(swath)) continue @@ -1715,13 +1715,13 @@ def grd2ion(self, ionParam): amp = (np.fromfile(ionfile, dtype=np.float32).reshape(length*2, width))[0:length*2:2, :] ionos = (np.fromfile(ionfile, dtype=np.float32).reshape(length*2, width))[1:length*2:2, :] - #use the satellite height of the mid burst of first swath of master acquistion + #use the satellite height of the mid burst of first swath of reference acquistion swathList = self._insar.getValidSwathList(self.swaths) - master = self._insar.loadProduct( os.path.join(self._insar.masterSlcProduct, 'IW{0}.xml'.format(swathList[0]))) - minBurst, maxBurst = self._insar.commonMasterBurstLimits(swathList[0]-1) + reference = self._insar.loadProduct( os.path.join(self._insar.referenceSlcProduct, 'IW{0}.xml'.format(swathList[0]))) + minBurst, maxBurst = self._insar.commonReferenceBurstLimits(swathList[0]-1) #no problem with this index at all midBurst = np.int(np.around((minBurst+ maxBurst-1) / 2.0)) - masBurst = master.bursts[midBurst] + masBurst = reference.bursts[midBurst] #satellite height satHeight = np.linalg.norm(masBurst.orbit.interpolateOrbit(masBurst.sensingMid, method='hermite').getPosition()) #orgininal doppler offset should be multiplied by this ratio @@ -1735,7 +1735,7 @@ def grd2ion(self, ionParam): frames=[] #for valid swaths and bursts, consistent with runMergeBursts.py for swath in swathList: - minBurst, maxBurst = self._insar.commonMasterBurstLimits(swath-1) + minBurst, maxBurst = self._insar.commonReferenceBurstLimits(swath-1) if minBurst==maxBurst: print('Skipping processing of swath {0}'.format(swath)) @@ -1750,7 +1750,7 @@ def grd2ion(self, ionParam): for i in range(nswath): nburst = len(frames[i].bursts) for j in range(nburst): - #according to runBurstIfg.py, this is originally from self._insar.masterSlcProduct, 'IW{0}.xml' + #according to runBurstIfg.py, this is originally from self._insar.referenceSlcProduct, 'IW{0}.xml' masBurst = frames[i].bursts[j] (dopplerOffset, Ka) = computeDopplerOffset(masBurst, burstValidBox2[i][j][0], burstValidBox2[i][j][1], burstValidBox2[i][j][2], burstValidBox2[i][j][3], nrlks=ionParam.numberRangeLooks, nalks=ionParam.numberAzimuthLooks) offset = ratio * dopplerOffset @@ -2082,13 +2082,13 @@ def ionosphere_shift(self, ionParam): #STEP 4. CONVERT TO AZIMUTH SHIFT #################################################################### - #use the satellite height of the mid burst of first swath of master acquistion + #use the satellite height of the mid burst of first swath of reference acquistion swathList = self._insar.getValidSwathList(self.swaths) - master = self._insar.loadProduct( os.path.join(self._insar.masterSlcProduct, 'IW{0}.xml'.format(swathList[0]))) - minBurst, maxBurst = self._insar.commonMasterBurstLimits(swathList[0]-1) + reference = self._insar.loadProduct( os.path.join(self._insar.referenceSlcProduct, 'IW{0}.xml'.format(swathList[0]))) + minBurst, maxBurst = self._insar.commonReferenceBurstLimits(swathList[0]-1) #no problem with this index at all midBurst = np.int(np.around((minBurst+ maxBurst-1) / 2.0)) - masBurst = master.bursts[midBurst] + masBurst = reference.bursts[midBurst] #shift casued by ionosphere [unit: masBurst.azimuthTimeInterval] rng = masBurst.rangePixelSize * ((np.arange(width))*ionParam.numberRangeLooks + (ionParam.numberRangeLooks - 1.0) / 2.0) + masBurst.startingRange @@ -2149,13 +2149,13 @@ def ion2grd(self, ionParam): f2 = interp1d(indexRange2, dion[i, :], kind='cubic', fill_value="extrapolate") dionOneRangeLook[i, :] = f2(indexRange) - #use the satellite height of the mid burst of first swath of master acquistion + #use the satellite height of the mid burst of first swath of reference acquistion swathList = self._insar.getValidSwathList(self.swaths) - master = self._insar.loadProduct( os.path.join(self._insar.masterSlcProduct, 'IW{0}.xml'.format(swathList[0]))) - minBurst, maxBurst = self._insar.commonMasterBurstLimits(swathList[0]-1) + reference = self._insar.loadProduct( os.path.join(self._insar.referenceSlcProduct, 'IW{0}.xml'.format(swathList[0]))) + minBurst, maxBurst = self._insar.commonReferenceBurstLimits(swathList[0]-1) #no problem with this index at all midBurst = np.int(np.around((minBurst+ maxBurst-1) / 2.0)) - masBurst = master.bursts[midBurst] + masBurst = reference.bursts[midBurst] #satellite height satHeight = np.linalg.norm(masBurst.orbit.interpolateOrbit(masBurst.sensingMid, method='hermite').getPosition()) #orgininal doppler offset should be multiplied by this ratio @@ -2171,7 +2171,7 @@ def ion2grd(self, ionParam): minBurst2 =[] #for valid swaths and bursts, consistent with runMergeBursts.py for swath in swathList: - minBurst, maxBurst = self._insar.commonMasterBurstLimits(swath-1) + minBurst, maxBurst = self._insar.commonReferenceBurstLimits(swath-1) if minBurst==maxBurst: print('Skipping processing of swath {0}'.format(swath)) @@ -2192,7 +2192,7 @@ def ion2grd(self, ionParam): os.makedirs(outdir, exist_ok=True) for j in range(nburst): - #according to runBurstIfg.py, this is originally from self._insar.masterSlcProduct, 'IW{0}.xml' + #according to runBurstIfg.py, this is originally from self._insar.referenceSlcProduct, 'IW{0}.xml' masBurst = frames[i].bursts[j] (dopplerOffset, Ka) = computeDopplerOffset(masBurst, 1, masBurst.numberOfLines, 1, masBurst.numberOfSamples, nrlks=1, nalks=1) offset = ratio * dopplerOffset @@ -2351,24 +2351,24 @@ def esd(self, ionParam): swathList = self._insar.getValidSwathList(self.swaths) for swath in swathList: - minBurst, maxBurst = self._insar.commonMasterBurstLimits(swath-1) + minBurst, maxBurst = self._insar.commonReferenceBurstLimits(swath-1) nBurst = maxBurst - minBurst if nBurst <= 1: continue ####Load relevant products - master = self._insar.loadProduct( os.path.join(self._insar.masterSlcProduct, 'IW{0}.xml'.format(swath))) - slave = self._insar.loadProduct( os.path.join(self._insar.fineCoregDirname, 'IW{0}.xml'.format(swath))) + reference = self._insar.loadProduct( os.path.join(self._insar.referenceSlcProduct, 'IW{0}.xml'.format(swath))) + secondary = self._insar.loadProduct( os.path.join(self._insar.fineCoregDirname, 'IW{0}.xml'.format(swath))) #get overlap area for ii in range(minBurst, maxBurst): jj = ii - minBurst ####Process the top bursts - masBurst = master.bursts[ii] - slvBurst = slave.bursts[jj] + masBurst = reference.bursts[ii] + slvBurst = secondary.bursts[jj] adjustValidLineSample(masBurst,slvBurst) - overlapBox = get_overlap_box(master, minBurst, maxBurst) + overlapBox = get_overlap_box(reference, minBurst, maxBurst) #using esd to calculate mis-registration misreg = np.array([]) @@ -2376,32 +2376,32 @@ def esd(self, ionParam): for ii in range(minBurst+1, maxBurst): jj = ii - minBurst ####Process the top bursts - masBurstTop = master.bursts[ii-1] - slvBurstTop = slave.bursts[jj-1] + masBurstTop = reference.bursts[ii-1] + slvBurstTop = secondary.bursts[jj-1] - masBurstCur = master.bursts[ii] - slvBurstCur = slave.bursts[jj] + masBurstCur = reference.bursts[ii] + slvBurstCur = secondary.bursts[jj] #get info - mastername = masBurstTop.image.filename - slavename = slvBurstTop.image.filename + referencename = masBurstTop.image.filename + secondaryname = slvBurstTop.image.filename ionname = os.path.join(ionParam.ionDirname, ionParam.ionBurstDirname, 'IW{0}'.format(swath), '%s_%02d.ion'%('burst',ii+1-1)) rngname = os.path.join(self._insar.fineOffsetsDirname, 'IW{0}'.format(swath), 'range_%02d.off'%(ii+1-1)) fact = 4.0 * np.pi * slvBurstTop.rangePixelSize / slvBurstTop.radarWavelength - #infTop = multiply2(mastername, slavename, ionname, rngname, fact, overlapBox[jj][0:4], virtual=virtual) - infTop = multiply2(mastername, slavename, fact, rngname=rngname, ionname=ionname, infname=None, overlapBox=overlapBox[jj][0:4], valid=True, virtual=virtual) + #infTop = multiply2(referencename, secondaryname, ionname, rngname, fact, overlapBox[jj][0:4], virtual=virtual) + infTop = multiply2(referencename, secondaryname, fact, rngname=rngname, ionname=ionname, infname=None, overlapBox=overlapBox[jj][0:4], valid=True, virtual=virtual) (dopTop, Ka) = computeDopplerOffset(masBurstTop, overlapBox[jj][0], overlapBox[jj][1], overlapBox[jj][2], overlapBox[jj][3], nrlks=nrlks, nalks=nalks) #rng = multilookIndex(overlapBox[jj][2]-1, overlapBox[jj][3]-1, nrlks) * masBurstTop.rangePixelSize + masBurstTop.startingRange #Ka = masBurstTop.azimuthFMRate(rng) frqTop = dopTop * Ka[None,:] * (masBurstTop.azimuthTimeInterval * nalks) - mastername = masBurstCur.image.filename - slavename = slvBurstCur.image.filename + referencename = masBurstCur.image.filename + secondaryname = slvBurstCur.image.filename ionname = os.path.join(ionParam.ionDirname, ionParam.ionBurstDirname, 'IW{0}'.format(swath), '%s_%02d.ion'%('burst',ii+1)) rngname = os.path.join(self._insar.fineOffsetsDirname, 'IW{0}'.format(swath), 'range_%02d.off'%(ii+1)) fact = 4.0 * np.pi * slvBurstCur.rangePixelSize / slvBurstCur.radarWavelength - #infCur = multiply2(mastername, slavename, ionname, rngname, fact, overlapBox[jj][4:8], virtual=virtual) - infCur = multiply2(mastername, slavename, fact, rngname=rngname, ionname=ionname, infname=None, overlapBox=overlapBox[jj][4:8], valid=True, virtual=virtual) + #infCur = multiply2(referencename, secondaryname, ionname, rngname, fact, overlapBox[jj][4:8], virtual=virtual) + infCur = multiply2(referencename, secondaryname, fact, rngname=rngname, ionname=ionname, infname=None, overlapBox=overlapBox[jj][4:8], valid=True, virtual=virtual) (dopCur, Ka) = computeDopplerOffset(masBurstCur, overlapBox[jj][4], overlapBox[jj][5], overlapBox[jj][6], overlapBox[jj][7], nrlks=nrlks, nalks=nalks) #rng = multilookIndex(overlapBox[jj][6]-1, overlapBox[jj][7]-1, nrlks) * masBurstCur.rangePixelSize + masBurstCur.startingRange #Ka = masBurstCur.azimuthFMRate(rng) @@ -2415,7 +2415,7 @@ def esd(self, ionParam): totalSamples += infTop.size if index[0].size: - #misregistration in sec. it should be OK to only use master frequency to compute ESD + #misregistration in sec. it should be OK to only use reference frequency to compute ESD misreg0 = np.angle(infDif[index]) / (2.0 * np.pi * (frqTop[index]-frqCur[index])) misreg=np.append(misreg, misreg0.flatten()) print("misregistration at burst %02d and burst %02d of swath %d: %10.5f azimuth lines"%(ii+1-1, ii+1, swath, np.mean(misreg0, dtype=np.float64)/masBurstCur.azimuthTimeInterval)) @@ -2431,14 +2431,14 @@ def esd(self, ionParam): continue else: misreg = np.mean(misreg, dtype=np.float64) - print("misregistration from ESD: {} sec, {} azimuth lines\n".format(misreg, misreg/master.bursts[minBurst].azimuthTimeInterval)) + print("misregistration from ESD: {} sec, {} azimuth lines\n".format(misreg, misreg/reference.bursts[minBurst].azimuthTimeInterval)) #use mis-registration estimated from esd to compute phase error for ii in range(minBurst, maxBurst): jj = ii - minBurst ####Process the top bursts - masBurst = master.bursts[ii] - slvBurst = slave.bursts[jj] + masBurst = reference.bursts[ii] + slvBurst = secondary.bursts[jj] ionname = os.path.join(ionParam.ionDirname, ionParam.ionBurstDirname, 'IW{0}'.format(swath), '%s_%02d.ion'%('burst',ii+1)) ion = np.fromfile(ionname, dtype=np.float32).reshape(masBurst.numberOfLines, masBurst.numberOfSamples) @@ -2472,24 +2472,24 @@ def esd_noion(self, ionParam): swathList = self._insar.getValidSwathList(self.swaths) for swath in swathList: - minBurst, maxBurst = self._insar.commonMasterBurstLimits(swath-1) + minBurst, maxBurst = self._insar.commonReferenceBurstLimits(swath-1) nBurst = maxBurst - minBurst if nBurst <= 1: continue ####Load relevant products - master = self._insar.loadProduct( os.path.join(self._insar.masterSlcProduct, 'IW{0}.xml'.format(swath))) - slave = self._insar.loadProduct( os.path.join(self._insar.fineCoregDirname, 'IW{0}.xml'.format(swath))) + reference = self._insar.loadProduct( os.path.join(self._insar.referenceSlcProduct, 'IW{0}.xml'.format(swath))) + secondary = self._insar.loadProduct( os.path.join(self._insar.fineCoregDirname, 'IW{0}.xml'.format(swath))) #get overlap area for ii in range(minBurst, maxBurst): jj = ii - minBurst ####Process the top bursts - masBurst = master.bursts[ii] - slvBurst = slave.bursts[jj] + masBurst = reference.bursts[ii] + slvBurst = secondary.bursts[jj] adjustValidLineSample(masBurst,slvBurst) - overlapBox = get_overlap_box(master, minBurst, maxBurst) + overlapBox = get_overlap_box(reference, minBurst, maxBurst) #using esd to calculate mis-registration misreg = np.array([]) @@ -2497,32 +2497,32 @@ def esd_noion(self, ionParam): for ii in range(minBurst+1, maxBurst): jj = ii - minBurst ####Process the top bursts - masBurstTop = master.bursts[ii-1] - slvBurstTop = slave.bursts[jj-1] + masBurstTop = reference.bursts[ii-1] + slvBurstTop = secondary.bursts[jj-1] - masBurstCur = master.bursts[ii] - slvBurstCur = slave.bursts[jj] + masBurstCur = reference.bursts[ii] + slvBurstCur = secondary.bursts[jj] #get info - mastername = masBurstTop.image.filename - slavename = slvBurstTop.image.filename + referencename = masBurstTop.image.filename + secondaryname = slvBurstTop.image.filename ionname = os.path.join(ionParam.ionDirname, ionParam.ionBurstDirname, 'IW{0}'.format(swath), '%s_%02d.ion'%('burst',ii+1-1)) rngname = os.path.join(self._insar.fineOffsetsDirname, 'IW{0}'.format(swath), 'range_%02d.off'%(ii+1-1)) fact = 4.0 * np.pi * slvBurstTop.rangePixelSize / slvBurstTop.radarWavelength - #infTop = multiply2(mastername, slavename, ionname, rngname, fact, overlapBox[jj][0:4], virtual=virtual) - infTop = multiply2(mastername, slavename, fact, rngname=rngname, ionname=None, infname=None, overlapBox=overlapBox[jj][0:4], valid=True, virtual=virtual) + #infTop = multiply2(referencename, secondaryname, ionname, rngname, fact, overlapBox[jj][0:4], virtual=virtual) + infTop = multiply2(referencename, secondaryname, fact, rngname=rngname, ionname=None, infname=None, overlapBox=overlapBox[jj][0:4], valid=True, virtual=virtual) (dopTop, Ka) = computeDopplerOffset(masBurstTop, overlapBox[jj][0], overlapBox[jj][1], overlapBox[jj][2], overlapBox[jj][3], nrlks=nrlks, nalks=nalks) #rng = multilookIndex(overlapBox[jj][2]-1, overlapBox[jj][3]-1, nrlks) * masBurstTop.rangePixelSize + masBurstTop.startingRange #Ka = masBurstTop.azimuthFMRate(rng) frqTop = dopTop * Ka[None,:] * (masBurstTop.azimuthTimeInterval * nalks) - mastername = masBurstCur.image.filename - slavename = slvBurstCur.image.filename + referencename = masBurstCur.image.filename + secondaryname = slvBurstCur.image.filename ionname = os.path.join(ionParam.ionDirname, ionParam.ionBurstDirname, 'IW{0}'.format(swath), '%s_%02d.ion'%('burst',ii+1)) rngname = os.path.join(self._insar.fineOffsetsDirname, 'IW{0}'.format(swath), 'range_%02d.off'%(ii+1)) fact = 4.0 * np.pi * slvBurstCur.rangePixelSize / slvBurstCur.radarWavelength - #infCur = multiply2(mastername, slavename, ionname, rngname, fact, overlapBox[jj][4:8], virtual=virtual) - infCur = multiply2(mastername, slavename, fact, rngname=rngname, ionname=None, infname=None, overlapBox=overlapBox[jj][4:8], valid=True, virtual=virtual) + #infCur = multiply2(referencename, secondaryname, ionname, rngname, fact, overlapBox[jj][4:8], virtual=virtual) + infCur = multiply2(referencename, secondaryname, fact, rngname=rngname, ionname=None, infname=None, overlapBox=overlapBox[jj][4:8], valid=True, virtual=virtual) (dopCur, Ka) = computeDopplerOffset(masBurstCur, overlapBox[jj][4], overlapBox[jj][5], overlapBox[jj][6], overlapBox[jj][7], nrlks=nrlks, nalks=nalks) #rng = multilookIndex(overlapBox[jj][6]-1, overlapBox[jj][7]-1, nrlks) * masBurstCur.rangePixelSize + masBurstCur.startingRange #Ka = masBurstCur.azimuthFMRate(rng) @@ -2536,7 +2536,7 @@ def esd_noion(self, ionParam): totalSamples += infTop.size if index[0].size: - #misregistration in sec. it should be OK to only use master frequency to compute ESD + #misregistration in sec. it should be OK to only use reference frequency to compute ESD misreg0 = np.angle(infDif[index]) / (2.0 * np.pi * (frqTop[index]-frqCur[index])) misreg=np.append(misreg, misreg0.flatten()) print("misregistration at burst %02d and burst %02d of swath %d: %10.5f azimuth lines"%(ii+1-1, ii+1, swath, np.mean(misreg0, dtype=np.float64)/masBurstCur.azimuthTimeInterval)) @@ -2552,7 +2552,7 @@ def esd_noion(self, ionParam): continue else: misreg = np.mean(misreg, dtype=np.float64) - print("misregistration from ESD: {} sec, {} azimuth lines\n".format(misreg, misreg/master.bursts[minBurst].azimuthTimeInterval)) + print("misregistration from ESD: {} sec, {} azimuth lines\n".format(misreg, misreg/reference.bursts[minBurst].azimuthTimeInterval)) sdir = os.path.join(ionParam.ionDirname, esddir, 'IW{0}'.format(swath)) @@ -2562,8 +2562,8 @@ def esd_noion(self, ionParam): for ii in range(minBurst, maxBurst): jj = ii - minBurst ####Process the top bursts - masBurst = master.bursts[ii] - slvBurst = slave.bursts[jj] + masBurst = reference.bursts[ii] + slvBurst = secondary.bursts[jj] #ionname = os.path.join(ionParam.ionDirname, ionParam.ionBurstDirname, 'IW{0}'.format(swath), '%s_%02d.ion'%('burst',ii+1)) #ion = np.fromfile(ionname, dtype=np.float32).reshape(masBurst.numberOfLines, masBurst.numberOfSamples) diff --git a/components/isceobj/TopsProc/runMergeBursts.py b/components/isceobj/TopsProc/runMergeBursts.py index 213b9ef..8e30543 100755 --- a/components/isceobj/TopsProc/runMergeBursts.py +++ b/components/isceobj/TopsProc/runMergeBursts.py @@ -506,14 +506,14 @@ def mergeBursts(frame, fileList, outfile, scheme = img.scheme npType = IML.NUMPY_type(img.dataType) - azMasterOff = [] + azReferenceOff = [] for index in range(frame.numberOfBursts): burst = frame.bursts[index] soff = burst.sensingStart + datetime.timedelta(seconds = (burst.firstValidLine*dt)) start = int(np.round((soff - tstart).total_seconds() / dt)) end = start + burst.numValidLines - azMasterOff.append([start,end]) + azReferenceOff.append([start,end]) print('Burst: ', index, [start,end]) @@ -525,14 +525,14 @@ def mergeBursts(frame, fileList, outfile, for index in range(frame.numberOfBursts): curBurst = frame.bursts[index] - curLimit = azMasterOff[index] + curLimit = azReferenceOff[index] curMap = IML.mmapFromISCE(fileList[index], logging) #####If middle burst if index > 0: topBurst = frame.bursts[index-1] - topLimit = azMasterOff[index-1] + topLimit = azReferenceOff[index-1] topMap = IML.mmapFromISCE(fileList[index-1], logging) olap = topLimit[1] - curLimit[0] @@ -568,7 +568,7 @@ def mergeBursts(frame, fileList, outfile, if index != (frame.numberOfBursts-1): botBurst = frame.bursts[index+1] - botLimit = azMasterOff[index+1] + botLimit = azReferenceOff[index+1] olap = curLimit[1] - botLimit[0] @@ -686,7 +686,7 @@ def runMergeBursts(self, adjust=1): burstIndex = [] swathList = self._insar.getValidSwathList(self.swaths) for swath in swathList: - minBurst, maxBurst = self._insar.commonMasterBurstLimits(swath-1) + minBurst, maxBurst = self._insar.commonReferenceBurstLimits(swath-1) if minBurst==maxBurst: print('Skipping processing of swath {0}'.format(swath)) continue @@ -730,9 +730,9 @@ def runMergeBursts(self, adjust=1): mergeBursts2(frames, os.path.join(self._insar.geometryDirname, 'IW%d', 'lat_%02d.rdr'), burstIndex, box, os.path.join(mergedir, 'lat.rdr'+suffix), virtual=virtual, validOnly=validOnly) mergeBursts2(frames, os.path.join(self._insar.geometryDirname, 'IW%d', 'lon_%02d.rdr'), burstIndex, box, os.path.join(mergedir, 'lon.rdr'+suffix), virtual=virtual, validOnly=validOnly) mergeBursts2(frames, os.path.join(self._insar.geometryDirname, 'IW%d', 'hgt_%02d.rdr'), burstIndex, box, os.path.join(mergedir, 'z.rdr'+suffix), virtual=virtual, validOnly=validOnly) - #merge master and coregistered slave slcs - mergeBursts2(frames, os.path.join(self._insar.masterSlcProduct, 'IW%d', 'burst_%02d.slc'), burstIndex, box, os.path.join(mergedir, 'master.slc'+suffix), virtual=virtual, validOnly=True) - mergeBursts2(frames, os.path.join(self._insar.fineCoregDirname, 'IW%d', 'burst_%02d.slc'), burstIndex, box, os.path.join(mergedir, 'slave.slc'+suffix), virtual=virtual, validOnly=True) + #merge reference and coregistered secondary slcs + mergeBursts2(frames, os.path.join(self._insar.referenceSlcProduct, 'IW%d', 'burst_%02d.slc'), burstIndex, box, os.path.join(mergedir, 'reference.slc'+suffix), virtual=virtual, validOnly=True) + mergeBursts2(frames, os.path.join(self._insar.fineCoregDirname, 'IW%d', 'burst_%02d.slc'), burstIndex, box, os.path.join(mergedir, 'secondary.slc'+suffix), virtual=virtual, validOnly=True) #merge insar products if self.doInSAR: mergeBursts2(frames, os.path.join(self._insar.fineIfgDirname, 'IW%d', 'burst_%02d.int'), burstIndex, box, os.path.join(mergedir, self._insar.mergedIfgname+suffix), virtual=virtual, validOnly=True) @@ -761,20 +761,20 @@ def runMergeBursts(self, adjust=1): alks = self.numberAzimuthLooks, rlks=self.numberRangeLooks) else: #compute coherence - cmd = "gdal_translate -of ENVI {} {}".format(os.path.join(mergedir, 'master.slc'+suffix+'.vrt'), os.path.join(mergedir, 'master.slc'+suffix)) + cmd = "gdal_translate -of ENVI {} {}".format(os.path.join(mergedir, 'reference.slc'+suffix+'.vrt'), os.path.join(mergedir, 'reference.slc'+suffix)) runCmd(cmd) - cmd = "gdal_translate -of ENVI {} {}".format(os.path.join(mergedir, 'slave.slc'+suffix+'.vrt'), os.path.join(mergedir, 'slave.slc'+suffix)) + cmd = "gdal_translate -of ENVI {} {}".format(os.path.join(mergedir, 'secondary.slc'+suffix+'.vrt'), os.path.join(mergedir, 'secondary.slc'+suffix)) runCmd(cmd) pwrfile = 'pwr.bil' - cmd = "imageMath.py -e='real(a)*real(a)+imag(a)*imag(a);real(b)*real(b)+imag(b)*imag(b)' --a={} --b={} -o {} -t float -s BIL".format(os.path.join(mergedir, 'master.slc'+suffix), os.path.join(mergedir, 'slave.slc'+suffix), os.path.join(mergedir, pwrfile+suffix)) + cmd = "imageMath.py -e='real(a)*real(a)+imag(a)*imag(a);real(b)*real(b)+imag(b)*imag(b)' --a={} --b={} -o {} -t float -s BIL".format(os.path.join(mergedir, 'reference.slc'+suffix), os.path.join(mergedir, 'secondary.slc'+suffix), os.path.join(mergedir, pwrfile+suffix)) runCmd(cmd) cmd = "looks.py -i {} -o {} -r {} -a {}".format(os.path.join(mergedir, pwrfile+suffix), os.path.join(mergedir, pwrfile), self.numberRangeLooks, self.numberAzimuthLooks) runCmd(cmd) cmd = "imageMath.py -e='((abs(a))!=0)*((b_0*b_1)!=0)*sqrt(b_0*b_1);((abs(a))!=0)*((b_0*b_1)!=0)*abs(a)/(sqrt(b_0*b_1)+((b_0*b_1)==0))' --a={} --b={} -o {} -t float -s BIL".format(os.path.join(mergedir, self._insar.mergedIfgname), os.path.join(mergedir, pwrfile), os.path.join(mergedir, self._insar.correlationFilename)) runCmd(cmd) #remove intermediate files - os.remove(os.path.join(mergedir, 'master.slc'+suffix)) - os.remove(os.path.join(mergedir, 'slave.slc'+suffix)) + os.remove(os.path.join(mergedir, 'reference.slc'+suffix)) + os.remove(os.path.join(mergedir, 'secondary.slc'+suffix)) os.remove(os.path.join(mergedir, pwrfile+suffix)) os.remove(os.path.join(mergedir, pwrfile+suffix+'.xml')) os.remove(os.path.join(mergedir, pwrfile+suffix+'.vrt')) diff --git a/components/isceobj/TopsProc/runMergeSLCs.py b/components/isceobj/TopsProc/runMergeSLCs.py index 235165c..bf9103c 100644 --- a/components/isceobj/TopsProc/runMergeSLCs.py +++ b/components/isceobj/TopsProc/runMergeSLCs.py @@ -17,15 +17,15 @@ def runMergeSLCs(self): full SLC to use in denseOffsets ''' - print('\nMerging master and slave SLC bursts...') + print('\nMerging reference and secondary SLC bursts...') - master = self._insar.loadProduct(self._insar.masterSlcProduct + '.xml') + reference = self._insar.loadProduct(self._insar.referenceSlcProduct + '.xml') coreg = self._insar.loadProduct(self._insar.fineCoregDirname + '.xml') - _, minBurst, maxBurst = master.getCommonBurstLimits(coreg) + _, minBurst, maxBurst = reference.getCommonBurstLimits(coreg) print('\nMerging bursts %02d through %02d.' % (minBurst,maxBurst)) - mSlcList = [os.path.join(self._insar.masterSlcProduct, 'burst_%02d.slc'%(x+1)) for x in range(minBurst, maxBurst)] + mSlcList = [os.path.join(self._insar.referenceSlcProduct, 'burst_%02d.slc'%(x+1)) for x in range(minBurst, maxBurst)] sSlcList = [os.path.join(self._insar.fineCoregDirname, 'burst_%02d.slc'%(x+1)) for x in range(minBurst, maxBurst)] mergedir = self._insar.mergedDirname os.makedirs(mergedir, exist_ok=True) @@ -34,10 +34,10 @@ def runMergeSLCs(self): if (self.numberRangeLooks == 1) and (self.numberAzimuthLooks==1): suffix='' - print('Merging master bursts to: %s' % ('master.slc'+suffix)) - mergeBursts(coreg, mSlcList, os.path.join(mergedir, 'master.slc'+suffix)) - print('Merging slave bursts to: %s' % ('slave.slc'+suffix)) - mergeBursts(coreg, sSlcList, os.path.join(mergedir, 'slave.slc'+suffix)) + print('Merging reference bursts to: %s' % ('reference.slc'+suffix)) + mergeBursts(coreg, mSlcList, os.path.join(mergedir, 'reference.slc'+suffix)) + print('Merging secondary bursts to: %s' % ('secondary.slc'+suffix)) + mergeBursts(coreg, sSlcList, os.path.join(mergedir, 'secondary.slc'+suffix)) if __name__ == '__main__' : ''' diff --git a/components/isceobj/TopsProc/runOverlapIfg.py b/components/isceobj/TopsProc/runOverlapIfg.py index 4ca420a..f78d794 100755 --- a/components/isceobj/TopsProc/runOverlapIfg.py +++ b/components/isceobj/TopsProc/runOverlapIfg.py @@ -46,7 +46,7 @@ def loadVirtualArray(fname): ds = None return data -def multiply(masname, slvname, outname, rngname, fact, masterFrame, +def multiply(masname, slvname, outname, rngname, fact, referenceFrame, flatten=True, alks=3, rlks=7, virtual=True): @@ -58,11 +58,11 @@ def multiply(masname, slvname, outname, rngname, fact, masterFrame, if not virtual: - master = np.memmap(masname, dtype=np.complex64, mode='r', shape=(length,width)) - slave = np.memmap(slvname, dtype=np.complex64, mode='r', shape=(length, width)) + reference = np.memmap(masname, dtype=np.complex64, mode='r', shape=(length,width)) + secondary = np.memmap(slvname, dtype=np.complex64, mode='r', shape=(length, width)) else: - master = loadVirtualArray(masname + '.vrt') - slave = loadVirtualArray(slvname + '.vrt') + reference = loadVirtualArray(masname + '.vrt') + secondary = loadVirtualArray(slvname + '.vrt') if os.path.exists(rngname): rng2 = np.memmap(rngname, dtype=np.float32, mode='r', shape=(length,width)) @@ -74,19 +74,19 @@ def multiply(masname, slvname, outname, rngname, fact, masterFrame, #Zero out anytging outside the valid region: ifg = np.memmap(outname, dtype=np.complex64, mode='w+', shape=(length,width)) - firstS = masterFrame.firstValidSample - lastS = masterFrame.firstValidSample + masterFrame.numValidSamples -1 - firstL = masterFrame.firstValidLine - lastL = masterFrame.firstValidLine + masterFrame.numValidLines - 1 + firstS = referenceFrame.firstValidSample + lastS = referenceFrame.firstValidSample + referenceFrame.numValidSamples -1 + firstL = referenceFrame.firstValidLine + lastL = referenceFrame.firstValidLine + referenceFrame.numValidLines - 1 for kk in range(firstL,lastL + 1): - ifg[kk,firstS:lastS + 1] = master[kk,firstS:lastS + 1] * np.conj(slave[kk,firstS:lastS + 1]) + ifg[kk,firstS:lastS + 1] = reference[kk,firstS:lastS + 1] * np.conj(secondary[kk,firstS:lastS + 1]) if flatten: phs = np.exp(cJ*fact*rng2[kk,firstS:lastS + 1]) ifg[kk,firstS:lastS + 1] *= phs #### - master=None - slave=None + reference=None + secondary=None ifg = None objInt = isceobj.createIntImage() @@ -122,7 +122,7 @@ def runOverlapIfg(self): print('Skipping overlap ifg for swath IW{0}'.format(swath)) continue - minBurst = self._insar.commonBurstStartMasterIndex[swath-1] + minBurst = self._insar.commonBurstStartReferenceIndex[swath-1] maxBurst = minBurst + self._insar.numberOfCommonBursts[swath-1] nBurst = maxBurst - minBurst @@ -130,13 +130,13 @@ def runOverlapIfg(self): ifgdir = os.path.join( self._insar.coarseIfgDirname, self._insar.overlapsSubDirname, 'IW{0}'.format(swath)) os.makedirs(ifgdir, exist_ok=True) - ####All indexing is w.r.t stack master for overlaps + ####All indexing is w.r.t stack reference for overlaps maxBurst = maxBurst - 1 ####Load relevant products - topMaster = self._insar.loadProduct(os.path.join(self._insar.masterSlcOverlapProduct, 'top_IW{0}.xml'.format(swath))) - botMaster = self._insar.loadProduct(os.path.join(self._insar.masterSlcOverlapProduct, 'bottom_IW{0}.xml'.format(swath))) + topReference = self._insar.loadProduct(os.path.join(self._insar.referenceSlcOverlapProduct, 'top_IW{0}.xml'.format(swath))) + botReference = self._insar.loadProduct(os.path.join(self._insar.referenceSlcOverlapProduct, 'bottom_IW{0}.xml'.format(swath))) topCoreg = self._insar.loadProduct( os.path.join(self._insar.coregOverlapProduct,'top_IW{0}.xml'.format(swath))) botCoreg = self._insar.loadProduct( os.path.join(self._insar.coregOverlapProduct, 'bottom_IW{0}.xml'.format(swath))) @@ -154,48 +154,48 @@ def runOverlapIfg(self): jj = ii - minBurst ####Process the top bursts - master = topMaster.bursts[jj] - slave = topCoreg.bursts[jj] + reference = topReference.bursts[jj] + secondary = topCoreg.bursts[jj] - mastername = master.image.filename - slavename = slave.image.filename + referencename = reference.image.filename + secondaryname = secondary.image.filename rdict = {'rangeOff' : os.path.join(coregdir, 'range_top_%02d_%02d.off'%(ii+1,ii+2)), 'azimuthOff': os.path.join(coregdir, 'azimuth_top_%02d_%02d.off'%(ii+1,ii+2))} - adjustValidLineSample(master,slave) + adjustValidLineSample(reference,secondary) intname = os.path.join(ifgdir, '%s_top_%02d_%02d.int'%('burst',ii+1,ii+2)) - fact = 4 * np.pi * slave.rangePixelSize / slave.radarWavelength - intimage = multiply(mastername, slavename, intname, - rdict['rangeOff'], fact, master, flatten=True, + fact = 4 * np.pi * secondary.rangePixelSize / secondary.radarWavelength + intimage = multiply(referencename, secondaryname, intname, + rdict['rangeOff'], fact, reference, flatten=True, alks = self.numberAzimuthLooks, rlks=self.numberRangeLooks) - burst = master.clone() + burst = reference.clone() burst.image = intimage topIfg.bursts.append(burst) ####Process the bottom bursts - master = botMaster.bursts[jj] - slave = botCoreg.bursts[jj] + reference = botReference.bursts[jj] + secondary = botCoreg.bursts[jj] - mastername = master.image.filename - slavename = slave.image.filename + referencename = reference.image.filename + secondaryname = secondary.image.filename rdict = {'rangeOff' : os.path.join(coregdir, 'range_bot_%02d_%02d.off'%(ii+1,ii+2)), 'azimuthOff': os.path.join(coregdir, 'azimuth_bot_%02d_%02d.off'%(ii+1,ii+2))} - adjustValidLineSample(master,slave) + adjustValidLineSample(reference,secondary) intname = os.path.join(ifgdir, '%s_bot_%02d_%02d.int'%('burst',ii+1,ii+2)) - fact = 4 * np.pi * slave.rangePixelSize / slave.radarWavelength - intimage = multiply(mastername, slavename, intname, - rdict['rangeOff'], fact, master, flatten=True, + fact = 4 * np.pi * secondary.rangePixelSize / secondary.radarWavelength + intimage = multiply(referencename, secondaryname, intname, + rdict['rangeOff'], fact, reference, flatten=True, alks = self.numberAzimuthLooks, rlks=self.numberRangeLooks, virtual=virtual) - burst = master.clone() + burst = reference.clone() burst.image = intimage botIfg.bursts.append(burst) diff --git a/components/isceobj/TopsProc/runPrepESD.py b/components/isceobj/TopsProc/runPrepESD.py index c6e224c..63682a5 100755 --- a/components/isceobj/TopsProc/runPrepESD.py +++ b/components/isceobj/TopsProc/runPrepESD.py @@ -51,51 +51,51 @@ def multilook_old(intName, alks=5, rlks=15): -def overlapSpectralSeparation(topBurstIfg, botBurstIfg, masterTop, masterBot, slaveTop, slaveBot, azTop, rgTop, azBot, rgBot, misreg=0.0): +def overlapSpectralSeparation(topBurstIfg, botBurstIfg, referenceTop, referenceBot, secondaryTop, secondaryBot, azTop, rgTop, azBot, rgBot, misreg=0.0): ''' Estimate separation in frequency due to unit pixel misregistration. ''' dt = topBurstIfg.azimuthTimeInterval - topStart = int(np.round((topBurstIfg.sensingStart - masterTop.sensingStart).total_seconds() / dt)) + topStart = int(np.round((topBurstIfg.sensingStart - referenceTop.sensingStart).total_seconds() / dt)) overlapLen = topBurstIfg.numberOfLines - botStart = int(np.round((botBurstIfg.sensingStart - masterBot.sensingStart).total_seconds() / dt)) + botStart = int(np.round((botBurstIfg.sensingStart - referenceBot.sensingStart).total_seconds() / dt)) ############## - # master top : m1 + # reference top : m1 azi = np.arange(topStart, topStart+overlapLen)[:,None] * np.ones((overlapLen, topBurstIfg.numberOfSamples)) rng = np.ones((overlapLen, topBurstIfg.numberOfSamples)) * np.arange(topBurstIfg.numberOfSamples)[None,:] - Vs = np.linalg.norm(masterTop.orbit.interpolateOrbit(masterTop.sensingMid, method='hermite').getVelocity()) - Ks = 2 * Vs * masterTop.azimuthSteeringRate / masterTop.radarWavelength - rng = masterTop.startingRange + masterTop.rangePixelSize * rng - Ka = masterTop.azimuthFMRate(rng) + Vs = np.linalg.norm(referenceTop.orbit.interpolateOrbit(referenceTop.sensingMid, method='hermite').getVelocity()) + Ks = 2 * Vs * referenceTop.azimuthSteeringRate / referenceTop.radarWavelength + rng = referenceTop.startingRange + referenceTop.rangePixelSize * rng + Ka = referenceTop.azimuthFMRate(rng) Ktm1 = Ks / (1.0 - Ks / Ka) - tm1 = (azi - (masterTop.numberOfLines//2)) * masterTop.azimuthTimeInterval + tm1 = (azi - (referenceTop.numberOfLines//2)) * referenceTop.azimuthTimeInterval - fm1 = masterTop.doppler(rng) + fm1 = referenceTop.doppler(rng) ############## - # master bottom : m2 + # reference bottom : m2 azi = np.arange(botStart, botStart + overlapLen)[:,None] * np.ones((overlapLen, botBurstIfg.numberOfSamples)) rng = np.ones((overlapLen, botBurstIfg.numberOfSamples)) * np.arange(botBurstIfg.numberOfSamples)[None,:] - Vs = np.linalg.norm(masterBot.orbit.interpolateOrbit(masterBot.sensingMid, method='hermite').getVelocity()) - Ks = 2 * Vs * masterBot.azimuthSteeringRate / masterBot.radarWavelength - rng = masterBot.startingRange + masterBot.rangePixelSize * rng - Ka = masterBot.azimuthFMRate(rng) + Vs = np.linalg.norm(referenceBot.orbit.interpolateOrbit(referenceBot.sensingMid, method='hermite').getVelocity()) + Ks = 2 * Vs * referenceBot.azimuthSteeringRate / referenceBot.radarWavelength + rng = referenceBot.startingRange + referenceBot.rangePixelSize * rng + Ka = referenceBot.azimuthFMRate(rng) Ktm2 = Ks / (1.0 - Ks / Ka) - tm2 = (azi - (masterBot.numberOfLines//2)) * masterBot.azimuthTimeInterval - fm2 = masterBot.doppler(rng) + tm2 = (azi - (referenceBot.numberOfLines//2)) * referenceBot.azimuthTimeInterval + fm2 = referenceBot.doppler(rng) ############## - # slave top : s1 + # secondary top : s1 y = np.arange(topStart, topStart+overlapLen)[:,None] * np.ones((overlapLen, topBurstIfg.numberOfSamples)) x = np.ones((overlapLen, topBurstIfg.numberOfSamples)) * np.arange(topBurstIfg.numberOfSamples)[None,:] @@ -113,23 +113,23 @@ def overlapSpectralSeparation(topBurstIfg, botBurstIfg, masterTop, masterBot, sl # print('Rng top: ', rng[0,0], azi[-1,-1]) # print('XX top: ', xx[0,0], xx[-1,-1]) - Vs = np.linalg.norm(slaveTop.orbit.interpolateOrbit(slaveTop.sensingMid, method='hermite').getVelocity()) - Ks = 2 * Vs * slaveTop.azimuthSteeringRate / slaveTop.radarWavelength - rng = slaveTop.startingRange + slaveTop.rangePixelSize * rng - Ka = slaveTop.azimuthFMRate(rng) + Vs = np.linalg.norm(secondaryTop.orbit.interpolateOrbit(secondaryTop.sensingMid, method='hermite').getVelocity()) + Ks = 2 * Vs * secondaryTop.azimuthSteeringRate / secondaryTop.radarWavelength + rng = secondaryTop.startingRange + secondaryTop.rangePixelSize * rng + Ka = secondaryTop.azimuthFMRate(rng) Kts1 = Ks / (1.0 - Ks / Ka) - ts1 = (azi - (slaveTop.numberOfLines//2)) * slaveTop.azimuthTimeInterval - fs1 = slaveTop.doppler(rng) + ts1 = (azi - (secondaryTop.numberOfLines//2)) * secondaryTop.azimuthTimeInterval + fs1 = secondaryTop.doppler(rng) ############## - # slave bot : s2 + # secondary bot : s2 y = np.arange(botStart, botStart + overlapLen)[:,None] * np.ones((overlapLen, botBurstIfg.numberOfSamples)) x = np.ones((overlapLen, botBurstIfg.numberOfSamples)) * np.arange(botBurstIfg.numberOfSamples)[None,:] - ####Bottom slave + ####Bottom secondary yy = np.memmap( azBot, dtype=np.float32, mode='r', shape=(botBurstIfg.numberOfLines, botBurstIfg.numberOfSamples)) xx = np.memmap( rgBot, dtype=np.float32, mode='r', @@ -143,14 +143,14 @@ def overlapSpectralSeparation(topBurstIfg, botBurstIfg, masterTop, masterBot, sl # print('Rng bot: ', rng[0,0], azi[-1,-1]) # print('XX bot: ', xx[0,0], xx[-1,-1]) - Vs = np.linalg.norm(slaveBot.orbit.interpolateOrbit(slaveBot.sensingMid, method='hermite').getVelocity()) - Ks = 2 * Vs * slaveBot.azimuthSteeringRate / slaveBot.radarWavelength - rng = slaveBot.startingRange + slaveBot.rangePixelSize * rng - Ka = slaveBot.azimuthFMRate(rng) + Vs = np.linalg.norm(secondaryBot.orbit.interpolateOrbit(secondaryBot.sensingMid, method='hermite').getVelocity()) + Ks = 2 * Vs * secondaryBot.azimuthSteeringRate / secondaryBot.radarWavelength + rng = secondaryBot.startingRange + secondaryBot.rangePixelSize * rng + Ka = secondaryBot.azimuthFMRate(rng) Kts2 = Ks / (1.0 - Ks / Ka) - ts2 = (azi - (slaveBot.numberOfLines//2)) * slaveBot.azimuthTimeInterval - fs2 = slaveBot.doppler(rng) + ts2 = (azi - (secondaryBot.numberOfLines//2)) * secondaryBot.azimuthTimeInterval + fs2 = secondaryBot.doppler(rng) ############## frequencySeparation = -Ktm2*tm2 + Ktm1*tm1 + Kts1*ts1 - Kts2*ts2 + fm2 - fm1 + fs1 -fs2 @@ -223,16 +223,16 @@ def runPrepESD(self): print('Skipping prepesd for swath IW{0}'.format(swath)) continue - minBurst, maxBurst = self._insar.commonMasterBurstLimits(swath-1) - slaveBurstStart, slaveBurstEnd = self._insar.commonSlaveBurstLimits(swath-1) + minBurst, maxBurst = self._insar.commonReferenceBurstLimits(swath-1) + secondaryBurstStart, secondaryBurstEnd = self._insar.commonSecondaryBurstLimits(swath-1) ####Load full products - master = self._insar.loadProduct( os.path.join(self._insar.masterSlcProduct, 'IW{0}.xml'.format(swath))) - slave = self._insar.loadProduct( os.path.join(self._insar.slaveSlcProduct, 'IW{0}.xml'.format(swath))) + reference = self._insar.loadProduct( os.path.join(self._insar.referenceSlcProduct, 'IW{0}.xml'.format(swath))) + secondary = self._insar.loadProduct( os.path.join(self._insar.secondarySlcProduct, 'IW{0}.xml'.format(swath))) ####Estimate relative shifts - relShifts = getRelativeShifts(master, slave, minBurst, maxBurst, slaveBurstStart) + relShifts = getRelativeShifts(reference, secondary, minBurst, maxBurst, secondaryBurstStart) maxBurst = maxBurst - 1 ###For overlaps ####Load metadata for burst IFGs @@ -257,7 +257,7 @@ def runPrepESD(self): for ii in range(minBurst, maxBurst): ind = ii - minBurst ###Index into overlaps - sind = slaveBurstStart + ind ###Index into slave + sind = secondaryBurstStart + ind ###Index into secondary topShift = relShifts[sind] botShift = relShifts[sind+1] @@ -303,10 +303,10 @@ def runPrepESD(self): azBot = os.path.join(offdir, 'azimuth_bot_%02d_%02d.off'%(ii+1,ii+2)) rgBot = os.path.join(offdir, 'range_bot_%02d_%02d.off'%(ii+1,ii+2)) - mFullTop = master.bursts[ii] - mFullBot = master.bursts[ii+1] - sFullTop = slave.bursts[sind] - sFullBot = slave.bursts[sind+1] + mFullTop = reference.bursts[ii] + mFullBot = reference.bursts[ii+1] + sFullTop = secondary.bursts[sind] + sFullBot = secondary.bursts[sind+1] freqdiff = overlapSpectralSeparation(topBurstIfg, botBurstIfg, mFullTop, mFullBot, sFullTop, sFullBot, azTop, rgTop, azBot, rgBot) diff --git a/components/isceobj/TopsProc/runPreprocessor.py b/components/isceobj/TopsProc/runPreprocessor.py index b60684b..43f3b36 100644 --- a/components/isceobj/TopsProc/runPreprocessor.py +++ b/components/isceobj/TopsProc/runPreprocessor.py @@ -20,23 +20,23 @@ def runPreprocessor(self): ###First set maximum number of swaths possible for a sensor. - self._insar.numberOfSwaths = self.master.maxSwaths + self._insar.numberOfSwaths = self.reference.maxSwaths swathList = self._insar.getInputSwathList(self.swaths) catalog.addItem('Input list of swaths to process: ', swathList, 'common') - self.master.configure() - self.slave.configure() + self.reference.configure() + self.secondary.configure() for swath in swathList: - ###Process master frame-by-frame - frame = copy.deepcopy(self.master) + ###Process reference frame-by-frame + frame = copy.deepcopy(self.reference) frame.swathNumber = swath frame.output = os.path.join(frame.output, 'IW{0}'.format(swath)) frame.regionOfInterest = self.regionOfInterest try: - master = extract_slc(frame, virtual=virtual) + reference = extract_slc(frame, virtual=virtual) success=True except Exception as err: print('Could not extract swath {0} from {1}'.format(swath, frame.safe)) @@ -44,20 +44,20 @@ def runPreprocessor(self): success=False if success: - catalog.addInputsFrom(frame.product, 'master.sensor') - catalog.addItem('burstWidth_{0}'.format(swath), frame.product.bursts[0].numberOfSamples, 'master') - catalog.addItem('burstLength_{0}'.format(swath), frame.product.bursts[0].numberOfLines, 'master') - catalog.addItem('numberOfBursts_{0}'.format(swath), len(frame.product.bursts), 'master') + catalog.addInputsFrom(frame.product, 'reference.sensor') + catalog.addItem('burstWidth_{0}'.format(swath), frame.product.bursts[0].numberOfSamples, 'reference') + catalog.addItem('burstLength_{0}'.format(swath), frame.product.bursts[0].numberOfLines, 'reference') + catalog.addItem('numberOfBursts_{0}'.format(swath), len(frame.product.bursts), 'reference') - ###Process slave frame-by-frame - frame = copy.deepcopy(self.slave) + ###Process secondary frame-by-frame + frame = copy.deepcopy(self.secondary) frame.swathNumber = swath frame.output = os.path.join(frame.output, 'IW{0}'.format(swath)) frame.regionOfInterest = self.regionOfInterest try: - slave = extract_slc(frame, virtual=virtual) + secondary = extract_slc(frame, virtual=virtual) success=True except Exception as err: print('Could not extract swath {0} from {1}'.format(swath, frame.safe)) @@ -65,14 +65,14 @@ def runPreprocessor(self): success = False if success: - catalog.addInputsFrom(frame.product, 'slave.sensor') - catalog.addItem('burstWidth_{0}'.format(swath), frame.product.bursts[0].numberOfSamples, 'slave') - catalog.addItem('burstLength_{0}'.format(swath), frame.product.bursts[0].numberOfLines, 'slave') - catalog.addItem('numberOfBursts_{0}'.format(swath), len(frame.product.bursts), 'slave') + catalog.addInputsFrom(frame.product, 'secondary.sensor') + catalog.addItem('burstWidth_{0}'.format(swath), frame.product.bursts[0].numberOfSamples, 'secondary') + catalog.addItem('burstLength_{0}'.format(swath), frame.product.bursts[0].numberOfLines, 'secondary') + catalog.addItem('numberOfBursts_{0}'.format(swath), len(frame.product.bursts), 'secondary') - self._insar.masterSlcProduct = self.master.output - self._insar.slaveSlcProduct = self.slave.output + self._insar.referenceSlcProduct = self.reference.output + self._insar.secondarySlcProduct = self.secondary.output catalog.printToLog(logger, "runPreprocessor") self._insar.procDoc.addAllFromCatalog(catalog) diff --git a/components/isceobj/TopsProc/runRangeCoreg.py b/components/isceobj/TopsProc/runRangeCoreg.py index f83d675..1b62736 100755 --- a/components/isceobj/TopsProc/runRangeCoreg.py +++ b/components/isceobj/TopsProc/runRangeCoreg.py @@ -13,7 +13,7 @@ from isceobj.Location.Offset import OffsetField, Offset logger = logging.getLogger('isce.topsinsar.rangecoreg') -def runAmpcor(master, slave): +def runAmpcor(reference, secondary): ''' Run one ampcor process. ''' @@ -21,12 +21,12 @@ def runAmpcor(master, slave): from mroipac.ampcor.Ampcor import Ampcor mImg = isceobj.createSlcImage() - mImg.load(master + '.xml') + mImg.load(reference + '.xml') mImg.setAccessMode('READ') mImg.createImage() sImg = isceobj.createSlcImage() - sImg.load(slave + '.xml') + sImg.load(secondary + '.xml') sImg.setAccessMode('READ') sImg.createImage() @@ -123,17 +123,17 @@ def runRangeCoreg(self, debugPlot=True): print('Skipping range coreg for swath IW{0}'.format(swath)) continue - minBurst, maxBurst = self._insar.commonMasterBurstLimits(swath-1) + minBurst, maxBurst = self._insar.commonReferenceBurstLimits(swath-1) maxBurst = maxBurst - 1 ###For overlaps - masterTop = self._insar.loadProduct( os.path.join(self._insar.masterSlcOverlapProduct, 'top_IW{0}.xml'.format(swath))) - masterBottom = self._insar.loadProduct( os.path.join(self._insar.masterSlcOverlapProduct , 'bottom_IW{0}.xml'.format(swath))) + referenceTop = self._insar.loadProduct( os.path.join(self._insar.referenceSlcOverlapProduct, 'top_IW{0}.xml'.format(swath))) + referenceBottom = self._insar.loadProduct( os.path.join(self._insar.referenceSlcOverlapProduct , 'bottom_IW{0}.xml'.format(swath))) - slaveTop = self._insar.loadProduct( os.path.join(self._insar.coregOverlapProduct , 'top_IW{0}.xml'.format(swath))) - slaveBottom = self._insar.loadProduct( os.path.join(self._insar.coregOverlapProduct, 'bottom_IW{0}.xml'.format(swath))) + secondaryTop = self._insar.loadProduct( os.path.join(self._insar.coregOverlapProduct , 'top_IW{0}.xml'.format(swath))) + secondaryBottom = self._insar.loadProduct( os.path.join(self._insar.coregOverlapProduct, 'bottom_IW{0}.xml'.format(swath))) - for pair in [(masterTop,slaveTop), (masterBottom,slaveBottom)]: + for pair in [(referenceTop,secondaryTop), (referenceBottom,secondaryBottom)]: for ii in range(minBurst,maxBurst): mFile = pair[0].bursts[ii-minBurst].image.filename sFile = pair[1].bursts[ii-minBurst].image.filename @@ -188,4 +188,4 @@ def runRangeCoreg(self, debugPlot=True): catalog.printToLog(logger, "runRangeCoreg") self._insar.procDoc.addAllFromCatalog(catalog) - self._insar.slaveRangeCorrection = meanval * masterTop.bursts[0].rangePixelSize + self._insar.secondaryRangeCorrection = meanval * referenceTop.bursts[0].rangePixelSize diff --git a/components/isceobj/TopsProc/runSubsetOverlaps.py b/components/isceobj/TopsProc/runSubsetOverlaps.py index 2354606..49f88ce 100644 --- a/components/isceobj/TopsProc/runSubsetOverlaps.py +++ b/components/isceobj/TopsProc/runSubsetOverlaps.py @@ -96,17 +96,17 @@ def runSubsetOverlaps(self): print('Skipping subset overlap for swath IW{0}'.format(swath)) continue - ####Load master metadata - mFrame = self._insar.loadProduct( os.path.join(self._insar.masterSlcProduct, 'IW{0}.xml'.format(swath))) + ####Load reference metadata + mFrame = self._insar.loadProduct( os.path.join(self._insar.referenceSlcProduct, 'IW{0}.xml'.format(swath))) ####Output directory for overlap geometry images geomdir = os.path.join(self._insar.geometryDirname, 'IW{0}'.format(swath)) outdir = os.path.join(self._insar.geometryDirname, self._insar.overlapsSubDirname, 'IW{0}'.format(swath)) - submasterdir = os.path.join(self._insar.masterSlcProduct, self._insar.overlapsSubDirname, 'IW{0}'.format(swath)) + subreferencedir = os.path.join(self._insar.referenceSlcProduct, self._insar.overlapsSubDirname, 'IW{0}'.format(swath)) os.makedirs(outdir, exist_ok=True) - os.makedirs(submasterdir, exist_ok=True) + os.makedirs(subreferencedir, exist_ok=True) ###Azimuth time interval dt = mFrame.bursts[0].azimuthTimeInterval @@ -118,7 +118,7 @@ def runSubsetOverlaps(self): numCommon = self._insar.numberOfCommonBursts[swath-1] - startIndex = self._insar.commonBurstStartMasterIndex[swath-1] + startIndex = self._insar.commonBurstStartReferenceIndex[swath-1] ###For each overlap @@ -163,13 +163,13 @@ def runSubsetOverlaps(self): masname2 = botBurst.image.filename - master_outname1 = os.path.join(submasterdir , 'burst_top_%02d_%02d.slc'%(ind+1,ind+2)) - master_outname2 = os.path.join(submasterdir , 'burst_bot_%02d_%02d.slc'%(ind+1,ind+2)) + reference_outname1 = os.path.join(subreferencedir , 'burst_top_%02d_%02d.slc'%(ind+1,ind+2)) + reference_outname2 = os.path.join(subreferencedir , 'burst_bot_%02d_%02d.slc'%(ind+1,ind+2)) - subset(masname1, master_outname1, topslicey, topslicex, virtual=virtual) - subset(masname2, master_outname2, botslicey, botslicex, virtual=virtual) + subset(masname1, reference_outname1, topslicey, topslicex, virtual=virtual) + subset(masname2, reference_outname2, botslicey, botslicex, virtual=virtual) ####TOP frame @@ -182,7 +182,7 @@ def runSubsetOverlaps(self): burst.sensingStop = topBurst.sensingStart + datetime.timedelta(0,(topStart+overlapLen-1)*dt) # (topStart+overlapLen-1)*dt ###Replace file name in image - burst.image.filename = master_outname1 + burst.image.filename = reference_outname1 burst.image._accessor = None burst.image.setLength(overlapLen) burst.image.setWidth(width) @@ -202,7 +202,7 @@ def runSubsetOverlaps(self): burst.sensingStop = botBurst.sensingStart + datetime.timedelta(seconds=(botBurst.firstValidLine+overlapLen-1)*dt) ###Replace file name in image - burst.image.filename = master_outname2 + burst.image.filename = reference_outname2 burst.image.setLength(overlapLen) burst.image.setWidth(width) @@ -217,8 +217,8 @@ def runSubsetOverlaps(self): topFrame.numberOfBursts = len(topFrame.bursts) bottomFrame.numberOfBursts = len(bottomFrame.bursts) - self._insar.saveProduct(topFrame, os.path.join(self._insar.masterSlcOverlapProduct, 'top_IW{0}.xml'.format(swath))) - self._insar.saveProduct(bottomFrame, os.path.join(self._insar.masterSlcOverlapProduct, 'bottom_IW{0}.xml'.format(swath))) + self._insar.saveProduct(topFrame, os.path.join(self._insar.referenceSlcOverlapProduct, 'top_IW{0}.xml'.format(swath))) + self._insar.saveProduct(bottomFrame, os.path.join(self._insar.referenceSlcOverlapProduct, 'bottom_IW{0}.xml'.format(swath))) catalog.printToLog(logger, "runSubsetOverlaps") self._insar.procDoc.addAllFromCatalog(catalog) diff --git a/components/isceobj/TopsProc/runTopo.py b/components/isceobj/TopsProc/runTopo.py index 46c710a..be1bdb5 100644 --- a/components/isceobj/TopsProc/runTopo.py +++ b/components/isceobj/TopsProc/runTopo.py @@ -37,12 +37,12 @@ def runTopoCPU(self): boxes = [] for swath in swathList: - #####Load the master product - master = self._insar.loadProduct( os.path.join(self._insar.masterSlcProduct, 'IW{0}.xml'.format(swath))) + #####Load the reference product + reference = self._insar.loadProduct( os.path.join(self._insar.referenceSlcProduct, 'IW{0}.xml'.format(swath))) numCommon = self._insar.numberOfCommonBursts[swath-1] - startIndex = self._insar.commonBurstStartMasterIndex[swath-1] + startIndex = self._insar.commonBurstStartReferenceIndex[swath-1] if numCommon > 0: catalog.addItem('Number of common bursts IW-{0}'.format(swath), self._insar.numberOfCommonBursts[swath-1], 'topo') @@ -54,7 +54,7 @@ def runTopoCPU(self): ###For each burst for index in range(numCommon): ind = index + startIndex - burst = master.bursts[ind] + burst = reference.bursts[ind] latname = os.path.join(dirname, 'lat_%02d.rdr'%(ind+1)) lonname = os.path.join(dirname, 'lon_%02d.rdr'%(ind+1)) @@ -136,20 +136,20 @@ def runTopoGPU(self): swathStarts = [] for swath in swathList: - #####Load the master product - master = self._insar.loadProduct( os.path.join(self._insar.masterSlcProduct, 'IW{0}.xml'.format(swath))) + #####Load the reference product + reference = self._insar.loadProduct( os.path.join(self._insar.referenceSlcProduct, 'IW{0}.xml'.format(swath))) numCommon = self._insar.numberOfCommonBursts[swath-1] - startIndex = self._insar.commonBurstStartMasterIndex[swath-1] + startIndex = self._insar.commonBurstStartReferenceIndex[swath-1] if numCommon > 0: catalog.addItem('Number of common bursts IW-{0}'.format(swath), self._insar.numberOfCommonBursts[swath-1], 'topo') - master.bursts = master.bursts[startIndex:startIndex+numCommon] - master.numberOfBursts = numCommon + reference.bursts = reference.bursts[startIndex:startIndex+numCommon] + reference.numberOfBursts = numCommon - frames.append(master) + frames.append(reference) swaths.append(swath) swathStarts.append(startIndex) diff --git a/components/isceobj/TopsProc/runVerifyDEM.py b/components/isceobj/TopsProc/runVerifyDEM.py index ffb57c3..0de27e7 100644 --- a/components/isceobj/TopsProc/runVerifyDEM.py +++ b/components/isceobj/TopsProc/runVerifyDEM.py @@ -54,16 +54,16 @@ def runVerifyDEM(self): bboxes = [] for swath in swathList: if self._insar.numberOfCommonBursts[swath-1] > 0: - master = self._insar.loadProduct( os.path.join(self._insar.masterSlcProduct, 'IW{0}.xml'.format(swath))) + reference = self._insar.loadProduct( os.path.join(self._insar.referenceSlcProduct, 'IW{0}.xml'.format(swath))) - slave = self._insar.loadProduct( os.path.join(self._insar.slaveSlcProduct, 'IW{0}.xml'.format(swath))) + secondary = self._insar.loadProduct( os.path.join(self._insar.secondarySlcProduct, 'IW{0}.xml'.format(swath))) ####Merges orbit as needed for multi-stitched frames - mOrb = self._insar.getMergedOrbit([master]) - sOrb = self._insar.getMergedOrbit([slave]) + mOrb = self._insar.getMergedOrbit([reference]) + sOrb = self._insar.getMergedOrbit([secondary]) - mbox = master.getBbox() - sbox = slave.getBbox() + mbox = reference.getBbox() + sbox = secondary.getBbox() ####Union of bounding boxes bbox = [min(mbox[0], sbox[0]), max(mbox[1], sbox[1]), diff --git a/components/isceobj/TopsProc/run_downsample_unwrapper.py b/components/isceobj/TopsProc/run_downsample_unwrapper.py index d22dd11..a0f2704 100644 --- a/components/isceobj/TopsProc/run_downsample_unwrapper.py +++ b/components/isceobj/TopsProc/run_downsample_unwrapper.py @@ -30,4 +30,4 @@ def runUnwrap(self,costMode = None,initMethod = None, defomax = None, initOnly = self._insar.unwrappedIntFilename = du._unw_name self._insar.coherenceFilename = du._cor_name self.numberRangeLooks = int(du._range_looks) - self.numberAzimuthLooks = int(du._azimuth_looks) \ No newline at end of file + self.numberAzimuthLooks = int(du._azimuth_looks) diff --git a/components/isceobj/Unwrap/snaphu.py b/components/isceobj/Unwrap/snaphu.py index cbb51b4..a67acf3 100755 --- a/components/isceobj/Unwrap/snaphu.py +++ b/components/isceobj/Unwrap/snaphu.py @@ -43,7 +43,7 @@ class snaphu(Component): self.wrapName = basename self.unwrapName = basename.replace('.flat', '.unw') - self.wavelength = obj.insar.masterFrame.getInstrument().getRadarWavelength() + self.wavelength = obj.insar.referenceFrame.getInstrument().getRadarWavelength() self.width = obj.insar.resampIntImage.width self.costMode = 'DEFO' self.initMethod = 'MST' @@ -53,10 +53,10 @@ class snaphu(Component): self.rangeLooks = obj.insar.topo.numberRangeLooks self.azimuthLooks = obj.insar.topo.numberAzimuthLooks - azres = obj.insar.masterFrame.platform.antennaLength/2.0 + azres = obj.insar.referenceFrame.platform.antennaLength/2.0 azfact = azres / obj.insar.topo.azimuthSpacing - rBW = obj.insar.masterFrame.instrument.pulseLength * obj.insar.masterFrame.instrument.chirpSlope + rBW = obj.insar.referenceFrame.instrument.pulseLength * obj.insar.referenceFrame.instrument.chirpSlope rgres = abs(SPEED_OF_LIGHT / (2.0 * rBW)) rngfact = rgres/obj.insar.topo.slantRangePixelSpacing diff --git a/components/isceobj/Unwrap/snaphu_mcf.py b/components/isceobj/Unwrap/snaphu_mcf.py index f6cd5fd..c1d924f 100755 --- a/components/isceobj/Unwrap/snaphu_mcf.py +++ b/components/isceobj/Unwrap/snaphu_mcf.py @@ -43,7 +43,7 @@ class snaphu_mcf(Component): self.wrapName = basename self.unwrapName = basename.replace('.flat', '.unw') - self.wavelength = obj.insar.masterFrame.getInstrument().getRadarWavelength() + self.wavelength = obj.insar.referenceFrame.getInstrument().getRadarWavelength() self.width = obj.insar.resampIntImage.width self.costMode = 'SMOOTH' self.initMethod = 'MCF' @@ -53,10 +53,10 @@ class snaphu_mcf(Component): self.rangeLooks = obj.insar.topo.numberRangeLooks self.azimuthLooks = obj.insar.topo.numberAzimuthLooks - azres = obj.insar.masterFrame.platform.antennaLength/2.0 + azres = obj.insar.referenceFrame.platform.antennaLength/2.0 azfact = azres / obj.insar.topo.azimuthSpacing - rBW = obj.insar.masterFrame.instrument.pulseLength * obj.insar.masterFrame.instrument.chirpSlope + rBW = obj.insar.referenceFrame.instrument.pulseLength * obj.insar.referenceFrame.instrument.chirpSlope rgres = abs(SPEED_OF_LIGHT / (2.0 * rBW)) rngfact = rgres/obj.insar.topo.slantRangePixelSpacing diff --git a/components/isceobj/Util/Library/python/PolyFactory.py b/components/isceobj/Util/Library/python/PolyFactory.py index 525302b..d7255d6 100755 --- a/components/isceobj/Util/Library/python/PolyFactory.py +++ b/components/isceobj/Util/Library/python/PolyFactory.py @@ -12,4 +12,4 @@ def createPoly(polyType = '2d',family=None,name=None): pol = Poly1D(family,name) return pol if __name__ == '__main__': - sys.exit(main()) \ No newline at end of file + sys.exit(main()) diff --git a/components/isceobj/Util/decorators.py b/components/isceobj/Util/decorators.py index a99da3c..31a5c9f 100755 --- a/components/isceobj/Util/decorators.py +++ b/components/isceobj/Util/decorators.py @@ -294,4 +294,4 @@ def use_api(func): return ret return use_api_decorator - \ No newline at end of file + diff --git a/components/isceobj/Util/denseoffsets/DenseOffsets.py b/components/isceobj/Util/denseoffsets/DenseOffsets.py index 0482b35..4d2d5bc 100755 --- a/components/isceobj/Util/denseoffsets/DenseOffsets.py +++ b/components/isceobj/Util/denseoffsets/DenseOffsets.py @@ -272,13 +272,13 @@ class DenseOffsets(Component): if image1 is not None: self.image1 = image1 if (self.image1 == None): - raise ValueError("Error. master image not set.") + raise ValueError("Error. reference image not set.") if image2 is not None: self.image2 = image2 if (self.image2 == None): - raise ValueError("Error. slave image not set.") + raise ValueError("Error. secondary image not set.") if band1 is not None: self.band1 = int(band1) @@ -542,11 +542,11 @@ class DenseOffsets(Component): self.debugFlag = str(var) return - def setMasterImage(self,im): + def setReferenceImage(self,im): self.image1 = im return - def setSlaveImage(self,im): + def setSecondaryImage(self,im): self.image2 = im return @@ -648,15 +648,15 @@ if __name__ == "__main__": def runDenseOffset(insar): from isceobj.Catalog import recordInputs - masterFrame = insar.getMasterFrame() - slaveFrame = insar.getSlaveFrame() - masterOrbit = insar.getMasterOrbit() - slaveOrbit = insar.getSlaveOrbit() - prf1 = masterFrame.getInstrument().getPulseRepetitionFrequency() - prf2 = slaveFrame.getInstrument().getPulseRepetitionFrequency() + referenceFrame = insar.getReferenceFrame() + secondaryFrame = insar.getSecondaryFrame() + referenceOrbit = insar.getReferenceOrbit() + secondaryOrbit = insar.getSecondaryOrbit() + prf1 = referenceFrame.getInstrument().getPulseRepetitionFrequency() + prf2 = secondaryFrame.getInstrument().getPulseRepetitionFrequency() nearRange1 = insar.formSLC1.startingRange nearRange2 = insar.formSLC2.startingRange - fs1 = masterFrame.getInstrument().getRangeSamplingRate() + fs1 = referenceFrame.getInstrument().getRangeSamplingRate() ###There seems to be no other way of determining image length - Piyush patchSize = insar.getPatchSize() @@ -666,7 +666,7 @@ if __name__ == "__main__": firstDown = insar.getFirstSampleDownPrf() - objSlc = insar.getMasterSlcImage() + objSlc = insar.getReferenceSlcImage() widthSlc = objSlc.getWidth() coarseRange = (nearRange1 - nearRange2) / (CN.SPEED_OF_LIGHT / (2 * fs1)) @@ -675,8 +675,8 @@ if __name__ == "__main__": coarseAcross = int(coarseRange - 0.5) - time1, schPosition1, schVelocity1, offset1 = masterOrbit._unpackOrbit() - time2, schPosition2, schVelocity2, offset2 = slaveOrbit._unpackOrbit() + time1, schPosition1, schVelocity1, offset1 = referenceOrbit._unpackOrbit() + time2, schPosition2, schVelocity2, offset2 = secondaryOrbit._unpackOrbit() s1 = schPosition1[0][0] s1_2 = schPosition1[1][0] s2 = schPosition2[0][0] @@ -695,7 +695,7 @@ if __name__ == "__main__": coarseAcross = 0 + coarseAcross coarseDown = 0 + coarseDown - mSlcImage = insar.getMasterSlcImage() + mSlcImage = insar.getReferenceSlcImage() mSlc = isceobj.createSlcImage() IU.copyAttributes(mSlcImage, mSlc) # scheme = 'BIL' @@ -704,7 +704,7 @@ if __name__ == "__main__": mSlc.setAccessMode(accessMode) mSlc.createImage() - sSlcImage = insar.getSlaveSlcImage() + sSlcImage = insar.getSecondarySlcImage() sSlc = isceobj.createSlcImage() IU.copyAttributes(sSlcImage, sSlc) # scheme = 'BIL' diff --git a/components/isceobj/Util/estimateoffsets/EstimateOffsets.py b/components/isceobj/Util/estimateoffsets/EstimateOffsets.py index ffe2f5e..2ce91f1 100755 --- a/components/isceobj/Util/estimateoffsets/EstimateOffsets.py +++ b/components/isceobj/Util/estimateoffsets/EstimateOffsets.py @@ -221,13 +221,13 @@ class EstimateOffsets(Component): if image1 is not None: self.image1 = image1 if (self.image1 == None): - raise ValueError("Error. master image not set.") + raise ValueError("Error. reference image not set.") if image2 is not None: self.image2 = image2 if (self.image2 == None): - raise ValueError("Error. slave image not set.") + raise ValueError("Error. secondary image not set.") if band1 is not None: self.band1 = int(band1) @@ -454,11 +454,11 @@ class EstimateOffsets(Component): self.debugFlag = str(var) return - def setMasterImage(self,im): + def setReferenceImage(self,im): self.image1 = im return - def setSlaveImage(self,im): + def setSecondaryImage(self,im): self.image2 = im return diff --git a/components/isceobj/Util/make_los/Make_los.py b/components/isceobj/Util/make_los/Make_los.py index 6e80038..4c95aa2 100644 --- a/components/isceobj/Util/make_los/Make_los.py +++ b/components/isceobj/Util/make_los/Make_los.py @@ -8,15 +8,15 @@ class Make_los(Component): def make_los(self): """calculate incidence and squint angles to radar data points""" - orbit = self._insar.getMasterOrbit() + orbit = self._insar.getReferenceOrbit() r0 = sensor.getFrame().getStartingRange() # slant range of first pixel - rsamp = self._insar.getMasterFrame().getInstrument().rangePixelSize + rsamp = self._insar.getReferenceFrame().getInstrument().rangePixelSize asamp = self._insar.getAzimuthPixelSize() - t0 = self._insar.getMasterFrame().getSensingStart() - prf = self._insar.getMasterFrame().getInstrument().getPulseRepetitionFrequency() - sc_az_nom = self._insar.getMasterSquint() + t0 = self._insar.getReferenceFrame().getSensingStart() + prf = self._insar.getReferenceFrame().getInstrument().getPulseRepetitionFrequency() + sc_az_nom = self._insar.getReferenceSquint() fd_coef = self._insar.getDopplerCentroid().getDopplerCoefficients() - wvl = self._insar.getMasterFrame().getInstrument().getRadarWavelength() + wvl = self._insar.getReferenceFrame().getInstrument().getRadarWavelength() # get first pos and vel sv = orbit.InterpolateOrbit(t0,method='hermite') diff --git a/components/isceobj/Util/test/src/testInterpolator.f90 b/components/isceobj/Util/test/src/testInterpolator.f90 index 0cfb4f5..9c3658a 100644 --- a/components/isceobj/Util/test/src/testInterpolator.f90 +++ b/components/isceobj/Util/test/src/testInterpolator.f90 @@ -60,4 +60,4 @@ end do deallocate(line1) deallocate(line2) -end subroutine testInterpolator \ No newline at end of file +end subroutine testInterpolator diff --git a/components/isceobj/Util/test/testInterpolator.py b/components/isceobj/Util/test/testInterpolator.py index 1abdb06..a8d1a81 100755 --- a/components/isceobj/Util/test/testInterpolator.py +++ b/components/isceobj/Util/test/testInterpolator.py @@ -49,4 +49,4 @@ def main(): if __name__ == '__main__': - sys.exit(main()) \ No newline at end of file + sys.exit(main()) diff --git a/components/isceobj/XmlUtil/FastXML.py b/components/isceobj/XmlUtil/FastXML.py index 8cdcc9c..f25c6aa 100755 --- a/components/isceobj/XmlUtil/FastXML.py +++ b/components/isceobj/XmlUtil/FastXML.py @@ -160,18 +160,18 @@ def test(): insar = Component('insar') - ####Master info - master = {} - master['hdf5'] = 'master.h5' - master['output'] = 'master.raw' + ####Reference info + reference = {} + reference['hdf5'] = 'reference.h5' + reference['output'] = 'reference.raw' - ####Slave info - slave = {} - slave['hdf5'] = 'slave.h5' - slave['output'] = 'slave.raw' + ####Secondary info + secondary = {} + secondary['hdf5'] = 'secondary.h5' + secondary['output'] = 'secondary.raw' - insar['master'] = master - insar['slave'] = slave + insar['reference'] = reference + insar['secondary'] = secondary ####Set properties insar['doppler method'] = 'useDEFAULT' diff --git a/components/iscesys/Component/manager.py b/components/iscesys/Component/manager.py index 2852a6a..c06da6d 100644 --- a/components/iscesys/Component/manager.py +++ b/components/iscesys/Component/manager.py @@ -8,4 +8,4 @@ def dump(obj,filename): __prdManager.dumpProduct(obj,filename) def load(filename): - return __prdManager.loadProduct(filename) \ No newline at end of file + return __prdManager.loadProduct(filename) diff --git a/components/iscesys/DataManager/SConscript b/components/iscesys/DataManager/SConscript index 156750c..34c5db1 100644 --- a/components/iscesys/DataManager/SConscript +++ b/components/iscesys/DataManager/SConscript @@ -48,4 +48,4 @@ envDataManager.Install(install,listFiles) envDataManager.Alias('install',install) helpList,installHelp = envDataManager['HELP_BUILDER'](envDataManager,'__init__.py',install) envDataManager.Install(installHelp,helpList) -envDataManager.Alias('install',installHelp) \ No newline at end of file +envDataManager.Alias('install',installHelp) diff --git a/components/iscesys/DataManager/SRTMManager.py b/components/iscesys/DataManager/SRTMManager.py index b1361f4..06c747e 100755 --- a/components/iscesys/DataManager/SRTMManager.py +++ b/components/iscesys/DataManager/SRTMManager.py @@ -117,4 +117,4 @@ class SRTMManager(TileManager): @archiveExt.setter def archiveExt(self,val): self._archiveExt = val - \ No newline at end of file + diff --git a/components/iscesys/DataManager/__init__.py b/components/iscesys/DataManager/__init__.py index f3ff7bd..f593b44 100644 --- a/components/iscesys/DataManager/__init__.py +++ b/components/iscesys/DataManager/__init__.py @@ -26,4 +26,4 @@ def getFactoriesInfo(): }, 'factory':'createManager' } - } \ No newline at end of file + } diff --git a/components/iscesys/DataRetriever/__init__.py b/components/iscesys/DataRetriever/__init__.py index 61eceba..b4011f5 100644 --- a/components/iscesys/DataRetriever/__init__.py +++ b/components/iscesys/DataRetriever/__init__.py @@ -12,4 +12,4 @@ def getFactoriesInfo(): { 'factory':'createDataRetriever' } - } \ No newline at end of file + } diff --git a/components/iscesys/DataRetriever/gzipfile.py b/components/iscesys/DataRetriever/gzipfile.py index ce32896..cca9729 100755 --- a/components/iscesys/DataRetriever/gzipfile.py +++ b/components/iscesys/DataRetriever/gzipfile.py @@ -66,4 +66,4 @@ class GZipFile: fp = open(os.path.join(path,'.'.join(os.path.basename(self._filename).split('.')[:-1])),'wb') fp.write(s) fp.close() - \ No newline at end of file + diff --git a/components/iscesys/Parsers/rdf/test/test.py b/components/iscesys/Parsers/rdf/test/test.py deleted file mode 120000 index 93f5256..0000000 --- a/components/iscesys/Parsers/rdf/test/test.py +++ /dev/null @@ -1 +0,0 @@ -__init__.py \ No newline at end of file diff --git a/components/iscesys/Parsers/rdf/test/test.py b/components/iscesys/Parsers/rdf/test/test.py new file mode 100755 index 0000000..25226e3 --- /dev/null +++ b/components/iscesys/Parsers/rdf/test/test.py @@ -0,0 +1,19 @@ +#!/usr/bin/env python3 +"""Test makes new.rdf, which shold be the same as old.rdf""" +## \namespace rdf.test A brief test suite +import rdf + + +SRC = "rdf.txt" +DST = "new.rdf" + + +## rdf.parse(SRC) >> DST +def main(): + """RDF...(SRC)>>DST""" + data = rdf.parse(SRC) + dst = data >> DST + return None + +if __name__ == '__main__': + main() diff --git a/components/iscesys/Stitcher/Stitcher.py b/components/iscesys/Stitcher/Stitcher.py index 96d8146..12d09bd 100755 --- a/components/iscesys/Stitcher/Stitcher.py +++ b/components/iscesys/Stitcher/Stitcher.py @@ -198,4 +198,4 @@ class Stitcher(Component): def __init__(self,family = '', name = ''): super(Component, self).__init__(family if family else self.__class__.family, name=name) - self._toSkipName = 'toSkip' \ No newline at end of file + self._toSkipName = 'toSkip' diff --git a/components/iscesys/Stitcher/__init__.py b/components/iscesys/Stitcher/__init__.py index 5db9410..4d1a0ff 100644 --- a/components/iscesys/Stitcher/__init__.py +++ b/components/iscesys/Stitcher/__init__.py @@ -12,4 +12,4 @@ def getFactoriesInfo(): { 'factory':'createStitcher' } - } \ No newline at end of file + } diff --git a/components/mroipac/ampcor/Ampcor.py b/components/mroipac/ampcor/Ampcor.py index cee9e45..83ff980 100755 --- a/components/mroipac/ampcor/Ampcor.py +++ b/components/mroipac/ampcor/Ampcor.py @@ -294,12 +294,12 @@ class Ampcor(Component): if not (slcImage1 == None): self.slcImage1 = slcImage1 if (self.slcImage1 == None): - print("Error. master slc image not set.") + print("Error. reference slc image not set.") raise Exception if not (slcImage2 == None): self.slcImage2 = slcImage2 if (self.slcImage2 == None): - print("Error. slave slc image not set.") + print("Error. secondary slc image not set.") raise Exception if band1 is not None: @@ -455,7 +455,7 @@ class Ampcor(Component): xMargin = 2*self.searchWindowSizeWidth + self.windowSizeWidth yMargin = 2*self.searchWindowSizeHeight + self.windowSizeHeight - ######Checks related to the master image only + ######Checks related to the reference image only #if( self.firstSampleAcross < xMargin): # raise ValueError('First sample is not far enough from the left edge in reference image.') @@ -605,11 +605,11 @@ class Ampcor(Component): self.displayFlag = bool(var) return - def setMasterSlcImage(self,im): + def setReferenceSlcImage(self,im): self.slcImage1 = im return - def setSlaveSlcImage(self,im): + def setSecondarySlcImage(self,im): self.slcImage2 = im return diff --git a/components/mroipac/ampcor/DenseAmpcor.py b/components/mroipac/ampcor/DenseAmpcor.py index 7348245..3f0fa54 100755 --- a/components/mroipac/ampcor/DenseAmpcor.py +++ b/components/mroipac/ampcor/DenseAmpcor.py @@ -314,12 +314,12 @@ class DenseAmpcor(Component): if not (slcImage1 == None): self.slcImage1 = slcImage1 if (self.slcImage1 == None): - logger.error("Error. master slc image not set.") + logger.error("Error. reference slc image not set.") raise Exception if not (slcImage2 == None): self.slcImage2 = slcImage2 if (self.slcImage2 == None): - logger.error("Error. slave slc image not set.") + logger.error("Error. secondary slc image not set.") raise Exception self.fileLength1 = self.slcImage1.getLength() @@ -700,11 +700,11 @@ class DenseAmpcor(Component): self.rangeSpacing2 = float(var) - def setMasterSlcImage(self,im): + def setReferenceSlcImage(self,im): self.slcImage1 = im return - def setSlaveSlcImage(self,im): + def setSecondarySlcImage(self,im): self.slcImage2 = im return diff --git a/components/mroipac/ampcor/NStage.py b/components/mroipac/ampcor/NStage.py index 497237c..ca271d4 100755 --- a/components/mroipac/ampcor/NStage.py +++ b/components/mroipac/ampcor/NStage.py @@ -299,12 +299,12 @@ class NStage(Component): if not (slcImage1 == None): self.slcImage1 = slcImage1 if (self.slcImage1 == None): - logger.error("Error. master slc image not set.") + logger.error("Error. reference slc image not set.") raise Exception if not (slcImage2 == None): self.slcImage2 = slcImage2 if (self.slcImage2 == None): - logger.error("Error. slave slc image not set.") + logger.error("Error. secondary slc image not set.") raise Exception self.fileLength1 = self.slcImage1.getLength() @@ -579,11 +579,11 @@ class NStage(Component): self.rangeSpacing2 = float(var) - def setMasterSlcImage(self,im): + def setReferenceSlcImage(self,im): self.slcImage1 = im return - def setSlaveSlcImage(self,im): + def setSecondarySlcImage(self,im): self.slcImage2 = im return diff --git a/components/mroipac/ampcor/src/ampcor.F b/components/mroipac/ampcor/src/ampcor.F index 379de44..282e21d 100644 --- a/components/mroipac/ampcor/src/ampcor.F +++ b/components/mroipac/ampcor/src/ampcor.F @@ -252,8 +252,8 @@ write(6,*) '' write(6,*) ' *** using ScanSAR full-aperture mode for gross offset estimation ***' write(6,*) 'azimuth multi-looking window size: ', winsize_filt - write(6,*) 'number of azimuth samples before and after multi-looking (master): ', i_wsyi, i_wsyi_filt - write(6,*) 'number of azimuth samples before and after multi-looking (slave): ', i_wsyj, i_wsyj_filt + write(6,*) 'number of azimuth samples before and after multi-looking (reference): ', i_wsyi, i_wsyi_filt + write(6,*) 'number of azimuth samples before and after multi-looking (secondary): ', i_wsyj, i_wsyj_filt write(6,*) 'azimuth covariance surface oversampling factor: ', i_covs_filt write(6,*) 'total number of azimuth samples to be oversampled', i_cw_filt write(6,*) '' diff --git a/components/mroipac/baseline/Baseline.py b/components/mroipac/baseline/Baseline.py index d9cdbec..5266f76 100755 --- a/components/mroipac/baseline/Baseline.py +++ b/components/mroipac/baseline/Baseline.py @@ -73,10 +73,10 @@ BASELINE_LOCATION = Component.Parameter('baselineLocation', type=str, mandatory=False, doc = ('Location at which to compute baselines - "all" implies '+ - 'top, middle, bottom of master image, '+ - '"top" implies near start of master image, '+ - '"bottom" implies at bottom of master image, '+ - '"middle" implies near middle of master image. '+ + 'top, middle, bottom of reference image, '+ + '"top" implies near start of reference image, '+ + '"bottom" implies at bottom of reference image, '+ + '"middle" implies near middle of reference image. '+ 'To be used in case there is a large shift between images.') ) @@ -89,15 +89,15 @@ class Baseline(Component): parameter_list = (BASELINE_LOCATION,) - # Calculate the Look Angle of the master frame + # Calculate the Look Angle of the reference frame def calculateLookAngle(self): lookVector = self.calculateLookVector() return math.degrees(math.atan2(lookVector[1],lookVector[0])) - # Calculate the look vector of the master frame + # Calculate the look vector of the reference frame def calculateLookVector(self): try: - z = self.masterFrame.terrainHeight + z = self.referenceFrame.terrainHeight except: z = 0.0 cosl = ((self.height-z)*(2*self.radius + self.height + z) + @@ -141,7 +141,7 @@ class Baseline(Component): # Given two position vectors and a basis, calculate the offset between the two positions in this basis def calculateBasisOffset(self,x1,x2,basis): - dx = [(x2[j] - x1[j]) for j in range(len(x1))] # Calculate the difference between the master and slave position vectors + dx = [(x2[j] - x1[j]) for j in range(len(x1))] # Calculate the difference between the reference and secondary position vectors z_offset = MM.dotProduct(dx,basis.getVelocityVector()) # Calculate the length of the projection of the difference in position and the "velocity" component v_offset = MM.dotProduct(dx,basis.getPositionVector()) c_offset = MM.dotProduct(dx,basis.getCrossTrackVector()) @@ -151,7 +151,7 @@ class Baseline(Component): # Calculate the baseline components between two frames def baseline(self): #TODO This could be further refactored into a method that calculates the baseline between - #TODO frames when given a master time and a slave time and a method that calls this method + #TODO frames when given a reference time and a secondary time and a method that calls this method #TODO multiple times to calculate the rate of baseline change over time. for port in self.inputPorts: port() @@ -167,50 +167,50 @@ class Baseline(Component): if self.baselineLocation.lower() == 'all': print('Using entire span of image for estimating baselines') - masterTime = [self.masterFrame.getSensingStart(),self.masterFrame.getSensingMid(),self.masterFrame.getSensingStop()] + referenceTime = [self.referenceFrame.getSensingStart(),self.referenceFrame.getSensingMid(),self.referenceFrame.getSensingStop()] elif self.baselineLocation.lower() == 'middle': - print('Estimating baselines around center of master image') - masterTime = [self.masterFrame.getSensingMid() - datetime.timedelta(seconds=1.0), self.masterFrame.getSensingMid(), self.masterFrame.getSensingMid() + datetime.timedelta(seconds=1.0)] + print('Estimating baselines around center of reference image') + referenceTime = [self.referenceFrame.getSensingMid() - datetime.timedelta(seconds=1.0), self.referenceFrame.getSensingMid(), self.referenceFrame.getSensingMid() + datetime.timedelta(seconds=1.0)] elif self.baselineLocation.lower() == 'top': - print('Estimating baselines at top of master image') - masterTime = [self.masterFrame.getSensingStart(), self.masterFrame.getSensingStart() + datetime.timedelta(seconds=1.0), self.masterFrame.getSensingStart() + datetime.timedelta(seconds=2.0)] + print('Estimating baselines at top of reference image') + referenceTime = [self.referenceFrame.getSensingStart(), self.referenceFrame.getSensingStart() + datetime.timedelta(seconds=1.0), self.referenceFrame.getSensingStart() + datetime.timedelta(seconds=2.0)] elif self.baselineLocation.lower() == 'bottom': - print('Estimating baselines at bottom of master image') - masterTime = [self.masterFrame.getSensingStop() - datetime.timedelta(seconds=2.0), self.masterFrame.getSensingStop() - datetime.timedelta(seconds=1.0), self.masterFrame.getSensingStop()] + print('Estimating baselines at bottom of reference image') + referenceTime = [self.referenceFrame.getSensingStop() - datetime.timedelta(seconds=2.0), self.referenceFrame.getSensingStop() - datetime.timedelta(seconds=1.0), self.referenceFrame.getSensingStop()] else: raise Exception('Unknown baseline location: {0}'.format(self.baselineLocation)) - slaveTime = [self.slaveFrame.getSensingMid() - datetime.timedelta(seconds=1.0), self.slaveFrame.getSensingMid(), self.slaveFrame.getSensingMid() + datetime.timedelta(seconds=1.0)] + secondaryTime = [self.secondaryFrame.getSensingMid() - datetime.timedelta(seconds=1.0), self.secondaryFrame.getSensingMid(), self.secondaryFrame.getSensingMid() + datetime.timedelta(seconds=1.0)] -# slaveTime = [self.slaveFrame.getSensingStart(),self.slaveFrame.getSensingMid(),self.slaveFrame.getSensingStop()] +# secondaryTime = [self.secondaryFrame.getSensingStart(),self.secondaryFrame.getSensingMid(),self.secondaryFrame.getSensingStop()] for i in range(3): # Calculate the Baseline at the start of the scene, mid-scene, and the end of the scene # First, get the position and velocity at the start of the scene self.logger.info("Sampling time %s" % i) - masterBasis = self.calculateBasis(self.masterOrbit,masterTime[i]) - normV = self.calculateScalarVelocity(self.masterOrbit,masterTime[i]) + referenceBasis = self.calculateBasis(self.referenceOrbit,referenceTime[i]) + normV = self.calculateScalarVelocity(self.referenceOrbit,referenceTime[i]) # Calculate the distance moved since the last baseline point if (i > 0): - deltaT = self._timeDeltaToSeconds(masterTime[i] - masterTime[0]) + deltaT = self._timeDeltaToSeconds(referenceTime[i] - referenceTime[0]) s[i] = s[i-1] + deltaT*normV - masterSV = self.masterOrbit.interpolateOrbit(masterTime[i], method='hermite') + referenceSV = self.referenceOrbit.interpolateOrbit(referenceTime[i], method='hermite') - slaveSV = self.slaveOrbit.interpolateOrbit(slaveTime[i], method='hermite') - x1 = masterSV.getPosition() - x2 = slaveSV.getPosition() - (z_offset,v_offset,c_offset) = self.calculateBasisOffset(x1,x2,masterBasis) + secondarySV = self.secondaryOrbit.interpolateOrbit(secondaryTime[i], method='hermite') + x1 = referenceSV.getPosition() + x2 = secondarySV.getPosition() + (z_offset,v_offset,c_offset) = self.calculateBasisOffset(x1,x2,referenceBasis) az_offset.append(z_offset) # Save the position offset # Calculate a new start time - relativeSlaveTime = slaveTime[i] - datetime.timedelta(seconds=(z_offset/normV)) - slaveSV = self.slaveOrbit.interpolateOrbit(relativeSlaveTime, method='hermite') + relativeSecondaryTime = secondaryTime[i] - datetime.timedelta(seconds=(z_offset/normV)) + secondarySV = self.secondaryOrbit.interpolateOrbit(relativeSecondaryTime, method='hermite') # Recalculate the offsets - x2 = slaveSV.getPosition() - (z_offset,v_offset,c_offset) = self.calculateBasisOffset(x1,x2,masterBasis) + x2 = secondarySV.getPosition() + (z_offset,v_offset,c_offset) = self.calculateBasisOffset(x1,x2,referenceBasis) vb.append(v_offset) hb.append(c_offset) csb.append(-hb[i]*lookVector[0] + vb[i]*lookVector[1]) # Multiply the horizontal and vertical baseline components by the look angle vector @@ -278,11 +278,11 @@ class Baseline(Component): self.radius = radius return - def setMasterStartingRange(self,range): + def setReferenceStartingRange(self,range): self.startingRange1 = range return - def setSlaveStartingRange(self,range): + def setSecondaryStartingRange(self,range): self.startingRange2 = range return @@ -329,15 +329,15 @@ class Baseline(Component): return (td.microseconds + (td.seconds + td.days * 24.0 * 3600) * 10**6) / 10**6 - def addMasterFrame(self): - frame = self._inputPorts.getPort(name='masterFrame').getObject() - self.masterFrame = frame + def addReferenceFrame(self): + frame = self._inputPorts.getPort(name='referenceFrame').getObject() + self.referenceFrame = frame self.startingRange1 = frame.getStartingRange() prf = frame.getInstrument().getPulseRepetitionFrequency() self.rangePixelSize = frame.getInstrument().getRangePixelSize() - self.masterOrbit = frame.getOrbit() - midSV = self.masterOrbit.interpolateOrbit(frame.getSensingMid(), method='hermite') + self.referenceOrbit = frame.getOrbit() + midSV = self.referenceOrbit.interpolateOrbit(frame.getSensingMid(), method='hermite') self.azimuthPixelSize = midSV.getScalarVelocity()/prf try: @@ -349,17 +349,17 @@ class Baseline(Component): self.radius = ellipsoid.get_a() self.height = midSV.calculateHeight(ellipsoid) - def addSlaveFrame(self): - frame = self._inputPorts.getPort(name='slaveFrame').getObject() - self.slaveFrame = frame + def addSecondaryFrame(self): + frame = self._inputPorts.getPort(name='secondaryFrame').getObject() + self.secondaryFrame = frame self.startingRange2 = frame.getStartingRange() - self.slaveOrbit = frame.getOrbit() + self.secondaryOrbit = frame.getOrbit() def __init__(self, name=''): - self.masterOrbit = None - self.slaveOrbit = None - self.masterFrame = None - self.slaveFrame = None + self.referenceOrbit = None + self.secondaryOrbit = None + self.referenceFrame = None + self.secondaryFrame = None self.lookAngle = None self.rangePixelSize = None self.azimuthPixelSize = None @@ -399,10 +399,10 @@ class Baseline(Component): # These provide the orbits # These provide the range and azimuth pixel sizes, starting ranges, # satellite heights and times for the first lines - masterFramePort = Port(name='masterFrame',method=self.addMasterFrame) - slaveFramePort = Port(name='slaveFrame',method=self.addSlaveFrame) - self._inputPorts.add(masterFramePort) - self._inputPorts.add(slaveFramePort) + referenceFramePort = Port(name='referenceFrame',method=self.addReferenceFrame) + secondaryFramePort = Port(name='secondaryFrame',method=self.addSecondaryFrame) + self._inputPorts.add(referenceFramePort) + self._inputPorts.add(secondaryFramePort) return None diff --git a/components/mroipac/dopiq/__init__.py b/components/mroipac/dopiq/__init__.py index 25419d0..aabdfad 100644 --- a/components/mroipac/dopiq/__init__.py +++ b/components/mroipac/dopiq/__init__.py @@ -10,4 +10,4 @@ def getFactoriesInfo(): 'factory':'createDopIQ' } - } \ No newline at end of file + } diff --git a/components/mroipac/getPegInfo/src/get_peg_info.F b/components/mroipac/getPegInfo/src/get_peg_info.F index fe9054c..3d2b913 100644 --- a/components/mroipac/getPegInfo/src/get_peg_info.F +++ b/components/mroipac/getPegInfo/src/get_peg_info.F @@ -160,7 +160,7 @@ c determine the heading c determine the peg lat,lon and heading to use - algorithm assumes a frame size scene and uses lat,lon at -c scene center and heading a scene center for peg coordinates. Orbit 1 is the master frame and peg is determined +c scene center and heading a scene center for peg coordinates. Orbit 1 is the reference frame and peg is determined c using it's orbit only. It is rough but should suffice for most applications. r_time_first_line = r_timeslc + (i_startline-1)/r_prf !time to first line in Interferogram diff --git a/components/stdproc/orbit/__init__.py b/components/stdproc/orbit/__init__.py index e285e85..e1ac249 100755 --- a/components/stdproc/orbit/__init__.py +++ b/components/stdproc/orbit/__init__.py @@ -69,4 +69,4 @@ def getFactoriesInfo(): { 'factory':'createMocompbaseline' } - } \ No newline at end of file + } diff --git a/components/stdproc/orbit/mocompbaseline/Mocompbaseline.py b/components/stdproc/orbit/mocompbaseline/Mocompbaseline.py index 17c3a70..8be1ab5 100755 --- a/components/stdproc/orbit/mocompbaseline/Mocompbaseline.py +++ b/components/stdproc/orbit/mocompbaseline/Mocompbaseline.py @@ -347,13 +347,13 @@ class Mocompbaseline(Component): def createPorts(self): - masterOrbitPort = Port(name='masterOrbit', method=self.addMasterOrbit) - slaveOrbitPort = Port(name='slaveOrbit', method=self.addSlaveOrbit) + referenceOrbitPort = Port(name='referenceOrbit', method=self.addReferenceOrbit) + secondaryOrbitPort = Port(name='secondaryOrbit', method=self.addSecondaryOrbit) pegPort = Port(name='peg', method=self.addPeg) ellipsoidPort = Port(name='ellipsoid', method=self.addEllipsoid) - self._inputPorts.add(masterOrbitPort) - self._inputPorts.add(slaveOrbitPort) + self._inputPorts.add(referenceOrbitPort) + self._inputPorts.add(secondaryOrbitPort) self._inputPorts.add(pegPort) self._inputPorts.add(ellipsoidPort) return None @@ -707,8 +707,8 @@ class Mocompbaseline(Component): except AttributeError: self.logger.error("Object %s requires get_e2() and get_a() methods" % (ellipsoid.__class__)) - def addMasterOrbit(self): - orbit = self._inputPorts.getPort(name='masterOrbit').getObject() + def addReferenceOrbit(self): + orbit = self._inputPorts.getPort(name='referenceOrbit').getObject() if (orbit): try: (time,position,velocity,offset) = orbit._unpackOrbit() @@ -718,8 +718,8 @@ class Mocompbaseline(Component): self.logger.error("Object %s requires an _unpackOrbit() method" % (orbit.__class__)) raise AttributeError - def addSlaveOrbit(self): - orbit = self._inputPorts.getPort(name='slaveOrbit').getObject() + def addSecondaryOrbit(self): + orbit = self._inputPorts.getPort(name='secondaryOrbit').getObject() if (orbit): try: (time,position,velocity,offset) = orbit._unpackOrbit() diff --git a/components/stdproc/orbit/mocompbaseline/SConscript b/components/stdproc/orbit/mocompbaseline/SConscript index 05dcf47..c2ee34e 100644 --- a/components/stdproc/orbit/mocompbaseline/SConscript +++ b/components/stdproc/orbit/mocompbaseline/SConscript @@ -58,4 +58,4 @@ envmocompbaseline.Alias('install',install) #The factory is in the one level up__init__.py helpList,installHelp = envmocompbaseline['HELP_BUILDER'](envmocompbaseline,'../__init__.py',install) envmocompbaseline.Install(installHelp,helpList) -envmocompbaseline.Alias('install',installHelp) \ No newline at end of file +envmocompbaseline.Alias('install',installHelp) diff --git a/components/stdproc/orbit/setmocomppath/Setmocomppath.py b/components/stdproc/orbit/setmocomppath/Setmocomppath.py index 89640fa..ac5fc67 100755 --- a/components/stdproc/orbit/setmocomppath/Setmocomppath.py +++ b/components/stdproc/orbit/setmocomppath/Setmocomppath.py @@ -52,7 +52,7 @@ FIRST_POSITION = Component.Parameter( default=None, units='m', mandatory=True, - doc="List of xyz positions for first (master) frame." + doc="List of xyz positions for first (reference) frame." ) SECOND_POSITION = Component.Parameter( @@ -62,7 +62,7 @@ SECOND_POSITION = Component.Parameter( default=None, units='m', mandatory=True, - doc="List of xyz positions for second (slave) frame." + doc="List of xyz positions for second (secondary) frame." ) FIRST_VELOCITY = Component.Parameter( @@ -72,7 +72,7 @@ FIRST_VELOCITY = Component.Parameter( default=None, units='m/s', mandatory=True, - doc="List of xyz velocities for first (master) frame." + doc="List of xyz velocities for first (reference) frame." ) SECOND_POSITION = Component.Parameter( @@ -82,7 +82,7 @@ SECOND_POSITION = Component.Parameter( default=None, units='m/s', mandatory=True, - doc="List of xyz velocities for second (slave) frame." + doc="List of xyz velocities for second (secondary) frame." ) @@ -269,23 +269,23 @@ class Setmocomppath(Component): setmocomppath.allocate_vxyz2_Py(self.dim1_velocity2, self.dim2_velocity2) return None - def addMasterOrbit(self): - masterOrbit = self._inputPorts.getPort('masterOrbit').getObject() - if masterOrbit: + def addReferenceOrbit(self): + referenceOrbit = self._inputPorts.getPort('referenceOrbit').getObject() + if referenceOrbit: try: - time, self.position1, self.velocity1, offset = masterOrbit._unpackOrbit() + time, self.position1, self.velocity1, offset = referenceOrbit._unpackOrbit() except AttributeError: - print("Object %s requires private method _unpackOrbit()" % (masterOrbit.__class__)) + print("Object %s requires private method _unpackOrbit()" % (referenceOrbit.__class__)) raise AttributeError - def addSlaveOrbit(self): - slaveOrbit = self._inputPorts.getPort('slaveOrbit').getObject() - if slaveOrbit: + def addSecondaryOrbit(self): + secondaryOrbit = self._inputPorts.getPort('secondaryOrbit').getObject() + if secondaryOrbit: try: - time, self.position2, self.velocity2, offset = slaveOrbit._unpackOrbit() + time, self.position2, self.velocity2, offset = secondaryOrbit._unpackOrbit() except AttributeError: - print("Object %s requires private method _unpackOrbit()" % (slaveOrbit.__class__)) + print("Object %s requires private method _unpackOrbit()" % (secondaryOrbit.__class__)) raise AttributeError @@ -364,12 +364,12 @@ class Setmocomppath(Component): def createPorts(self): #Create ports planetPort = Port(name='planet',method=self.addPlanet) - masterOrbitPort = Port(name='masterOrbit',method=self.addMasterOrbit) - slaveOrbitPort = Port(name='slaveOrbit',method=self.addSlaveOrbit) + referenceOrbitPort = Port(name='referenceOrbit',method=self.addReferenceOrbit) + secondaryOrbitPort = Port(name='secondaryOrbit',method=self.addSecondaryOrbit) # Add the ports self._inputPorts.add(planetPort) - self._inputPorts.add(masterOrbitPort) - self._inputPorts.add(slaveOrbitPort) + self._inputPorts.add(referenceOrbitPort) + self._inputPorts.add(secondaryOrbitPort) return None diff --git a/components/stdproc/rectify/geocode/Geocode.py b/components/stdproc/rectify/geocode/Geocode.py index c296ce0..311c0f7 100755 --- a/components/stdproc/rectify/geocode/Geocode.py +++ b/components/stdproc/rectify/geocode/Geocode.py @@ -756,8 +756,8 @@ class Geocode(Component): self.logger.error(strerr) raise AttributeError - def addMasterSlc(self): #Piyush - formslc = self._inputPorts.getPort(name='masterslc').getObject() + def addReferenceSlc(self): #Piyush + formslc = self._inputPorts.getPort(name='referenceslc').getObject() if(formslc): try: self.rangeFirstSample = formslc.startingRange @@ -892,7 +892,7 @@ class Geocode(Component): demPort = Port(name='dem',method=self.addDem) ifgPort = Port(name='tobegeocoded',method=self.addInterferogram) geoPort = Port(name='geoPosting',method=self.addGeoPosting) - slcPort = Port(name='masterslc',method=self.addMasterSlc) #Piyush + slcPort = Port(name='referenceslc',method=self.addReferenceSlc) #Piyush self._inputPorts.add(framePort) self._inputPorts.add(pegPort) diff --git a/components/stdproc/stdproc/correct/Correct.py b/components/stdproc/stdproc/correct/Correct.py index 8b265a3..d16b972 100755 --- a/components/stdproc/stdproc/correct/Correct.py +++ b/components/stdproc/stdproc/correct/Correct.py @@ -370,14 +370,14 @@ class Correct(Component): self.topophaseFlatCreatedHere = False self.topophaseFlatImage = None self.topophaseFlatAccessor = None - self.slaveRangeFilename = '' - self.slaveRangeCreatedHere = False - self.slaveRangeImage = None - self.slaveRangeAccessor = None - self.masterRangeFilename = '' - self.masterRangeCreatedHere = False - self.masterRangeAccessor = None - self.masterRangeImage = None + self.secondaryRangeFilename = '' + self.secondaryRangeCreatedHere = False + self.secondaryRangeImage = None + self.secondaryRangeAccessor = None + self.referenceRangeFilename = '' + self.referenceRangeCreatedHere = False + self.referenceRangeAccessor = None + self.referenceRangeImage = None self.polyDopplerAccessor = None self.initOptionalAndMandatoryLists() @@ -388,7 +388,7 @@ class Correct(Component): planetPort = Port(name='planet',method=self.addPlanet) framePort = Port(name='frame',method=self.addFrame) ifgPort = Port(name='interferogram',method=self.addInterferogram) - slcPort = Port(name='masterslc',method=self.addMasterSlc) #Piyush + slcPort = Port(name='referenceslc',method=self.addReferenceSlc) #Piyush self._inputPorts.add(pegPort) self._inputPorts.add(planetPort) @@ -442,11 +442,11 @@ class Correct(Component): self.topophaseFlatAccessor = 0 if self.dumpRangeFiles: - self.slaveRangeAccessor = self.slaveRangeImage.getImagePointer() - self.masterRangeAccessor = self.masterRangeImage.getImagePointer() + self.secondaryRangeAccessor = self.secondaryRangeImage.getImagePointer() + self.referenceRangeAccessor = self.referenceRangeImage.getImagePointer() else: - self.slaveRangeAccessor = 0 - self.masterRangeAccessor = 0 + self.secondaryRangeAccessor = 0 + self.referenceRangeAccessor = 0 self.polyDopplerAccessor = self.polyDoppler.getPointer() @@ -457,8 +457,8 @@ class Correct(Component): self.heightSchAccessor, self.topophaseMphAccessor, self.topophaseFlatAccessor, - self.masterRangeAccessor, - self.slaveRangeAccessor) + self.referenceRangeAccessor, + self.secondaryRangeAccessor) self.topophaseMphImage.trueDataType = self.topophaseMphImage.getDataType() self.topophaseFlatImage.trueDataType = self.topophaseFlatImage.getDataType() @@ -470,8 +470,8 @@ class Correct(Component): self.topophaseMphImage.renderHdr() self.topophaseFlatImage.renderHdr() if self.dumpRangeFiles: - self.masterRangeImage.renderHdr() - self.slaveRangeImage.renderHdr() + self.referenceRangeImage.renderHdr() + self.secondaryRangeImage.renderHdr() return @@ -507,17 +507,17 @@ class Correct(Component): self.dumpRangeFiles = False if self.dumpRangeFiles: - if self.slaveRangeFilename == '': - self.slaveRangeFilename = 'slaverange.rdr' + if self.secondaryRangeFilename == '': + self.secondaryRangeFilename = 'secondaryrange.rdr' self.logger.warning( - 'Slave range file has been given the default name %s' % - (self.slaveRangeFilename)) + 'Secondary range file has been given the default name %s' % + (self.secondaryRangeFilename)) - if self.masterRangeFilename == '': - self.masterRangeFilename = 'masterrange.rdr' + if self.referenceRangeFilename == '': + self.referenceRangeFilename = 'referencerange.rdr' self.logger.warning( - 'Master range file has been given the default name %s' % - (self.masterRangeFilename)) + 'Reference range file has been given the default name %s' % + (self.referenceRangeFilename)) if self.polyDoppler is None: polyDop = Poly2D(name=self.name + '_correctPoly') @@ -538,8 +538,8 @@ class Correct(Component): self.topophaseFlatImage.finalizeImage() if self.dumpRangeFiles: - self.masterRangeImage.finalizeImage() - self.slaveRangeImage.finalizeImage() + self.referenceRangeImage.finalizeImage() + self.secondaryRangeImage.finalizeImage() self.polyDoppler.finalize() @@ -592,23 +592,23 @@ class Correct(Component): ) if self.dumpRangeFiles: - if (self.slaveRangeImage is None and not self.slaveRangeFilename == ''): - self.slaveRangeImage = IF.createImage() - self.slaveRangeImage.setFilename(self.slaveRangeFilename) - self.slaveRangeImage.setAccessMode('write') - self.slaveRangeImage.dataType = 'FLOAT' - self.slaveRangeImage.setWidth(self.width) - self.slaveRangeImage.bands = 1 - self.slaveRangeImage.scheme = 'BIL' + if (self.secondaryRangeImage is None and not self.secondaryRangeFilename == ''): + self.secondaryRangeImage = IF.createImage() + self.secondaryRangeImage.setFilename(self.secondaryRangeFilename) + self.secondaryRangeImage.setAccessMode('write') + self.secondaryRangeImage.dataType = 'FLOAT' + self.secondaryRangeImage.setWidth(self.width) + self.secondaryRangeImage.bands = 1 + self.secondaryRangeImage.scheme = 'BIL' - if (self.masterRangeImage is None and not self.masterRangeFilename == ''): - self.masterRangeImage = IF.createImage() - self.masterRangeImage.setFilename(self.masterRangeFilename) - self.masterRangeImage.setAccessMode('write') - self.masterRangeImage.dataType = 'FLOAT' - self.masterRangeImage.setWidth(self.width) - self.masterRangeImage.bands = 1 - self.masterRangeImage.scheme = 'BIL' + if (self.referenceRangeImage is None and not self.referenceRangeFilename == ''): + self.referenceRangeImage = IF.createImage() + self.referenceRangeImage.setFilename(self.referenceRangeFilename) + self.referenceRangeImage.setAccessMode('write') + self.referenceRangeImage.dataType = 'FLOAT' + self.referenceRangeImage.setWidth(self.width) + self.referenceRangeImage.bands = 1 + self.referenceRangeImage.scheme = 'BIL' if self.polyDoppler is None: @@ -625,8 +625,8 @@ class Correct(Component): self.topophaseMphImage.createImage() if self.dumpRangeFiles: - self.masterRangeImage.createImage() - self.slaveRangeImage.createImage() + self.referenceRangeImage.createImage() + self.secondaryRangeImage.createImage() self.polyDoppler.createPoly2D() @@ -915,8 +915,8 @@ class Correct(Component): #####This part needs to change when formslc is refactored #####to use doppler polynomials - def addMasterSlc(self): - formslc = self._inputPorts.getPort(name='masterslc').getObject() + def addReferenceSlc(self): + formslc = self._inputPorts.getPort(name='referenceslc').getObject() if (formslc): try: self.rangeFirstSample = formslc.startingRange diff --git a/components/stdproc/stdproc/crossmul/include/crossmul.h b/components/stdproc/stdproc/crossmul/include/crossmul.h index 5ef3274..25d3d24 100644 --- a/components/stdproc/stdproc/crossmul/include/crossmul.h +++ b/components/stdproc/stdproc/crossmul/include/crossmul.h @@ -15,10 +15,10 @@ struct crossmulState{ int looksac; //Range looks int looksdn; //Azimuth looks int blocksize; //Azimuth block size - double wvl1; //Master wavelength - double wvl2; //Slave wavelength - double drg1; //Master spacing - double drg2; //Slave spacing + double wvl1; //Reference wavelength + double wvl2; //Secondary wavelength + double drg1; //Reference spacing + double drg2; //Secondary spacing int flatten; //Flatten flag double wgt; //Range filter weight }; diff --git a/components/stdproc/stdproc/crossmul/src/crossmulState.F b/components/stdproc/stdproc/crossmul/src/crossmulState.F index 2baec57..ff367a9 100644 --- a/components/stdproc/stdproc/crossmul/src/crossmulState.F +++ b/components/stdproc/stdproc/crossmul/src/crossmulState.F @@ -39,10 +39,10 @@ integer (C_INT):: looksac !c Looks across integer (C_INT):: looksdn !c Looks down integer (C_INT):: blocksize !c Number of azimuth lines in a block - real(C_DOUBLE) :: wvl1 !c Master wavelength - real(C_DOUBLE) :: wvl2 !c Slave wavelength - real(C_DOUBLE) :: drg1 !c Master slant range spacing - real(C_DOUBLE) :: drg2 !c Slave slant range spacing + real(C_DOUBLE) :: wvl1 !c Reference wavelength + real(C_DOUBLE) :: wvl2 !c Secondary wavelength + real(C_DOUBLE) :: drg1 !c Reference slant range spacing + real(C_DOUBLE) :: drg2 !c Secondary slant range spacing integer(C_INT) :: flatten !c Flatten flag real(C_DOUBLE) :: wgt !c Range filter weight end type crossmulType diff --git a/components/stdproc/stdproc/estamb/Estamb.py b/components/stdproc/stdproc/estamb/Estamb.py index 34bfa67..366840f 100755 --- a/components/stdproc/stdproc/estamb/Estamb.py +++ b/components/stdproc/stdproc/estamb/Estamb.py @@ -938,7 +938,7 @@ class Estamb(Component): if __name__ == '__main__': - '''Sample implementation. Estimates ambiguity on the master.''' + '''Sample implementation. Estimates ambiguity on the reference.''' import isceobj import stdproc from iscesys.StdOEL.StdOELPy import create_writer @@ -953,7 +953,7 @@ if __name__ == '__main__': import copy stdWriter = create_writer("log", "", True, filename="estamb.log") - objRaw = insar.masterRawImage.copy(access_mode='read') + objRaw = insar.referenceRawImage.copy(access_mode='read') v,h = insar.vh() objFormSlc = stdproc.createestamb() @@ -965,20 +965,20 @@ if __name__ == '__main__': objFormSlc.setSpacecraftHeight(h) objFormSlc.setFirstLine(5000) objFormSlc.setNumberPatches(1) - objFormSlc.setNumberRangeBin(insar._masterFrame.numberRangeBins) + objFormSlc.setNumberRangeBin(insar._referenceFrame.numberRangeBins) objFormSlc.setLookSide(insar._lookSide) - doppler = copy.deepcopy(insar.masterDoppler) + doppler = copy.deepcopy(insar.referenceDoppler) # doppler.fractionalCentroid = 0.39 doppler.linearTerm = 0. doppler.quadraticTerm = 0. doppler.cubicTerm = 0. - print ("Focusing Master image") + print ("Focusing Reference image") objFormSlc.stdWriter = stdWriter entropy, Amb = objFormSlc(rawImage=objRaw, - orbit=insar.masterOrbit, - frame=insar.masterFrame, - planet=insar.masterFrame.instrument.platform.planet, + orbit=insar.referenceOrbit, + frame=insar.referenceFrame, + planet=insar.referenceFrame.instrument.platform.planet, doppler=doppler, peg=insar.peg) diff --git a/components/stdproc/stdproc/offsetpoly/test/offpoly.py b/components/stdproc/stdproc/offsetpoly/test/offpoly.py index 0d12256..a1c5ff3 100755 --- a/components/stdproc/stdproc/offsetpoly/test/offpoly.py +++ b/components/stdproc/stdproc/offsetpoly/test/offpoly.py @@ -157,8 +157,8 @@ if __name__ == '__main__': iObj = load_pickle() print('Done loading pickle') - width = iObj.getMasterSlcImage().getWidth() - length = iObj.getMasterSlcImage().getLength() + width = iObj.getReferenceSlcImage().getWidth() + length = iObj.getReferenceSlcImage().getLength() print('Image Dimensions: ', length, width) print('Results from numpy code') diff --git a/components/stdproc/stdproc/resamp/__init__.py b/components/stdproc/stdproc/resamp/__init__.py index 2a28f14..88f7f38 100755 --- a/components/stdproc/stdproc/resamp/__init__.py +++ b/components/stdproc/stdproc/resamp/__init__.py @@ -38,4 +38,4 @@ def getFactoriesInfo(): { 'factory':'createResamp' } - } \ No newline at end of file + } diff --git a/components/stdproc/stdproc/resamp_image/__init__.py b/components/stdproc/stdproc/resamp_image/__init__.py index 4ea904c..16c9a85 100755 --- a/components/stdproc/stdproc/resamp_image/__init__.py +++ b/components/stdproc/stdproc/resamp_image/__init__.py @@ -38,4 +38,4 @@ def getFactoriesInfo(): { 'factory':'createResamp_image' } - } \ No newline at end of file + } diff --git a/components/stdproc/stdproc/resamp_slc/src/resamp_slc.f90 b/components/stdproc/stdproc/resamp_slc/src/resamp_slc.f90 index f38e450..05d0c6a 100644 --- a/components/stdproc/stdproc/resamp_slc/src/resamp_slc.f90 +++ b/components/stdproc/stdproc/resamp_slc/src/resamp_slc.f90 @@ -120,7 +120,7 @@ print *, 'Reading in the image' -!c read in the master image +!c read in the reference image if (iscomplex.ne.0) then lineNum = 1 diff --git a/components/stdproc/stdproc/topo/Topo.py b/components/stdproc/stdproc/topo/Topo.py index 2bc78c9..edce1f2 100755 --- a/components/stdproc/stdproc/topo/Topo.py +++ b/components/stdproc/stdproc/topo/Topo.py @@ -1018,8 +1018,8 @@ class Topo(Component): self.logger.error(strerr) raise AttributeError - def addMasterSlc(self): #Piyush - formslc = self._inputPorts.getPort(name='masterslc').getObject() + def addReferenceSlc(self): #Piyush + formslc = self._inputPorts.getPort(name='referenceslc').getObject() if (formslc): try: @@ -1103,7 +1103,7 @@ class Topo(Component): self.inputPorts['planet'] = self.addPlanet self.inputPorts['dem'] = self.addDEM self.inputPorts['interferogram'] = self.addInterferogram - slcPort = Port(name='masterslc', method=self.addMasterSlc) #Piyush + slcPort = Port(name='referenceslc', method=self.addReferenceSlc) #Piyush self.inputPorts.add(slcPort) #Piyush return None diff --git a/components/stdproc/stdproc/topo/__init__.py b/components/stdproc/stdproc/topo/__init__.py index 4097474..6ec0e26 100755 --- a/components/stdproc/stdproc/topo/__init__.py +++ b/components/stdproc/stdproc/topo/__init__.py @@ -38,4 +38,4 @@ def getFactoriesInfo(): { 'factory':'createTopo' } - } \ No newline at end of file + } diff --git a/components/zerodop/GPUampcor/cuda/GPUamp.cu b/components/zerodop/GPUampcor/cuda/GPUamp.cu index 64994e3..07042d3 100644 --- a/components/zerodop/GPUampcor/cuda/GPUamp.cu +++ b/components/zerodop/GPUampcor/cuda/GPUamp.cu @@ -153,13 +153,13 @@ __global__ void prepBlocks(struct StepZeroData s0Data) { * since they're consecutive */ - // Calculate "master" thread number (analogous in this usage to the overall image block number) + // Calculate "reference" thread number (analogous in this usage to the overall image block number) int imgBlock = (blockDim.x * blockIdx.x) + threadIdx.x; // Make sure the image block exists (since we have threads that may be empty due to trying to keep warp-size % THREAD_PER_BLOCK == 0) if (imgBlock < ini[9]) { - // Maintain local copy of pointer to particular block since the master array is linearly-contiguous + // Maintain local copy of pointer to particular block since the reference array is linearly-contiguous cuFloatComplex *refChip = &(s0Data.refBlocks[IDX1D(imgBlock,0,ini[0]*ini[1])]); // Non-zero data in ini[0] x ini[1] cuFloatComplex *schWin = &(s0Data.schBlocks[IDX1D(imgBlock,0,ini[2]*ini[3])]); // Non-zero data in ini[2] x ini[3] cuFloatComplex *padRefChip = &(s0Data.padRefChips[IDX1D(imgBlock,0,ini[6]*ini[7])]); // Non-zero data in ini[0] x ini[1] @@ -245,7 +245,7 @@ __global__ void accumulate(struct StepOneData s1Data) { * Data usage: 100 bytes (9 pointers, 7 floats/ints) - does not factor cuBLAS calls */ - // Master thread number (also the master image block number) + // Reference thread number (also the reference image block number) int block = (blockDim.x * blockIdx.x) + threadIdx.x; // Make sure we're operating on an existing block of data (and not in an empty thread) @@ -396,7 +396,7 @@ __global__ void calcRough(struct StepTwoData s2Data) { * Data usage: 212 bytes (17 pointers, 19 ints) - does not factor cuBLAS calls */ - // Master thread/image block index + // Reference thread/image block index int block = (blockDim.x * blockIdx.x) + threadIdx.x; // Make sure we're operating on an existing block @@ -578,7 +578,7 @@ __global__ void calcFine(struct StepThreeData s3Data) { * Data usage: 72 bytes (7 pointers, 4 ints) - does not factor cuBLAS calls */ - // Master thread/image block index + // Reference thread/image block index int block = (blockDim.x * blockIdx.x) + threadIdx.x; // Make sure we're operating on an existing image block @@ -705,7 +705,7 @@ void runGPUAmpcor(float *h_inpts_flt, int *h_inpts_int, void **refBlocks, void * // To avoid adding an extra layer of complexity to each kernel, the input/output arrays in the // CUDA code will be linearly contiguous in 1D. Each kernel will handle selecting the right starting - // point in the master array to use as the kernel's "copy" of the array (does not actually copy data) + // point in the reference array to use as the kernel's "copy" of the array (does not actually copy data) cuFloatComplex *d_refBlocks, *d_schBlocks; // Device output arrays diff --git a/components/zerodop/GPUampcor/src/Ampcor.cpp b/components/zerodop/GPUampcor/src/Ampcor.cpp index b83269d..411137d 100644 --- a/components/zerodop/GPUampcor/src/Ampcor.cpp +++ b/components/zerodop/GPUampcor/src/Ampcor.cpp @@ -327,7 +327,7 @@ void Ampcor::ampcor() { for (int yy=0; yygetLineBand((char*)cx_read_line, (firstImgLine + yy - 2), imgBands[0]); // Read in a line for (int block=0; blockgetLine((char *)&(imgIn[IDX1D(i,0,inWidth)]), firstImageRow+i); // Sets imgIn[0] == master_image[firstImageRow] + slcInAccObj->getLine((char *)&(imgIn[IDX1D(i,0,inWidth)]), firstImageRow+i); // Sets imgIn[0] == reference_image[firstImageRow] // Remove the carriers using OpenMP acceleration #pragma omp parallel for private(ph) @@ -350,7 +350,7 @@ void ResampSlc::resamp() { // Data chip without the carriers for (int ii=0; ii(cos((ii-4.)*dop), -sin((ii-4.)*dop)); @@ -508,7 +508,7 @@ void ResampSlc::resamp() { // Data chip without the carriers for (int ii=0; ii(cos((ii-4.)*dop), -sin((ii-4.)*dop)); diff --git a/components/zerodop/GPUtopozero/__init__.py b/components/zerodop/GPUtopozero/__init__.py index 5f7ce86..e5a0d9b 100644 --- a/components/zerodop/GPUtopozero/__init__.py +++ b/components/zerodop/GPUtopozero/__init__.py @@ -1 +1 @@ -#!/usr/bin/env python3 \ No newline at end of file +#!/usr/bin/env python3 diff --git a/components/zerodop/GPUtopozero/cuda/gpuTopo.cu b/components/zerodop/GPUtopozero/cuda/gpuTopo.cu index cbe4834..89cb341 100644 --- a/components/zerodop/GPUtopozero/cuda/gpuTopo.cu +++ b/components/zerodop/GPUtopozero/cuda/gpuTopo.cu @@ -562,7 +562,7 @@ __global__ void runTopo(struct Orbit orbit, struct OutputImgArrs outImgArrs, str // Leave out masking stuff for now (though it's doable) - // Finally write to master arrays + // Finally write to reference arrays outImgArrs.lat[pixel] = thrd_lat; outImgArrs.lon[pixel] = thrd_lon; outImgArrs.z[pixel] = thrd_z; diff --git a/components/zerodop/GPUtopozero/test_script/gpu-topo.py b/components/zerodop/GPUtopozero/test_script/gpu-topo.py index f2cec49..2bcd882 100755 --- a/components/zerodop/GPUtopozero/test_script/gpu-topo.py +++ b/components/zerodop/GPUtopozero/test_script/gpu-topo.py @@ -26,8 +26,8 @@ def cmdLineParse(): help = 'Number of range looks') parser.add_argument('-d', '--dem', dest='dem', type=str, required=True, help = 'Input DEM to use') - parser.add_argument('-m', '--master', dest='master', type=str, required=True, - help = 'Dir with master frame') + parser.add_argument('-m', '--reference', dest='reference', type=str, required=True, + help = 'Dir with reference frame') parser.add_argument('-o', '--output', dest='outdir', type=str, required=True, help = 'Output directory') parser.add_argument('-n','--native', dest='nativedop', action='store_true', @@ -382,10 +382,10 @@ if __name__ == '__main__': if (inps.sntl1a): pm = ProductManager() pm.configure() - frame = pm.loadProduct(inps.master) + frame = pm.loadProduct(inps.reference) doppler = [0.] else: - db = shelve.open(os.path.join(inps.master, 'data')) + db = shelve.open(os.path.join(inps.reference, 'data')) frame = db['frame'] try: diff --git a/components/zerodop/__init__.py b/components/zerodop/__init__.py index 5f7ce86..e5a0d9b 100644 --- a/components/zerodop/__init__.py +++ b/components/zerodop/__init__.py @@ -1 +1 @@ -#!/usr/bin/env python3 \ No newline at end of file +#!/usr/bin/env python3 diff --git a/components/zerodop/baseline/Baseline.py b/components/zerodop/baseline/Baseline.py index 8b2b7b0..d160b0d 100755 --- a/components/zerodop/baseline/Baseline.py +++ b/components/zerodop/baseline/Baseline.py @@ -39,7 +39,7 @@ BASELINE_LOCATION = Component.Parameter('baselineLocation', default = 'all', type=str, mandatory=False, - doc = 'Location at which to compute baselines - "all" implies top, middle, bottom of master image, "top" implies near start of master image, "bottom" implies at bottom of master image, "middle" implies near middle of master image. To be used in case there is a large shift between images.') + doc = 'Location at which to compute baselines - "all" implies top, middle, bottom of reference image, "top" implies near start of reference image, "bottom" implies at bottom of reference image, "middle" implies near middle of reference image. To be used in case there is a large shift between images.') @@ -64,17 +64,17 @@ class Baseline(Component): if self.baselineLocation.lower() == 'all': print('Using entire span of image for estimating baselines') - masterTime = [self.masterFrame.getSensingStart(),self.masterFrame.getSensingMid(),self.masterFrame.getSensingStop()] + referenceTime = [self.referenceFrame.getSensingStart(),self.referenceFrame.getSensingMid(),self.referenceFrame.getSensingStop()] elif self.baselineLocation.lower() == 'middle': - print('Estimating baselines around center of master image') - masterTime = [self.masterFrame.getSensingMid() - datetime.timedelta(seconds=1.0), self.masterFrame.getSensingMid(), self.masterFrame.getSensingMid() + datetime.timedelta(seconds=1.0)] + print('Estimating baselines around center of reference image') + referenceTime = [self.referenceFrame.getSensingMid() - datetime.timedelta(seconds=1.0), self.referenceFrame.getSensingMid(), self.referenceFrame.getSensingMid() + datetime.timedelta(seconds=1.0)] elif self.baselineLocation.lower() == 'top': - print('Estimating baselines at top of master image') - masterTime = [self.masterFrame.getSensingStart(), self.masterFrame.getSensingStart() + datetime.timedelta(seconds=1.0), self.masterFrame.getSensingStart() + datetime.timedelta(seconds=2.0)] + print('Estimating baselines at top of reference image') + referenceTime = [self.referenceFrame.getSensingStart(), self.referenceFrame.getSensingStart() + datetime.timedelta(seconds=1.0), self.referenceFrame.getSensingStart() + datetime.timedelta(seconds=2.0)] elif self.baselineLocation.lower() == 'bottom': - print('Estimating baselines at bottom of master image') - masterTime = [self.masterFrame.getSensingStop() - datetime.timedelta(seconds=2.0), self.masterFrame.getSensingStop() - datetime.timedelta(seconds=1.0), self.masterFrame.getSensingStop()] + print('Estimating baselines at bottom of reference image') + referenceTime = [self.referenceFrame.getSensingStop() - datetime.timedelta(seconds=2.0), self.referenceFrame.getSensingStop() - datetime.timedelta(seconds=1.0), self.referenceFrame.getSensingStop()] else: raise Exception('Unknown baseline location: {0}'.format(self.baselineLocation)) @@ -89,20 +89,20 @@ class Baseline(Component): # Calculate the Baseline at the start of the scene, mid-scene, and the end of the scene # First, get the position and velocity at the start of the scene # Calculate the distance moved since the last baseline point - s[i] = (masterTime[i] - masterTime[0]).total_seconds() + s[i] = (referenceTime[i] - referenceTime[0]).total_seconds() - masterSV = self.masterOrbit.interpolateOrbit(masterTime[i], method='hermite') + referenceSV = self.referenceOrbit.interpolateOrbit(referenceTime[i], method='hermite') rng = self.startingRange1 - target = self.masterOrbit.pointOnGround(masterTime[i], rng, side=self.masterFrame.getInstrument().getPlatform().pointingDirection) + target = self.referenceOrbit.pointOnGround(referenceTime[i], rng, side=self.referenceFrame.getInstrument().getPlatform().pointingDirection) - slaveTime, slvrng = self.slaveOrbit.geo2rdr(target) - slaveSV = self.slaveOrbit.interpolateOrbit(slaveTime, method='hermite') + secondaryTime, slvrng = self.secondaryOrbit.geo2rdr(target) + secondarySV = self.secondaryOrbit.interpolateOrbit(secondaryTime, method='hermite') targxyz = np.array(refElp.LLH(target[0], target[1], target[2]).ecef().tolist()) - mxyz = np.array(masterSV.getPosition()) - mvel = np.array(masterSV.getVelocity()) - sxyz = np.array(slaveSV.getPosition()) + mxyz = np.array(referenceSV.getPosition()) + mvel = np.array(referenceSV.getVelocity()) + sxyz = np.array(secondarySV.getPosition()) mvelunit = mvel / np.linalg.norm(mvel) sxyz = sxyz - np.dot ( sxyz-mxyz, mvelunit) * mvelunit @@ -118,7 +118,7 @@ class Baseline(Component): bperp.append(direction*perp) ####Azimuth offset - slvaz = (slaveTime - self.slaveFrame.sensingStart).total_seconds() * self.prf2 + slvaz = (secondaryTime - self.secondaryFrame.sensingStart).total_seconds() * self.prf2 masaz = s[i] * self.prf1 azoff.append(slvaz - masaz) @@ -143,37 +143,37 @@ class Baseline(Component): self.BperpRate = perpBaselinePolynomialCoefficients[1] self.BperpAcc = perpBaselinePolynomialCoefficients[0] - delta = (self.masterFrame.getSensingStart() - masterTime[0]).total_seconds() + delta = (self.referenceFrame.getSensingStart() - referenceTime[0]).total_seconds() self.BparTop = np.polyval(parBaselinePolynomialCoefficients, delta) self.BperpTop = np.polyval(perpBaselinePolynomialCoefficients, delta) - delta = (self.masterFrame.getSensingStop() - masterTime[0]).total_seconds() + delta = (self.referenceFrame.getSensingStop() - referenceTime[0]).total_seconds() self.BparBottom = np.polyval(parBaselinePolynomialCoefficients, delta) self.BperpBottom = np.polyval(perpBaselinePolynomialCoefficients, delta) return azoff, rgoff - def setMasterRangePixelSize(self,pixelSize): + def setReferenceRangePixelSize(self,pixelSize): self.rangePixelSize1 = pixelSize return - def setSlaveRangePixelSize(self,pixelSize): + def setSecondaryRangePixelSize(self,pixelSize): self.rangePixelSize2 = pixelSize return - def setMasterStartingRange(self,range): + def setReferenceStartingRange(self,range): self.startingRange1 = range return - def setSlaveStartingRange(self,range): + def setSecondaryStartingRange(self,range): self.startingRange2 = range return - def setMasterPRF(self,prf): + def setReferencePRF(self,prf): self.prf1 = prf return - def setSlavePRF(self,prf): + def setSecondaryPRF(self,prf): self.prf2 = prf return @@ -204,28 +204,28 @@ class Baseline(Component): - def addMasterFrame(self): - frame = self._inputPorts.getPort(name='masterFrame').getObject() + def addReferenceFrame(self): + frame = self._inputPorts.getPort(name='referenceFrame').getObject() self.startingRange1 = frame.getStartingRange() self.prf1 = frame.getInstrument().getPulseRepetitionFrequency() self.rangePixelSize1 = frame.getInstrument().getRangePixelSize() - self.masterOrbit = frame.getOrbit() - self.masterFrame = frame + self.referenceOrbit = frame.getOrbit() + self.referenceFrame = frame - def addSlaveFrame(self): - frame = self._inputPorts.getPort(name='slaveFrame').getObject() + def addSecondaryFrame(self): + frame = self._inputPorts.getPort(name='secondaryFrame').getObject() self.startingRange2 = frame.getStartingRange() - self.slaveOrbit = frame.getOrbit() + self.secondaryOrbit = frame.getOrbit() self.prf2 = frame.getInstrument().getPulseRepetitionFrequency() self.rangePixelSize2 = frame.getInstrument().getRangePixelSize() - self.slaveFrame = frame + self.secondaryFrame = frame def __init__(self, name=''): super(Baseline, self).__init__(family=self.__class__.family, name=name) - self.masterOrbit = None - self.slaveOrbit = None - self.masterFrame = None - self.slaveFrame = None + self.referenceOrbit = None + self.secondaryOrbit = None + self.referenceFrame = None + self.secondaryFrame = None self.rangePixelSize1 = None self.rangePixelSize2 = None self.startingRange1 = None @@ -262,10 +262,10 @@ class Baseline(Component): # These provide the orbits # These provide the range and azimuth pixel sizes, starting ranges, # satellite heights and times for the first lines - masterFramePort = Port(name='masterFrame',method=self.addMasterFrame) - slaveFramePort = Port(name='slaveFrame',method=self.addSlaveFrame) - self._inputPorts.add(masterFramePort) - self._inputPorts.add(slaveFramePort) + referenceFramePort = Port(name='referenceFrame',method=self.addReferenceFrame) + secondaryFramePort = Port(name='secondaryFrame',method=self.addSecondaryFrame) + self._inputPorts.add(referenceFramePort) + self._inputPorts.add(secondaryFramePort) return None diff --git a/components/zerodop/geozero/Geozero.py b/components/zerodop/geozero/Geozero.py index cebd374..81f1172 100755 --- a/components/zerodop/geozero/Geozero.py +++ b/components/zerodop/geozero/Geozero.py @@ -498,8 +498,8 @@ class Geocode(Component): self.logger.error(strerr) raise AttributeError - def addMasterSlc(self): #Piyush - formslc = self._inputPorts.getPort(name='masterslc').getObject() + def addReferenceSlc(self): #Piyush + formslc = self._inputPorts.getPort(name='referenceslc').getObject() if(formslc): try: self.rangeFirstSample = formslc.startingRange @@ -619,7 +619,7 @@ class Geocode(Component): planetPort = Port(name='planet', method=self.addPlanet) demPort = Port(name='dem',method=self.addDem) ifgPort = Port(name='tobegeocoded',method=self.addRadarImage) - slcPort = Port(name='masterslc',method=self.addMasterSlc) #Piyush + slcPort = Port(name='referenceslc',method=self.addReferenceSlc) #Piyush self._inputPorts.add(framePort) self._inputPorts.add(planetPort) diff --git a/contrib/PyCuAmpcor/__init__.py b/contrib/PyCuAmpcor/__init__.py index fef66b5..4265cc3 100644 --- a/contrib/PyCuAmpcor/__init__.py +++ b/contrib/PyCuAmpcor/__init__.py @@ -1 +1 @@ -#!/usr/bin/env python \ No newline at end of file +#!/usr/bin/env python diff --git a/contrib/PyCuAmpcor/examples/GeoTiffSample.py b/contrib/PyCuAmpcor/examples/GeoTiffSample.py index a700524..9acbffc 100644 --- a/contrib/PyCuAmpcor/examples/GeoTiffSample.py +++ b/contrib/PyCuAmpcor/examples/GeoTiffSample.py @@ -19,12 +19,12 @@ def main(): objOffset.algorithm = 0 # cross-correlation method 0=freq 1=time objOffset.deviceID = 0 # GPU device id to be used objOffset.nStreams = 2 # cudaStreams; multiple streams to overlap data transfer with gpu calculations - objOffset.masterImageName = "master.tif" - objOffset.masterImageHeight = 16480 # RasterYSize - objOffset.masterImageWidth = 17000 # RasterXSize - objOffset.slaveImageName = "slave.tif" - objOffset.slaveImageHeight = 16480 - objOffset.slaveImageWidth = 17000 + objOffset.referenceImageName = "reference.tif" + objOffset.referenceImageHeight = 16480 # RasterYSize + objOffset.referenceImageWidth = 17000 # RasterXSize + objOffset.secondaryImageName = "secondary.tif" + objOffset.secondaryImageHeight = 16480 + objOffset.secondaryImageWidth = 17000 objOffset.windowSizeWidth = 64 # template window size objOffset.windowSizeHeight = 64 objOffset.halfSearchRangeDown = 20 # search range @@ -48,13 +48,13 @@ def main(): objOffset.numberWindowAcross = 100 # if to process the whole image; some math needs to be done # margin = 0 # margins to be neglected - #objOffset.numberWindowDown = (objOffset.slaveImageHeight - 2*margin - 2*objOffset.halfSearchRangeDown - objOffset.windowSizeHeight) // objOffset.skipSampleDown - #objOffset.numberWindowAcross = (objOffset.slaveImageWidth - 2*margin - 2*objOffset.halfSearchRangeAcross - objOffset.windowSizeWidth) // objOffset.skipSampleAcross + #objOffset.numberWindowDown = (objOffset.secondaryImageHeight - 2*margin - 2*objOffset.halfSearchRangeDown - objOffset.windowSizeHeight) // objOffset.skipSampleDown + #objOffset.numberWindowAcross = (objOffset.secondaryImageWidth - 2*margin - 2*objOffset.halfSearchRangeAcross - objOffset.windowSizeWidth) // objOffset.skipSampleAcross objOffset.setupParams() - objOffset.masterStartPixelDownStatic = objOffset.halfSearchRangeDown # starting pixel offset - objOffset.masterStartPixelAcrossStatic = objOffset.halfSearchRangeDown - objOffset.setConstantGrossOffset(0, 0) # gross offset between master and slave images + objOffset.referenceStartPixelDownStatic = objOffset.halfSearchRangeDown # starting pixel offset + objOffset.referenceStartPixelAcrossStatic = objOffset.halfSearchRangeDown + objOffset.setConstantGrossOffset(0, 0) # gross offset between reference and secondary images objOffset.checkPixelInImageRange() # check whether there is something wrong with objOffset.runAmpcor() diff --git a/contrib/PyCuAmpcor/examples/cuDenseOffsets.py b/contrib/PyCuAmpcor/examples/cuDenseOffsets.py index 1495047..39cca71 100755 --- a/contrib/PyCuAmpcor/examples/cuDenseOffsets.py +++ b/contrib/PyCuAmpcor/examples/cuDenseOffsets.py @@ -17,18 +17,18 @@ def createParser(): ''' parser = argparse.ArgumentParser( description='Generate offset field between two Sentinel slc') - parser.add_argument('-m','--master', type=str, dest='master', required=True, - help='Master image') - parser.add_argument('-s', '--slave',type=str, dest='slave', required=True, - help='Slave image') + parser.add_argument('-m','--reference', type=str, dest='reference', required=True, + help='Reference image') + parser.add_argument('-s', '--secondary',type=str, dest='secondary', required=True, + help='Secondary image') parser.add_argument('-l', '--lat',type=str, dest='lat', required=False, help='Latitude') parser.add_argument('-L', '--lon',type=str, dest='lon', required=False, help='Longitude') parser.add_argument('--los',type=str, dest='los', required=False, help='Line of Sight') - parser.add_argument('--masterxml',type=str, dest='masterxml', required=False, - help='Master Image Xml File') + parser.add_argument('--referencexml',type=str, dest='referencexml', required=False, + help='Reference Image Xml File') parser.add_argument('--ww', type=int, dest='winwidth', default=64, help='Window Width') parser.add_argument('--wh', type=int, dest='winhgt', default=64, @@ -90,20 +90,20 @@ def cmdLineParse(iargs = None): return inps @use_api -def estimateOffsetField(master, slave, inps=None): +def estimateOffsetField(reference, secondary, inps=None): import pathlib - ###Loading the slave image object + ###Loading the secondary image object sim = isceobj.createSlcImage() - sim.load(pathlib.Path(slave).with_suffix('.xml')) + sim.load(pathlib.Path(secondary).with_suffix('.xml')) sim.setAccessMode('READ') sim.createImage() - ###Loading the master image object + ###Loading the reference image object sar = isceobj.createSlcImage() - sar.load(pathlib.Path(master).with_suffix('.xml')) + sar.load(pathlib.Path(reference).with_suffix('.xml')) sar.setAccessMode('READ') sar.createImage() @@ -117,12 +117,12 @@ def estimateOffsetField(master, slave, inps=None): objOffset.nStreams = 1 #cudaStreams objOffset.derampMethod = inps.deramp - objOffset.masterImageName = master - objOffset.masterImageHeight = length - objOffset.masterImageWidth = width - objOffset.slaveImageName = slave - objOffset.slaveImageHeight = length - objOffset.slaveImageWidth = width + objOffset.referenceImageName = reference + objOffset.referenceImageHeight = length + objOffset.referenceImageWidth = width + objOffset.secondaryImageName = secondary + objOffset.secondaryImageHeight = length + objOffset.secondaryImageWidth = width print("image length:",length) print("image width:",width) @@ -148,8 +148,8 @@ def estimateOffsetField(master, slave, inps=None): objOffset.halfSearchRangeAcross = inps.srcwidth # starting pixel - objOffset.masterStartPixelDownStatic = inps.margin - objOffset.masterStartPixelAcrossStatic = inps.margin + objOffset.referenceStartPixelDownStatic = inps.margin + objOffset.referenceStartPixelAcrossStatic = inps.margin # skip size objOffset.skipSampleDown = inps.skiphgt @@ -267,7 +267,7 @@ def main(iargs=None): if not os.path.exists(outDir): os.makedirs(outDir) - estimateOffsetField(inps.master, inps.slave, inps) + estimateOffsetField(inps.reference, inps.secondary, inps) if __name__ == '__main__': diff --git a/contrib/PyCuAmpcor/examples/glacierSample.py b/contrib/PyCuAmpcor/examples/glacierSample.py index 8946512..3e24a6d 100644 --- a/contrib/PyCuAmpcor/examples/glacierSample.py +++ b/contrib/PyCuAmpcor/examples/glacierSample.py @@ -20,12 +20,12 @@ def main(): objOffset.algorithm = 0 objOffset.deviceID = 0 # -1:let system find the best GPU objOffset.nStreams = 2 #cudaStreams - objOffset.masterImageName = "20131213.slc.vrt" - objOffset.masterImageHeight = 43008 - objOffset.masterImageWidth = 24320 - objOffset.slaveImageName = "20131221.slc.vrt" - objOffset.slaveImageHeight = 43008 - objOffset.slaveImageWidth = 24320 + objOffset.referenceImageName = "20131213.slc.vrt" + objOffset.referenceImageHeight = 43008 + objOffset.referenceImageWidth = 24320 + objOffset.secondaryImageName = "20131221.slc.vrt" + objOffset.secondaryImageHeight = 43008 + objOffset.secondaryImageWidth = 24320 objOffset.windowSizeWidth = 64 objOffset.windowSizeHeight = 64 objOffset.halfSearchRangeDown = 20 @@ -44,8 +44,8 @@ def main(): objOffset.mmapSize = 8 objOffset.setupParams() - objOffset.masterStartPixelDownStatic = 1000 - objOffset.masterStartPixelAcrossStatic = 1000 + objOffset.referenceStartPixelDownStatic = 1000 + objOffset.referenceStartPixelAcrossStatic = 1000 objOffset.setConstantGrossOffset(642, -30) objOffset.checkPixelInImageRange() objOffset.runAmpcor() diff --git a/contrib/PyCuAmpcor/examples/varyGrossOffsetSample.py b/contrib/PyCuAmpcor/examples/varyGrossOffsetSample.py index 6feeb89..5d2f3c9 100644 --- a/contrib/PyCuAmpcor/examples/varyGrossOffsetSample.py +++ b/contrib/PyCuAmpcor/examples/varyGrossOffsetSample.py @@ -11,12 +11,12 @@ def main(): objOffset = PyCuAmpcor() #step 1 set constant parameters - objOffset.masterImageName = "master.slc.vrt" - objOffset.masterImageHeight = 128 - objOffset.masterImageWidth = 128 - objOffset.slaveImageName = "slave.slc.vrt" - objOffset.masterImageHeight = 128 - objOffset.masterImageWidth = 128 + objOffset.referenceImageName = "reference.slc.vrt" + objOffset.referenceImageHeight = 128 + objOffset.referenceImageWidth = 128 + objOffset.secondaryImageName = "secondary.slc.vrt" + objOffset.referenceImageHeight = 128 + objOffset.referenceImageWidth = 128 objOffset.skipSampleDown = 2 objOffset.skipSampleAcross = 2 objOffset.windowSizeHeight = 16 @@ -31,8 +31,8 @@ def main(): objOffset.setupParams() #3 set gross offsets: constant or varying - objOffset.masterStartPixelDownStatic = objOffset.halfSearchRangeDown - objOffset.masterStartPixelAcrossStatic = objOffset.halfSearchRangeAcross + objOffset.referenceStartPixelDownStatic = objOffset.halfSearchRangeDown + objOffset.referenceStartPixelAcrossStatic = objOffset.halfSearchRangeAcross vD = np.random.randint(0, 10, size =objOffset.numberWindows, dtype=np.int32) vA = np.random.randint(0, 1, size = objOffset.numberWindows, dtype=np.int32) objOffset.setVaryingGrossOffset(vD, vA) diff --git a/contrib/PyCuAmpcor/src/PyCuAmpcor.pyx b/contrib/PyCuAmpcor/src/PyCuAmpcor.pyx index 857966d..9864551 100644 --- a/contrib/PyCuAmpcor/src/PyCuAmpcor.pyx +++ b/contrib/PyCuAmpcor/src/PyCuAmpcor.pyx @@ -50,17 +50,17 @@ cdef extern from "cuAmpcorParameter.h": float thresholdSNR ## Threshold of Signal noise ratio to remove noisy data - ##master image - string masterImageName ## master SLC image name - int imageDataType1 ## master image data type, 2=cfloat=complex=float2 1=float - int masterImageHeight ## master image height - int masterImageWidth ## master image width + ##reference image + string referenceImageName ## reference SLC image name + int imageDataType1 ## reference image data type, 2=cfloat=complex=float2 1=float + int referenceImageHeight ## reference image height + int referenceImageWidth ## reference image width - ##slave image - string slaveImageName ## slave SLC image name - int imageDataType2 ## slave image data type, 2=cfloat=complex=float2 1=float - int slaveImageHeight ## slave image height - int slaveImageWidth ## slave image width + ##secondary image + string secondaryImageName ## secondary SLC image name + int imageDataType2 ## secondary image data type, 2=cfloat=complex=float2 1=float + int secondaryImageHeight ## secondary image height + int secondaryImageWidth ## secondary image width int useMmap ## whether to use mmap int mmapSizeInGB ## mmap buffer size in unit of Gigabytes (if not mmmap, the buffer size) @@ -78,28 +78,28 @@ cdef extern from "cuAmpcorParameter.h": int numberChunkAcross ## number of chunks (across) int numberChunks - int *masterStartPixelDown ## master starting pixels for each window (down) - int *masterStartPixelAcross ## master starting pixels for each window (across) - int *slaveStartPixelDown ## slave starting pixels for each window (down) - int *slaveStartPixelAcross ## slave starting pixels for each window (across) - int *grossOffsetDown ## Gross offsets between master and slave windows (down) : slaveStartPixel - masterStartPixel - int *grossOffsetAcross ## Gross offsets between master and slave windows (across) + int *referenceStartPixelDown ## reference starting pixels for each window (down) + int *referenceStartPixelAcross ## reference starting pixels for each window (across) + int *secondaryStartPixelDown ## secondary starting pixels for each window (down) + int *secondaryStartPixelAcross ## secondary starting pixels for each window (across) + int *grossOffsetDown ## Gross offsets between reference and secondary windows (down) : secondaryStartPixel - referenceStartPixel + int *grossOffsetAcross ## Gross offsets between reference and secondary windows (across) int grossOffsetDown0 ## constant gross offset (down) int grossOffsetAcross0 ## constant gross offset (across) - int masterStartPixelDown0 ## the first pixel of master image (down), be adjusted with margins and gross offset - int masterStartPixelAcross0 ## the first pixel of master image (across) - int *masterChunkStartPixelDown ## array of starting pixels for all master chunks (down) - int *masterChunkStartPixelAcross ## array of starting pixels for all master chunks (across) - int *slaveChunkStartPixelDown ## array of starting pixels for all slave chunks (down) - int *slaveChunkStartPixelAcross ## array of starting pixels for all slave chunks (across) - int *masterChunkHeight ## array of heights of all master chunks, required when loading chunk to GPU - int *masterChunkWidth ## array of width of all master chunks - int *slaveChunkHeight ## array of width of all master chunks - int *slaveChunkWidth ## array of width of all slave chunks - int maxMasterChunkHeight ## max height for all master/slave chunks, determine the size of reading cache in GPU - int maxMasterChunkWidth ## max width for all master chunks, determine the size of reading cache in GPU - int maxSlaveChunkHeight - int maxSlaveChunkWidth + int referenceStartPixelDown0 ## the first pixel of reference image (down), be adjusted with margins and gross offset + int referenceStartPixelAcross0 ## the first pixel of reference image (across) + int *referenceChunkStartPixelDown ## array of starting pixels for all reference chunks (down) + int *referenceChunkStartPixelAcross ## array of starting pixels for all reference chunks (across) + int *secondaryChunkStartPixelDown ## array of starting pixels for all secondary chunks (down) + int *secondaryChunkStartPixelAcross ## array of starting pixels for all secondary chunks (across) + int *referenceChunkHeight ## array of heights of all reference chunks, required when loading chunk to GPU + int *referenceChunkWidth ## array of width of all reference chunks + int *secondaryChunkHeight ## array of width of all reference chunks + int *secondaryChunkWidth ## array of width of all secondary chunks + int maxReferenceChunkHeight ## max height for all reference/secondary chunks, determine the size of reading cache in GPU + int maxReferenceChunkWidth ## max width for all reference chunks, determine the size of reading cache in GPU + int maxSecondaryChunkHeight + int maxSecondaryChunkWidth string grossOffsetImageName string offsetImageName ## Output Offset fields filename @@ -238,47 +238,47 @@ cdef class PyCuAmpcor(object): def corrSufaceOverSamplingMethod(self, int a): self.c_cuAmpcor.param.oversamplingMethod = a @property - def masterImageName(self): - return self.c_cuAmpcor.param.masterImageName - @masterImageName.setter - def masterImageName(self, str a): - self.c_cuAmpcor.param.masterImageName = a.encode() + def referenceImageName(self): + return self.c_cuAmpcor.param.referenceImageName + @referenceImageName.setter + def referenceImageName(self, str a): + self.c_cuAmpcor.param.referenceImageName = a.encode() @property - def slaveImageName(self): - return self.c_cuAmpcor.param.slaveImageName - @slaveImageName.setter - def slaveImageName(self, str a): - self.c_cuAmpcor.param.slaveImageName = a.encode() + def secondaryImageName(self): + return self.c_cuAmpcor.param.secondaryImageName + @secondaryImageName.setter + def secondaryImageName(self, str a): + self.c_cuAmpcor.param.secondaryImageName = a.encode() @property - def masterImageName(self): - return self.c_cuAmpcor.param.masterImageName - @masterImageName.setter - def masterImageName(self, str a): - self.c_cuAmpcor.param.masterImageName = a.encode() + def referenceImageName(self): + return self.c_cuAmpcor.param.referenceImageName + @referenceImageName.setter + def referenceImageName(self, str a): + self.c_cuAmpcor.param.referenceImageName = a.encode() @property - def masterImageHeight(self): - return self.c_cuAmpcor.param.masterImageHeight - @masterImageHeight.setter - def masterImageHeight(self, int a): - self.c_cuAmpcor.param.masterImageHeight=a + def referenceImageHeight(self): + return self.c_cuAmpcor.param.referenceImageHeight + @referenceImageHeight.setter + def referenceImageHeight(self, int a): + self.c_cuAmpcor.param.referenceImageHeight=a @property - def masterImageWidth(self): - return self.c_cuAmpcor.param.masterImageWidth - @masterImageWidth.setter - def masterImageWidth(self, int a): - self.c_cuAmpcor.param.masterImageWidth=a + def referenceImageWidth(self): + return self.c_cuAmpcor.param.referenceImageWidth + @referenceImageWidth.setter + def referenceImageWidth(self, int a): + self.c_cuAmpcor.param.referenceImageWidth=a @property - def slaveImageHeight(self): - return self.c_cuAmpcor.param.slaveImageHeight - @slaveImageHeight.setter - def slaveImageHeight(self, int a): - self.c_cuAmpcor.param.slaveImageHeight=a + def secondaryImageHeight(self): + return self.c_cuAmpcor.param.secondaryImageHeight + @secondaryImageHeight.setter + def secondaryImageHeight(self, int a): + self.c_cuAmpcor.param.secondaryImageHeight=a @property - def slaveImageWidth(self): - return self.c_cuAmpcor.param.slaveImageWidth - @slaveImageWidth.setter - def slaveImageWidth(self, int a): - self.c_cuAmpcor.param.slaveImageWidth=a + def secondaryImageWidth(self): + return self.c_cuAmpcor.param.secondaryImageWidth + @secondaryImageWidth.setter + def secondaryImageWidth(self, int a): + self.c_cuAmpcor.param.secondaryImageWidth=a @property def numberWindowDown(self): @@ -348,17 +348,17 @@ cdef class PyCuAmpcor(object): self.c_cuAmpcor.param.covImageName = a.encode() @property - def masterStartPixelDownStatic(self): - return self.c_cuAmpcor.param.masterStartPixelDown0 - @masterStartPixelDownStatic.setter - def masterStartPixelDownStatic(self, int a): - self.c_cuAmpcor.param.masterStartPixelDown0 = a + def referenceStartPixelDownStatic(self): + return self.c_cuAmpcor.param.referenceStartPixelDown0 + @referenceStartPixelDownStatic.setter + def referenceStartPixelDownStatic(self, int a): + self.c_cuAmpcor.param.referenceStartPixelDown0 = a @property - def masterStartPixelAcrossStatic(self): - return self.c_cuAmpcor.param.masterStartPixelAcross0 - @masterStartPixelAcrossStatic.setter - def masterStartPixelAcrossStatic(self, int a): - self.c_cuAmpcor.param.masterStartPixelAcross0 = a + def referenceStartPixelAcrossStatic(self): + return self.c_cuAmpcor.param.referenceStartPixelAcross0 + @referenceStartPixelAcrossStatic.setter + def referenceStartPixelAcrossStatic(self, int a): + self.c_cuAmpcor.param.referenceStartPixelAcross0 = a @property def grossOffsetDownStatic(self): return self.c_cuAmpcor.param.grossOffsetDown0 @@ -413,7 +413,7 @@ cdef class PyCuAmpcor(object): param goDown gross offset in azimuth direction param goAcross gross offset in range direction """ - self.c_cuAmpcor.param.setStartPixels(self.masterStartPixelDownStatic, self.masterStartPixelAcrossStatic, goDown, goAcross) + self.c_cuAmpcor.param.setStartPixels(self.referenceStartPixelDownStatic, self.referenceStartPixelAcrossStatic, goDown, goAcross) def setVaryingGrossOffset(self, np.ndarray[np.int32_t,ndim=1,mode="c"] vD, np.ndarray[np.int32_t,ndim=1,mode="c"] vA): """ @@ -422,7 +422,7 @@ cdef class PyCuAmpcor(object): param vA numpy 1d array of size numberWindows, gross offsets in azimuth direction static part should be included """ - self.c_cuAmpcor.param.setStartPixels(self.masterStartPixelDownStatic, self.masterStartPixelAcrossStatic, vD.data, vA.data) + self.c_cuAmpcor.param.setStartPixels(self.referenceStartPixelDownStatic, self.referenceStartPixelAcrossStatic, vD.data, vA.data) def checkPixelInImageRange(self): """ check whether each window is with image range """ diff --git a/contrib/PyCuAmpcor/src/cuAmpcorChunk.cu b/contrib/PyCuAmpcor/src/cuAmpcorChunk.cu index ef911e7..f1e1e8c 100644 --- a/contrib/PyCuAmpcor/src/cuAmpcorChunk.cu +++ b/contrib/PyCuAmpcor/src/cuAmpcorChunk.cu @@ -11,28 +11,28 @@ void cuAmpcorChunk::run(int idxDown_, int idxAcross_) // set chunk index setIndex(idxDown_, idxAcross_); - // load master image chunk - loadMasterChunk(); + // load reference image chunk + loadReferenceChunk(); - //std::cout << "load master chunk ok\n"; + //std::cout << "load reference chunk ok\n"; - cuArraysAbs(c_masterBatchRaw, r_masterBatchRaw, stream); - cuArraysSubtractMean(r_masterBatchRaw, stream); - // load slave image chunk - loadSlaveChunk(); - cuArraysAbs(c_slaveBatchRaw, r_slaveBatchRaw, stream); + cuArraysAbs(c_referenceBatchRaw, r_referenceBatchRaw, stream); + cuArraysSubtractMean(r_referenceBatchRaw, stream); + // load secondary image chunk + loadSecondaryChunk(); + cuArraysAbs(c_secondaryBatchRaw, r_secondaryBatchRaw, stream); - //std::cout << "load slave chunk ok\n"; + //std::cout << "load secondary chunk ok\n"; //cross correlation for none-oversampled data if(param->algorithm == 0) { - cuCorrFreqDomain->execute(r_masterBatchRaw, r_slaveBatchRaw, r_corrBatchRaw); + cuCorrFreqDomain->execute(r_referenceBatchRaw, r_secondaryBatchRaw, r_corrBatchRaw); } else { - cuCorrTimeDomain(r_masterBatchRaw, r_slaveBatchRaw, r_corrBatchRaw, stream); //time domain cross correlation + cuCorrTimeDomain(r_referenceBatchRaw, r_secondaryBatchRaw, r_corrBatchRaw, stream); //time domain cross correlation } - cuCorrNormalize(r_masterBatchRaw, r_slaveBatchRaw, r_corrBatchRaw, stream); + cuCorrNormalize(r_referenceBatchRaw, r_secondaryBatchRaw, r_corrBatchRaw, stream); // find the maximum location of none-oversampled correlation @@ -64,39 +64,39 @@ void cuAmpcorChunk::run(int idxDown_, int idxAcross_) // Variance // cuEstimateVariance(r_corrBatchRaw, offsetInit, r_maxval, r_covValue, stream); - // Using the approximate estimation to adjust slave image (half search window size becomes only 4 pixels) + // Using the approximate estimation to adjust secondary image (half search window size becomes only 4 pixels) //offsetInit->debuginfo(stream); - // determine the starting pixel to extract slave images around the max location - cuDetermineSlaveExtractOffset(offsetInit, + // determine the starting pixel to extract secondary images around the max location + cuDetermineSecondaryExtractOffset(offsetInit, param->halfSearchRangeDownRaw, // old range param->halfSearchRangeAcrossRaw, param->halfZoomWindowSizeRaw, // new range param->halfZoomWindowSizeRaw, stream); //offsetInit->debuginfo(stream); - // oversample master + // oversample reference // (deramping now included in oversampler) - masterBatchOverSampler->execute(c_masterBatchRaw, c_masterBatchOverSampled, param->derampMethod); - cuArraysAbs(c_masterBatchOverSampled, r_masterBatchOverSampled, stream); - cuArraysSubtractMean(r_masterBatchOverSampled, stream); + referenceBatchOverSampler->execute(c_referenceBatchRaw, c_referenceBatchOverSampled, param->derampMethod); + cuArraysAbs(c_referenceBatchOverSampled, r_referenceBatchOverSampled, stream); + cuArraysSubtractMean(r_referenceBatchOverSampled, stream); - // extract slave and oversample - cuArraysCopyExtract(c_slaveBatchRaw, c_slaveBatchZoomIn, offsetInit, stream); - slaveBatchOverSampler->execute(c_slaveBatchZoomIn, c_slaveBatchOverSampled, param->derampMethod); - cuArraysAbs(c_slaveBatchOverSampled, r_slaveBatchOverSampled, stream); + // extract secondary and oversample + cuArraysCopyExtract(c_secondaryBatchRaw, c_secondaryBatchZoomIn, offsetInit, stream); + secondaryBatchOverSampler->execute(c_secondaryBatchZoomIn, c_secondaryBatchOverSampled, param->derampMethod); + cuArraysAbs(c_secondaryBatchOverSampled, r_secondaryBatchOverSampled, stream); // correlate oversampled images if(param->algorithm == 0) { - cuCorrFreqDomain_OverSampled->execute(r_masterBatchOverSampled, r_slaveBatchOverSampled, r_corrBatchZoomIn); + cuCorrFreqDomain_OverSampled->execute(r_referenceBatchOverSampled, r_secondaryBatchOverSampled, r_corrBatchZoomIn); } else { - cuCorrTimeDomain(r_masterBatchOverSampled, r_slaveBatchOverSampled, r_corrBatchZoomIn, stream); + cuCorrTimeDomain(r_referenceBatchOverSampled, r_secondaryBatchOverSampled, r_corrBatchZoomIn, stream); } - cuCorrNormalize(r_masterBatchOverSampled, r_slaveBatchOverSampled, r_corrBatchZoomIn, stream); + cuCorrNormalize(r_referenceBatchOverSampled, r_secondaryBatchOverSampled, r_corrBatchZoomIn, stream); //std::cout << "debug correlation oversample\n"; - //std::cout << r_masterBatchOverSampled->height << " " << r_masterBatchOverSampled->width << "\n"; - //std::cout << r_slaveBatchOverSampled->height << " " << r_slaveBatchOverSampled->width << "\n"; + //std::cout << r_referenceBatchOverSampled->height << " " << r_referenceBatchOverSampled->width << "\n"; + //std::cout << r_secondaryBatchOverSampled->height << " " << r_secondaryBatchOverSampled->width << "\n"; //std::cout << r_corrBatchZoomIn->height << " " << r_corrBatchZoomIn->width << "\n"; // oversample the correlation surface @@ -185,128 +185,128 @@ void cuAmpcorChunk::getRelativeOffset(int *rStartPixel, const int *oStartPixel, } } -void cuAmpcorChunk::loadMasterChunk() +void cuAmpcorChunk::loadReferenceChunk() { - // we first load the whole chunk of image from cpu to a gpu buffer c(r)_masterChunkRaw + // we first load the whole chunk of image from cpu to a gpu buffer c(r)_referenceChunkRaw // then copy to a batch of windows with (nImages, height, width) (leading dimension on the right) // get the chunk size to be loaded to gpu - int startD = param->masterChunkStartPixelDown[idxChunk]; //start pixel down (along height) - int startA = param->masterChunkStartPixelAcross[idxChunk]; // start pixel across (along width) - int height = param->masterChunkHeight[idxChunk]; // number of pixels along height - int width = param->masterChunkWidth[idxChunk]; // number of pixels along width + int startD = param->referenceChunkStartPixelDown[idxChunk]; //start pixel down (along height) + int startA = param->referenceChunkStartPixelAcross[idxChunk]; // start pixel across (along width) + int height = param->referenceChunkHeight[idxChunk]; // number of pixels along height + int width = param->referenceChunkWidth[idxChunk]; // number of pixels along width //use cpu to compute the starting positions for each window - getRelativeOffset(ChunkOffsetDown->hostData, param->masterStartPixelDown, param->masterChunkStartPixelDown[idxChunk]); + getRelativeOffset(ChunkOffsetDown->hostData, param->referenceStartPixelDown, param->referenceChunkStartPixelDown[idxChunk]); // copy the positions to gpu ChunkOffsetDown->copyToDevice(stream); // same for the across direction - getRelativeOffset(ChunkOffsetAcross->hostData, param->masterStartPixelAcross, param->masterChunkStartPixelAcross[idxChunk]); + getRelativeOffset(ChunkOffsetAcross->hostData, param->referenceStartPixelAcross, param->referenceChunkStartPixelAcross[idxChunk]); ChunkOffsetAcross->copyToDevice(stream); // check whether the image is complex (e.g., SLC) or real( e.g. TIFF) - if(masterImage->isComplex()) + if(referenceImage->isComplex()) { // allocate a gpu buffer to load data from cpu/file // try allocate/deallocate the buffer on the fly to save gpu memory 07/09/19 - c_masterChunkRaw = new cuArrays (param->maxMasterChunkHeight, param->maxMasterChunkWidth); - c_masterChunkRaw->allocate(); + c_referenceChunkRaw = new cuArrays (param->maxReferenceChunkHeight, param->maxReferenceChunkWidth); + c_referenceChunkRaw->allocate(); // load the data from cpu - masterImage->loadToDevice((void *)c_masterChunkRaw->devData, startD, startA, height, width, stream); - //std::cout << "debug load master: " << startD << " " << startA << " " << height << " " << width << "\n"; + referenceImage->loadToDevice((void *)c_referenceChunkRaw->devData, startD, startA, height, width, stream); + //std::cout << "debug load reference: " << startD << " " << startA << " " << height << " " << width << "\n"; //copy the chunk to a batch format (nImages, height, width) // if derampMethod = 0 (no deramp), take amplitudes; otherwise, copy complex data if(param->derampMethod == 0) { - cuArraysCopyToBatchAbsWithOffset(c_masterChunkRaw, param->masterChunkWidth[idxChunk], - c_masterBatchRaw, ChunkOffsetDown->devData, ChunkOffsetAcross->devData, stream); + cuArraysCopyToBatchAbsWithOffset(c_referenceChunkRaw, param->referenceChunkWidth[idxChunk], + c_referenceBatchRaw, ChunkOffsetDown->devData, ChunkOffsetAcross->devData, stream); } else { - cuArraysCopyToBatchWithOffset(c_masterChunkRaw, param->masterChunkWidth[idxChunk], - c_masterBatchRaw, ChunkOffsetDown->devData, ChunkOffsetAcross->devData, stream); + cuArraysCopyToBatchWithOffset(c_referenceChunkRaw, param->referenceChunkWidth[idxChunk], + c_referenceBatchRaw, ChunkOffsetDown->devData, ChunkOffsetAcross->devData, stream); } // deallocate the gpu buffer - delete c_masterChunkRaw; + delete c_referenceChunkRaw; } // if the image is real else { - r_masterChunkRaw = new cuArrays (param->maxMasterChunkHeight, param->maxMasterChunkWidth); - r_masterChunkRaw->allocate(); + r_referenceChunkRaw = new cuArrays (param->maxReferenceChunkHeight, param->maxReferenceChunkWidth); + r_referenceChunkRaw->allocate(); // load the data from cpu - masterImage->loadToDevice((void *)r_masterChunkRaw->devData, startD, startA, height, width, stream); + referenceImage->loadToDevice((void *)r_referenceChunkRaw->devData, startD, startA, height, width, stream); // copy the chunk (real) to a batch format (complex) - cuArraysCopyToBatchWithOffsetR2C(r_masterChunkRaw, param->masterChunkWidth[idxChunk], - c_masterBatchRaw, ChunkOffsetDown->devData, ChunkOffsetAcross->devData, stream); + cuArraysCopyToBatchWithOffsetR2C(r_referenceChunkRaw, param->referenceChunkWidth[idxChunk], + c_referenceBatchRaw, ChunkOffsetDown->devData, ChunkOffsetAcross->devData, stream); // deallocate the gpu buffer - delete r_masterChunkRaw; + delete r_referenceChunkRaw; } } -void cuAmpcorChunk::loadSlaveChunk() +void cuAmpcorChunk::loadSecondaryChunk() { //copy to a batch format (nImages, height, width) - getRelativeOffset(ChunkOffsetDown->hostData, param->slaveStartPixelDown, param->slaveChunkStartPixelDown[idxChunk]); + getRelativeOffset(ChunkOffsetDown->hostData, param->secondaryStartPixelDown, param->secondaryChunkStartPixelDown[idxChunk]); ChunkOffsetDown->copyToDevice(stream); - getRelativeOffset(ChunkOffsetAcross->hostData, param->slaveStartPixelAcross, param->slaveChunkStartPixelAcross[idxChunk]); + getRelativeOffset(ChunkOffsetAcross->hostData, param->secondaryStartPixelAcross, param->secondaryChunkStartPixelAcross[idxChunk]); ChunkOffsetAcross->copyToDevice(stream); - if(slaveImage->isComplex()) + if(secondaryImage->isComplex()) { - c_slaveChunkRaw = new cuArrays (param->maxSlaveChunkHeight, param->maxSlaveChunkWidth); - c_slaveChunkRaw->allocate(); + c_secondaryChunkRaw = new cuArrays (param->maxSecondaryChunkHeight, param->maxSecondaryChunkWidth); + c_secondaryChunkRaw->allocate(); //load a chunk from mmap to gpu - slaveImage->loadToDevice(c_slaveChunkRaw->devData, - param->slaveChunkStartPixelDown[idxChunk], - param->slaveChunkStartPixelAcross[idxChunk], - param->slaveChunkHeight[idxChunk], - param->slaveChunkWidth[idxChunk], + secondaryImage->loadToDevice(c_secondaryChunkRaw->devData, + param->secondaryChunkStartPixelDown[idxChunk], + param->secondaryChunkStartPixelAcross[idxChunk], + param->secondaryChunkHeight[idxChunk], + param->secondaryChunkWidth[idxChunk], stream); if(param->derampMethod == 0) { - cuArraysCopyToBatchAbsWithOffset(c_slaveChunkRaw, param->slaveChunkWidth[idxChunk], - c_slaveBatchRaw, ChunkOffsetDown->devData, ChunkOffsetAcross->devData, stream); + cuArraysCopyToBatchAbsWithOffset(c_secondaryChunkRaw, param->secondaryChunkWidth[idxChunk], + c_secondaryBatchRaw, ChunkOffsetDown->devData, ChunkOffsetAcross->devData, stream); } else { - cuArraysCopyToBatchWithOffset(c_slaveChunkRaw, param->slaveChunkWidth[idxChunk], - c_slaveBatchRaw, ChunkOffsetDown->devData, ChunkOffsetAcross->devData, stream); + cuArraysCopyToBatchWithOffset(c_secondaryChunkRaw, param->secondaryChunkWidth[idxChunk], + c_secondaryBatchRaw, ChunkOffsetDown->devData, ChunkOffsetAcross->devData, stream); } - delete c_slaveChunkRaw; + delete c_secondaryChunkRaw; } else { //real image //allocate the gpu buffer - r_slaveChunkRaw = new cuArrays (param->maxSlaveChunkHeight, param->maxSlaveChunkWidth); - r_slaveChunkRaw->allocate(); + r_secondaryChunkRaw = new cuArrays (param->maxSecondaryChunkHeight, param->maxSecondaryChunkWidth); + r_secondaryChunkRaw->allocate(); //load a chunk from mmap to gpu - slaveImage->loadToDevice(r_slaveChunkRaw->devData, - param->slaveChunkStartPixelDown[idxChunk], - param->slaveChunkStartPixelAcross[idxChunk], - param->slaveChunkHeight[idxChunk], - param->slaveChunkWidth[idxChunk], + secondaryImage->loadToDevice(r_secondaryChunkRaw->devData, + param->secondaryChunkStartPixelDown[idxChunk], + param->secondaryChunkStartPixelAcross[idxChunk], + param->secondaryChunkHeight[idxChunk], + param->secondaryChunkWidth[idxChunk], stream); // convert to the batch format - cuArraysCopyToBatchWithOffsetR2C(r_slaveChunkRaw, param->slaveChunkWidth[idxChunk], - c_slaveBatchRaw, ChunkOffsetDown->devData, ChunkOffsetAcross->devData, stream); - delete r_slaveChunkRaw; + cuArraysCopyToBatchWithOffsetR2C(r_secondaryChunkRaw, param->secondaryChunkWidth[idxChunk], + c_secondaryBatchRaw, ChunkOffsetDown->devData, ChunkOffsetAcross->devData, stream); + delete r_secondaryChunkRaw; } } -cuAmpcorChunk::cuAmpcorChunk(cuAmpcorParameter *param_, GDALImage *master_, GDALImage *slave_, +cuAmpcorChunk::cuAmpcorChunk(cuAmpcorParameter *param_, GDALImage *reference_, GDALImage *secondary_, cuArrays *offsetImage_, cuArrays *snrImage_, cuArrays *covImage_, cuArrays *intImage1_, cuArrays *floatImage1_, cudaStream_t stream_) { param = param_; - masterImage = master_; - slaveImage = slave_; + referenceImage = reference_; + secondaryImage = secondary_; offsetImage = offsetImage_; snrImage = snrImage_; covImage = covImage_; @@ -316,13 +316,13 @@ cuAmpcorChunk::cuAmpcorChunk(cuAmpcorParameter *param_, GDALImage *master_, GDAL stream = stream_; - // std::cout << "debug Chunk creator " << param->maxMasterChunkHeight << " " << param->maxMasterChunkWidth << "\n"; + // std::cout << "debug Chunk creator " << param->maxReferenceChunkHeight << " " << param->maxReferenceChunkWidth << "\n"; // try allocate/deallocate on the fly to save gpu memory 07/09/19 - // c_masterChunkRaw = new cuArrays (param->maxMasterChunkHeight, param->maxMasterChunkWidth); - // c_masterChunkRaw->allocate(); + // c_referenceChunkRaw = new cuArrays (param->maxReferenceChunkHeight, param->maxReferenceChunkWidth); + // c_referenceChunkRaw->allocate(); - // c_slaveChunkRaw = new cuArrays (param->maxSlaveChunkHeight, param->maxSlaveChunkWidth); - // c_slaveChunkRaw->allocate(); + // c_secondaryChunkRaw = new cuArrays (param->maxSecondaryChunkHeight, param->maxSecondaryChunkWidth); + // c_secondaryChunkRaw->allocate(); ChunkOffsetDown = new cuArrays (param->numberWindowDownInChunk, param->numberWindowAcrossInChunk); ChunkOffsetDown->allocate(); @@ -331,58 +331,58 @@ cuAmpcorChunk::cuAmpcorChunk(cuAmpcorParameter *param_, GDALImage *master_, GDAL ChunkOffsetAcross->allocate(); ChunkOffsetAcross->allocateHost(); - c_masterBatchRaw = new cuArrays ( + c_referenceBatchRaw = new cuArrays ( param->windowSizeHeightRaw, param->windowSizeWidthRaw, param->numberWindowDownInChunk, param->numberWindowAcrossInChunk); - c_masterBatchRaw->allocate(); + c_referenceBatchRaw->allocate(); - c_slaveBatchRaw = new cuArrays ( + c_secondaryBatchRaw = new cuArrays ( param->searchWindowSizeHeightRaw, param->searchWindowSizeWidthRaw, param->numberWindowDownInChunk, param->numberWindowAcrossInChunk); - c_slaveBatchRaw->allocate(); + c_secondaryBatchRaw->allocate(); - r_masterBatchRaw = new cuArrays ( + r_referenceBatchRaw = new cuArrays ( param->windowSizeHeightRaw, param->windowSizeWidthRaw, param->numberWindowDownInChunk, param->numberWindowAcrossInChunk); - r_masterBatchRaw->allocate(); + r_referenceBatchRaw->allocate(); - r_slaveBatchRaw = new cuArrays ( + r_secondaryBatchRaw = new cuArrays ( param->searchWindowSizeHeightRaw, param->searchWindowSizeWidthRaw, param->numberWindowDownInChunk, param->numberWindowAcrossInChunk); - r_slaveBatchRaw->allocate(); + r_secondaryBatchRaw->allocate(); - c_slaveBatchZoomIn = new cuArrays ( + c_secondaryBatchZoomIn = new cuArrays ( param->searchWindowSizeHeightRawZoomIn, param->searchWindowSizeWidthRawZoomIn, param->numberWindowDownInChunk, param->numberWindowAcrossInChunk); - c_slaveBatchZoomIn->allocate(); + c_secondaryBatchZoomIn->allocate(); - c_masterBatchOverSampled = new cuArrays ( + c_referenceBatchOverSampled = new cuArrays ( param->windowSizeHeight, param->windowSizeWidth, param->numberWindowDownInChunk, param->numberWindowAcrossInChunk); - c_masterBatchOverSampled->allocate(); + c_referenceBatchOverSampled->allocate(); - c_slaveBatchOverSampled = new cuArrays ( + c_secondaryBatchOverSampled = new cuArrays ( param->searchWindowSizeHeight, param->searchWindowSizeWidth, param->numberWindowDownInChunk, param->numberWindowAcrossInChunk); - c_slaveBatchOverSampled->allocate(); + c_secondaryBatchOverSampled->allocate(); - r_masterBatchOverSampled = new cuArrays ( + r_referenceBatchOverSampled = new cuArrays ( param->windowSizeHeight, param->windowSizeWidth, param->numberWindowDownInChunk, param->numberWindowAcrossInChunk); - r_masterBatchOverSampled->allocate(); + r_referenceBatchOverSampled->allocate(); - r_slaveBatchOverSampled = new cuArrays ( + r_secondaryBatchOverSampled = new cuArrays ( param->searchWindowSizeHeight, param->searchWindowSizeWidth, param->numberWindowDownInChunk, param->numberWindowAcrossInChunk); - r_slaveBatchOverSampled->allocate(); + r_secondaryBatchOverSampled->allocate(); - masterBatchOverSampler = new cuOverSamplerC2C( - c_masterBatchRaw->height, c_masterBatchRaw->width, //orignal size - c_masterBatchOverSampled->height, c_masterBatchOverSampled->width, //oversampled size - c_masterBatchRaw->count, stream); + referenceBatchOverSampler = new cuOverSamplerC2C( + c_referenceBatchRaw->height, c_referenceBatchRaw->width, //orignal size + c_referenceBatchOverSampled->height, c_referenceBatchOverSampled->width, //oversampled size + c_referenceBatchRaw->count, stream); - slaveBatchOverSampler = new cuOverSamplerC2C(c_slaveBatchZoomIn->height, c_slaveBatchZoomIn->width, - c_slaveBatchOverSampled->height, c_slaveBatchOverSampled->width, c_slaveBatchRaw->count, stream); + secondaryBatchOverSampler = new cuOverSamplerC2C(c_secondaryBatchZoomIn->height, c_secondaryBatchZoomIn->width, + c_secondaryBatchOverSampled->height, c_secondaryBatchOverSampled->width, c_secondaryBatchRaw->count, stream); r_corrBatchRaw = new cuArrays ( param->searchWindowSizeHeightRaw-param->windowSizeHeightRaw+1, @@ -502,18 +502,18 @@ cuAmpcorChunk::cuAmpcorChunk(cuAmpcorParameter *param_, GDALImage *master_, GDAL cuAmpcorChunk::~cuAmpcorChunk() { /* - delete masterChunkRaw; - delete slaveChunkRaw; + delete referenceChunkRaw; + delete secondaryChunkRaw; delete ChunkOffsetDown; delete ChunkOffsetAcross; - delete masterBatchRaw; - delete slaveBatchRaw; - delete masterChunkOverSampled; - delete slaveChunkOverSampled; - delete masterChunkOverSampler; - delete slaveChunkOverSampler; - delete masterChunk; - delete slaveChunk; + delete referenceBatchRaw; + delete secondaryBatchRaw; + delete referenceChunkOverSampled; + delete secondaryChunkOverSampled; + delete referenceChunkOverSampler; + delete secondaryChunkOverSampler; + delete referenceChunk; + delete secondaryChunk; delete corrChunk; delete offsetInit; delete zoomInOffset; diff --git a/contrib/PyCuAmpcor/src/cuAmpcorChunk.h b/contrib/PyCuAmpcor/src/cuAmpcorChunk.h index 9ca2766..f62bf60 100644 --- a/contrib/PyCuAmpcor/src/cuAmpcorChunk.h +++ b/contrib/PyCuAmpcor/src/cuAmpcorChunk.h @@ -24,8 +24,8 @@ private: int devId; cudaStream_t stream; - GDALImage *masterImage; - GDALImage *slaveImage; + GDALImage *referenceImage; + GDALImage *secondaryImage; cuAmpcorParameter *param; cuArrays *offsetImage; cuArrays *snrImage; @@ -36,21 +36,21 @@ private: cuArrays *floatImage1; // gpu buffer - cuArrays * c_masterChunkRaw, * c_slaveChunkRaw; - cuArrays * r_masterChunkRaw, * r_slaveChunkRaw; + cuArrays * c_referenceChunkRaw, * c_secondaryChunkRaw; + cuArrays * r_referenceChunkRaw, * r_secondaryChunkRaw; // gpu windows raw data - cuArrays * c_masterBatchRaw, * c_slaveBatchRaw, * c_slaveBatchZoomIn; - cuArrays * r_masterBatchRaw, * r_slaveBatchRaw; + cuArrays * c_referenceBatchRaw, * c_secondaryBatchRaw, * c_secondaryBatchZoomIn; + cuArrays * r_referenceBatchRaw, * r_secondaryBatchRaw; // gpu windows oversampled data - cuArrays * c_masterBatchOverSampled, * c_slaveBatchOverSampled; - cuArrays * r_masterBatchOverSampled, * r_slaveBatchOverSampled; + cuArrays * c_referenceBatchOverSampled, * c_secondaryBatchOverSampled; + cuArrays * r_referenceBatchOverSampled, * r_secondaryBatchOverSampled; cuArrays * r_corrBatchRaw, * r_corrBatchZoomIn, * r_corrBatchZoomInOverSampled, * r_corrBatchZoomInAdjust; cuArrays *ChunkOffsetDown, *ChunkOffsetAcross; - cuOverSamplerC2C *masterBatchOverSampler, *slaveBatchOverSampler; + cuOverSamplerC2C *referenceBatchOverSampler, *secondaryBatchOverSampler; cuOverSamplerR2R *corrOverSampler; cuSincOverSamplerR2R *corrSincOverSampler; @@ -80,16 +80,16 @@ private: public: cuAmpcorChunk() {} - //cuAmpcorChunk(cuAmpcorParameter *param_, SlcImage *master_, SlcImage *slave_); + //cuAmpcorChunk(cuAmpcorParameter *param_, SlcImage *reference_, SlcImage *secondary_); void setIndex(int idxDown_, int idxAcross_); - cuAmpcorChunk(cuAmpcorParameter *param_, GDALImage *master_, GDALImage *slave_, cuArrays *offsetImage_, + cuAmpcorChunk(cuAmpcorParameter *param_, GDALImage *reference_, GDALImage *secondary_, cuArrays *offsetImage_, cuArrays *snrImage_, cuArrays *covImage_, cuArrays *intImage1_, cuArrays *floatImage1_, cudaStream_t stream_); - void loadMasterChunk(); - void loadSlaveChunk(); + void loadReferenceChunk(); + void loadSecondaryChunk(); void getRelativeOffset(int *rStartPixel, const int *oStartPixel, int diff); ~cuAmpcorChunk(); diff --git a/contrib/PyCuAmpcor/src/cuAmpcorController.cu b/contrib/PyCuAmpcor/src/cuAmpcorController.cu index e9a6c33..1bb554c 100644 --- a/contrib/PyCuAmpcor/src/cuAmpcorController.cu +++ b/contrib/PyCuAmpcor/src/cuAmpcorController.cu @@ -17,10 +17,10 @@ void cuAmpcorController::runAmpcor() { param->deviceID = gpuDeviceInit(param->deviceID); // initialize the gdal driver GDALAllRegister(); - // master and slave images; use band=1 as default + // reference and secondary images; use band=1 as default // TODO: selecting band - GDALImage *masterImage = new GDALImage(param->masterImageName, 1, param->mmapSizeInGB); - GDALImage *slaveImage = new GDALImage(param->slaveImageName, 1, param->mmapSizeInGB); + GDALImage *referenceImage = new GDALImage(param->referenceImageName, 1, param->mmapSizeInGB); + GDALImage *secondaryImage = new GDALImage(param->secondaryImageName, 1, param->mmapSizeInGB); cuArrays *offsetImage, *offsetImageRun; cuArrays *snrImage, *snrImageRun; @@ -69,7 +69,7 @@ void cuAmpcorController::runAmpcor() { for(int ist=0; istnStreams; ist++) { cudaStreamCreate(&streams[ist]); - chunk[ist]= new cuAmpcorChunk(param, masterImage, slaveImage, offsetImageRun, snrImageRun, covImageRun, intImage1, floatImage1, streams[ist]); + chunk[ist]= new cuAmpcorChunk(param, referenceImage, secondaryImage, offsetImageRun, snrImageRun, covImageRun, intImage1, floatImage1, streams[ist]); } @@ -127,8 +127,8 @@ void cuAmpcorController::runAmpcor() { for (int ist=0; istnStreams; ist++) delete chunk[ist]; - delete masterImage; - delete slaveImage; + delete referenceImage; + delete secondaryImage; } @@ -181,18 +181,18 @@ void cuAmpcorController::setThresholdSNR(float n) { param->thresholdSNR = n; } / //void cuAmpcorController::setThresholdCov(float n) { param->thresholdCov = n; } // deprecated(?) //void cuAmpcorController::setBand1(int n) { param->band1 = n; } //void cuAmpcorController::setBand2(int n) { param->band2 = n; } -void cuAmpcorController::setMasterImageName(std::string s) { param->masterImageName = s; } -std::string cuAmpcorController::getMasterImageName() {return param->masterImageName;} -void cuAmpcorController::setSlaveImageName(std::string s) { param->slaveImageName = s; } -std::string cuAmpcorController::getSlaveImageName() {return param->slaveImageName;} -void cuAmpcorController::setMasterImageWidth(int n) { param->masterImageWidth = n; } -void cuAmpcorController::setMasterImageHeight(int n) { param->masterImageHeight = n; } -void cuAmpcorController::setSlaveImageWidth(int n) { param->slaveImageWidth = n; } -void cuAmpcorController::setSlaveImageHeight(int n) { param->slaveImageHeight = n; } -//void cuAmpcorController::setMasterStartPixelAcross(int n) { param->masterStartPixelAcross = n; } -//void cuAmpcorController::setMasterStartPixelDown(int n) { param->masterStartPixelDown = n; } -//void cuAmpcorController::setSlaveStartPixelAcross(int n) { param->slaveStartPixelAcross = n; } -//void cuAmpcorController::setSlaveStartPixelDown(int n) { param->slaveStartPixelDown = n; } +void cuAmpcorController::setReferenceImageName(std::string s) { param->referenceImageName = s; } +std::string cuAmpcorController::getReferenceImageName() {return param->referenceImageName;} +void cuAmpcorController::setSecondaryImageName(std::string s) { param->secondaryImageName = s; } +std::string cuAmpcorController::getSecondaryImageName() {return param->secondaryImageName;} +void cuAmpcorController::setReferenceImageWidth(int n) { param->referenceImageWidth = n; } +void cuAmpcorController::setReferenceImageHeight(int n) { param->referenceImageHeight = n; } +void cuAmpcorController::setSecondaryImageWidth(int n) { param->secondaryImageWidth = n; } +void cuAmpcorController::setSecondaryImageHeight(int n) { param->secondaryImageHeight = n; } +//void cuAmpcorController::setReferenceStartPixelAcross(int n) { param->referenceStartPixelAcross = n; } +//void cuAmpcorController::setReferenceStartPixelDown(int n) { param->referenceStartPixelDown = n; } +//void cuAmpcorController::setSecondaryStartPixelAcross(int n) { param->secondaryStartPixelAcross = n; } +//void cuAmpcorController::setSecondaryStartPixelDown(int n) { param->secondaryStartPixelDown = n; } //void cuAmpcorController::setGrossOffsetMethod(int n) { param->grossOffsetMethod = n; } //int cuAmpcorController::getGrossOffsetMethod() { return param->grossOffsetMethod; } //void cuAmpcorController::setAcrossGrossOffset(int n) { param->acrossGrossOffset = n; } diff --git a/contrib/PyCuAmpcor/src/cuAmpcorController.h b/contrib/PyCuAmpcor/src/cuAmpcorController.h index 73f4cb2..2205c38 100644 --- a/contrib/PyCuAmpcor/src/cuAmpcorController.h +++ b/contrib/PyCuAmpcor/src/cuAmpcorController.h @@ -72,28 +72,28 @@ public: int getBand1(); void setBand2(int); int getBand2(); - void setMasterImageName(std::string); - std::string getMasterImageName(); - void setSlaveImageName(std::string); - std::string getSlaveImageName(); - void setMasterImageWidth(int); - int getMasterImageWidth(); - void setMasterImageHeight(int); - int getMasterImageHeight(); - void setSlaveImageWidth(int); - int getSlaveImageWidth(); - void setSlaveImageHeight(int); - int getSlaveImageHeight(); + void setReferenceImageName(std::string); + std::string getReferenceImageName(); + void setSecondaryImageName(std::string); + std::string getSecondaryImageName(); + void setReferenceImageWidth(int); + int getReferenceImageWidth(); + void setReferenceImageHeight(int); + int getReferenceImageHeight(); + void setSecondaryImageWidth(int); + int getSecondaryImageWidth(); + void setSecondaryImageHeight(int); + int getSecondaryImageHeight(); void setStartPixelMethod(int); int getStartPixelMethod(); - void setMasterStartPixelAcross(int); - int getMasterStartPixelAcross(); - void setMasterStartPixelDown(int); - int setMasterStartPixelDown(); - void setSlaveStartPixelAcross(int); - int getSlaveStartPixelAcross(); - void setSlaveStartPixelDown(int); - int getSlaveStartPixelDown(); + void setReferenceStartPixelAcross(int); + int getReferenceStartPixelAcross(); + void setReferenceStartPixelDown(int); + int setReferenceStartPixelDown(); + void setSecondaryStartPixelAcross(int); + int getSecondaryStartPixelAcross(); + void setSecondaryStartPixelDown(int); + int getSecondaryStartPixelDown(); void setGrossOffsetMethod(int); int getGrossOffsetMethod(); void setAcrossGrossOffset(int); diff --git a/contrib/PyCuAmpcor/src/cuAmpcorParameter.cu b/contrib/PyCuAmpcor/src/cuAmpcorParameter.cu index d50f5d3..8710491 100644 --- a/contrib/PyCuAmpcor/src/cuAmpcorParameter.cu +++ b/contrib/PyCuAmpcor/src/cuAmpcorParameter.cu @@ -36,12 +36,12 @@ cuAmpcorParameter::cuAmpcorParameter() oversamplingFactor = 16; oversamplingMethod = 0; - masterImageName = "master.slc"; - masterImageWidth = 1000; - masterImageHeight = 1000; - slaveImageName = "slave.slc"; - slaveImageWidth = 1000; - slaveImageHeight = 1000; + referenceImageName = "reference.slc"; + referenceImageWidth = 1000; + referenceImageHeight = 1000; + secondaryImageName = "secondary.slc"; + secondaryImageWidth = 1000; + secondaryImageHeight = 1000; offsetImageName = "DenseOffset.off"; grossOffsetImageName = "GrossOffset.off"; snrImageName = "snr.snr"; @@ -51,8 +51,8 @@ cuAmpcorParameter::cuAmpcorParameter() numberWindowDownInChunk = 1; numberWindowAcrossInChunk = 1 ; - masterStartPixelDown0 = 0; - masterStartPixelAcross0 = 0; + referenceStartPixelDown0 = 0; + referenceStartPixelAcross0 = 0; corrRawZoomInHeight = 17; // 8*2+1 corrRawZoomInWidth = 17; @@ -105,54 +105,54 @@ void cuAmpcorParameter::allocateArrays() int arraySize = numberWindows*sizeof(int); grossOffsetDown = (int *)malloc(arraySize); grossOffsetAcross = (int *)malloc(arraySize); - masterStartPixelDown = (int *)malloc(arraySize); - masterStartPixelAcross = (int *)malloc(arraySize); - slaveStartPixelDown = (int *)malloc(arraySize); - slaveStartPixelAcross = (int *)malloc(arraySize); + referenceStartPixelDown = (int *)malloc(arraySize); + referenceStartPixelAcross = (int *)malloc(arraySize); + secondaryStartPixelDown = (int *)malloc(arraySize); + secondaryStartPixelAcross = (int *)malloc(arraySize); int arraySizeChunk = numberChunks*sizeof(int); - masterChunkStartPixelDown = (int *)malloc(arraySizeChunk); - masterChunkStartPixelAcross = (int *)malloc(arraySizeChunk); - slaveChunkStartPixelDown = (int *)malloc(arraySizeChunk); - slaveChunkStartPixelAcross = (int *)malloc(arraySizeChunk); - masterChunkHeight = (int *)malloc(arraySizeChunk); - masterChunkWidth = (int *)malloc(arraySizeChunk); - slaveChunkHeight = (int *)malloc(arraySizeChunk); - slaveChunkWidth = (int *)malloc(arraySizeChunk); + referenceChunkStartPixelDown = (int *)malloc(arraySizeChunk); + referenceChunkStartPixelAcross = (int *)malloc(arraySizeChunk); + secondaryChunkStartPixelDown = (int *)malloc(arraySizeChunk); + secondaryChunkStartPixelAcross = (int *)malloc(arraySizeChunk); + referenceChunkHeight = (int *)malloc(arraySizeChunk); + referenceChunkWidth = (int *)malloc(arraySizeChunk); + secondaryChunkHeight = (int *)malloc(arraySizeChunk); + secondaryChunkWidth = (int *)malloc(arraySizeChunk); } void cuAmpcorParameter::deallocateArrays() { free(grossOffsetDown); free(grossOffsetAcross); - free(masterStartPixelDown); - free(masterStartPixelAcross); - free(slaveStartPixelDown); - free(slaveStartPixelAcross); - free(masterChunkStartPixelDown); - free(masterChunkStartPixelAcross); - free(slaveChunkStartPixelDown); - free(slaveChunkStartPixelAcross); - free(masterChunkHeight); - free(masterChunkWidth); - free(slaveChunkHeight); - free(slaveChunkWidth); + free(referenceStartPixelDown); + free(referenceStartPixelAcross); + free(secondaryStartPixelDown); + free(secondaryStartPixelAcross); + free(referenceChunkStartPixelDown); + free(referenceChunkStartPixelAcross); + free(secondaryChunkStartPixelDown); + free(secondaryChunkStartPixelAcross); + free(referenceChunkHeight); + free(referenceChunkWidth); + free(secondaryChunkHeight); + free(secondaryChunkWidth); } -/// Set starting pixels for master and slave windows from arrays -/// set also gross offsets between master and slave windows +/// Set starting pixels for reference and secondary windows from arrays +/// set also gross offsets between reference and secondary windows /// void cuAmpcorParameter::setStartPixels(int *mStartD, int *mStartA, int *gOffsetD, int *gOffsetA) { for(int i=0; i vpixel) mChunkSD = vpixel; if(mChunkED < vpixel) mChunkED = vpixel; - vpixel = masterStartPixelAcross[idxWindow]; + vpixel = referenceStartPixelAcross[idxWindow]; if(mChunkSA > vpixel) mChunkSA = vpixel; if(mChunkEA < vpixel) mChunkEA = vpixel; - vpixel = slaveStartPixelDown[idxWindow]; + vpixel = secondaryStartPixelDown[idxWindow]; if(sChunkSD > vpixel) sChunkSD = vpixel; if(sChunkED < vpixel) sChunkED = vpixel; - vpixel = slaveStartPixelAcross[idxWindow]; + vpixel = secondaryStartPixelAcross[idxWindow]; if(sChunkSA > vpixel) sChunkSA = vpixel; if(sChunkEA < vpixel) sChunkEA = vpixel; } } - masterChunkStartPixelDown[idxChunk] = mChunkSD; - masterChunkStartPixelAcross[idxChunk] = mChunkSA; - slaveChunkStartPixelDown[idxChunk] = sChunkSD; - slaveChunkStartPixelAcross[idxChunk] = sChunkSA; - masterChunkHeight[idxChunk] = mChunkED - mChunkSD + windowSizeHeightRaw; - masterChunkWidth[idxChunk] = mChunkEA - mChunkSA + windowSizeWidthRaw; - slaveChunkHeight[idxChunk] = sChunkED - sChunkSD + searchWindowSizeHeightRaw; - slaveChunkWidth[idxChunk] = sChunkEA - sChunkSA + searchWindowSizeWidthRaw; - if(maxMasterChunkHeight < masterChunkHeight[idxChunk]) maxMasterChunkHeight = masterChunkHeight[idxChunk]; - if(maxMasterChunkWidth < masterChunkWidth[idxChunk] ) maxMasterChunkWidth = masterChunkWidth[idxChunk]; - if(maxSlaveChunkHeight < slaveChunkHeight[idxChunk]) maxSlaveChunkHeight = slaveChunkHeight[idxChunk]; - if(maxSlaveChunkWidth < slaveChunkWidth[idxChunk] ) maxSlaveChunkWidth = slaveChunkWidth[idxChunk]; + referenceChunkStartPixelDown[idxChunk] = mChunkSD; + referenceChunkStartPixelAcross[idxChunk] = mChunkSA; + secondaryChunkStartPixelDown[idxChunk] = sChunkSD; + secondaryChunkStartPixelAcross[idxChunk] = sChunkSA; + referenceChunkHeight[idxChunk] = mChunkED - mChunkSD + windowSizeHeightRaw; + referenceChunkWidth[idxChunk] = mChunkEA - mChunkSA + windowSizeWidthRaw; + secondaryChunkHeight[idxChunk] = sChunkED - sChunkSD + searchWindowSizeHeightRaw; + secondaryChunkWidth[idxChunk] = sChunkEA - sChunkSA + searchWindowSizeWidthRaw; + if(maxReferenceChunkHeight < referenceChunkHeight[idxChunk]) maxReferenceChunkHeight = referenceChunkHeight[idxChunk]; + if(maxReferenceChunkWidth < referenceChunkWidth[idxChunk] ) maxReferenceChunkWidth = referenceChunkWidth[idxChunk]; + if(maxSecondaryChunkHeight < secondaryChunkHeight[idxChunk]) maxSecondaryChunkHeight = secondaryChunkHeight[idxChunk]; + if(maxSecondaryChunkWidth < secondaryChunkWidth[idxChunk] ) maxSecondaryChunkWidth = secondaryChunkWidth[idxChunk]; } } } -/// check whether master and slave windows are within the image range +/// check whether reference and secondary windows are within the image range void cuAmpcorParameter::checkPixelInImageRange() { int endPixel; @@ -271,49 +271,49 @@ void cuAmpcorParameter::checkPixelInImageRange() for(int col = 0; col < numberWindowAcross; col++) { int i = row*numberWindowAcross + col; - if(masterStartPixelDown[i] <0) + if(referenceStartPixelDown[i] <0) { - fprintf(stderr, "Master Window start pixel out ot range in Down, window (%d,%d), pixel %d\n", row, col, masterStartPixelDown[i]); + fprintf(stderr, "Reference Window start pixel out ot range in Down, window (%d,%d), pixel %d\n", row, col, referenceStartPixelDown[i]); exit(EXIT_FAILURE); //or raise range error } - if(masterStartPixelAcross[i] <0) + if(referenceStartPixelAcross[i] <0) { - fprintf(stderr, "Master Window start pixel out ot range in Across, window (%d,%d), pixel %d\n", row, col, masterStartPixelAcross[i]); + fprintf(stderr, "Reference Window start pixel out ot range in Across, window (%d,%d), pixel %d\n", row, col, referenceStartPixelAcross[i]); exit(EXIT_FAILURE); } - endPixel = masterStartPixelDown[i] + windowSizeHeightRaw; - if(endPixel >= masterImageHeight) + endPixel = referenceStartPixelDown[i] + windowSizeHeightRaw; + if(endPixel >= referenceImageHeight) { - fprintf(stderr, "Master Window end pixel out ot range in Down, window (%d,%d), pixel %d\n", row, col, endPixel); + fprintf(stderr, "Reference Window end pixel out ot range in Down, window (%d,%d), pixel %d\n", row, col, endPixel); exit(EXIT_FAILURE); } - endPixel = masterStartPixelAcross[i] + windowSizeWidthRaw; - if(endPixel >= masterImageWidth) + endPixel = referenceStartPixelAcross[i] + windowSizeWidthRaw; + if(endPixel >= referenceImageWidth) { - fprintf(stderr, "Master Window end pixel out ot range in Across, window (%d,%d), pixel %d\n", row, col, endPixel); + fprintf(stderr, "Reference Window end pixel out ot range in Across, window (%d,%d), pixel %d\n", row, col, endPixel); exit(EXIT_FAILURE); } - //slave - if(slaveStartPixelDown[i] <0) + //secondary + if(secondaryStartPixelDown[i] <0) { - fprintf(stderr, "Slave Window start pixel out ot range in Down, window (%d,%d), pixel %d\n", row, col, slaveStartPixelDown[i]); + fprintf(stderr, "Secondary Window start pixel out ot range in Down, window (%d,%d), pixel %d\n", row, col, secondaryStartPixelDown[i]); exit(EXIT_FAILURE); } - if(slaveStartPixelAcross[i] <0) + if(secondaryStartPixelAcross[i] <0) { - fprintf(stderr, "Slave Window start pixel out ot range in Across, window (%d,%d), pixel %d\n", row, col, slaveStartPixelAcross[i]); + fprintf(stderr, "Secondary Window start pixel out ot range in Across, window (%d,%d), pixel %d\n", row, col, secondaryStartPixelAcross[i]); exit(EXIT_FAILURE); } - endPixel = slaveStartPixelDown[i] + searchWindowSizeHeightRaw; - if(endPixel >= slaveImageHeight) + endPixel = secondaryStartPixelDown[i] + searchWindowSizeHeightRaw; + if(endPixel >= secondaryImageHeight) { - fprintf(stderr, "Slave Window end pixel out ot range in Down, window (%d,%d), pixel %d\n", row, col, endPixel); + fprintf(stderr, "Secondary Window end pixel out ot range in Down, window (%d,%d), pixel %d\n", row, col, endPixel); exit(EXIT_FAILURE); } - endPixel = slaveStartPixelAcross[i] + searchWindowSizeWidthRaw; - if(endPixel >= slaveImageWidth) + endPixel = secondaryStartPixelAcross[i] + searchWindowSizeWidthRaw; + if(endPixel >= secondaryImageWidth) { - fprintf(stderr, "Slave Window end pixel out ot range in Across, window (%d,%d), pixel %d\n", row, col, endPixel); + fprintf(stderr, "Secondary Window end pixel out ot range in Across, window (%d,%d), pixel %d\n", row, col, endPixel); exit(EXIT_FAILURE); } diff --git a/contrib/PyCuAmpcor/src/cuAmpcorParameter.h b/contrib/PyCuAmpcor/src/cuAmpcorParameter.h index eed1027..8903961 100644 --- a/contrib/PyCuAmpcor/src/cuAmpcorParameter.h +++ b/contrib/PyCuAmpcor/src/cuAmpcorParameter.h @@ -25,7 +25,7 @@ /// 1. Create an instance of cuAmpcorParameter: param = new cuAmpcorParameter() /// 2. Provide/set constant parameters, including numberWindows such as : param->numberWindowDown = 100 /// 3. Call setupParameters() to determine related parameters and allocate starting pixels for each window: param->setupParameters() -/// 4. Provide/set Master window starting pixel(s), and gross offset(s): param->setStartPixels(masterStartDown, masterStartAcross, grossOffsetDown, grossOffsetAcross) +/// 4. Provide/set Reference window starting pixel(s), and gross offset(s): param->setStartPixels(referenceStartDown, referenceStartAcross, grossOffsetDown, grossOffsetAcross) /// 4a. Optionally, check the range of windows is within the SLC image range: param->checkPixelInImageRange() /// Steps 1, 3, 4 are mandatory. If step 2 is missing, default values will be used @@ -78,17 +78,17 @@ public: float thresholdSNR; /// Threshold of Signal noise ratio to remove noisy data - //master image - std::string masterImageName; /// master SLC image name - int imageDataType1; /// master image data type, 2=cfloat=complex=float2 1=float - int masterImageHeight; /// master image height - int masterImageWidth; /// master image width + //reference image + std::string referenceImageName; /// reference SLC image name + int imageDataType1; /// reference image data type, 2=cfloat=complex=float2 1=float + int referenceImageHeight; /// reference image height + int referenceImageWidth; /// reference image width - //slave image - std::string slaveImageName; /// slave SLC image name - int imageDataType2; /// slave image data type, 2=cfloat=complex=float2 1=float - int slaveImageHeight; /// slave image height - int slaveImageWidth; /// slave image width + //secondary image + std::string secondaryImageName; /// secondary SLC image name + int imageDataType2; /// secondary image data type, 2=cfloat=complex=float2 1=float + int secondaryImageHeight; /// secondary image height + int secondaryImageWidth; /// secondary image width // total number of chips/windows int numberWindowDown; /// number of total windows (down) @@ -106,27 +106,27 @@ public: int useMmap; /// whether to use mmap 0=not 1=yes (default = 0) int mmapSizeInGB; /// size for mmap buffer(useMmap=1) or a cpu memory buffer (useMmap=0) - int masterStartPixelDown0; - int masterStartPixelAcross0; - int *masterStartPixelDown; /// master starting pixels for each window (down) - int *masterStartPixelAcross;/// master starting pixels for each window (across) - int *slaveStartPixelDown; /// slave starting pixels for each window (down) - int *slaveStartPixelAcross; /// slave starting pixels for each window (across) + int referenceStartPixelDown0; + int referenceStartPixelAcross0; + int *referenceStartPixelDown; /// reference starting pixels for each window (down) + int *referenceStartPixelAcross;/// reference starting pixels for each window (across) + int *secondaryStartPixelDown; /// secondary starting pixels for each window (down) + int *secondaryStartPixelAcross; /// secondary starting pixels for each window (across) int grossOffsetDown0; int grossOffsetAcross0; - int *grossOffsetDown; /// Gross offsets between master and slave windows (down) : slaveStartPixel - masterStartPixel - int *grossOffsetAcross; /// Gross offsets between master and slave windows (across) + int *grossOffsetDown; /// Gross offsets between reference and secondary windows (down) : secondaryStartPixel - referenceStartPixel + int *grossOffsetAcross; /// Gross offsets between reference and secondary windows (across) - int *masterChunkStartPixelDown; - int *masterChunkStartPixelAcross; - int *slaveChunkStartPixelDown; - int *slaveChunkStartPixelAcross; - int *masterChunkHeight; - int *masterChunkWidth; - int *slaveChunkHeight; - int *slaveChunkWidth; - int maxMasterChunkHeight, maxMasterChunkWidth; - int maxSlaveChunkHeight, maxSlaveChunkWidth; + int *referenceChunkStartPixelDown; + int *referenceChunkStartPixelAcross; + int *secondaryChunkStartPixelDown; + int *secondaryChunkStartPixelAcross; + int *referenceChunkHeight; + int *referenceChunkWidth; + int *secondaryChunkHeight; + int *secondaryChunkWidth; + int maxReferenceChunkHeight, maxReferenceChunkWidth; + int maxSecondaryChunkHeight, maxSecondaryChunkWidth; std::string grossOffsetImageName; std::string offsetImageName; /// Output Offset fields filename @@ -140,10 +140,10 @@ public: void deallocateArrays(); /// Deallocate arrays on exit - /// Three methods to set master/slave starting pixels and gross offsets from input master start pixel(s) and gross offset(s) - /// 1 (int *, int *, int *, int *): varying master start pixels and gross offsets - /// 2 (int, int, int *, int *): fixed master start pixel (first window) and varying gross offsets - /// 3 (int, int, int, int): fixed master start pixel(first window) and fixed gross offsets + /// Three methods to set reference/secondary starting pixels and gross offsets from input reference start pixel(s) and gross offset(s) + /// 1 (int *, int *, int *, int *): varying reference start pixels and gross offsets + /// 2 (int, int, int *, int *): fixed reference start pixel (first window) and varying gross offsets + /// 3 (int, int, int, int): fixed reference start pixel(first window) and fixed gross offsets void setStartPixels(int*, int*, int*, int*); void setStartPixels(int, int, int*, int*); void setStartPixels(int, int, int, int); diff --git a/contrib/PyCuAmpcor/src/cuAmpcorUtil.h b/contrib/PyCuAmpcor/src/cuAmpcorUtil.h index fe20b19..b0ba0d8 100644 --- a/contrib/PyCuAmpcor/src/cuAmpcorUtil.h +++ b/contrib/PyCuAmpcor/src/cuAmpcorUtil.h @@ -72,7 +72,7 @@ void cuSubPixelOffset(cuArrays *offsetInit, cuArrays *offsetZoomIn, cudaStream_t stream); void cuDetermineInterpZone(cuArrays *maxloc, cuArrays *zoomInOffset, cuArrays *corrOrig, cuArrays *corrZoomIn, cudaStream_t stream); -void cuDetermineSlaveExtractOffset(cuArrays *maxLoc, int xOldRange, int yOldRange, int xNewRange, int yNewRange, cudaStream_t stream); +void cuDetermineSecondaryExtractOffset(cuArrays *maxLoc, int xOldRange, int yOldRange, int xNewRange, int yNewRange, cudaStream_t stream); //in cuCorrTimeDomain.cu: cross correlation in time domain void cuCorrTimeDomain(cuArrays *templates, cuArrays *images, cuArrays *results, cudaStream_t stream); diff --git a/contrib/PyCuAmpcor/src/cuOffset.cu b/contrib/PyCuAmpcor/src/cuOffset.cu index f3ea7d5..2facf6b 100644 --- a/contrib/PyCuAmpcor/src/cuOffset.cu +++ b/contrib/PyCuAmpcor/src/cuOffset.cu @@ -276,7 +276,7 @@ static inline __device__ int dev_adjustOffset(const size_t newRange, const size_ return start; } -__global__ void cudaKernel_determineSlaveExtractOffset(int2 * maxloc, +__global__ void cudaKernel_determineSecondaryExtractOffset(int2 * maxloc, const size_t nImages, int xOldRange, int yOldRange, int xNewRange, int yNewRange) { int imageIndex = threadIdx.x + blockDim.x *blockIdx.x; //image index @@ -289,12 +289,12 @@ __global__ void cudaKernel_determineSlaveExtractOffset(int2 * maxloc, ///@param[in] xOldRange, yOldRange are (half) search ranges in first step ///@param[in] x -void cuDetermineSlaveExtractOffset(cuArrays *maxLoc, +void cuDetermineSecondaryExtractOffset(cuArrays *maxLoc, int xOldRange, int yOldRange, int xNewRange, int yNewRange, cudaStream_t stream) { int threadsperblock=NTHREADS; int blockspergrid=IDIVUP(maxLoc->size, threadsperblock); - cudaKernel_determineSlaveExtractOffset<<>> + cudaKernel_determineSecondaryExtractOffset<<>> (maxLoc->devData, maxLoc->size, xOldRange, yOldRange, xNewRange, yNewRange); } diff --git a/contrib/alos2filter/__init__.py b/contrib/alos2filter/__init__.py index 5f7ce86..e5a0d9b 100644 --- a/contrib/alos2filter/__init__.py +++ b/contrib/alos2filter/__init__.py @@ -1 +1 @@ -#!/usr/bin/env python3 \ No newline at end of file +#!/usr/bin/env python3 diff --git a/contrib/alos2proc/alos2proc.py b/contrib/alos2proc/alos2proc.py index 787e413..f6f4d44 100755 --- a/contrib/alos2proc/alos2proc.py +++ b/contrib/alos2proc/alos2proc.py @@ -21,7 +21,7 @@ def mbf(inputfile, outputfile, prf, prf_frac, nb, nbg, nboff, bsl, kacoeff, dopc # (float, in terms of 1/PRF) # nboff: number of unsynchronized lines in a burst # (float, in terms of 1/PRF, with sign, see burst_sync.py for rules of sign) - # (the image to be processed is always considered to be master) + # (the image to be processed is always considered to be reference) # bsl: start line number of a burst # (float, the line number of the first line of the full-aperture SLC is zero) # (no need to be first burst, any one is OK) @@ -197,13 +197,13 @@ def rg_filter(inputfile, nout, outputfile, bw, bc, nfilter, nfft, beta, zero_cf, def resamp(slc2, rslc2, rgoff_file, azoff_file, nrg1, naz1, prf, dopcoeff, rgcoef=[0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0], azcoef=[0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0], azpos_off=0.0, verbose=0): ############################# # mandatory: - # slc2: slave image - # rslc2: resampled slave image + # slc2: secondary image + # rslc2: resampled secondary image # rgoff_file: range offset file. if no range offset file, specify 'fake' # azoff_file: azimuth offset file. if no azimuth offset file, specify 'fake' - # nrg1: number of columns in master image - # naz1: number of lines in master image - # prf: PRF of slave image + # nrg1: number of columns in reference image + # naz1: number of lines in reference image + # prf: PRF of secondary image # dopcoeff[0]-[3]: Doppler centroid frequency coefficents # optional: # rgcoef[0]-[9]: range offset polynomial coefficents. First of two fit results of resamp_roi diff --git a/contrib/alos2proc/src/extract_burst.c b/contrib/alos2proc/src/extract_burst.c index 60a3c0d..949faee 100644 --- a/contrib/alos2proc/src/extract_burst.c +++ b/contrib/alos2proc/src/extract_burst.c @@ -573,4 +573,4 @@ int extract_burst(char *inputf, char *outputf, int nrg, int naz, float prf, floa //close files fclose(infp); fclose(infofp); -} \ No newline at end of file +} diff --git a/contrib/alos2proc/src/mbf.c b/contrib/alos2proc/src/mbf.c index 9fb5aeb..3813e91 100644 --- a/contrib/alos2proc/src/mbf.c +++ b/contrib/alos2proc/src/mbf.c @@ -26,7 +26,7 @@ int mbf(char *inputfile, char *outputfile, int nrg, int naz, float prf, float pr (float, in terms of 1/PRF) nboff: number of unsynchronized lines in a burst (float, in terms of 1/PRF, with sign, see burst_sync.py for rules of sign) - (the image to be processed is always considered to be master) + (the image to be processed is always considered to be reference) bsl: start line number of a burst (float, the line number of the first line of the full-aperture SLC is zero) (no need to be first burst, any one is OK) @@ -68,8 +68,8 @@ int mbf(char *inputfile, char *outputfile, int nrg, int naz, float prf, float pr float nbc; //burst cycle length in terms of pri. number of lines //float nboff; //number of unsynchronized lines in a burst with sign //see burst_sync.py for rules of sign. - //the image to be processed is always considered to be master - //and the other image is always considered to be slave + //the image to be processed is always considered to be reference + //and the other image is always considered to be secondary //float bsl; //burst start line, input float //float kacoeff[3]; //FM rate along range (experessed by quadratic polynomial //as a function of range sample number) diff --git a/contrib/alos2proc/src/resamp.c b/contrib/alos2proc/src/resamp.c index 0ada755..603e6dd 100644 --- a/contrib/alos2proc/src/resamp.c +++ b/contrib/alos2proc/src/resamp.c @@ -15,15 +15,15 @@ void normalize_kernel(float *kernel, long start_index, long end_index); int resamp(char *slc2, char *rslc2, char *rgoff_file, char *azoff_file, int nrg1, int naz1, int nrg2, int naz2, float prf, float *dopcoeff, float *rgcoef, float *azcoef, float azpos_off, int byteorder, long imageoffset, long lineoffset, int verbose){ /* mandatory: - slc2: slave image - rslc2: resampled slave image + slc2: secondary image + rslc2: resampled secondary image rgoff_file: range offset file. if no range offset file, specify fake azoff_file: azimuth offset file. if no azimuth offset file, specify fake - nrg1: number of columns in master image - naz1: number of lines in master image - nrg2: number of columns in slave image - naz2: number of lines in slave image - prf: PRF of slave image + nrg1: number of columns in reference image + naz1: number of lines in reference image + nrg2: number of columns in secondary image + naz2: number of lines in secondary image + prf: PRF of secondary image dopcoeff[0]-[3]: Doppler centroid frequency coefficents optional: rgcoef[0]-[9]: range offset polynomial coefficents. First of two fit results of resamp_roi diff --git a/contrib/alos2proc/src/rg_filter.c b/contrib/alos2proc/src/rg_filter.c index 224047b..dc746e6 100644 --- a/contrib/alos2proc/src/rg_filter.c +++ b/contrib/alos2proc/src/rg_filter.c @@ -51,8 +51,8 @@ int rg_filter(char *inputfile, int nrg, int naz, int nout, char **outputfile, fl /////////////////////////////// - FILE *infp; //slave image to be resampled - FILE **outfp; //resampled slave image + FILE *infp; //secondary image to be resampled + FILE **outfp; //resampled secondary image fcomplex **filter; fcomplex *in; diff --git a/contrib/alos2proc_f/__init__.py b/contrib/alos2proc_f/__init__.py index 5f7ce86..e5a0d9b 100644 --- a/contrib/alos2proc_f/__init__.py +++ b/contrib/alos2proc_f/__init__.py @@ -1 +1 @@ -#!/usr/bin/env python3 \ No newline at end of file +#!/usr/bin/env python3 diff --git a/contrib/downsample_unwrapper/__init__.py b/contrib/downsample_unwrapper/__init__.py index fef66b5..4265cc3 100644 --- a/contrib/downsample_unwrapper/__init__.py +++ b/contrib/downsample_unwrapper/__init__.py @@ -1 +1 @@ -#!/usr/bin/env python \ No newline at end of file +#!/usr/bin/env python diff --git a/contrib/downsample_unwrapper/downsample_unwrapper.py b/contrib/downsample_unwrapper/downsample_unwrapper.py index 1f27ac9..e70ba97 100644 --- a/contrib/downsample_unwrapper/downsample_unwrapper.py +++ b/contrib/downsample_unwrapper/downsample_unwrapper.py @@ -170,4 +170,4 @@ if __name__ == '__main__': inps['data_dir'] = ddir main(inps) - \ No newline at end of file + diff --git a/contrib/downsample_unwrapper/run_unwrap_snaphu.py b/contrib/downsample_unwrapper/run_unwrap_snaphu.py index 36f983f..954e512 100644 --- a/contrib/downsample_unwrapper/run_unwrap_snaphu.py +++ b/contrib/downsample_unwrapper/run_unwrap_snaphu.py @@ -88,4 +88,4 @@ def main(inps): runUnwrap(inps) if __name__ == '__main__': - sys.exit(main(sys.argv[1])) \ No newline at end of file + sys.exit(main(sys.argv[1])) diff --git a/contrib/rfi/mask.py b/contrib/rfi/mask.py index 56df597..9379a2d 100644 --- a/contrib/rfi/mask.py +++ b/contrib/rfi/mask.py @@ -185,10 +185,10 @@ def genFinalMask(mName,width): def runMain(insar,frame): tStart = time.time() - if frame == 'master': - rawFrame = insar.masterFrame + if frame == 'reference': + rawFrame = insar.referenceFrame else: - rawFrame = insar.slaveFrame + rawFrame = insar.secondaryFrame rawName = rawFrame.image.filename print('\nInput raw image:',rawName) # Processed raw image will simply be xxx.raw -> xxx.processed.raw for simplicity @@ -272,10 +272,10 @@ def RFImask(self): #with open('PICKLE/preprocess','rb') as fid: # insar = pickle.load(fid) - print('Processing',self.insar.masterFrame.image.filename,':') - mName = runMain(self.insar,'master') - print('\nProcessing',self.insar.slaveFrame.image.filename,':') - sName = runMain(self.insar,'slave') + print('Processing',self.insar.referenceFrame.image.filename,':') + mName = runMain(self.insar,'reference') + print('\nProcessing',self.insar.secondaryFrame.image.filename,':') + sName = runMain(self.insar,'secondary') if os.path.exists('isce.log'): os.remove('isce.log') return mName,sName diff --git a/contrib/stack/stripmapStack/Stack.py b/contrib/stack/stripmapStack/Stack.py index 91bc46f..995cce3 100755 --- a/contrib/stack/stripmapStack/Stack.py +++ b/contrib/stack/stripmapStack/Stack.py @@ -63,7 +63,7 @@ class config(object): self.f.write('##########################'+'\n') self.f.write(function+'\n') self.f.write('topo : '+'\n') - self.f.write('master : ' + self.slcDir +'\n') + self.f.write('reference : ' + self.slcDir +'\n') self.f.write('dem : ' + self.dem +'\n') self.f.write('output : ' + self.geometryDir +'\n') self.f.write('alks : ' + self.alks +'\n') @@ -92,8 +92,8 @@ class config(object): self.f.write('##########################'+'\n') self.f.write(function+'\n') self.f.write('geo2rdr : '+'\n') - self.f.write('master : ' + self.masterSlc +'\n') - self.f.write('slave : ' + self.slaveSlc +'\n') + self.f.write('reference : ' + self.referenceSlc +'\n') + self.f.write('secondary : ' + self.secondarySlc +'\n') self.f.write('geom : ' + self.geometryDir +'\n') if self.nativeDoppler: self.f.write('native : True\n') @@ -108,9 +108,9 @@ class config(object): self.f.write('##########################'+'\n') self.f.write(function+'\n') self.f.write('resampleSlc : '+'\n') - self.f.write('master : ' + self.masterSlc + '\n') - self.f.write('slave : ' + self.slaveSlc +'\n') - self.f.write('coreg : ' + self.coregSlaveSlc +'\n') + self.f.write('reference : ' + self.referenceSlc + '\n') + self.f.write('secondary : ' + self.secondarySlc +'\n') + self.f.write('coreg : ' + self.coregSecondarySlc +'\n') self.f.write('offsets : ' + self.offsetDir +'\n') if self.misreg: self.f.write('poly : ' + self.misreg + '\n') @@ -120,9 +120,9 @@ class config(object): self.f.write('##########################'+'\n') self.f.write(function+'\n') self.f.write('resampleSlc_subBand : '+'\n') - #self.f.write('master : ' + self.masterSlc + '\n') - self.f.write('slave : ' + self.slaveSlc +'\n') - self.f.write('coreg : ' + self.coregSlaveSlc +'\n') + #self.f.write('reference : ' + self.referenceSlc + '\n') + self.f.write('secondary : ' + self.secondarySlc +'\n') + self.f.write('coreg : ' + self.coregSecondarySlc +'\n') self.f.write('offsets : ' + self.offsetDir +'\n') if self.misreg: self.f.write('poly : ' + self.misreg + '\n') @@ -132,26 +132,26 @@ class config(object): self.f.write('##########################'+'\n') self.f.write(function + '\n') self.f.write('baselineGrid : ' + '\n') - self.f.write('master : ' + self.coregSlaveSlc + "/masterShelve" + '\n') - self.f.write('slave : ' + self.coregSlaveSlc + "/slaveShelve" + '\n') + self.f.write('reference : ' + self.coregSecondarySlc + "/referenceShelve" + '\n') + self.f.write('secondary : ' + self.coregSecondarySlc + "/secondaryShelve" + '\n') self.f.write('baseline_file : ' + self.baselineGridFile + '\n') - def refineSlaveTiming(self, function): + def refineSecondaryTiming(self, function): self.f.write('##########################'+'\n') self.f.write(function+'\n') - self.f.write('refineSlaveTiming : '+'\n') - self.f.write('master : ' + self.masterSlc + '\n') - self.f.write('slave : ' + self.slaveSlc +'\n') - self.f.write('mm : ' + self.masterMetaData + '\n') - self.f.write('ss : ' + self.slaveMetaData + '\n') + self.f.write('refineSecondaryTiming : '+'\n') + self.f.write('reference : ' + self.referenceSlc + '\n') + self.f.write('secondary : ' + self.secondarySlc +'\n') + self.f.write('mm : ' + self.referenceMetaData + '\n') + self.f.write('ss : ' + self.secondaryMetaData + '\n') self.f.write('outfile : '+ self.outfile + '\n') def denseOffsets(self, function): self.f.write('##########################'+'\n') self.f.write(function+'\n') self.f.write('denseOffsets : '+'\n') - self.f.write('master : ' + self.masterSlc + '\n') - self.f.write('slave : ' + self.slaveSlc +'\n') + self.f.write('reference : ' + self.referenceSlc + '\n') + self.f.write('secondary : ' + self.secondarySlc +'\n') self.f.write('outPrefix : '+ self.outfile + '\n') def filterOffsets(self, function): @@ -184,8 +184,8 @@ class config(object): self.f.write('##########################'+'\n') self.f.write(function+'\n') self.f.write('crossmul : '+'\n') - self.f.write('master : ' + self.masterSlc +'\n') - self.f.write('slave : ' + self.slaveSlc +'\n') + self.f.write('reference : ' + self.referenceSlc +'\n') + self.f.write('secondary : ' + self.secondarySlc +'\n') self.f.write('outdir : ' + self.outDir + '\n') self.f.write('alks : ' + self.alks + '\n') self.f.write('rlks : ' + self.rlks + '\n') @@ -209,7 +209,7 @@ class config(object): self.f.write( 'coh : ' + self.coherence + '\n') self.f.write( 'unwprefix : ' + self.unwIfg + '\n') self.f.write('nomcf : ' + self.noMCF + '\n') - self.f.write('master : ' + self.master + '\n') + self.f.write('reference : ' + self.reference + '\n') self.f.write('defomax : ' + self.defoMax + '\n') self.f.write('alks : ' + self.alks + '\n') self.f.write('rlks : ' + self.rlks + '\n') @@ -268,13 +268,13 @@ def get_dates(inps): acuisitionDates.sort() print (dirs) print (acuisitionDates) - if inps.masterDate not in acuisitionDates: - print ('master date was not found. The first acquisition will be considered as the stack master date.') - if inps.masterDate is None or inps.masterDate not in acuisitionDates: - inps.masterDate = acuisitionDates[0] - slaveDates = acuisitionDates.copy() - slaveDates.remove(inps.masterDate) - return acuisitionDates, inps.masterDate, slaveDates + if inps.referenceDate not in acuisitionDates: + print ('reference date was not found. The first acquisition will be considered as the stack reference date.') + if inps.referenceDate is None or inps.referenceDate not in acuisitionDates: + inps.referenceDate = acuisitionDates[0] + secondaryDates = acuisitionDates.copy() + secondaryDates.remove(inps.referenceDate) + return acuisitionDates, inps.referenceDate, secondaryDates class run(object): """ @@ -319,13 +319,13 @@ class run(object): configObj.cropFrame('[Function-1]') self.runf.write(self.text_cmd+'stripmapWrapper.py -c '+ configName+'\n') - def master_focus_split_geometry(self, stackMaster, config_prefix, split=False, focus=True, native=True): - """focusing master and producing geometry files""" - configName = os.path.join(self.configDir, config_prefix + stackMaster) + def reference_focus_split_geometry(self, stackReference, config_prefix, split=False, focus=True, native=True): + """focusing reference and producing geometry files""" + configName = os.path.join(self.configDir, config_prefix + stackReference) configObj = config(configName) configObj.configure(self) - configObj.slcDir = os.path.join(self.slcDir,stackMaster) - configObj.geometryDir = os.path.join(self.workDir,self.stack_folder, 'geom_master') + configObj.slcDir = os.path.join(self.slcDir,stackReference) + configObj.geometryDir = os.path.join(self.workDir,self.stack_folder, 'geom_reference') counter=1 if focus: @@ -337,16 +337,16 @@ class run(object): counter += 1 if split: - configObj.slc = os.path.join(configObj.slcDir,stackMaster+self.raw_string+'.slc') + configObj.slc = os.path.join(configObj.slcDir,stackReference+self.raw_string+'.slc') configObj.outDir = configObj.slcDir configObj.shelve = os.path.join(configObj.slcDir, 'data') configObj.splitRangeSpectrum('[Function-{0}]'.format(counter)) counter += 1 # generate water mask in radar coordinates - configObj.latFile = os.path.join(self.workDir, 'geom_master/lat.rdr') - configObj.lonFile = os.path.join(self.workDir, 'geom_master/lon.rdr') - configObj.waterMaskFile = os.path.join(self.workDir, 'geom_master/waterMask.rdr') + configObj.latFile = os.path.join(self.workDir, 'geom_reference/lat.rdr') + configObj.lonFile = os.path.join(self.workDir, 'geom_reference/lon.rdr') + configObj.waterMaskFile = os.path.join(self.workDir, 'geom_reference/waterMask.rdr') configObj.createWaterMask('[Function-{0}]'.format(counter)) counter += 1 @@ -355,18 +355,18 @@ class run(object): self.runf.write(self.text_cmd+'stripmapWrapper.py -c '+ configName+'\n') - def slaves_focus_split(self, slaveDates, config_prefix, split=False, focus=True, native=True): - for slave in slaveDates: - configName = os.path.join(self.configDir, config_prefix + '_'+slave) + def secondarys_focus_split(self, secondaryDates, config_prefix, split=False, focus=True, native=True): + for secondary in secondaryDates: + configName = os.path.join(self.configDir, config_prefix + '_'+secondary) configObj = config(configName) configObj.configure(self) - configObj.slcDir = os.path.join(self.slcDir,slave) + configObj.slcDir = os.path.join(self.slcDir,secondary) counter=1 if focus: configObj.focus('[Function-{0}]'.format(counter)) counter += 1 if split: - configObj.slc = os.path.join(configObj.slcDir,slave + self.raw_string + '.slc') + configObj.slc = os.path.join(configObj.slcDir,secondary + self.raw_string + '.slc') configObj.outDir = configObj.slcDir configObj.shelve = os.path.join(configObj.slcDir, 'data') configObj.splitRangeSpectrum('[Function-{0}]'.format(counter)) @@ -374,86 +374,86 @@ class run(object): del configObj self.runf.write(self.text_cmd+'stripmapWrapper.py -c '+ configName+'\n') - def slaves_geo2rdr_resampleSlc(self, stackMaster, slaveDates, config_prefix, native=True): + def secondarys_geo2rdr_resampleSlc(self, stackReference, secondaryDates, config_prefix, native=True): - for slave in slaveDates: - configName = os.path.join(self.configDir,config_prefix+slave) + for secondary in secondaryDates: + configName = os.path.join(self.configDir,config_prefix+secondary) configObj = config(configName) configObj.configure(self) - configObj.masterSlc = os.path.join(self.slcDir, stackMaster) - configObj.slaveSlc = os.path.join(self.slcDir, slave) - configObj.geometryDir = os.path.join(self.workDir, self.stack_folder,'geom_master') - configObj.offsetDir = os.path.join(self.workDir, 'offsets',slave) + configObj.referenceSlc = os.path.join(self.slcDir, stackReference) + configObj.secondarySlc = os.path.join(self.slcDir, secondary) + configObj.geometryDir = os.path.join(self.workDir, self.stack_folder,'geom_reference') + configObj.offsetDir = os.path.join(self.workDir, 'offsets',secondary) configObj.nativeDoppler = native configObj.geo2rdr('[Function-1]') - configObj.coregSlaveSlc = os.path.join(self.workDir, 'coregSLC','Coarse',slave) + configObj.coregSecondarySlc = os.path.join(self.workDir, 'coregSLC','Coarse',secondary) configObj.resampleSlc('[Function-2]') configObj.finalize() del configObj self.runf.write(self.text_cmd+'stripmapWrapper.py -c '+ configName+'\n') - def refineSlaveTiming_singleMaster(self, stackMaster, slaveDates, config_prefix): + def refineSecondaryTiming_singleReference(self, stackReference, secondaryDates, config_prefix): - for slave in slaveDates: - configName = os.path.join(self.configDir,config_prefix+slave) + for secondary in secondaryDates: + configName = os.path.join(self.configDir,config_prefix+secondary) configObj = config(configName) configObj.configure(self) - configObj.masterSlc = os.path.join(self.slcDir, stackMaster,stackMaster+self.raw_string+'.slc') - configObj.slaveSlc = os.path.join(self.workDir, 'coregSLC','Coarse', slave,slave +'.slc') - configObj.masterMetaData = os.path.join(self.slcDir, stackMaster) - configObj.slaveMetaData = os.path.join(self.slcDir, slave) - configObj.outfile = os.path.join(self.workDir, 'offsets', slave ,'misreg') - configObj.refineSlaveTiming('[Function-1]') + configObj.referenceSlc = os.path.join(self.slcDir, stackReference,stackReference+self.raw_string+'.slc') + configObj.secondarySlc = os.path.join(self.workDir, 'coregSLC','Coarse', secondary,secondary +'.slc') + configObj.referenceMetaData = os.path.join(self.slcDir, stackReference) + configObj.secondaryMetaData = os.path.join(self.slcDir, secondary) + configObj.outfile = os.path.join(self.workDir, 'offsets', secondary ,'misreg') + configObj.refineSecondaryTiming('[Function-1]') configObj.finalize() self.runf.write(self.text_cmd+'stripmapWrapper.py -c '+ configName+'\n') - def refineSlaveTiming_Network(self, pairs, stackMaster, slaveDates, config_prefix): + def refineSecondaryTiming_Network(self, pairs, stackReference, secondaryDates, config_prefix): for pair in pairs: configName = os.path.join(self.configDir,config_prefix + pair[0] + '_' + pair[1]) configObj = config(configName) configObj.configure(self) - if pair[0] == stackMaster: - configObj.masterSlc = os.path.join(self.slcDir,stackMaster,stackMaster+self.raw_string+'.slc') + if pair[0] == stackReference: + configObj.referenceSlc = os.path.join(self.slcDir,stackReference,stackReference+self.raw_string+'.slc') else: - configObj.masterSlc = os.path.join(self.workDir, 'coregSLC','Coarse', pair[0] , pair[0] + '.slc') - if pair[1] == stackMaster: - configObj.slaveSlc = os.path.join(self.slcDir,stackMaster, stackMaster+self.raw_string+'.slc') + configObj.referenceSlc = os.path.join(self.workDir, 'coregSLC','Coarse', pair[0] , pair[0] + '.slc') + if pair[1] == stackReference: + configObj.secondarySlc = os.path.join(self.slcDir,stackReference, stackReference+self.raw_string+'.slc') else: - configObj.slaveSlc = os.path.join(self.workDir, 'coregSLC','Coarse', pair[1], pair[1] + '.slc') - configObj.masterMetaData = os.path.join(self.slcDir, pair[0]) - configObj.slaveMetaData = os.path.join(self.slcDir, pair[1]) - configObj.outfile = os.path.join(self.workDir, 'refineSlaveTiming','pairs', pair[0] + '_' + pair[1] ,'misreg') - configObj.refineSlaveTiming('[Function-1]') + configObj.secondarySlc = os.path.join(self.workDir, 'coregSLC','Coarse', pair[1], pair[1] + '.slc') + configObj.referenceMetaData = os.path.join(self.slcDir, pair[0]) + configObj.secondaryMetaData = os.path.join(self.slcDir, pair[1]) + configObj.outfile = os.path.join(self.workDir, 'refineSecondaryTiming','pairs', pair[0] + '_' + pair[1] ,'misreg') + configObj.refineSecondaryTiming('[Function-1]') configObj.finalize() del configObj self.runf.write(self.text_cmd+'stripmapWrapper.py -c '+ configName+'\n') - def denseOffsets_Network(self, pairs, stackMaster, slaveDates, config_prefix): + def denseOffsets_Network(self, pairs, stackReference, secondaryDates, config_prefix): for pair in pairs: configName = os.path.join(self.configDir,config_prefix + pair[0] + '_' + pair[1]) configObj = config(configName) configObj.configure(self) - if pair[0] == stackMaster: - configObj.masterSlc = os.path.join(self.slcDir, - stackMaster, - stackMaster+self.raw_string + '.slc') + if pair[0] == stackReference: + configObj.referenceSlc = os.path.join(self.slcDir, + stackReference, + stackReference+self.raw_string + '.slc') else: - configObj.masterSlc = os.path.join(self.workDir, + configObj.referenceSlc = os.path.join(self.workDir, self.stack_folder, 'SLC', pair[0], pair[0] + '.slc') - if pair[1] == stackMaster: - configObj.slaveSlc = os.path.join(self.slcDir, - stackMaster, - stackMaster+self.raw_string+'.slc') + if pair[1] == stackReference: + configObj.secondarySlc = os.path.join(self.slcDir, + stackReference, + stackReference+self.raw_string+'.slc') else: - configObj.slaveSlc = os.path.join(self.workDir, + configObj.secondarySlc = os.path.join(self.workDir, self.stack_folder, 'SLC', pair[1], @@ -476,8 +476,8 @@ class run(object): def invertMisregPoly(self): - pairDirs = os.path.join(self.workDir, 'refineSlaveTiming/pairs/') - dateDirs = os.path.join(self.workDir, 'refineSlaveTiming/dates/') + pairDirs = os.path.join(self.workDir, 'refineSecondaryTiming/pairs/') + dateDirs = os.path.join(self.workDir, 'refineSecondaryTiming/dates/') cmd = self.text_cmd + 'invertMisreg.py -i ' + pairDirs + ' -o ' + dateDirs self.runf.write(cmd + '\n') @@ -489,122 +489,122 @@ class run(object): cmd = self.text_cmd + 'invertOffsets.py -i ' + pairDirs + ' -o ' + dateDirs self.runf.write(cmd + '\n') - def rubbersheet(self, slaveDates, config_prefix): + def rubbersheet(self, secondaryDates, config_prefix): - for slave in slaveDates: - configName = os.path.join(self.configDir, config_prefix+slave) + for secondary in secondaryDates: + configName = os.path.join(self.configDir, config_prefix+secondary) configObj = config(configName) configObj.configure(self) - configObj.geometry_azimuth_offset = os.path.join(self.workDir, 'offsets' , slave , 'azimuth.off') - configObj.dense_offset = os.path.join(self.workDir,self.dense_offsets_folder,'dates', slave , slave + '.bil') - configObj.snr = os.path.join(self.workDir,self.dense_offsets_folder,'dates' , slave , slave + '_snr.bil') + configObj.geometry_azimuth_offset = os.path.join(self.workDir, 'offsets' , secondary , 'azimuth.off') + configObj.dense_offset = os.path.join(self.workDir,self.dense_offsets_folder,'dates', secondary , secondary + '.bil') + configObj.snr = os.path.join(self.workDir,self.dense_offsets_folder,'dates' , secondary , secondary + '_snr.bil') configObj.output_azimuth_offset = 'azimuth.off' - configObj.output_directory = os.path.join(self.workDir,self.dense_offsets_folder,'dates', slave) + configObj.output_directory = os.path.join(self.workDir,self.dense_offsets_folder,'dates', secondary) configObj.rubbersheet('[Function-1]') configObj.finalize() self.runf.write(self.text_cmd+'stripmapWrapper.py -c '+ configName+'\n') - def resampleOffset(self, slaveDates, config_prefix): + def resampleOffset(self, secondaryDates, config_prefix): - for slave in slaveDates: - configName = os.path.join(self.configDir, config_prefix+slave) + for secondary in secondaryDates: + configName = os.path.join(self.configDir, config_prefix+secondary) configObj = config(configName) configObj.configure(self) - configObj.targetFile = os.path.join(self.workDir, 'offsets/'+slave + '/azimuth.off') - configObj.input = os.path.join(self.workDir,self.dense_offsets_folder,'dates',slave , slave + '.bil') - configObj.output = os.path.join(self.workDir,self.dense_offsets_folder,'dates',slave, 'azimuth.off') + configObj.targetFile = os.path.join(self.workDir, 'offsets/'+secondary + '/azimuth.off') + configObj.input = os.path.join(self.workDir,self.dense_offsets_folder,'dates',secondary , secondary + '.bil') + configObj.output = os.path.join(self.workDir,self.dense_offsets_folder,'dates',secondary, 'azimuth.off') configObj.resampleOffset('[Function-1]') configObj.finalize() self.runf.write(self.text_cmd+'stripmapWrapper.py -c '+ configName+'\n') - def replaceOffsets(self, slaveDates): + def replaceOffsets(self, secondaryDates): dateDirs = os.path.join(self.workDir, self.dense_offsets_folder,'dates') - for slave in slaveDates: - geometryOffset = os.path.join(self.workDir, 'offsets', slave , 'azimuth.off') - geometryOnlyOffset = os.path.join(self.workDir, 'offsets' , slave , 'azimuth.off.geometry') - rubberSheeted = os.path.join(self.workDir,self.dense_offsets_folder,'dates' , slave , 'azimuth.off') + for secondary in secondaryDates: + geometryOffset = os.path.join(self.workDir, 'offsets', secondary , 'azimuth.off') + geometryOnlyOffset = os.path.join(self.workDir, 'offsets' , secondary , 'azimuth.off.geometry') + rubberSheeted = os.path.join(self.workDir,self.dense_offsets_folder,'dates' , secondary , 'azimuth.off') cmd = self.text_cmd + 'mv ' + geometryOffset + ' ' + geometryOnlyOffset cmd = cmd + '; mv ' + rubberSheeted + ' ' + geometryOffset self.runf.write(cmd + '\n') - def gridBaseline(self, stackMaster, slaveDates, config_prefix, split=False): - for slave in slaveDates: - configName = os.path.join(self.configDir, config_prefix+slave) + def gridBaseline(self, stackReference, secondaryDates, config_prefix, split=False): + for secondary in secondaryDates: + configName = os.path.join(self.configDir, config_prefix+secondary) configObj = config(configName) - configObj.coregSlaveSlc = os.path.join(self.workDir,self.stack_folder,'SLC',slave) - configObj.baselineGridFile = os.path.join(self.workDir, self.stack_folder,'baselines', slave,slave ) + configObj.coregSecondarySlc = os.path.join(self.workDir,self.stack_folder,'SLC',secondary) + configObj.baselineGridFile = os.path.join(self.workDir, self.stack_folder,'baselines', secondary,secondary ) configObj.baselineGrid('[Function-1]') configObj.finalize() self.runf.write(self.text_cmd+'stripmapWrapper.py -c '+ configName+'\n') - # also add the master to be included - configName = os.path.join(self.configDir, config_prefix+stackMaster) + # also add the reference to be included + configName = os.path.join(self.configDir, config_prefix+stackReference) configObj = config(configName) - configObj.coregSlaveSlc = os.path.join(self.workDir,self.stack_folder,'SLC',stackMaster) - configObj.baselineGridFile = os.path.join(self.workDir, self.stack_folder,'baselines', stackMaster,stackMaster ) + configObj.coregSecondarySlc = os.path.join(self.workDir,self.stack_folder,'SLC',stackReference) + configObj.baselineGridFile = os.path.join(self.workDir, self.stack_folder,'baselines', stackReference,stackReference ) configObj.baselineGrid('[Function-1]') configObj.finalize() self.runf.write(self.text_cmd+'stripmapWrapper.py -c '+ configName+'\n') - def slaves_fine_resampleSlc(self, stackMaster, slaveDates, config_prefix, split=False): - # copy over the master into the final SLC folder as well - self.runf.write(self.text_cmd + ' masterStackCopy.py -i ' + + def secondarys_fine_resampleSlc(self, stackReference, secondaryDates, config_prefix, split=False): + # copy over the reference into the final SLC folder as well + self.runf.write(self.text_cmd + ' referenceStackCopy.py -i ' + os.path.join(self.slcDir, - stackMaster, - stackMaster + self.raw_string + '.slc') + ' -o ' + + stackReference, + stackReference + self.raw_string + '.slc') + ' -o ' + os.path.join(self.workDir, self.stack_folder, 'SLC', - stackMaster, - stackMaster+'.slc' )+ '\n') + stackReference, + stackReference+'.slc' )+ '\n') - # now resample each of the slaves to the master geometry - for slave in slaveDates: - configName = os.path.join(self.configDir, config_prefix+slave) + # now resample each of the secondarys to the reference geometry + for secondary in secondaryDates: + configName = os.path.join(self.configDir, config_prefix+secondary) configObj = config(configName) configObj.configure(self) - configObj.masterSlc = os.path.join(self.slcDir, stackMaster) - configObj.slaveSlc = os.path.join(self.slcDir, slave) - configObj.offsetDir = os.path.join(self.workDir, 'offsets',slave) - configObj.coregSlaveSlc = os.path.join(self.workDir,self.stack_folder,'SLC',slave) - configObj.misreg = os.path.join(self.workDir, 'refineSlaveTiming','dates', slave, 'misreg') + configObj.referenceSlc = os.path.join(self.slcDir, stackReference) + configObj.secondarySlc = os.path.join(self.slcDir, secondary) + configObj.offsetDir = os.path.join(self.workDir, 'offsets',secondary) + configObj.coregSecondarySlc = os.path.join(self.workDir,self.stack_folder,'SLC',secondary) + configObj.misreg = os.path.join(self.workDir, 'refineSecondaryTiming','dates', secondary, 'misreg') configObj.resampleSlc('[Function-1]') if split: - configObj.slaveSlc = os.path.join(self.slcDir, slave,'LowBand') - configObj.coregSlaveSlc = os.path.join(self.workDir, self.stack_folder,'SLC', slave, 'LowBand') + configObj.secondarySlc = os.path.join(self.slcDir, secondary,'LowBand') + configObj.coregSecondarySlc = os.path.join(self.workDir, self.stack_folder,'SLC', secondary, 'LowBand') configObj.resampleSlc_subband('[Function-2]') - configObj.slaveSlc = os.path.join(self.slcDir, slave,'HighBand') - configObj.coregSlaveSlc = os.path.join(self.workDir,self.stack_folder, 'SLC', slave, 'HighBand') + configObj.secondarySlc = os.path.join(self.slcDir, secondary,'HighBand') + configObj.coregSecondarySlc = os.path.join(self.workDir,self.stack_folder, 'SLC', secondary, 'HighBand') configObj.resampleSlc_subband('[Function-3]') configObj.finalize() self.runf.write(self.text_cmd+'stripmapWrapper.py -c '+ configName+'\n') - def igrams_network(self, pairs, acuisitionDates, stackMaster,low_or_high, config_prefix): + def igrams_network(self, pairs, acuisitionDates, stackReference,low_or_high, config_prefix): for pair in pairs: configName = os.path.join(self.configDir,config_prefix + pair[0] + '_' + pair[1]) configObj = config(configName) configObj.configure(self) - if pair[0] == stackMaster: - configObj.masterSlc = os.path.join(self.slcDir, - stackMaster + low_or_high + stackMaster+self.raw_string +'.slc') + if pair[0] == stackReference: + configObj.referenceSlc = os.path.join(self.slcDir, + stackReference + low_or_high + stackReference+self.raw_string +'.slc') else: - configObj.masterSlc = os.path.join(self.workDir, + configObj.referenceSlc = os.path.join(self.workDir, self.stack_folder, 'SLC', pair[0] + low_or_high + pair[0] + '.slc') - if pair[1] == stackMaster: - configObj.slaveSlc = os.path.join(self.slcDir, - stackMaster + low_or_high + stackMaster+self.raw_string+'.slc') + if pair[1] == stackReference: + configObj.secondarySlc = os.path.join(self.slcDir, + stackReference + low_or_high + stackReference+self.raw_string+'.slc') else: - configObj.slaveSlc = os.path.join(self.workDir, + configObj.secondarySlc = os.path.join(self.workDir, self.stack_folder, 'SLC', pair[1] + low_or_high + pair[1] + '.slc') @@ -630,14 +630,14 @@ class run(object): configObj.igram = configObj.filtIgram configObj.unwIfg = os.path.splitext(configObj.igram)[0] configObj.noMCF = noMCF - configObj.master = os.path.join(self.slcDir,stackMaster +'/data') + configObj.reference = os.path.join(self.slcDir,stackReference +'/data') configObj.defoMax = defoMax configObj.unwrap('[Function-3]') configObj.finalize() self.runf.write(self.text_cmd+'stripmapWrapper.py -c '+ configName+'\n') - def dispersive_nonDispersive(self, pairs, acuisitionDates, stackMaster, + def dispersive_nonDispersive(self, pairs, acuisitionDates, stackReference, lowBand, highBand, config_prefix): for pair in pairs: configName = os.path.join(self.configDir,config_prefix + pair[0] + '_' + pair[1]) @@ -687,23 +687,23 @@ class workflow(object): ############################## -def baselinePair(baselineDir, master, slave,doBaselines=True): +def baselinePair(baselineDir, reference, secondary,doBaselines=True): if doBaselines: # open files to calculate baselines try: - mdb = shelve.open( os.path.join(master, 'raw'), flag='r') - sdb = shelve.open( os.path.join(slave, 'raw'), flag='r') + mdb = shelve.open( os.path.join(reference, 'raw'), flag='r') + sdb = shelve.open( os.path.join(secondary, 'raw'), flag='r') except: - mdb = shelve.open( os.path.join(master, 'data'), flag='r') - sdb = shelve.open( os.path.join(slave, 'data'), flag='r') + mdb = shelve.open( os.path.join(reference, 'data'), flag='r') + sdb = shelve.open( os.path.join(secondary, 'data'), flag='r') mFrame = mdb['frame'] sFrame = sdb['frame'] bObj = Baseline() bObj.configure() - bObj.wireInputPort(name='masterFrame', object=mFrame) - bObj.wireInputPort(name='slaveFrame', object=sFrame) + bObj.wireInputPort(name='referenceFrame', object=mFrame) + bObj.wireInputPort(name='secondaryFrame', object=sFrame) bObj.baseline() # calculate baseline from orbits pBaselineBottom = bObj.pBaselineBottom pBaselineTop = bObj.pBaselineTop @@ -711,7 +711,7 @@ def baselinePair(baselineDir, master, slave,doBaselines=True): pBaselineBottom = 0.0 pBaselineTop = 0.0 - baselineOutName = os.path.basename(master) + "_" + os.path.basename(slave) + ".txt" + baselineOutName = os.path.basename(reference) + "_" + os.path.basename(secondary) + ".txt" f = open(os.path.join(baselineDir, baselineOutName) , 'w') f.write("PERP_BASELINE_BOTTOM " + str(pBaselineBottom) + '\n') f.write("PERP_BASELINE_TOP " + str(pBaselineTop) + '\n') @@ -719,32 +719,32 @@ def baselinePair(baselineDir, master, slave,doBaselines=True): print('Baseline at top/bottom: %f %f'%(pBaselineTop,pBaselineBottom)) return (pBaselineTop+pBaselineBottom)/2. -def baselineStack(inps,stackMaster,acqDates,doBaselines=True): +def baselineStack(inps,stackReference,acqDates,doBaselines=True): from collections import OrderedDict baselineDir = os.path.join(inps.workDir,'baselines') os.makedirs(baselineDir, exist_ok=True) baselineDict = OrderedDict() timeDict = OrderedDict() datefmt = '%Y%m%d' - t0 = datetime.datetime.strptime(stackMaster, datefmt) - master = os.path.join(inps.slcDir, stackMaster) + t0 = datetime.datetime.strptime(stackReference, datefmt) + reference = os.path.join(inps.slcDir, stackReference) for slv in acqDates: - if slv != stackMaster: - slave = os.path.join(inps.slcDir, slv) - baselineDict[slv]=baselinePair(baselineDir, master, slave, doBaselines) + if slv != stackReference: + secondary = os.path.join(inps.slcDir, slv) + baselineDict[slv]=baselinePair(baselineDir, reference, secondary, doBaselines) t = datetime.datetime.strptime(slv, datefmt) timeDict[slv] = t - t0 else: - baselineDict[stackMaster] = 0.0 - timeDict[stackMaster] = datetime.timedelta(0.0) + baselineDict[stackReference] = 0.0 + timeDict[stackReference] = datetime.timedelta(0.0) return baselineDict, timeDict -def selectPairs(inps,stackMaster, slaveDates, acuisitionDates,doBaselines=True): +def selectPairs(inps,stackReference, secondaryDates, acuisitionDates,doBaselines=True): - baselineDict, timeDict = baselineStack(inps, stackMaster, acuisitionDates,doBaselines) - for slave in slaveDates: - print (slave,' : ' , baselineDict[slave]) + baselineDict, timeDict = baselineStack(inps, stackReference, acuisitionDates,doBaselines) + for secondary in secondaryDates: + print (secondary,' : ' , baselineDict[secondary]) numDates = len(acuisitionDates) pairs = [] for i in range(numDates-1): diff --git a/contrib/stack/stripmapStack/adjustFrame.py b/contrib/stack/stripmapStack/adjustFrame.py index 60a8f4f..2024e52 100755 --- a/contrib/stack/stripmapStack/adjustFrame.py +++ b/contrib/stack/stripmapStack/adjustFrame.py @@ -15,8 +15,8 @@ def cmdLineParse(): ''' parser = argparse.ArgumentParser( description='Generate offset field between two Sentinel swaths') - parser.add_argument('-m', type=str, dest='master', required=True, - help='Directory with the master image') + parser.add_argument('-m', type=str, dest='reference', required=True, + help='Directory with the reference image') parser.add_argument('-a', '--az', type=float, dest='azshift', default=0.0, help='Azimuth shift to add in lines') @@ -34,7 +34,7 @@ if __name__ == '__main__': inps = cmdLineParse() - mdb = shelve.open( os.path.join(inps.master, 'data'), flag='r') + mdb = shelve.open( os.path.join(inps.reference, 'data'), flag='r') mFrame = mdb['frame'] mdb.close() @@ -53,11 +53,11 @@ if __name__ == '__main__': deltar = inps.rgshift * mFrame.instrument.rangePixelSize mFrame.startingRange += deltar - mdb = shelve.open( os.path.join(inps.master, 'data'), writeback=True) + mdb = shelve.open( os.path.join(inps.reference, 'data'), writeback=True) mdb['frame'] = mFrame mdb.close() - mdb = shelve.open(os.path.join(inps.master, 'data'), flag='r') + mdb = shelve.open(os.path.join(inps.reference, 'data'), flag='r') mFrame = mdb['frame'] mdb.close() diff --git a/contrib/stack/stripmapStack/baseline.py b/contrib/stack/stripmapStack/baseline.py index e093b75..2bafb7a 100755 --- a/contrib/stack/stripmapStack/baseline.py +++ b/contrib/stack/stripmapStack/baseline.py @@ -16,10 +16,10 @@ def cmdLineParse(): ''' parser = argparse.ArgumentParser( description='Generate offset field between two Sentinel swaths') - parser.add_argument('-m', type=str, dest='master', required=True, - help='Directory with the master image') - parser.add_argument('-s', type=str, dest='slave', required=True, - help='Directory with the slave image') + parser.add_argument('-m', type=str, dest='reference', required=True, + help='Directory with the reference image') + parser.add_argument('-s', type=str, dest='secondary', required=True, + help='Directory with the secondary image') return parser.parse_args() @@ -32,16 +32,16 @@ if __name__ == '__main__': inps = cmdLineParse() try: - mdb = shelve.open( os.path.join(inps.master, 'data'), flag='r') + mdb = shelve.open( os.path.join(inps.reference, 'data'), flag='r') except: - mdb = shelve.open( os.path.join(inps.master, 'raw'), flag='r') + mdb = shelve.open( os.path.join(inps.reference, 'raw'), flag='r') mFrame = mdb['frame'] try: - sdb = shelve.open( os.path.join(inps.slave, 'data'), flag='r') + sdb = shelve.open( os.path.join(inps.secondary, 'data'), flag='r') except: - sdb = shelve.open( os.path.join(inps.slave, 'raw'), flag='r') + sdb = shelve.open( os.path.join(inps.secondary, 'raw'), flag='r') sFrame = sdb['frame'] @@ -49,8 +49,8 @@ if __name__ == '__main__': bObj = Baseline() bObj.configure() - bObj.wireInputPort(name='masterFrame', object=mFrame) - bObj.wireInputPort(name='slaveFrame', object=sFrame) + bObj.wireInputPort(name='referenceFrame', object=mFrame) + bObj.wireInputPort(name='secondaryFrame', object=sFrame) bObj.baseline() diff --git a/contrib/stack/stripmapStack/baselineGrid.py b/contrib/stack/stripmapStack/baselineGrid.py index 9e47df4..d8cb0c0 100755 --- a/contrib/stack/stripmapStack/baselineGrid.py +++ b/contrib/stack/stripmapStack/baselineGrid.py @@ -16,11 +16,11 @@ import filecmp def createParser(): parser = argparse.ArgumentParser( description='Generate a baseline grid for interferograms') - parser.add_argument('-m', '--master', dest='master', type=str, required=True, - help='Directory with master acquisition shelf file') + parser.add_argument('-m', '--reference', dest='reference', type=str, required=True, + help='Directory with reference acquisition shelf file') - parser.add_argument('-s', '--slave', dest='slave', type=str, required=True, - help='Directory with slave acquisition shelf file') + parser.add_argument('-s', '--secondary', dest='secondary', type=str, required=True, + help='Directory with secondary acquisition shelf file') parser.add_argument('-b', '--baseline_file', dest='baselineFile', type=str, required=True, help='An output text file which contains the computed baseline') @@ -60,35 +60,35 @@ def main(iargs=None): os.makedirs(baselineDir, exist_ok=True) - with shelve.open(os.path.join(inps.master, 'data'), flag='r') as mdb: - master = mdb['frame'] + with shelve.open(os.path.join(inps.reference, 'data'), flag='r') as mdb: + reference = mdb['frame'] - with shelve.open(os.path.join(inps.slave, 'data'), flag='r') as mdb: - slave = mdb['frame'] + with shelve.open(os.path.join(inps.secondary, 'data'), flag='r') as mdb: + secondary = mdb['frame'] - # check if the master and slave shelf are the same, i.e. it is baseline grid for the master - master_SensingStart = master.getSensingStart() - slave_SensingStart = slave.getSensingStart() - if master_SensingStart==slave_SensingStart: - masterBaseline = True + # check if the reference and secondary shelf are the same, i.e. it is baseline grid for the reference + reference_SensingStart = reference.getSensingStart() + secondary_SensingStart = secondary.getSensingStart() + if reference_SensingStart==secondary_SensingStart: + referenceBaseline = True else: - masterBaseline = False + referenceBaseline = False refElp = Planet(pname='Earth').ellipsoid - dr = master.instrument.rangePixelSize - dt = 1./master.PRF #master.azimuthTimeInterval + dr = reference.instrument.rangePixelSize + dt = 1./reference.PRF #reference.azimuthTimeInterval - mStartingRange = master.startingRange #min([x.startingRange for x in masterswaths]) - mFarRange = master.startingRange + dr*(master.numberOfSamples - 1) #max([x.farRange for x in masterswaths]) - mSensingStart = master.sensingStart # min([x.sensingStart for x in masterswaths]) - mSensingStop = master.sensingStop #max([x.sensingStop for x in masterswaths]) - mOrb = getMergedOrbit(master) + mStartingRange = reference.startingRange #min([x.startingRange for x in referenceswaths]) + mFarRange = reference.startingRange + dr*(reference.numberOfSamples - 1) #max([x.farRange for x in referenceswaths]) + mSensingStart = reference.sensingStart # min([x.sensingStart for x in referenceswaths]) + mSensingStop = reference.sensingStop #max([x.sensingStop for x in referenceswaths]) + mOrb = getMergedOrbit(reference) nPixels = int(np.round( (mFarRange - mStartingRange)/dr)) + 1 nLines = int(np.round( (mSensingStop - mSensingStart).total_seconds() / dt)) + 1 - sOrb = getMergedOrbit(slave) + sOrb = getMergedOrbit(secondary) rangeLimits = mFarRange - mStartingRange @@ -108,15 +108,15 @@ def main(iargs=None): fid = open(inps.baselineFile, 'wb') print('Baseline file {0} dims: {1}L x {2}P'.format(inps.baselineFile, nAzimuth, nRange)) - if masterBaseline: + if referenceBaseline: Bperp = np.zeros((nAzimuth,nRange), dtype=np.float32) Bperp.tofile(fid) else: for ii, taz in enumerate(azimuthTime): - masterSV = mOrb.interpolate(taz, method='hermite') - mxyz = np.array(masterSV.getPosition()) - mvel = np.array(masterSV.getVelocity()) + referenceSV = mOrb.interpolate(taz, method='hermite') + mxyz = np.array(referenceSV.getPosition()) + mvel = np.array(referenceSV.getVelocity()) for jj, rng in enumerate(slantRange): @@ -125,9 +125,9 @@ def main(iargs=None): targxyz = np.array(refElp.LLH(target[0], target[1], target[2]).ecef().tolist()) slvTime,slvrng = sOrb.geo2rdr(target) - slaveSV = sOrb.interpolateOrbit(slvTime, method='hermite') + secondarySV = sOrb.interpolateOrbit(slvTime, method='hermite') - sxyz = np.array( slaveSV.getPosition()) + sxyz = np.array( secondarySV.getPosition()) aa = np.linalg.norm(sxyz-mxyz) costheta = (rng*rng + aa*aa - slvrng*slvrng)/(2.*rng*aa) diff --git a/contrib/stack/stripmapStack/bbox.py b/contrib/stack/stripmapStack/bbox.py index 0024808..47e16c3 100755 --- a/contrib/stack/stripmapStack/bbox.py +++ b/contrib/stack/stripmapStack/bbox.py @@ -18,8 +18,8 @@ def cmdLineParse(): ''' parser = argparse.ArgumentParser( description='Generate offset field between two Sentinel swaths') - parser.add_argument('-i', type=str, dest='master', required=True, - help='Directory with the master image') + parser.add_argument('-i', type=str, dest='reference', required=True, + help='Directory with the reference image') parser.add_argument('-n', action='store_true', dest='isnative', default=False, help='If product is native doppler') parser.add_argument('-m', type=float, dest='margin', default=0.05, @@ -35,11 +35,11 @@ if __name__ == '__main__': inps = cmdLineParse() try: - mdb = shelve.open( os.path.join(inps.master, 'data'), flag='r') + mdb = shelve.open( os.path.join(inps.reference, 'data'), flag='r') except: print('SLC not found ... trying RAW data') - mdb = shelve.open( os.path.join(inps.master, 'raw'), flag='r') + mdb = shelve.open( os.path.join(inps.reference, 'raw'), flag='r') inps.isnative = True frame = mdb['frame'] diff --git a/contrib/stack/stripmapStack/checkOrbit.py b/contrib/stack/stripmapStack/checkOrbit.py index fbd1fdd..a53017b 100755 --- a/contrib/stack/stripmapStack/checkOrbit.py +++ b/contrib/stack/stripmapStack/checkOrbit.py @@ -15,8 +15,8 @@ def cmdLineParse(): ''' parser = argparse.ArgumentParser( description='Generate offset field between two Sentinel swaths') - parser.add_argument('-m', type=str, dest='master', required=True, - help='Directory with the master image') + parser.add_argument('-m', type=str, dest='reference', required=True, + help='Directory with the reference image') parser.add_argument('-l', action='store_true', dest='legendre', description='Use legendre interpolation instead of default hermite') @@ -36,9 +36,9 @@ if __name__ == '__main__': method = 'hermite' try: - mdb = shelve.open( os.path.join(inps.master, 'data'), flag='r') + mdb = shelve.open( os.path.join(inps.reference, 'data'), flag='r') except: - mdb = shelve.open( os.path.join(inps.master, 'raw'), flag='r') + mdb = shelve.open( os.path.join(inps.reference, 'raw'), flag='r') mFrame = mdb['frame'] diff --git a/contrib/stack/stripmapStack/crossmul.py b/contrib/stack/stripmapStack/crossmul.py index b92247a..141e4cb 100755 --- a/contrib/stack/stripmapStack/crossmul.py +++ b/contrib/stack/stripmapStack/crossmul.py @@ -17,10 +17,10 @@ def createParser(): Command Line Parser. ''' parser = argparse.ArgumentParser( description='Generate offset field between two Sentinel swaths') - parser.add_argument('-m', '--master', type=str, dest='master', required=True, - help='Master image') - parser.add_argument('-s', '--slave', type=str, dest='slave', required=True, - help='Slave image') + parser.add_argument('-m', '--reference', type=str, dest='reference', required=True, + help='Reference image') + parser.add_argument('-s', '--secondary', type=str, dest='secondary', required=True, + help='Secondary image') parser.add_argument('-o', '--outdir', type=str, dest='prefix', default='crossmul', help='Prefix of output int and amp files') parser.add_argument('-a', '--alks', type=int, dest='azlooks', default=1, @@ -89,10 +89,10 @@ def main(iargs=None): inps = cmdLineParse(iargs) img1 = isceobj.createImage() - img1.load(inps.master + '.xml') + img1.load(inps.reference + '.xml') img2 = isceobj.createImage() - img2.load(inps.slave + '.xml') + img2.load(inps.secondary + '.xml') os.makedirs(os.path.dirname(inps.prefix), exist_ok=True) diff --git a/contrib/stack/stripmapStack/denseOffsets.py b/contrib/stack/stripmapStack/denseOffsets.py index 69ccba3..1c585aa 100755 --- a/contrib/stack/stripmapStack/denseOffsets.py +++ b/contrib/stack/stripmapStack/denseOffsets.py @@ -20,10 +20,10 @@ def createParser(): ''' parser = argparse.ArgumentParser( description='Generate offset field between two Sentinel swaths') - parser.add_argument('-m','--master', type=str, dest='master', required=True, - help='Master image') - parser.add_argument('-s', '--slave',type=str, dest='slave', required=True, - help='Slave image') + parser.add_argument('-m','--reference', type=str, dest='reference', required=True, + help='Reference image') + parser.add_argument('-s', '--secondary',type=str, dest='secondary', required=True, + help='Secondary image') parser.add_argument('--ww', type=int, dest='winwidth', default=64, help='Window Width') @@ -60,20 +60,20 @@ def cmdLineParse(iargs = None): return inps @use_api -def estimateOffsetField(master, slave, inps=None): +def estimateOffsetField(reference, secondary, inps=None): ''' Estimate offset field between burst and simamp. ''' - ###Loading the slave image object + ###Loading the secondary image object sim = isceobj.createSlcImage() - sim.load(slave+'.xml') + sim.load(secondary+'.xml') sim.setAccessMode('READ') sim.createImage() - ###Loading the master image object + ###Loading the reference image object sar = isceobj.createSlcImage() - sar.load(master + '.xml') + sar.load(reference + '.xml') sar.setAccessMode('READ') sar.createImage() @@ -129,7 +129,7 @@ def main(iargs=None): outDir = os.path.dirname(inps.outprefix) os.makedirs(outDir, exist_ok=True) - objOffset = estimateOffsetField(inps.master, inps.slave, inps) + objOffset = estimateOffsetField(inps.reference, inps.secondary, inps) print('Top left corner of offset image: ', objOffset.locationDown[0][0],objOffset.locationAcross[0][0]) diff --git a/contrib/stack/stripmapStack/deskewALOS2.py b/contrib/stack/stripmapStack/deskewALOS2.py index 3173bec..f547d71 100755 --- a/contrib/stack/stripmapStack/deskewALOS2.py +++ b/contrib/stack/stripmapStack/deskewALOS2.py @@ -15,25 +15,25 @@ import datetime def cmdLineParse(): parser = argparse.ArgumentParser( description='Use polynomial offsets and create burst by burst interferograms') - parser.add_argument('-i', dest='master', type=str, required=True, - help='Directory with master acquisition') + parser.add_argument('-i', dest='reference', type=str, required=True, + help='Directory with reference acquisition') inps = parser.parse_args() - if inps.master.endswith('/'): - inps.master = inps.master[:-1] + if inps.reference.endswith('/'): + inps.reference = inps.reference[:-1] return inps -def resampSlave(master, burst, doppler, azpoly, flatten=False): +def resampSecondary(reference, burst, doppler, azpoly, flatten=False): ''' Resample burst by burst. ''' inimg = isceobj.createSlcImage() - base = os.path.basename(master) - inimg.load(os.path.join(master, base+ '_orig.slc.xml')) + base = os.path.basename(reference) + inimg.load(os.path.join(reference, base+ '_orig.slc.xml')) inimg.setAccessMode('READ') width = inimg.getWidth() length = inimg.getLength() @@ -64,7 +64,7 @@ def resampSlave(master, burst, doppler, azpoly, flatten=False): imgOut = isceobj.createSlcImage() imgOut.setWidth(width) - imgOut.filename = os.path.join(master, base+'.slc') + imgOut.filename = os.path.join(reference, base+'.slc') imgOut.setAccessMode('write') rObj.flatten = flatten @@ -116,7 +116,7 @@ if __name__ == '__main__': ''' inps = cmdLineParse() - db = shelve.open(os.path.join(inps.master, 'original'), flag='r') + db = shelve.open(os.path.join(inps.reference, 'original'), flag='r') frame = db['frame'] doppler = db['doppler'] fmrate = db['fmrate'] @@ -124,7 +124,7 @@ if __name__ == '__main__': azpoly, dt0 = estimateAzShift(frame, doppler, fmrate) - imgout = resampSlave(inps.master, frame, doppler, azpoly) + imgout = resampSecondary(inps.reference, frame, doppler, azpoly) imgout.setAccessMode('READ') frame.image = imgout @@ -137,7 +137,7 @@ if __name__ == '__main__': # frame.sensingMid -= delta # frame.sensingStop -= delta - db = shelve.open(os.path.join(inps.master, 'data')) + db = shelve.open(os.path.join(inps.reference, 'data')) db['frame'] = frame db['doppler'] = doppler db['fmrate'] = fmrate diff --git a/contrib/stack/stripmapStack/estimateIono.py b/contrib/stack/stripmapStack/estimateIono.py index 725e0d2..1a84252 100755 --- a/contrib/stack/stripmapStack/estimateIono.py +++ b/contrib/stack/stripmapStack/estimateIono.py @@ -553,7 +553,7 @@ def main(iargs=None): maskFile = os.path.join(inps.outDir, "mask.bil") - #masterFrame = self._insar.loadProduct( self._insar.masterSlcCropProduct) + #referenceFrame = self._insar.loadProduct( self._insar.referenceSlcCropProduct) wvl, wvlL, wvlH, B = getBandFrequencies(inps) f0 = SPEED_OF_LIGHT/wvl @@ -561,7 +561,7 @@ def main(iargs=None): fH = SPEED_OF_LIGHT/wvlH ###Determine looks - #azLooks, rgLooks = self.insar.numberOfLooks( masterFrame, self.posting, + #azLooks, rgLooks = self.insar.numberOfLooks( referenceFrame, self.posting, # self.numberAzimuthLooks, self.numberRangeLooks) diff --git a/contrib/stack/stripmapStack/fixMaster.py b/contrib/stack/stripmapStack/fixReference.py similarity index 80% rename from contrib/stack/stripmapStack/fixMaster.py rename to contrib/stack/stripmapStack/fixReference.py index 35d7275..2e7dce1 100755 --- a/contrib/stack/stripmapStack/fixMaster.py +++ b/contrib/stack/stripmapStack/fixReference.py @@ -11,9 +11,9 @@ def cmdLineParse(): Command line parser. ''' - parser = argparse.ArgumentParser(description='Fix master metadata') - parser.add_argument('-m', '--master', dest='master', type=str, required=True, - help='Directory with master SLC') + parser = argparse.ArgumentParser(description='Fix reference metadata') + parser.add_argument('-m', '--reference', dest='reference', type=str, required=True, + help='Directory with reference SLC') parser.add_argument('-o', '--offset', dest='offset', type=str, required=True, help='Pickle with offsets') @@ -26,7 +26,7 @@ if __name__ == '__main__': inps = cmdLineParse() - mdb = shelve.open( os.path.join(inps.master, 'data'), writeback=True) + mdb = shelve.open( os.path.join(inps.reference, 'data'), writeback=True) odb = shelve.open( inps.offset, flag='r') field = odb['cull_field'] diff --git a/contrib/stack/stripmapStack/geo2rdr.py b/contrib/stack/stripmapStack/geo2rdr.py index cec8b21..5dcc787 100755 --- a/contrib/stack/stripmapStack/geo2rdr.py +++ b/contrib/stack/stripmapStack/geo2rdr.py @@ -19,12 +19,12 @@ def createParser(): help = 'Number of azimuth looks') parser.add_argument('-r','--rlks', dest='rlks', type=int, default=1, help = 'Number of range looks') - parser.add_argument('-m', '--master', dest='master', type=str, required=True, - help = 'Dir with master frame') + parser.add_argument('-m', '--reference', dest='reference', type=str, required=True, + help = 'Dir with reference frame') parser.add_argument('-g', '--geom', dest='geom', type=str, default=None, help = 'Dir with geometry products') - parser.add_argument('-s', '--slave', dest='slave', type=str, required=True, - help = 'Dir with slave frame') + parser.add_argument('-s', '--secondary', dest='secondary', type=str, required=True, + help = 'Dir with secondary frame') parser.add_argument('-o', '--outdir', dest='outdir', type=str, default=None, help='Output directory') parser.add_argument('-p', '--poly', dest='poly', type=str, default=None, @@ -43,17 +43,17 @@ def cmdLineParse(iargs = None): inps = parser.parse_args(args=iargs) - if inps.master.endswith('/'): - inps.master = inps.master[:-1] + if inps.reference.endswith('/'): + inps.reference = inps.reference[:-1] - if inps.slave.endswith('/'): - inps.slave = inps.slave[:-1] + if inps.secondary.endswith('/'): + inps.secondary = inps.secondary[:-1] if inps.geom is None: - inps.geom = 'geometry_' + os.path.basename(inps.master) + inps.geom = 'geometry_' + os.path.basename(inps.reference) if inps.outdir is None: - inps.outdir = os.path.join('coreg', os.path.basename(inps.slave)) + inps.outdir = os.path.join('coreg', os.path.basename(inps.secondary)) return inps @@ -258,7 +258,7 @@ def runGeo2rdrCPU(info, latImage, lonImage, demImage, outdir, def main(iargs=None): inps = cmdLineParse(iargs) - print(inps.slave) + print(inps.secondary) # see if the user compiled isce with GPU enabled run_GPU = False @@ -281,8 +281,8 @@ def main(iargs=None): print('CPU mode') runGeo2rdr = runGeo2rdrCPU - db = shelve.open( os.path.join(inps.slave, 'data'), flag='r') - print( os.path.join(inps.slave, 'data')) + db = shelve.open( os.path.join(inps.secondary, 'data'), flag='r') + print( os.path.join(inps.secondary, 'data')) frame = db['frame'] try: dop = db['doppler'] diff --git a/contrib/stack/stripmapStack/geocode.py b/contrib/stack/stripmapStack/geocode.py index 2a7037c..512b19e 100755 --- a/contrib/stack/stripmapStack/geocode.py +++ b/contrib/stack/stripmapStack/geocode.py @@ -55,8 +55,8 @@ def cmdLineParse(): help = 'Number of range looks') parser.add_argument('-d', '--dem', dest='dem', type=str, required=True, help = 'Input DEM to use') - parser.add_argument('-m', '--master', dest='master', type=str, required=True, - help = 'Dir with master frame') + parser.add_argument('-m', '--reference', dest='reference', type=str, required=True, + help = 'Dir with reference frame') parser.add_argument('-b', '--bbox', dest='bbox', type=float, nargs=4, required=True, help='SNWE bounding box') parser.add_argument('-i', '--input', dest='infile', type=str, required=True, @@ -125,8 +125,8 @@ if __name__ == '__main__': #####Parse command line inps = cmdLineParse() - #####Load master metadata - db = shelve.open( os.path.join(inps.master, 'data'), flag='r') + #####Load reference metadata + db = shelve.open( os.path.join(inps.reference, 'data'), flag='r') frame = db['frame'] try: dop = db['doppler'] diff --git a/contrib/stack/stripmapStack/geocodeGdal.py b/contrib/stack/stripmapStack/geocodeGdal.py index e27f0a4..5725e29 100755 --- a/contrib/stack/stripmapStack/geocodeGdal.py +++ b/contrib/stack/stripmapStack/geocodeGdal.py @@ -84,7 +84,7 @@ def prepare_lat_lon(inps): return tempLat, tempLon - # gdal_translate -of VRT -srcwin 384 384 64889 12785 -outsize 1013 199 ../../COMBINED/GEOM_MASTER/LAT.rdr LAT_off.vrt + # gdal_translate -of VRT -srcwin 384 384 64889 12785 -outsize 1013 199 ../../COMBINED/GEOM_REFERENCE/LAT.rdr LAT_off.vrt def writeVRT(infile, latFile, lonFile): diff --git a/contrib/stack/stripmapStack/insarPair.py b/contrib/stack/stripmapStack/insarPair.py index 9aa3550..52d0712 100644 --- a/contrib/stack/stripmapStack/insarPair.py +++ b/contrib/stack/stripmapStack/insarPair.py @@ -25,7 +25,7 @@ class insarPair: """ def __init__(self, name='insarPair', dates=None, observation={}, quality={}, geometry={}, metadata=None): - self.masterDate, self.slaveDate = dates + self.referenceDate, self.secondaryDate = dates ####################################### self.observationsDict = observation diff --git a/contrib/stack/stripmapStack/insarStack.py b/contrib/stack/stripmapStack/insarStack.py index ace1b67..474e399 100644 --- a/contrib/stack/stripmapStack/insarStack.py +++ b/contrib/stack/stripmapStack/insarStack.py @@ -77,19 +77,19 @@ class insarStack: dsq = qualityGroup.create_dataset(dsName, shape=(platTrackObj.numPairs, platTrackObj.length, platTrackObj.width), dtype=dataType) # , chunks=chunk_shape - masterTimes = [None]*platTrackObj.numPairs - slaveTimes = [None]*platTrackObj.numPairs + referenceTimes = [None]*platTrackObj.numPairs + secondaryTimes = [None]*platTrackObj.numPairs for i in range(platTrackObj.numPairs): data, metadata = platTrackObj.pairs[pairs[i]].read(dsName) dsq[i,:,:] = data - master , slave = pairs[i] - masterTimes[i] = master.strftime('%Y-%m-%d %H:%M:%S').encode('utf8') - slaveTimes[i] = slave.strftime('%Y-%m-%d %H:%M:%S').encode('utf8') + reference , secondary = pairs[i] + referenceTimes[i] = reference.strftime('%Y-%m-%d %H:%M:%S').encode('utf8') + secondaryTimes[i] = secondary.strftime('%Y-%m-%d %H:%M:%S').encode('utf8') ############################### # store the pair times as a 2D dataset if len(platTrackObj.dsetQualityNames) > 0: - piars_idx = vstack((masterTimes,slaveTimes)).T + piars_idx = vstack((referenceTimes,secondaryTimes)).T dsq = qualityGroup.create_dataset('pairs_idx', data=piars_idx, dtype=piars_idx.dtype) ############################### # if the reference pixel is not given let's choose a pixel with maximum average coherence @@ -107,21 +107,21 @@ class insarStack: dso = obsGroup.create_dataset(dsName, shape=(platTrackObj.numPairs, platTrackObj.length, platTrackObj.width), dtype=dataType) #, chunks=chunk_shape) - masterTimes = [None]*platTrackObj.numPairs - slaveTimes = [None]*platTrackObj.numPairs + referenceTimes = [None]*platTrackObj.numPairs + secondaryTimes = [None]*platTrackObj.numPairs for i in range(platTrackObj.numPairs): data, metadata = platTrackObj.pairs[pairs[i]].read(dsName) #ds[i,:,:] = data - data[0, platTrackObj.ref_pixel[0] , platTrackObj.ref_pixel[1]] dso[i,:,:] = data - master , slave = pairs[i] - masterTimes[i] = master.strftime('%Y-%m-%d %H:%M:%S').encode("ascii", "ignore") - slaveTimes[i] = slave.strftime('%Y-%m-%d %H:%M:%S').encode("ascii", "ignore") + reference , secondary = pairs[i] + referenceTimes[i] = reference.strftime('%Y-%m-%d %H:%M:%S').encode("ascii", "ignore") + secondaryTimes[i] = secondary.strftime('%Y-%m-%d %H:%M:%S').encode("ascii", "ignore") ############################### # A 2D dataset containing a 2D array of strings. First column - # is the master time and second column the slave time of pairs. + # is the reference time and second column the secondary time of pairs. if len(platTrackObj.dsetObservationNames) > 0: - piars_idx = vstack((masterTimes,slaveTimes)).T + piars_idx = vstack((referenceTimes,secondaryTimes)).T dspairs = obsGroup.create_dataset('pairs_idx', data=piars_idx, dtype=piars_idx.dtype) ################################### for key,value in metadata.items(): diff --git a/contrib/stack/stripmapStack/invertMisreg.py b/contrib/stack/stripmapStack/invertMisreg.py index 19feabb..6e85c9e 100755 --- a/contrib/stack/stripmapStack/invertMisreg.py +++ b/contrib/stack/stripmapStack/invertMisreg.py @@ -19,11 +19,11 @@ def createParser(): Create command line parser. ''' - parser = argparse.ArgumentParser( description='extracts the overlap geometry between master bursts') + parser = argparse.ArgumentParser( description='extracts the overlap geometry between reference bursts') parser.add_argument('-i', '--input', type=str, dest='input', required=True, help='Directory with the overlap directories that has calculated misregistration for each pair') parser.add_argument('-o', '--output', type=str, dest='output', required=True, - help='output directory to save misregistration for each date with respect to the stack Master date') + help='output directory to save misregistration for each date with respect to the stack Reference date') # parser.add_argument('-f', '--misregFileName', type=str, dest='misregFileName', default='misreg.txt', # help='misreg file name that contains the calculated misregistration for a pair') @@ -171,7 +171,7 @@ def main(iargs=None): print('RMSE in azimuth : '+str(RMSE_az)+' pixels') print('RMSE in range : '+str(RMSE_rg)+' pixels') print('') - print('Estimated offsets with respect to the stack master date') + print('Estimated offsets with respect to the stack reference date') print('') offset_dict={} for i in range(len(dateList)): @@ -199,7 +199,7 @@ def main(iargs=None): if __name__ == '__main__' : ''' invert a network of the pair's mis-registrations to - estimate the mis-registrations wrt the Master date. + estimate the mis-registrations wrt the Reference date. ''' main() diff --git a/contrib/stack/stripmapStack/invertOffsets.py b/contrib/stack/stripmapStack/invertOffsets.py index 7d4df14..935cabb 100755 --- a/contrib/stack/stripmapStack/invertOffsets.py +++ b/contrib/stack/stripmapStack/invertOffsets.py @@ -24,11 +24,11 @@ def createParser(): Create command line parser. ''' - parser = argparse.ArgumentParser( description='extracts the overlap geometry between master bursts') + parser = argparse.ArgumentParser( description='extracts the overlap geometry between reference bursts') parser.add_argument('-i', '--input', type=str, dest='input', required=True, help='Directory with the pair directories that includes dense offsets for each pair') parser.add_argument('-o', '--output', type=str, dest='output', required=True, - help='output directory to save dense-offsets for each date with respect to the stack Master date') + help='output directory to save dense-offsets for each date with respect to the stack Reference date') return parser @@ -48,7 +48,7 @@ def write2h5(inps): dirs = glob.glob(os.path.join(inps.input,'*')) pairsDict = {} for dir in dirs: - #Assuming the directory name for a pair is master_slave dates (eg: 20100506_20101112) + #Assuming the directory name for a pair is reference_secondary dates (eg: 20100506_20101112) d12 = os.path.basename(dir) #if os.path.exists(os.path.join(dir,d12+'.bil')): if os.path.exists(os.path.join(dir,'filtAzimuth.off')): @@ -80,15 +80,15 @@ def date_list(h5file): numPiars = pairs.shape[0] dateList = [] tbase = [] - masters = [None]*numPiars - slaves = [None]*numPiars + references = [None]*numPiars + secondarys = [None]*numPiars for i in range(numPiars): - master = pairs[i,0].decode("utf-8") - slave = pairs[i,1].decode("utf-8") - if master not in dateList: dateList.append(master) - if slave not in dateList: dateList.append(slave) - masters[i]=master - slaves[i]=slave + reference = pairs[i,0].decode("utf-8") + secondary = pairs[i,1].decode("utf-8") + if reference not in dateList: dateList.append(reference) + if secondary not in dateList: dateList.append(secondary) + references[i]=reference + secondarys[i]=secondary dateList.sort() d1 = datetime.datetime(*time.strptime(dateList[0],"%Y-%m-%d %H:%M:%S")[0:6]) @@ -100,20 +100,20 @@ def date_list(h5file): dateDict = {} for i in range(len(dateList)): dateDict[dateList[i]] = tbase[i] - return tbase,dateList,dateDict, masters, slaves + return tbase,dateList,dateDict, references, secondarys ##################################### def design_matrix(h5File): - tbase,dateList,dateDict, masters, slaves = date_list(h5File) + tbase,dateList,dateDict, references, secondarys = date_list(h5File) numDates = len(dateDict) - numPairs = len(masters) + numPairs = len(references) A = np.zeros((numPairs,numDates)) B = np.zeros_like(A) tbase = np.array(tbase) for ni in range(numPairs): - ndxt1 = dateList.index(masters[ni]) - ndxt2 = dateList.index(slaves[ni]) + ndxt1 = dateList.index(references[ni]) + ndxt2 = dateList.index(secondarys[ni]) A[ni,ndxt1] = -1 A[ni,ndxt2] = 1 B[ni,ndxt1:ndxt2] = tbase[ndxt1+1:ndxt2+1]-tbase[ndxt1:ndxt2] @@ -126,8 +126,8 @@ def design_matrix(h5File): return A, B def invert_wlq(inps,h5File): - tbase,dateList,dateDict, masters, slaves = date_list(h5File) - numPairs = len(masters) + tbase,dateList,dateDict, references, secondarys = date_list(h5File) + numPairs = len(references) A,B = design_matrix(h5File) h5 = h5py.File(h5File,'r') @@ -218,8 +218,8 @@ def invert_wlq(inps,h5File): ''' def invert(inps,h5File): - tbase,dateList,dateDict, masters, slaves = date_list(h5File) - numPairs = len(masters) + tbase,dateList,dateDict, references, secondarys = date_list(h5File) + numPairs = len(references) A,B = design_matrix(h5File) h5 = h5py.File(h5File,'r') @@ -361,7 +361,7 @@ def main(iargs=None): if __name__ == '__main__' : ''' invert a network of the pair's mis-registrations to - estimate the mis-registrations wrt the Master date. + estimate the mis-registrations wrt the Reference date. ''' main() diff --git a/contrib/stack/stripmapStack/prepStripmap4timeseries.py b/contrib/stack/stripmapStack/prepStripmap4timeseries.py index 2789c11..482c560 100755 --- a/contrib/stack/stripmapStack/prepStripmap4timeseries.py +++ b/contrib/stack/stripmapStack/prepStripmap4timeseries.py @@ -56,9 +56,9 @@ def extractIsceMetadata(shelveFile): with shelve.open(shelveFile, flag='r') as mdb: burst = mdb['frame'] - #master = ut.loadProduct(shelveFile) - #burst = master.bursts[0] - #burstEnd = master.bursts[-1] + #reference = ut.loadProduct(shelveFile) + #burst = reference.bursts[0] + #burstEnd = reference.bursts[-1] metadata = {} metadata['radarWavelength'] = burst.radarWavelegth metadata['rangePixelSize'] = burst.instrument.rangePixelSize diff --git a/contrib/stack/stripmapStack/masterStackCopy.py b/contrib/stack/stripmapStack/referenceStackCopy.py similarity index 72% rename from contrib/stack/stripmapStack/masterStackCopy.py rename to contrib/stack/stripmapStack/referenceStackCopy.py index 61fbb5b..4f92329 100755 --- a/contrib/stack/stripmapStack/masterStackCopy.py +++ b/contrib/stack/stripmapStack/referenceStackCopy.py @@ -8,12 +8,12 @@ import shelve import logging def createParser(): - parser = argparse.ArgumentParser( description='Duplicating the master SLC') + parser = argparse.ArgumentParser( description='Duplicating the reference SLC') parser.add_argument('-i', '--input_slc', dest='input_slc', type=str, required=True, - help = 'Directory with master acquisition for reference') + help = 'Directory with reference acquisition for reference') parser.add_argument('-o', '--output_slc', dest='output_slc', type=str, required=True, - help='Directory with slave acquisition') + help='Directory with secondary acquisition') return parser @@ -41,17 +41,17 @@ def main(iargs=None): os.makedirs(outDir, exist_ok=True) # copying shelf files as backup - masterShelveDir = os.path.join(outDir, 'masterShelve') - slaveShelveDir = os.path.join(outDir, 'slaveShelve') + referenceShelveDir = os.path.join(outDir, 'referenceShelve') + secondaryShelveDir = os.path.join(outDir, 'secondaryShelve') - os.makedirs(masterShelveDir, exist_ok=True) - os.makedirs(slaveShelveDir, exist_ok=True) + os.makedirs(referenceShelveDir, exist_ok=True) + os.makedirs(secondaryShelveDir, exist_ok=True) - cmd = 'cp '+ inDir + '/data* ' + slaveShelveDir + cmd = 'cp '+ inDir + '/data* ' + secondaryShelveDir os.system(cmd) - cmd = 'cp '+ inDir + '/data* ' + masterShelveDir + cmd = 'cp '+ inDir + '/data* ' + referenceShelveDir os.system(cmd) cmd = 'gdal_translate -of ENVI ' + inps.input_slc + " " + inps.output_slc diff --git a/contrib/stack/stripmapStack/refineMasterTiming.py b/contrib/stack/stripmapStack/refineReferenceTiming.py similarity index 87% rename from contrib/stack/stripmapStack/refineMasterTiming.py rename to contrib/stack/stripmapStack/refineReferenceTiming.py index f95a06d..8e89705 100755 --- a/contrib/stack/stripmapStack/refineMasterTiming.py +++ b/contrib/stack/stripmapStack/refineReferenceTiming.py @@ -19,20 +19,20 @@ def cmdLineParse(): ''' parser = argparse.ArgumentParser( description='Generate offset field between two Sentinel swaths') - parser.add_argument('-m', type=str, dest='master', required=True, - help='Directory with the master image') + parser.add_argument('-m', type=str, dest='reference', required=True, + help='Directory with the reference image') parser.add_argument('-g', type=str, dest='geom', default=None, - help='Directory with geometry products. If not provided: geometry_master') - parser.add_argument('-o', type=str, default='mastershift.json', dest='outfile', + help='Directory with geometry products. If not provided: geometry_reference') + parser.add_argument('-o', type=str, default='referenceshift.json', dest='outfile', help='Misregistration in subpixels') inps = parser.parse_args() - if inps.master.endswith('/'): - inps.master = inps.master[:-1] + if inps.reference.endswith('/'): + inps.reference = inps.reference[:-1] if inps.geom is None: - inps.geom = 'geometry_' + os.path.basename(inps.master) + inps.geom = 'geometry_' + os.path.basename(inps.reference) return inps @@ -56,7 +56,7 @@ def estimateOffsetField(burst, simfile,offset=0.0): width = sar.getWidth() length = sar.getLength() - objOffset = Ampcor(name='master_offset') + objOffset = Ampcor(name='reference_offset') objOffset.configure() objOffset.setWindowSizeWidth(128) objOffset.setWindowSizeHeight(128) @@ -150,7 +150,7 @@ if __name__ == '__main__': inps = cmdLineParse() - db = shelve.open( os.path.join(inps.master, 'data'), flag='r') + db = shelve.open( os.path.join(inps.reference, 'data'), flag='r') frame = db['frame'] @@ -161,7 +161,7 @@ if __name__ == '__main__': field = estimateOffsetField(frame, outfile) - odb = shelve.open('masterOffset') + odb = shelve.open('referenceOffset') odb['raw_field'] = field shifts, cull = fitOffsets(field) diff --git a/contrib/stack/stripmapStack/refineSlaveTiming.py b/contrib/stack/stripmapStack/refineSecondaryTiming.py similarity index 78% rename from contrib/stack/stripmapStack/refineSlaveTiming.py rename to contrib/stack/stripmapStack/refineSecondaryTiming.py index 4958f58..fda3b0c 100755 --- a/contrib/stack/stripmapStack/refineSlaveTiming.py +++ b/contrib/stack/stripmapStack/refineSecondaryTiming.py @@ -19,14 +19,14 @@ def createParser(): ''' parser = argparse.ArgumentParser( description='Generate offset field between two Sentinel swaths') - parser.add_argument('-m','--master', type=str, dest='master', required=True, - help='Master image') - parser.add_argument('--mm', type=str, dest='metamaster', default=None, - help='Master meta data dir') - parser.add_argument('-s', '--slave', type=str, dest='slave', required=True, - help='Slave image') - parser.add_argument('--ss', type=str, dest='metaslave', default=None, - help='Slave meta data dir') + parser.add_argument('-m','--reference', type=str, dest='reference', required=True, + help='Reference image') + parser.add_argument('--mm', type=str, dest='metareference', default=None, + help='Reference meta data dir') + parser.add_argument('-s', '--secondary', type=str, dest='secondary', required=True, + help='Secondary image') + parser.add_argument('--ss', type=str, dest='metasecondary', default=None, + help='Secondary meta data dir') parser.add_argument('-o', '--outfile',type=str, required=True, dest='outfile', help='Misregistration in subpixels') @@ -53,26 +53,26 @@ def cmdLineParse(iargs = None): return parser.parse_args(args=iargs) -def estimateOffsetField(master, slave, azoffset=0, rgoffset=0): +def estimateOffsetField(reference, secondary, azoffset=0, rgoffset=0): ''' Estimate offset field between burst and simamp. ''' sim = isceobj.createSlcImage() - sim.load(slave+'.xml') + sim.load(secondary+'.xml') sim.setAccessMode('READ') sim.createImage() sar = isceobj.createSlcImage() - sar.load(master + '.xml') + sar.load(reference + '.xml') sar.setAccessMode('READ') sar.createImage() width = sar.getWidth() length = sar.getLength() - objOffset = Ampcor(name='master_offset1') + objOffset = Ampcor(name='reference_offset1') objOffset.configure() objOffset.setAcrossGrossOffset(rgoffset) objOffset.setDownGrossOffset(azoffset) @@ -173,7 +173,7 @@ def main(iargs=None): inps = cmdLineParse(iargs) - field = estimateOffsetField(inps.master, inps.slave, + field = estimateOffsetField(inps.reference, inps.secondary, azoffset=inps.azoff, rgoffset=inps.rgoff) if os.path.exists(inps.outfile): @@ -182,31 +182,31 @@ def main(iargs=None): outDir = os.path.dirname(inps.outfile) os.makedirs(outDir, exist_ok=True) - if inps.metamaster is not None: - masterShelveDir = os.path.join(outDir, 'masterShelve') - os.makedirs(masterShelveDir, exist_ok=True) + if inps.metareference is not None: + referenceShelveDir = os.path.join(outDir, 'referenceShelve') + os.makedirs(referenceShelveDir, exist_ok=True) - cmd = 'cp ' + inps.metamaster + '/data* ' + masterShelveDir + cmd = 'cp ' + inps.metareference + '/data* ' + referenceShelveDir os.system(cmd) - if inps.metaslave is not None: - slaveShelveDir = os.path.join(outDir, 'slaveShelve') - os.makedirs(slaveShelveDir, exist_ok=True) - cmd = 'cp ' + inps.metaslave + '/data* ' + slaveShelveDir + if inps.metasecondary is not None: + secondaryShelveDir = os.path.join(outDir, 'secondaryShelve') + os.makedirs(secondaryShelveDir, exist_ok=True) + cmd = 'cp ' + inps.metasecondary + '/data* ' + secondaryShelveDir os.system(cmd) rgratio = 1.0 azratio = 1.0 - if (inps.metamaster is not None) and (inps.metaslave is not None): + if (inps.metareference is not None) and (inps.metasecondary is not None): - # with shelve.open( os.path.join(inps.metamaster, 'data'), 'r') as db: - with shelve.open( os.path.join(masterShelveDir, 'data'), 'r') as db: + # with shelve.open( os.path.join(inps.metareference, 'data'), 'r') as db: + with shelve.open( os.path.join(referenceShelveDir, 'data'), 'r') as db: mframe = db['frame'] - # with shelve.open( os.path.join(inps.metaslave, 'data'), 'r') as db: - with shelve.open( os.path.join(slaveShelveDir, 'data'), 'r') as db: + # with shelve.open( os.path.join(inps.metasecondary, 'data'), 'r') as db: + with shelve.open( os.path.join(secondaryShelveDir, 'data'), 'r') as db: sframe = db['frame'] rgratio = mframe.instrument.getRangePixelSize()/sframe.instrument.getRangePixelSize() diff --git a/contrib/stack/stripmapStack/resampleSlc.py b/contrib/stack/stripmapStack/resampleSlc.py index cf111cf..476fc4f 100755 --- a/contrib/stack/stripmapStack/resampleSlc.py +++ b/contrib/stack/stripmapStack/resampleSlc.py @@ -18,10 +18,10 @@ from iscesys.ImageUtil.ImageUtil import ImageUtil as IU def createParser(): parser = argparse.ArgumentParser( description='Use polynomial offsets and create burst by burst interferograms') - parser.add_argument('-m', '--master', dest='master', type=str, default=None, - help = 'Directory with master acquisition for reference') - parser.add_argument('-s', '--slave', dest='slave', type=str, required=True, - help='Directory with slave acquisition') + parser.add_argument('-m', '--reference', dest='reference', type=str, default=None, + help = 'Directory with reference acquisition for reference') + parser.add_argument('-s', '--secondary', dest='secondary', type=str, required=True, + help='Directory with secondary acquisition') parser.add_argument('-p', '--poly',dest='poly', type=str, default=None, help='Pickle file with the resampling polynomials') @@ -43,11 +43,11 @@ def createParser(): #inps = parser.parse_args() - #if inps.slave.endswith('/'): - # inps.slave = inps.slave[:-1] + #if inps.secondary.endswith('/'): + # inps.secondary = inps.secondary[:-1] #if inps.coreg is None: - # inps.coreg = os.path.join('coreg', os.path.basename(inps.slave)) + # inps.coreg = os.path.join('coreg', os.path.basename(inps.secondary)) #return inps @@ -61,17 +61,17 @@ def cmdLineParse(iargs = None): #inps = parser.parse_args() - if inps.slave.endswith('/'): - inps.slave = inps.slave[:-1] + if inps.secondary.endswith('/'): + inps.secondary = inps.secondary[:-1] if inps.coreg is None: - inps.coreg = os.path.join('coreg', os.path.basename(inps.slave)) + inps.coreg = os.path.join('coreg', os.path.basename(inps.secondary)) return inps @use_api -def resampSlave(burst, offdir, outname, doppler, azpoly, rgpoly, - master=None, flatten=False, zero=False, dims=None): +def resampSecondary(burst, offdir, outname, doppler, azpoly, rgpoly, + reference=None, flatten=False, zero=False, dims=None): ''' Resample burst by burst. ''' @@ -151,11 +151,11 @@ def resampSlave(burst, offdir, outname, doppler, azpoly, rgpoly, rObj.residualRangeImage = rngImg rObj.residualAzimuthImage = aziImg - if master is not None: + if reference is not None: rObj.startingRange = burst.startingRange - rObj.referenceStartingRange = master.startingRange - rObj.referenceSlantRangePixelSpacing = master.getInstrument().getRangePixelSize() - rObj.referenceWavelength = master.getInstrument().getRadarWavelength() + rObj.referenceStartingRange = reference.startingRange + rObj.referenceSlantRangePixelSpacing = reference.getInstrument().getRangePixelSize() + rObj.referenceWavelength = reference.getInstrument().getRadarWavelength() rObj.resamp_slc(imageOut=imgOut) @@ -173,26 +173,26 @@ def main(iargs=None): outDir = inps.coreg os.makedirs(outDir, exist_ok=True) - masterShelveDir = os.path.join(outDir, 'masterShelve') - slaveShelveDir = os.path.join(outDir, 'slaveShelve') + referenceShelveDir = os.path.join(outDir, 'referenceShelve') + secondaryShelveDir = os.path.join(outDir, 'secondaryShelve') - os.makedirs(masterShelveDir, exist_ok=True) - os.makedirs(slaveShelveDir, exist_ok=True) + os.makedirs(referenceShelveDir, exist_ok=True) + os.makedirs(secondaryShelveDir, exist_ok=True) - cmd = 'cp '+ inps.slave + '/data* ' + slaveShelveDir + cmd = 'cp '+ inps.secondary + '/data* ' + secondaryShelveDir print (cmd) os.system(cmd) - cmd = 'cp '+ inps.master + '/data* ' + masterShelveDir + cmd = 'cp '+ inps.reference + '/data* ' + referenceShelveDir os.system(cmd) - # with shelve.open(os.path.join(inps.slave, 'data'), flag='r') as sdb: - with shelve.open(os.path.join(slaveShelveDir, 'data'), flag='r') as sdb: - slave = sdb['frame'] + # with shelve.open(os.path.join(inps.secondary, 'data'), flag='r') as sdb: + with shelve.open(os.path.join(secondaryShelveDir, 'data'), flag='r') as sdb: + secondary = sdb['frame'] try: doppler = sdb['doppler'] except: - doppler = slave._dopplerVsPixel + doppler = secondary._dopplerVsPixel if inps.poly is not None: with shelve.open(inps.poly, flag='r') as db: @@ -205,20 +205,20 @@ def main(iargs=None): rgpoly = None - if inps.master is not None: - #with shelve.open(os.path.join(inps.master, 'data'), flag='r') as mdb: - with shelve.open(os.path.join(masterShelveDir, 'data'), flag='r') as mdb: - master = mdb['frame'] + if inps.reference is not None: + #with shelve.open(os.path.join(inps.reference, 'data'), flag='r') as mdb: + with shelve.open(os.path.join(referenceShelveDir, 'data'), flag='r') as mdb: + reference = mdb['frame'] else: - master = None + reference = None - resampSlave(slave, inps.offsets, outfile, + resampSecondary(secondary, inps.offsets, outfile, doppler, azpoly,rgpoly, flatten=(not inps.noflat), zero=inps.zero, dims = inps.dims, - master = master) + reference = reference) -# flattenSLC(slave, inps.coreg, rgpoly) +# flattenSLC(secondary, inps.coreg, rgpoly) if __name__ == '__main__': ''' diff --git a/contrib/stack/stripmapStack/resampleSlc_subBand.py b/contrib/stack/stripmapStack/resampleSlc_subBand.py index 1c71dcd..47f13cb 100755 --- a/contrib/stack/stripmapStack/resampleSlc_subBand.py +++ b/contrib/stack/stripmapStack/resampleSlc_subBand.py @@ -17,10 +17,10 @@ from isceobj.Util.decorators import use_api def createParser(): parser = argparse.ArgumentParser( description='Use polynomial offsets and create burst by burst interferograms') - parser.add_argument('-m', '--master', dest='master', type=str, default=None, - help = 'Directory with master acquisition for reference') - parser.add_argument('-s', '--slave', dest='slave', type=str, required=True, - help='Directory with slave acquisition') + parser.add_argument('-m', '--reference', dest='reference', type=str, default=None, + help = 'Directory with reference acquisition for reference') + parser.add_argument('-s', '--secondary', dest='secondary', type=str, required=True, + help='Directory with secondary acquisition') parser.add_argument('-p', '--poly',dest='poly', type=str, default=None, help='Pickle file with the resampling polynomials') @@ -42,11 +42,11 @@ def createParser(): #inps = parser.parse_args() - #if inps.slave.endswith('/'): - # inps.slave = inps.slave[:-1] + #if inps.secondary.endswith('/'): + # inps.secondary = inps.secondary[:-1] #if inps.coreg is None: - # inps.coreg = os.path.join('coreg', os.path.basename(inps.slave)) + # inps.coreg = os.path.join('coreg', os.path.basename(inps.secondary)) #return inps @@ -60,17 +60,17 @@ def cmdLineParse(iargs = None): #inps = parser.parse_args() - if inps.slave.endswith('/'): - inps.slave = inps.slave[:-1] + if inps.secondary.endswith('/'): + inps.secondary = inps.secondary[:-1] if inps.coreg is None: - inps.coreg = os.path.join('coreg', os.path.basename(inps.slave)) + inps.coreg = os.path.join('coreg', os.path.basename(inps.secondary)) return inps @use_api -def resampSlave(burst, offdir, outname, doppler, azpoly, rgpoly, - master=None, flatten=False, zero=False, dims=None): +def resampSecondary(burst, offdir, outname, doppler, azpoly, rgpoly, + reference=None, flatten=False, zero=False, dims=None): ''' Resample burst by burst. ''' @@ -152,12 +152,12 @@ def resampSlave(burst, offdir, outname, doppler, azpoly, rgpoly, rObj.residualRangeImage = rngImg rObj.residualAzimuthImage = aziImg - if master is not None: + if reference is not None: rObj.startingRange = burst.startingRange - rObj.referenceStartingRange = master.startingRange - rObj.referenceSlantRangePixelSpacing = master.getInstrument().getRangePixelSize() - # rObj.referenceWavelength = master.getInstrument().getRadarWavelength() - rObj.referenceWavelength = master.subBandRadarWavelength + rObj.referenceStartingRange = reference.startingRange + rObj.referenceSlantRangePixelSpacing = reference.getInstrument().getRangePixelSize() + # rObj.referenceWavelength = reference.getInstrument().getRadarWavelength() + rObj.referenceWavelength = reference.subBandRadarWavelength rObj.resamp_slc(imageOut=imgOut) @@ -175,29 +175,29 @@ def main(iargs=None): outDir = inps.coreg os.makedirs(outDir, exist_ok=True) - masterShelveDir = os.path.join(outDir, 'masterShelve') - slaveShelveDir = os.path.join(outDir, 'slaveShelve') + referenceShelveDir = os.path.join(outDir, 'referenceShelve') + secondaryShelveDir = os.path.join(outDir, 'secondaryShelve') - if inps.master is not None: - os.makedirs(masterShelveDir, exist_ok=True) + if inps.reference is not None: + os.makedirs(referenceShelveDir, exist_ok=True) - os.makedirs(slaveShelveDir, exist_ok=True) + os.makedirs(secondaryShelveDir, exist_ok=True) - cmd = 'cp '+ inps.slave + '/data* ' + slaveShelveDir + cmd = 'cp '+ inps.secondary + '/data* ' + secondaryShelveDir print (cmd) os.system(cmd) - if inps.master is not None: - cmd = 'cp '+ inps.master + '/data* ' + masterShelveDir + if inps.reference is not None: + cmd = 'cp '+ inps.reference + '/data* ' + referenceShelveDir os.system(cmd) - # with shelve.open(os.path.join(inps.slave, 'data'), flag='r') as sdb: - with shelve.open(os.path.join(slaveShelveDir, 'data'), flag='r') as sdb: - slave = sdb['frame'] + # with shelve.open(os.path.join(inps.secondary, 'data'), flag='r') as sdb: + with shelve.open(os.path.join(secondaryShelveDir, 'data'), flag='r') as sdb: + secondary = sdb['frame'] try: doppler = sdb['doppler'] except: - doppler = slave._dopplerVsPixel + doppler = secondary._dopplerVsPixel if inps.poly is not None: with shelve.open(inps.poly, flag='r') as db: @@ -210,20 +210,20 @@ def main(iargs=None): rgpoly = None - if inps.master is not None: - # with shelve.open(os.path.join(inps.master, 'data'), flag='r') as mdb: - with shelve.open(os.path.join(masterShelveDir, 'data'), flag='r') as mdb: - master = mdb['frame'] + if inps.reference is not None: + # with shelve.open(os.path.join(inps.reference, 'data'), flag='r') as mdb: + with shelve.open(os.path.join(referenceShelveDir, 'data'), flag='r') as mdb: + reference = mdb['frame'] else: - master = None + reference = None - resampSlave(slave, inps.offsets, outfile, + resampSecondary(secondary, inps.offsets, outfile, doppler, azpoly,rgpoly, flatten=(not inps.noflat), zero=inps.zero, dims = inps.dims, - master = master) + reference = reference) -# flattenSLC(slave, inps.coreg, rgpoly) +# flattenSLC(secondary, inps.coreg, rgpoly) if __name__ == '__main__': ''' diff --git a/contrib/stack/stripmapStack/splitSpectrum.py b/contrib/stack/stripmapStack/splitSpectrum.py index e3e3e35..5a71ef3 100755 --- a/contrib/stack/stripmapStack/splitSpectrum.py +++ b/contrib/stack/stripmapStack/splitSpectrum.py @@ -80,7 +80,7 @@ def main(iargs=None): ''' Split the range spectrum ''' - #Check if the master and slave are .slc files then go ahead and split the range spectrum + #Check if the reference and secondary are .slc files then go ahead and split the range spectrum tstart = time.time() inps = cmdLineParse(iargs) print ('input full-band SLC: ', inps.slc) diff --git a/contrib/stack/stripmapStack/splitSpectrum_multiple.py b/contrib/stack/stripmapStack/splitSpectrum_multiple.py index 5323af2..bd7c5e2 100755 --- a/contrib/stack/stripmapStack/splitSpectrum_multiple.py +++ b/contrib/stack/stripmapStack/splitSpectrum_multiple.py @@ -114,7 +114,7 @@ def main(iargs=None): ''' Split the range spectrum ''' - #Check if the master and slave are .slc files then go ahead and split the range spectrum + #Check if the reference and secondary are .slc files then go ahead and split the range spectrum tstart = time.time() inps = cmdLineParse(iargs) diff --git a/contrib/stack/stripmapStack/stackStripMap.py b/contrib/stack/stripmapStack/stackStripMap.py index f25158d..355446f 100755 --- a/contrib/stack/stripmapStack/stackStripMap.py +++ b/contrib/stack/stripmapStack/stackStripMap.py @@ -40,8 +40,8 @@ def createParser(): parser.add_argument('-d', '--dem', dest='dem', type=str, required=True, help='DEM file (with .xml and .vrt files)') - parser.add_argument('-m', '--master_date', dest='masterDate', type=str, default=None, - help='Directory with master acquisition') + parser.add_argument('-m', '--reference_date', dest='referenceDate', type=str, default=None, + help='Directory with reference acquisition') parser.add_argument('-t', '--time_threshold', dest='dtThr', type=float, default=10000.0, help='Time threshold (max temporal baseline in days)') @@ -128,15 +128,15 @@ def get_dates(inps): acuisitionDates.sort() print (dirs) print (acuisitionDates) - if inps.masterDate not in acuisitionDates: - print ('master date was not found. The first acquisition will be considered as the stack master date.') - if inps.masterDate is None or inps.masterDate not in acuisitionDates: - inps.masterDate = acuisitionDates[0] - slaveDates = acuisitionDates.copy() - slaveDates.remove(inps.masterDate) - return acuisitionDates, inps.masterDate, slaveDates + if inps.referenceDate not in acuisitionDates: + print ('reference date was not found. The first acquisition will be considered as the stack reference date.') + if inps.referenceDate is None or inps.referenceDate not in acuisitionDates: + inps.referenceDate = acuisitionDates[0] + secondaryDates = acuisitionDates.copy() + secondaryDates.remove(inps.referenceDate) + return acuisitionDates, inps.referenceDate, secondaryDates -def slcStack(inps, acquisitionDates, stackMasterDate, slaveDates, pairs, splitFlag=False, rubberSheet=False): +def slcStack(inps, acquisitionDates, stackReferenceDate, secondaryDates, pairs, splitFlag=False, rubberSheet=False): # A coregistered stack of SLCs i=0 @@ -152,30 +152,30 @@ def slcStack(inps, acquisitionDates, stackMasterDate, slaveDates, pairs, splitFl i+=1 runObj = run() - runObj.configure(inps, 'run_' + str(i) + "_master") - config_prefix = "config_master_" - runObj.master_focus_split_geometry(stackMasterDate, config_prefix, split=splitFlag, focus=not inps.nofocus, native=not inps.zerodop) + runObj.configure(inps, 'run_' + str(i) + "_reference") + config_prefix = "config_reference_" + runObj.reference_focus_split_geometry(stackReferenceDate, config_prefix, split=splitFlag, focus=not inps.nofocus, native=not inps.zerodop) runObj.finalize() i+=1 runObj = run() runObj.configure(inps, 'run_' + str(i) + "_focus_split") config_prefix = "config_focus_split" - runObj.slaves_focus_split(slaveDates, config_prefix, split=splitFlag, focus=not inps.nofocus, native=not inps.zerodop) + runObj.secondarys_focus_split(secondaryDates, config_prefix, split=splitFlag, focus=not inps.nofocus, native=not inps.zerodop) runObj.finalize() i+=1 runObj = run() runObj.configure(inps, 'run_' + str(i) + "_geo2rdr_coarseResamp") config_prefix = "config_geo2rdr_coarseResamp_" - runObj.slaves_geo2rdr_resampleSlc(stackMasterDate, slaveDates, config_prefix, native=(not inps.nofocus) or (not inps.zerodop)) + runObj.secondarys_geo2rdr_resampleSlc(stackReferenceDate, secondaryDates, config_prefix, native=(not inps.nofocus) or (not inps.zerodop)) runObj.finalize() i+=1 runObj = run() - runObj.configure(inps, 'run_' + str(i) + "_refineSlaveTiming") - config_prefix = 'config_refineSlaveTiming_' - runObj.refineSlaveTiming_Network(pairs, stackMasterDate, slaveDates, config_prefix) + runObj.configure(inps, 'run_' + str(i) + "_refineSecondaryTiming") + config_prefix = 'config_refineSecondaryTiming_' + runObj.refineSecondaryTiming_Network(pairs, stackReferenceDate, secondaryDates, config_prefix) runObj.finalize() i+=1 @@ -188,7 +188,7 @@ def slcStack(inps, acquisitionDates, stackMasterDate, slaveDates, pairs, splitFl runObj = run() runObj.configure(inps, 'run_' + str(i) + "_fineResamp") config_prefix = 'config_fineResamp_' - runObj.slaves_fine_resampleSlc(stackMasterDate, slaveDates, config_prefix, split=splitFlag) + runObj.secondarys_fine_resampleSlc(stackReferenceDate, secondaryDates, config_prefix, split=splitFlag) runObj.finalize() if rubberSheet: @@ -196,7 +196,7 @@ def slcStack(inps, acquisitionDates, stackMasterDate, slaveDates, pairs, splitFl runObj = run() runObj.configure(inps, 'run_' + str(i) + "_denseOffset") config_prefix = 'config_denseOffset_' - runObj.denseOffsets_Network(pairs, stackMasterDate, slaveDates, config_prefix) + runObj.denseOffsets_Network(pairs, stackReferenceDate, secondaryDates, config_prefix) runObj.finalize() i+=1 @@ -209,20 +209,20 @@ def slcStack(inps, acquisitionDates, stackMasterDate, slaveDates, pairs, splitFl runObj = run() runObj.configure(inps, 'run_' + str(i) + "_resampleOffset") config_prefix = 'config_resampOffsets_' - runObj.resampleOffset(slaveDates, config_prefix) + runObj.resampleOffset(secondaryDates, config_prefix) runObj.finalize() i+=1 runObj = run() runObj.configure(inps, 'run_' + str(i) + "_replaceOffsets") - runObj.replaceOffsets(slaveDates) + runObj.replaceOffsets(secondaryDates) runObj.finalize() i+=1 runObj = run() runObj.configure(inps, 'run_' + str(i) + "_fineResamp") config_prefix = 'config_fineResamp_' - runObj.slaves_fine_resampleSlc(stackMasterDate, slaveDates, config_prefix, split=splitFlag) + runObj.secondarys_fine_resampleSlc(stackReferenceDate, secondaryDates, config_prefix, split=splitFlag) runObj.finalize() # adding the baseline grid generation @@ -230,27 +230,27 @@ def slcStack(inps, acquisitionDates, stackMasterDate, slaveDates, pairs, splitFl config_prefix = 'config_baselinegrid_' runObj = run() runObj.configure(inps, 'run_' + str(i) + "_grid_baseline") - runObj.gridBaseline(stackMasterDate, slaveDates,config_prefix) + runObj.gridBaseline(stackReferenceDate, secondaryDates,config_prefix) runObj.finalize() return i -def interferogramStack(inps, acquisitionDates, stackMasterDate, slaveDates, pairs): +def interferogramStack(inps, acquisitionDates, stackReferenceDate, secondaryDates, pairs): # an interferogram stack without ionosphere correction. # coregistration is with geometry + const offset - i = slcStack(inps, acquisitionDates, stackMasterDate, slaveDates, pairs, splitFlag=False, rubberSheet=False) + i = slcStack(inps, acquisitionDates, stackReferenceDate, secondaryDates, pairs, splitFlag=False, rubberSheet=False) i+=1 runObj = run() runObj.configure(inps, 'run_' + str(i) + "_igram") config_prefix = 'config_igram_' low_or_high = "/" - runObj.igrams_network(pairs, acquisitionDates, stackMasterDate, low_or_high, config_prefix) + runObj.igrams_network(pairs, acquisitionDates, stackReferenceDate, low_or_high, config_prefix) runObj.finalize() -def interferogramIonoStack(inps, acquisitionDates, stackMasterDate, slaveDates, pairs): +def interferogramIonoStack(inps, acquisitionDates, stackReferenceDate, secondaryDates, pairs): # raise exception for ALOS-1 if --fbd2fbs was used run_unpack_file = os.path.join(inps.workDir, 'run_unPackALOS') @@ -265,14 +265,14 @@ def interferogramIonoStack(inps, acquisitionDates, stackMasterDate, slaveDates, # an interferogram stack with ionosphere correction. # coregistration is with geometry + const offset + rubbersheeting - i = slcStack(inps, acquisitionDates, stackMasterDate, slaveDates, pairs, splitFlag=True, rubberSheet=True) + i = slcStack(inps, acquisitionDates, stackReferenceDate, secondaryDates, pairs, splitFlag=True, rubberSheet=True) i+=1 runObj = run() runObj.configure(inps, 'run_' + str(i) + "_igram") config_prefix = 'config_igram_' low_or_high = "/" - runObj.igrams_network(pairs, acquisitionDates, stackMasterDate, low_or_high, config_prefix) + runObj.igrams_network(pairs, acquisitionDates, stackReferenceDate, low_or_high, config_prefix) runObj.finalize() i+=1 @@ -280,7 +280,7 @@ def interferogramIonoStack(inps, acquisitionDates, stackMasterDate, slaveDates, runObj.configure(inps, 'run_' + str(i) + "_igramLowBand") config_prefix = 'config_igramLowBand_' low_or_high = "/LowBand/" - runObj.igrams_network(pairs, acquisitionDates, stackMasterDate, low_or_high, config_prefix) + runObj.igrams_network(pairs, acquisitionDates, stackReferenceDate, low_or_high, config_prefix) runObj.finalize() i+=1 @@ -288,7 +288,7 @@ def interferogramIonoStack(inps, acquisitionDates, stackMasterDate, slaveDates, runObj.configure(inps, 'run_' + str(i) + "_igramHighBand") config_prefix = 'config_igramHighBand_' low_or_high = "/HighBand/" - runObj.igrams_network(pairs, acquisitionDates, stackMasterDate, low_or_high, config_prefix) + runObj.igrams_network(pairs, acquisitionDates, stackReferenceDate, low_or_high, config_prefix) runObj.finalize() i+=1 @@ -297,14 +297,14 @@ def interferogramIonoStack(inps, acquisitionDates, stackMasterDate, slaveDates, config_prefix = 'config_iono_' lowBand = '/LowBand/' highBand = '/HighBand/' - runObj.dispersive_nonDispersive(pairs, acquisitionDates, stackMasterDate, + runObj.dispersive_nonDispersive(pairs, acquisitionDates, stackReferenceDate, lowBand, highBand, config_prefix) runObj.finalize() def main(iargs=None): inps = cmdLineParse(iargs) - # name of the folder of the coreg SLCs including baselines, SLC, geom_master subfolders + # name of the folder of the coreg SLCs including baselines, SLC, geom_reference subfolders inps.stack_folder = 'merged' inps.dense_offsets_folder = 'dense_offsets' @@ -324,16 +324,16 @@ def main(iargs=None): inps.alks = str(int(inps.alks)*int(ar)) # getting the acquisitions - acquisitionDates, stackMasterDate, slaveDates = get_dates(inps) + acquisitionDates, stackReferenceDate, secondaryDates = get_dates(inps) configDir = os.path.join(inps.workDir,'configs') os.makedirs(configDir, exist_ok=True) runDir = os.path.join(inps.workDir,'run_files') os.makedirs(runDir, exist_ok=True) if inps.sensor.lower() == 'uavsar_stack': # don't try to calculate baselines for UAVSAR_STACK data - pairs = selectPairs(inps,stackMasterDate, slaveDates, acquisitionDates,doBaselines=False) + pairs = selectPairs(inps,stackReferenceDate, secondaryDates, acquisitionDates,doBaselines=False) else: - pairs = selectPairs(inps,stackMasterDate, slaveDates, acquisitionDates,doBaselines=True) + pairs = selectPairs(inps,stackReferenceDate, secondaryDates, acquisitionDates,doBaselines=True) print ('number of pairs: ', len(pairs)) ###If only a summary is requested quit after this @@ -348,13 +348,13 @@ def main(iargs=None): ############################# if inps.workflow == 'slc': - slcStack(inps, acquisitionDates, stackMasterDate, slaveDates, pairs, splitFlag=False, rubberSheet=False) + slcStack(inps, acquisitionDates, stackReferenceDate, secondaryDates, pairs, splitFlag=False, rubberSheet=False) elif inps.workflow == 'interferogram': - interferogramStack(inps, acquisitionDates, stackMasterDate, slaveDates, pairs) + interferogramStack(inps, acquisitionDates, stackReferenceDate, secondaryDates, pairs) elif inps.workflow == 'ionosphere': - interferogramIonoStack(inps, acquisitionDates, stackMasterDate, slaveDates, pairs) + interferogramIonoStack(inps, acquisitionDates, stackReferenceDate, secondaryDates, pairs) if __name__ == "__main__": diff --git a/contrib/stack/stripmapStack/topo.py b/contrib/stack/stripmapStack/topo.py index 942128f..58ce23a 100755 --- a/contrib/stack/stripmapStack/topo.py +++ b/contrib/stack/stripmapStack/topo.py @@ -25,8 +25,8 @@ def createParser(): help = 'Number of range looks') parser.add_argument('-d', '--dem', dest='dem', type=str, required=True, help = 'Input DEM to use') - parser.add_argument('-m', '--master', dest='master', type=str, required=True, - help = 'Dir with master frame') + parser.add_argument('-m', '--reference', dest='reference', type=str, required=True, + help = 'Dir with reference frame') parser.add_argument('-o', '--output', dest='outdir', type=str, required=True, help = 'Output directory') parser.add_argument('-n','--native', dest='nativedop', action='store_true', @@ -373,7 +373,7 @@ def runMultilook(in_dir, out_dir, alks, rlks, in_ext='.rdr', out_ext='.rdr', met msg += ' using gdal.Translate() ...' print('-'*50+'\n'+msg) - # create 'geom_master' directory + # create 'geom_reference' directory os.makedirs(out_dir, exist_ok=True) # multilook files one by one @@ -426,7 +426,7 @@ def runMultilook(in_dir, out_dir, alks, rlks, in_ext='.rdr', out_ext='.rdr', met else: raise ValueError('un-supported multilook method: {}'.format(method)) - # copy the full resolution xml/vrt file from ./merged/geom_master to ./geom_master + # copy the full resolution xml/vrt file from ./merged/geom_reference to ./geom_reference # to facilitate the number of looks extraction # the file path inside .xml file is not, but should, updated if in_file != out_file+'.full': @@ -493,7 +493,7 @@ def main(iargs=None): runTopo = runTopoCPU - db = shelve.open(os.path.join(inps.master, 'data')) + db = shelve.open(os.path.join(inps.reference, 'data')) frame = db['frame'] try: doppler = db['doppler'] @@ -520,9 +520,9 @@ def main(iargs=None): runTopo(info,demImage,dop=doppler,nativedop=inps.nativedop, legendre=inps.legendre) runSimamp(os.path.dirname(info.heightFilename),os.path.basename(info.heightFilename)) - # write multilooked geometry files in "geom_master" directory, same level as "Igrams" + # write multilooked geometry files in "geom_reference" directory, same level as "Igrams" if inps.rlks * inps.rlks > 1: - out_dir = os.path.join(os.path.dirname(os.path.dirname(info.outdir)), 'geom_master') + out_dir = os.path.join(os.path.dirname(os.path.dirname(info.outdir)), 'geom_reference') runMultilook(in_dir=info.outdir, out_dir=out_dir, alks=inps.alks, rlks=inps.rlks) return diff --git a/contrib/stack/stripmapStack/unwrap.py b/contrib/stack/stripmapStack/unwrap.py index f81d43b..26107ed 100755 --- a/contrib/stack/stripmapStack/unwrap.py +++ b/contrib/stack/stripmapStack/unwrap.py @@ -64,8 +64,8 @@ def createParser(): parser.add_argument('-d', '--defomax', dest='defomax', type=float, default=2.0, help='Max cycles of deformation') - parser.add_argument('-s', '--master', dest='master', type=str, default='master', - help='Master directory') + parser.add_argument('-s', '--reference', dest='reference', type=str, default='reference', + help='Reference directory') parser.add_argument('-m', '--method', dest='method', type=str, default='icu', help='unwrapping method') @@ -299,18 +299,18 @@ def main(iargs=None): raise Exception("Unwrapping method needs to be either icu, snaphu or snaphu2stage") ######## - # pckfile = os.path.join(inps.master, 'data') + # pckfile = os.path.join(inps.reference, 'data') interferogramDir = os.path.dirname(inps.intfile) if inps.method != 'icu': - masterShelveDir = os.path.join(interferogramDir , 'masterShelve') - os.makedirs(masterShelveDir, exist_ok=True) + referenceShelveDir = os.path.join(interferogramDir , 'referenceShelve') + os.makedirs(referenceShelveDir, exist_ok=True) - inps.master = os.path.dirname(inps.master) - cpCmd='cp ' + os.path.join(inps.master, 'data*') +' '+masterShelveDir + inps.reference = os.path.dirname(inps.reference) + cpCmd='cp ' + os.path.join(inps.reference, 'data*') +' '+referenceShelveDir os.system(cpCmd) - pckfile = os.path.join(masterShelveDir,'data') + pckfile = os.path.join(referenceShelveDir,'data') print(pckfile) metadata = extractInfoFromPickle(pckfile, inps) diff --git a/contrib/stack/topsStack/README.md b/contrib/stack/topsStack/README.md index 488f805..a2fc2d3 100644 --- a/contrib/stack/topsStack/README.md +++ b/contrib/stack/topsStack/README.md @@ -74,7 +74,7 @@ stackSentinel.py -s ../SLC/ -d ../DEM/demLat_N18_N20_Lon_W100_W097.dem.wgs84 -a by running the command above, the configs and run_files folders are created. User needs to execute each run file in order. The order is specified by the index number of the run file name. For the example above, the run_files folder includes the following files: -- run_01_unpack_slc_topo_master +- run_01_unpack_slc_topo_reference - run_02_average_baseline - run_03_extract_burst_overlaps - run_04_overlap_geo2rdr_resample @@ -87,10 +87,10 @@ by running the command above, the configs and run_files folders are created. Use The generated run files are self descriptive. Below is a short explanation on what each run_file does: -**run_01_unpack_slc_topo_master:** +**run_01_unpack_slc_topo_reference:** Includes commands to unpack Sentinel-1 TOPS SLCs using ISCE readers. For older SLCs which need antenna elevation pattern correction, the file is extracted and written to disk. For newer version of SLCs which don’t need the elevation antenna pattern correction, only a gdal virtual “vrt” file (and isce xml file) is generated. The “.vrt” file points to the Sentinel SLC file and reads them whenever required during the processing. If a user wants to write the “.vrt” SLC file to disk, it can be done easily using gdal_translate (e.g. gdal_translate –of ENVI File.vrt File.slc). -The “run_01_unpack_slc_topo_master” also includes a command that refers to the config file of the stack master, which includes configuration for running topo for the stack master. Note that in the pair-wise processing strategy one should run topo (mapping from range-Doppler to geo coordinate) for all pairs. However, with stackSentinel, topo needs to be run only one time for the master in the stack. +The “run_01_unpack_slc_topo_reference” also includes a command that refers to the config file of the stack reference, which includes configuration for running topo for the stack reference. Note that in the pair-wise processing strategy one should run topo (mapping from range-Doppler to geo coordinate) for all pairs. However, with stackSentinel, topo needs to be run only one time for the reference in the stack. **run_02_average_baseline:** @@ -102,7 +102,7 @@ Burst overlaps are extracted for estimating azimuth misregistration using NESD t **run_04_overlap_geo2rdr_resample:*** -Running geo2rdr to estimate geometrical offsets between slave burst overlaps and the stack master burst overlaps. The slave burst overlaps are then resampled to the stack master burst overlaps. +Running geo2rdr to estimate geometrical offsets between secondary burst overlaps and the stack reference burst overlaps. The secondary burst overlaps are then resampled to the stack reference burst overlaps. **run_05_pairs_misreg:** @@ -110,11 +110,11 @@ Using the coregistered stack burst overlaps generated from the previous step, di **run_06_timeseries_misreg:** -A time-series of azimuth and range misregistration is estimated with respect to the stack master. The time-series is a least squares esatimation from the pair misregistration from the previous step. +A time-series of azimuth and range misregistration is estimated with respect to the stack reference. The time-series is a least squares esatimation from the pair misregistration from the previous step. **run_07_geo2rdr_resample:** -Using orbit and DEM, geometrical offsets among all slave SLCs and the stack master is computed. The goometrical offsets, together with the misregistration time-series (from previous step) are used for precise coregistration of each burst SLC. +Using orbit and DEM, geometrical offsets among all secondary SLCs and the stack reference is computed. The goometrical offsets, together with the misregistration time-series (from previous step) are used for precise coregistration of each burst SLC. **run_08_extract_stack_valid_region:** @@ -122,11 +122,11 @@ The valid region between burst SLCs at the overlap area of the bursts slightly c **run_09_merge:** -Merges all bursts for the master and coregistered SLCs. The geometry files are also merged including longitude, latitude, shadow and layer mask, line-of-sight files, etc. . +Merges all bursts for the reference and coregistered SLCs. The geometry files are also merged including longitude, latitude, shadow and layer mask, line-of-sight files, etc. . **run_10_grid_baseline:** -A coarse grid of baselines between each slave SLC and the stack master is generated. This is not used in any computation. +A coarse grid of baselines between each secondary SLC and the stack reference is generated. This is not used in any computation. #### 4.2 Example workflow: Coregistered stack of SLC with modified parameters #### @@ -136,7 +136,7 @@ In the following example, the same stack generation is requested but where the t stackSentinel.py -s ../SLC/ -d ../DEM/demLat_N18_N20_Lon_W100_W097.dem.wgs84 -a ../../AuxDir/ -o ../../Orbits -b '19 20 -99.5 -98.5' -W slc -e 0.7 ``` -When running all the run files, the final products are located in the merge folder which has subdirectories **geom_master**, **baselines** and **SLC**. The **geom_master** folder contains geometry products such as longitude, latitude, height, local incidence angle, look angle, heading, and shadowing/layover mask files. The **baselines** folder contains sparse grids of the perpendicular baseline for each acquisition, while the **SLC** folder contains the coregistered SLCs +When running all the run files, the final products are located in the merge folder which has subdirectories **geom_reference**, **baselines** and **SLC**. The **geom_reference** folder contains geometry products such as longitude, latitude, height, local incidence angle, look angle, heading, and shadowing/layover mask files. The **baselines** folder contains sparse grids of the perpendicular baseline for each acquisition, while the **SLC** folder contains the coregistered SLCs #### 4.3 Example workflow: Stack of interferograms #### diff --git a/contrib/stack/topsStack/SentinelWrapper.py b/contrib/stack/topsStack/SentinelWrapper.py index e8a9577..8433d94 100755 --- a/contrib/stack/topsStack/SentinelWrapper.py +++ b/contrib/stack/topsStack/SentinelWrapper.py @@ -194,10 +194,10 @@ def main(start = None, end = None): config = 'sentinel.ini' if configFile is None else configFile common = ['outputDir', \ - 'masterDir', \ - 'slaveDir', \ - 'masterOrbit', \ - 'slaveOrbit', \ + 'referenceDir', \ + 'secondaryDir', \ + 'referenceOrbit', \ + 'secondaryOrbit', \ 'dem', \ 'swathnum'] @@ -205,7 +205,7 @@ def main(start = None, end = None): 'topo',\ 'geo2rdr',\ 'estimateOffsets_withDEM',\ - 'derampSlave',\ + 'derampSecondary',\ 'resamp_withDEM',\ 'overlap_withDEM',\ 'estimateAzimuthMisreg',\ diff --git a/contrib/stack/topsStack/Stack.py b/contrib/stack/topsStack/Stack.py index 8290ab8..e3d2a0b 100644 --- a/contrib/stack/topsStack/Stack.py +++ b/contrib/stack/topsStack/Stack.py @@ -55,36 +55,36 @@ class config(object): self.f.write('##########################'+'\n') self.f.write(function + '\n') self.f.write('computeBaseline : '+'\n') - self.f.write('master : ' + self.master + '\n') - self.f.write('slave : ' + self.slave + '\n') + self.f.write('reference : ' + self.reference + '\n') + self.f.write('secondary : ' + self.secondary + '\n') self.f.write('baseline_file : ' + self.baselineFile + '\n') def computeGridBaseline(self, function): self.f.write('##########################'+'\n') self.f.write(function + '\n') self.f.write('baselineGrid : '+'\n') - self.f.write('master : ' + self.master + '\n') - self.f.write('slave : ' + self.slave + '\n') + self.f.write('reference : ' + self.reference + '\n') + self.f.write('secondary : ' + self.secondary + '\n') self.f.write('baseline_file : ' + self.baselineFile + '\n') def topo(self,function): self.f.write('##########################'+'\n') - self.f.write('#Call topo to produce master geometry files'+'\n') + self.f.write('#Call topo to produce reference geometry files'+'\n') self.f.write(function + '\n') self.f.write('topo : ' + '\n') - self.f.write('master : ' + self.outDir + '\n') + self.f.write('reference : ' + self.outDir + '\n') self.f.write('dem : ' + self.dem + '\n') - self.f.write('geom_masterDir : ' + self.geom_masterDir + '\n') + self.f.write('geom_referenceDir : ' + self.geom_referenceDir + '\n') self.f.write('##########################' + '\n') def geo2rdr(self,function): self.f.write('##########################' + '\n') self.f.write(function + '\n') self.f.write('geo2rdr :' + '\n') - self.f.write('slave : ' + self.slaveDir + '\n') - self.f.write('master : ' + self.masterDir + '\n') - self.f.write('geom_masterDir : ' + self.geom_master + '\n') - self.f.write('coregSLCdir : ' + self.coregSlaveDir + '\n') + self.f.write('secondary : ' + self.secondaryDir + '\n') + self.f.write('reference : ' + self.referenceDir + '\n') + self.f.write('geom_referenceDir : ' + self.geom_reference + '\n') + self.f.write('coregSLCdir : ' + self.coregSecondaryDir + '\n') self.f.write('overlap : ' + self.overlapTrueOrFalse + '\n') if self.useGPU: self.f.write('useGPU : True \n') @@ -99,10 +99,10 @@ class config(object): self.f.write('##########################' + '\n') self.f.write(function + '\n') self.f.write('resamp_withCarrier : ' + '\n') - self.f.write('slave : ' + self.slaveDir + '\n') - self.f.write('master : ' + self.masterDir + '\n') + self.f.write('secondary : ' + self.secondaryDir + '\n') + self.f.write('reference : ' + self.referenceDir + '\n') #self.f.write('interferogram_prefix :' + self.interferogram_prefix + '\n') - self.f.write('coregdir : ' + self.coregSlaveDir + '\n') + self.f.write('coregdir : ' + self.coregSecondaryDir + '\n') self.f.write('overlap : ' + self.overlapTrueOrFalse + '\n') if self.misreg_az is not None: self.f.write('azimuth_misreg : ' + self.misreg_az + '\n') @@ -113,8 +113,8 @@ class config(object): self.f.write('###################################'+'\n') self.f.write(function + '\n') self.f.write('generateIgram : ' + '\n') - self.f.write('master : ' + self.masterDir + '\n') - self.f.write('slave : ' + self.slaveDir + '\n') + self.f.write('reference : ' + self.referenceDir + '\n') + self.f.write('secondary : ' + self.secondaryDir + '\n') self.f.write('interferogram : ' + self.interferogramDir + '\n') self.f.write('flatten : ' + self.flatten + '\n') self.f.write('interferogram_prefix : ' + self.interferogram_prefix +'\n') @@ -131,8 +131,8 @@ class config(object): self.f.write(function + '\n') self.f.write('overlap_withDEM : '+'\n') self.f.write('interferogram : ' + self.interferogramDir +'\n') - self.f.write('master_dir : ' + self.masterDir+'\n') - self.f.write('slave_dir : ' + self.slaveDir+'\n') + self.f.write('reference_dir : ' + self.referenceDir+'\n') + self.f.write('secondary_dir : ' + self.secondaryDir+'\n') self.f.write('overlap_dir : ' + self.overlapDir+'\n') def azimuthMisreg(self, function): @@ -148,8 +148,8 @@ class config(object): self.f.write('###################################'+'\n') self.f.write(function + '\n') self.f.write('estimateRangeMisreg : ' + '\n') - self.f.write('master : ' + self.masterDir + '\n') - self.f.write('slave : ' + self.slaveDir + '\n') + self.f.write('reference : ' + self.referenceDir + '\n') + self.f.write('secondary : ' + self.secondaryDir + '\n') self.f.write('out_range : ' + self.misregFile + '\n') self.f.write('snr_threshold : ' + self.snrThreshold + '\n') @@ -163,7 +163,7 @@ class config(object): except: pass - self.f.write('inp_master : ' + self.master +'\n') + self.f.write('inp_reference : ' + self.reference +'\n') self.f.write('dirname : ' + self.dirName + '\n') self.f.write('name_pattern : ' + self.namePattern + '\n') self.f.write('outfile : ' + self.mergedFile + '\n') @@ -219,7 +219,7 @@ class config(object): self.f.write('unw : ' + self.unwName + '\n') self.f.write('coh : ' + self.cohName + '\n') self.f.write('nomcf : ' + self.noMCF + '\n') - self.f.write('master : ' + self.master + '\n') + self.f.write('reference : ' + self.reference + '\n') self.f.write('defomax : ' + self.defoMax + '\n') self.f.write('rlks : ' + self.rangeLooks + '\n') self.f.write('alks : ' + self.azimuthLooks + '\n') @@ -237,7 +237,7 @@ class config(object): self.f.write('unw : ' + self.unwName + '\n') self.f.write('coh : ' + self.cohName + '\n') self.f.write('nomcf : ' + self.noMCF + '\n') - self.f.write('master : ' + self.master + '\n') + self.f.write('reference : ' + self.reference + '\n') self.f.write('defomax : ' + self.defoMax + '\n') self.f.write('rlks : ' + self.rangeLooks + '\n') self.f.write('alks : ' + self.azimuthLooks + '\n') @@ -250,8 +250,8 @@ class config(object): self.f.write('denseOffsets : ' + '\n') #self.f.write('DenseOffsets : ' + '\n') #self.f.write('cuDenseOffsets : ' + '\n') - self.f.write('master : ' + self.master + '\n') - self.f.write('slave : ' + self.slave + '\n') + self.f.write('reference : ' + self.reference + '\n') + self.f.write('secondary : ' + self.secondary + '\n') self.f.write('outprefix : ' + self.output + '\n') #self.f.write('ww : 256\n') @@ -294,7 +294,7 @@ class run(object): configObj.orbit_type = safe_dict[slcdate].orbitType configObj.swaths = self.swath_num configObj.outDir = os.path.join(self.work_dir, 'slc/' + slcdate) - configObj.geom_masterDir = os.path.join(self.work_dir, 'geom_slc/' + slcdate) + configObj.geom_referenceDir = os.path.join(self.work_dir, 'geom_slc/' + slcdate) configObj.dem = os.path.join(self.work_dir, configObj.dem) configObj.Sentinel1_TOPS('[Function-1]') configObj.topo('[Function-2]') @@ -302,18 +302,18 @@ class run(object): del configObj self.runf.write(self.text_cmd + 'SentinelWrapper.py -c ' + configName + '\n') - def unpackStackMasterSLC(self, safe_dict): + def unpackStackReferenceSLC(self, safe_dict): swath_path = self.work_dir os.makedirs(self.config_path, exist_ok=True) - configName = os.path.join(self.config_path,'config_master') + configName = os.path.join(self.config_path,'config_reference') configObj = config(configName) configObj.configure(self) - configObj.dirName = safe_dict[self.master_date].safe_file - configObj.orbit_file = safe_dict[self.master_date].orbit - configObj.orbit_type = safe_dict[self.master_date].orbitType + configObj.dirName = safe_dict[self.reference_date].safe_file + configObj.orbit_file = safe_dict[self.reference_date].orbit + configObj.orbit_type = safe_dict[self.reference_date].orbitType configObj.swaths = self.swath_num - configObj.outDir = os.path.join(self.work_dir, 'master') - configObj.geom_masterDir = os.path.join(self.work_dir, 'geom_master') + configObj.outDir = os.path.join(self.work_dir, 'reference') + configObj.geom_referenceDir = os.path.join(self.work_dir, 'geom_reference') configObj.dem = os.path.join(self.work_dir, configObj.dem) configObj.Sentinel1_TOPS('[Function-1]') configObj.topo('[Function-2]') @@ -321,16 +321,16 @@ class run(object): del configObj self.runf.write(self.text_cmd + 'SentinelWrapper.py -c ' + configName + '\n') - def unpackSlavesSLC(self, stackMasterDate, slaveList, safe_dict): + def unpackSecondarysSLC(self, stackReferenceDate, secondaryList, safe_dict): - for slave in slaveList: - configName = os.path.join(self.config_path,'config_slave_'+slave) - outdir = os.path.join(self.work_dir,'slaves/'+slave) + for secondary in secondaryList: + configName = os.path.join(self.config_path,'config_secondary_'+secondary) + outdir = os.path.join(self.work_dir,'secondarys/'+secondary) configObj = config(configName) configObj.configure(self) - configObj.dirName = safe_dict[slave].safe_file - configObj.orbit_file = safe_dict[slave].orbit - configObj.orbit_type = safe_dict[slave].orbitType + configObj.dirName = safe_dict[secondary].safe_file + configObj.orbit_file = safe_dict[secondary].orbit + configObj.orbit_type = safe_dict[secondary].orbitType configObj.swaths = self.swath_num configObj.outDir = outdir configObj.Sentinel1_TOPS('[Function-1]') @@ -338,39 +338,39 @@ class run(object): del configObj self.runf.write(self.text_cmd + 'SentinelWrapper.py -c ' + configName+'\n') - def averageBaseline(self, stackMasterDate, slaveList): + def averageBaseline(self, stackReferenceDate, secondaryList): - for slave in slaveList: - configName = os.path.join(self.config_path,'config_baseline_'+slave) + for secondary in secondaryList: + configName = os.path.join(self.config_path,'config_baseline_'+secondary) configObj = config(configName) configObj.configure(self) - configObj.master = os.path.join(self.work_dir,'master/') - configObj.slave = os.path.join(self.work_dir,'slaves/'+slave) - configObj.baselineFile = os.path.join(self.work_dir,'baselines/' + stackMasterDate +'_' + slave + '/' + stackMasterDate +'_'+ slave + '.txt') + configObj.reference = os.path.join(self.work_dir,'reference/') + configObj.secondary = os.path.join(self.work_dir,'secondarys/'+secondary) + configObj.baselineFile = os.path.join(self.work_dir,'baselines/' + stackReferenceDate +'_' + secondary + '/' + stackReferenceDate +'_'+ secondary + '.txt') configObj.computeAverageBaseline('[Function-1]') configObj.finalize() del configObj self.runf.write(self.text_cmd + 'SentinelWrapper.py -c ' + configName+'\n') - def gridBaseline(self, stackMasterDate, slaveList): - for slave in slaveList: - configName = os.path.join(self.config_path,'config_baselinegrid_'+slave) + def gridBaseline(self, stackReferenceDate, secondaryList): + for secondary in secondaryList: + configName = os.path.join(self.config_path,'config_baselinegrid_'+secondary) configObj = config(configName) configObj.configure(self) - configObj.master = os.path.join(self.work_dir,'master/') - configObj.slave = os.path.join(self.work_dir,'slaves/'+slave) - configObj.baselineFile = os.path.join(self.work_dir, 'merged/baselines/' + slave + '/' + slave ) + configObj.reference = os.path.join(self.work_dir,'reference/') + configObj.secondary = os.path.join(self.work_dir,'secondarys/'+secondary) + configObj.baselineFile = os.path.join(self.work_dir, 'merged/baselines/' + secondary + '/' + secondary ) configObj.computeGridBaseline('[Function-1]') configObj.finalize() del configObj self.runf.write(self.text_cmd + 'SentinelWrapper.py -c ' + configName+'\n') - # also add the master in itself to be consistent with the SLC dir - configName = os.path.join(self.config_path,'config_baselinegrid_master') + # also add the reference in itself to be consistent with the SLC dir + configName = os.path.join(self.config_path,'config_baselinegrid_reference') configObj = config(configName) configObj.configure(self) - configObj.master = os.path.join(self.work_dir,'master/') - configObj.slave = os.path.join(self.work_dir,'master/') - configObj.baselineFile = os.path.join(self.work_dir, 'merged/baselines/' + stackMasterDate + '/' + stackMasterDate) + configObj.reference = os.path.join(self.work_dir,'reference/') + configObj.secondary = os.path.join(self.work_dir,'reference/') + configObj.baselineFile = os.path.join(self.work_dir, 'merged/baselines/' + stackReferenceDate + '/' + stackReferenceDate) configObj.computeGridBaseline('[Function-1]') configObj.finalize() del configObj @@ -379,27 +379,27 @@ class run(object): def extractOverlaps(self): - self.runf.write(self.text_cmd + 'subsetMaster.py -m ' + os.path.join(self.work_dir, 'master') + ' -g ' + os.path.join(self.work_dir, 'geom_master') + '\n') + self.runf.write(self.text_cmd + 'subsetReference.py -m ' + os.path.join(self.work_dir, 'reference') + ' -g ' + os.path.join(self.work_dir, 'geom_reference') + '\n') - def geo2rdr_offset(self, slaveList, fullBurst='False'): + def geo2rdr_offset(self, secondaryList, fullBurst='False'): - for slave in slaveList: - master = self.master_date + for secondary in secondaryList: + reference = self.reference_date if fullBurst == 'True': - configName = os.path.join(self.config_path, 'config_fullBurst_geo2rdr_' + slave) + configName = os.path.join(self.config_path, 'config_fullBurst_geo2rdr_' + secondary) else: - configName = os.path.join(self.config_path, 'config_overlap_geo2rdr_'+slave) + configName = os.path.join(self.config_path, 'config_overlap_geo2rdr_'+secondary) ########### configObj = config(configName) configObj.configure(self) - configObj.slaveDir = os.path.join(self.work_dir, 'slaves/'+slave) - configObj.masterDir = os.path.join(self.work_dir, 'master') - configObj.geom_master = os.path.join(self.work_dir, 'geom_master') - configObj.coregSlaveDir = os.path.join(self.work_dir, 'coreg_slaves/'+slave) + configObj.secondaryDir = os.path.join(self.work_dir, 'secondarys/'+secondary) + configObj.referenceDir = os.path.join(self.work_dir, 'reference') + configObj.geom_reference = os.path.join(self.work_dir, 'geom_reference') + configObj.coregSecondaryDir = os.path.join(self.work_dir, 'coreg_secondarys/'+secondary) if fullBurst == 'True': - configObj.misreg_az = os.path.join(self.work_dir, 'misreg/azimuth/dates/' + slave + '.txt') - configObj.misreg_rng = os.path.join(self.work_dir, 'misreg/range/dates/' + slave + '.txt') + configObj.misreg_az = os.path.join(self.work_dir, 'misreg/azimuth/dates/' + secondary + '.txt') + configObj.misreg_rng = os.path.join(self.work_dir, 'misreg/range/dates/' + secondary + '.txt') configObj.overlapTrueOrFalse = 'False' else: configObj.overlapTrueOrFalse = 'True' @@ -408,24 +408,24 @@ class run(object): del configObj self.runf.write(self.text_cmd + 'SentinelWrapper.py -c ' + configName + '\n') - def resample_with_carrier(self, slaveList, fullBurst='False'): - for slave in slaveList: - master = self.master_date + def resample_with_carrier(self, secondaryList, fullBurst='False'): + for secondary in secondaryList: + reference = self.reference_date if fullBurst == 'True': - configName = os.path.join(self.config_path, 'config_fullBurst_resample_' + slave) + configName = os.path.join(self.config_path, 'config_fullBurst_resample_' + secondary) else: - configName = os.path.join(self.config_path, 'config_overlap_resample_' + slave) + configName = os.path.join(self.config_path, 'config_overlap_resample_' + secondary) ########### configObj = config(configName) configObj.configure(self) - configObj.slaveDir = os.path.join(self.work_dir, 'slaves/' + slave) - configObj.masterDir = os.path.join(self.work_dir, 'master') - configObj.coregSlaveDir = os.path.join(self.work_dir, 'coreg_slaves/' + slave) + configObj.secondaryDir = os.path.join(self.work_dir, 'secondarys/' + secondary) + configObj.referenceDir = os.path.join(self.work_dir, 'reference') + configObj.coregSecondaryDir = os.path.join(self.work_dir, 'coreg_secondarys/' + secondary) configObj.interferogram_prefix = 'coarse' - configObj.masterDir = os.path.join(self.work_dir, 'master') + configObj.referenceDir = os.path.join(self.work_dir, 'reference') if fullBurst == 'True': - configObj.misreg_az = os.path.join(self.work_dir, 'misreg/azimuth/dates/' + slave + '.txt') - configObj.misreg_rng = os.path.join(self.work_dir, 'misreg/range/dates/' + slave + '.txt') + configObj.misreg_az = os.path.join(self.work_dir, 'misreg/azimuth/dates/' + secondary + '.txt') + configObj.misreg_rng = os.path.join(self.work_dir, 'misreg/range/dates/' + secondary + '.txt') configObj.overlapTrueOrFalse = 'False' else: configObj.overlapTrueOrFalse = 'True' @@ -444,36 +444,36 @@ class run(object): pairs.append((dateList[i],dateList[j])) for date in dateList: - safe_dict[date].slc = os.path.join(self.work_dir , 'coreg_slaves/'+date) - safe_dict[date].slc_overlap = os.path.join(self.work_dir , 'coreg_slaves/'+date) - safe_dict[self.master_date].slc = os.path.join(self.work_dir , 'master') - safe_dict[self.master_date].slc_overlap = os.path.join(self.work_dir , 'master') + safe_dict[date].slc = os.path.join(self.work_dir , 'coreg_secondarys/'+date) + safe_dict[date].slc_overlap = os.path.join(self.work_dir , 'coreg_secondarys/'+date) + safe_dict[self.reference_date].slc = os.path.join(self.work_dir , 'reference') + safe_dict[self.reference_date].slc_overlap = os.path.join(self.work_dir , 'reference') for pair in pairs: - master = pair[0] - slave = pair[1] - interferogramDir = os.path.join(self.work_dir, 'coarse_interferograms/'+master+'_'+slave) - configName = os.path.join(self.config_path ,'config_misreg_'+master+'_'+slave) + reference = pair[0] + secondary = pair[1] + interferogramDir = os.path.join(self.work_dir, 'coarse_interferograms/'+reference+'_'+secondary) + configName = os.path.join(self.config_path ,'config_misreg_'+reference+'_'+secondary) configObj = config(configName) configObj.configure(self) - configObj.masterDir = safe_dict[master].slc_overlap - configObj.slaveDir = safe_dict[slave].slc_overlap + configObj.referenceDir = safe_dict[reference].slc_overlap + configObj.secondaryDir = safe_dict[secondary].slc_overlap configObj.interferogramDir = interferogramDir configObj.interferogram_prefix = 'int' configObj.flatten = 'False' configObj.overlapTrueOrFalse = 'True' configObj.generateIgram('[Function-1]') ######################## - configObj.master = interferogramDir + '/' + 'coarse_ifg' - configObj.masterDir = safe_dict[master].slc_overlap - configObj.slaveDir = safe_dict[slave].slc_overlap - configObj.overlapDir = os.path.join(self.work_dir, 'ESD/' + master + '_' + slave) + configObj.reference = interferogramDir + '/' + 'coarse_ifg' + configObj.referenceDir = safe_dict[reference].slc_overlap + configObj.secondaryDir = safe_dict[secondary].slc_overlap + configObj.overlapDir = os.path.join(self.work_dir, 'ESD/' + reference + '_' + secondary) configObj.overlap_withDEM('[Function-2]') ######################## - configObj.misregFile = os.path.join(self.work_dir , 'misreg/azimuth/pairs/' + master+'_'+slave + '/' + master+'_'+slave + '.txt') + configObj.misregFile = os.path.join(self.work_dir , 'misreg/azimuth/pairs/' + reference+'_'+secondary + '/' + reference+'_'+secondary + '.txt') configObj.azimuthMisreg('[Function-3]') ######################## - configObj.misregFile = os.path.join(self.work_dir , 'misreg/range/pairs/' + master+'_'+slave + '/' + master+'_'+slave + '.txt') + configObj.misregFile = os.path.join(self.work_dir , 'misreg/range/pairs/' + reference+'_'+secondary + '/' + reference+'_'+secondary + '.txt') configObj.rangeMisreg('[Function-4]') configObj.finalize() @@ -488,24 +488,24 @@ class run(object): self.runf.write(self.text_cmd + 'invertMisreg.py -i ' + os.path.join(self.work_dir,'misreg/range/pairs/') + ' -o ' + os.path.join(self.work_dir,'misreg/range/dates/') + '\n') def extractStackValidRegion(self): - masterDir = os.path.join(self.work_dir, 'master') - coregSlaveDir = os.path.join(self.work_dir, 'coreg_slaves') - self.runf.write(self.text_cmd + 'extractCommonValidRegion.py -m ' + masterDir + ' -s ' + coregSlaveDir + '\n') + referenceDir = os.path.join(self.work_dir, 'reference') + coregSecondaryDir = os.path.join(self.work_dir, 'coreg_secondarys') + self.runf.write(self.text_cmd + 'extractCommonValidRegion.py -m ' + referenceDir + ' -s ' + coregSecondaryDir + '\n') def generate_burstIgram(self, dateList, safe_dict, pairs): for date in dateList: - safe_dict[date].slc = os.path.join(self.work_dir, 'coreg_slaves/'+date) - safe_dict[self.master_date].slc = os.path.join(self.work_dir , 'master') + safe_dict[date].slc = os.path.join(self.work_dir, 'coreg_secondarys/'+date) + safe_dict[self.reference_date].slc = os.path.join(self.work_dir , 'reference') for pair in pairs: - master = pair[0] - slave = pair[1] - interferogramDir = os.path.join(self.work_dir, 'interferograms/' + master + '_' + slave) - configName = os.path.join(self.config_path ,'config_generate_igram_' + master + '_' + slave) + reference = pair[0] + secondary = pair[1] + interferogramDir = os.path.join(self.work_dir, 'interferograms/' + reference + '_' + secondary) + configName = os.path.join(self.config_path ,'config_generate_igram_' + reference + '_' + secondary) configObj = config(configName) configObj.configure(self) - configObj.masterDir = safe_dict[master].slc - configObj.slaveDir = safe_dict[slave].slc + configObj.referenceDir = safe_dict[reference].slc + configObj.secondaryDir = safe_dict[secondary].slc configObj.interferogramDir = interferogramDir configObj.interferogram_prefix = 'fine' configObj.flatten = 'False' @@ -518,18 +518,18 @@ class run(object): def igram_mergeBurst(self, dateList, safe_dict, pairs): for date in dateList: - safe_dict[date].slc = os.path.join(self.work_dir, 'coreg_slaves/'+date) - safe_dict[self.master_date].slc = os.path.join(self.work_dir , 'master') + safe_dict[date].slc = os.path.join(self.work_dir, 'coreg_secondarys/'+date) + safe_dict[self.reference_date].slc = os.path.join(self.work_dir , 'reference') for pair in pairs: - master = pair[0] - slave = pair[1] - interferogramDir = os.path.join(self.work_dir, 'interferograms/' + master + '_' + slave) - mergedDir = os.path.join(self.work_dir, 'merged/interferograms/' + master + '_' + slave) - configName = os.path.join(self.config_path ,'config_merge_igram_' + master + '_' + slave) + reference = pair[0] + secondary = pair[1] + interferogramDir = os.path.join(self.work_dir, 'interferograms/' + reference + '_' + secondary) + mergedDir = os.path.join(self.work_dir, 'merged/interferograms/' + reference + '_' + secondary) + configName = os.path.join(self.config_path ,'config_merge_igram_' + reference + '_' + secondary) configObj = config(configName) configObj.configure(self) configObj.interferogram_prefix = 'fine' - configObj.master = interferogramDir + configObj.reference = interferogramDir configObj.dirName = interferogramDir configObj.namePattern = 'fine*int' configObj.mergedFile = mergedDir + '/' + configObj.interferogram_prefix + '.int' @@ -545,17 +545,17 @@ class run(object): self.runf.write(self.text_cmd + 'SentinelWrapper.py -c ' + configName + '\n') - def mergeSlaveSLC(self, slaveList, virtual='True'): + def mergeSecondarySLC(self, secondaryList, virtual='True'): - for slave in slaveList: - configName = os.path.join(self.config_path,'config_merge_' + slave) + for secondary in secondaryList: + configName = os.path.join(self.config_path,'config_merge_' + secondary) configObj = config(configName) configObj.configure(self) configObj.stack = os.path.join(self.work_dir, 'stack') - configObj.master = os.path.join(self.work_dir, 'coreg_slaves/' + slave) - configObj.dirName = configObj.master + configObj.reference = os.path.join(self.work_dir, 'coreg_secondarys/' + secondary) + configObj.dirName = configObj.reference configObj.namePattern = 'burst*slc' - configObj.mergedFile = os.path.join(self.work_dir, 'merged/SLC/' + slave + '/' + slave + '.slc') + configObj.mergedFile = os.path.join(self.work_dir, 'merged/SLC/' + secondary + '/' + secondary + '.slc') configObj.mergeBurstsMethod = 'top' configObj.aligned = 'True' configObj.validOnly = 'True' @@ -566,16 +566,16 @@ class run(object): configObj.finalize() self.runf.write(self.text_cmd + 'SentinelWrapper.py -c ' + configName + '\n') - def mergeMaster(self, stackMaster, virtual='True'): + def mergeReference(self, stackReference, virtual='True'): - configName = os.path.join(self.config_path,'config_merge_' + stackMaster) + configName = os.path.join(self.config_path,'config_merge_' + stackReference) configObj = config(configName) configObj.configure(self) configObj.stack = os.path.join(self.work_dir, 'stack') - configObj.master = os.path.join(self.work_dir, 'master') - configObj.dirName = configObj.master + configObj.reference = os.path.join(self.work_dir, 'reference') + configObj.dirName = configObj.reference configObj.namePattern = 'burst*slc' - configObj.mergedFile = os.path.join(self.work_dir, 'merged/SLC/' + stackMaster + '/' + stackMaster + '.slc') + configObj.mergedFile = os.path.join(self.work_dir, 'merged/SLC/' + stackReference + '/' + stackReference + '.slc') configObj.mergeBurstsMethod = 'top' configObj.aligned = 'False' configObj.validOnly = 'True' @@ -594,10 +594,10 @@ class run(object): configName = os.path.join(self.config_path,'config_merge_' + pattern.split('*')[0]) configObj = config(configName) configObj.configure(self) - configObj.master = os.path.join(self.work_dir, 'master') - configObj.dirName = os.path.join(self.work_dir, 'geom_master') + configObj.reference = os.path.join(self.work_dir, 'reference') + configObj.dirName = os.path.join(self.work_dir, 'geom_reference') configObj.namePattern = pattern - configObj.mergedFile = os.path.join(self.work_dir, 'merged/geom_master/' + pattern.split('*')[0] + '.' + pattern.split('*')[1]) + configObj.mergedFile = os.path.join(self.work_dir, 'merged/geom_reference/' + pattern.split('*')[0] + '.' + pattern.split('*')[1]) configObj.mergeBurstsMethod = 'top' configObj.aligned = 'False' configObj.validOnly = 'False' @@ -616,8 +616,8 @@ class run(object): configName = os.path.join(self.config_path,'config_merge_' + slcdate) configObj = config(configName) configObj.configure(self) - configObj.master = os.path.join(self.work_dir, 'slc/' + slcdate) - configObj.dirName = configObj.master + configObj.reference = os.path.join(self.work_dir, 'slc/' + slcdate) + configObj.dirName = configObj.reference configObj.namePattern = 'burst*slc' configObj.mergedFile = os.path.join(self.work_dir, 'merged/slc/' + slcdate + '/' + slcdate + '.slc') configObj.mergeBurstsMethod = 'top' @@ -636,7 +636,7 @@ class run(object): configName = os.path.join(self.config_path,'config_merge_' + slcdate + '_' +pattern.split('*')[0]) configObj = config(configName) configObj.configure(self) - configObj.master = os.path.join(self.work_dir, 'slc/' + slcdate) + configObj.reference = os.path.join(self.work_dir, 'slc/' + slcdate) configObj.dirName = os.path.join(self.work_dir, 'geom_slc/' + slcdate) configObj.namePattern = pattern configObj.mergedFile = os.path.join(self.work_dir, 'merged/geom_slc/' + slcdate + '/' + pattern.split('*')[0] + '.' + pattern.split('*')[1]) @@ -653,18 +653,18 @@ class run(object): def filter_coherence(self, pairs): for pair in pairs: - master = pair[0] - slave = pair[1] - mergedDir = os.path.join(self.work_dir, 'merged/interferograms/' + master + '_' + slave) + reference = pair[0] + secondary = pair[1] + mergedDir = os.path.join(self.work_dir, 'merged/interferograms/' + reference + '_' + secondary) mergedSLCDir = os.path.join(self.work_dir, 'merged/SLC') - configName = os.path.join(self.config_path ,'config_igram_filt_coh_' + master + '_' + slave) + configName = os.path.join(self.config_path ,'config_igram_filt_coh_' + reference + '_' + secondary) configObj = config(configName) configObj.configure(self) configObj.input = os.path.join(mergedDir,'fine.int') configObj.filtName = os.path.join(mergedDir,'filt_fine.int') configObj.cohName = os.path.join(mergedDir,'filt_fine.cor') - configObj.slc1=os.path.join(mergedSLCDir, '{}/{}.slc.full'.format(master, master)) - configObj.slc2=os.path.join(mergedSLCDir, '{}/{}.slc.full'.format(slave, slave)) + configObj.slc1=os.path.join(mergedSLCDir, '{}/{}.slc.full'.format(reference, reference)) + configObj.slc2=os.path.join(mergedSLCDir, '{}/{}.slc.full'.format(secondary, secondary)) configObj.cpxcor=os.path.join(mergedDir,'fine.cor.full') #configObj.filtStrength = str(self.filtStrength) configObj.FilterAndCoherence('[Function-1]') @@ -673,10 +673,10 @@ class run(object): def unwrap(self, pairs): for pair in pairs: - master = pair[0] - slave = pair[1] - mergedDir = os.path.join(self.work_dir, 'merged/interferograms/' + master + '_' + slave) - configName = os.path.join(self.config_path ,'config_igram_unw_' + master + '_' + slave) + reference = pair[0] + secondary = pair[1] + mergedDir = os.path.join(self.work_dir, 'merged/interferograms/' + reference + '_' + secondary) + configName = os.path.join(self.config_path ,'config_igram_unw_' + reference + '_' + secondary) configObj = config(configName) configObj.configure(self) configObj.ifgName = os.path.join(mergedDir,'filt_fine.int') @@ -684,7 +684,7 @@ class run(object): configObj.unwName = os.path.join(mergedDir,'filt_fine.unw') configObj.noMCF = noMCF configObj.rmFilter = self.rmFilter - configObj.master = os.path.join(self.work_dir,'master') + configObj.reference = os.path.join(self.work_dir,'reference') configObj.defoMax = defoMax configObj.unwMethod = self.unwMethod configObj.unwrap('[Function-1]') @@ -694,15 +694,15 @@ class run(object): def denseOffsets(self, pairs): for pair in pairs: - master = pair[0] - slave = pair[1] - configName = os.path.join(self.config_path ,'config_denseOffset_' + master + '_' + slave) + reference = pair[0] + secondary = pair[1] + configName = os.path.join(self.config_path ,'config_denseOffset_' + reference + '_' + secondary) configObj = config(configName) configObj.configure(self) - configObj.master = os.path.join(self.work_dir, 'merged/SLC/' + master + '/' + master + '.slc.full') - configObj.slave = os.path.join(self.work_dir, 'merged/SLC/' + slave + '/' + slave + '.slc.full') + configObj.reference = os.path.join(self.work_dir, 'merged/SLC/' + reference + '/' + reference + '.slc.full') + configObj.secondary = os.path.join(self.work_dir, 'merged/SLC/' + secondary + '/' + secondary + '.slc.full') - configObj.output = os.path.join(self.work_dir , 'merged/dense_offsets/'+master+'_'+slave + '/' + master+'_'+slave) + configObj.output = os.path.join(self.work_dir , 'merged/dense_offsets/'+reference+'_'+secondary + '/' + reference+'_'+secondary) configObj.denseOffset('[Function-1]') configObj.finalize() del configObj diff --git a/contrib/stack/topsStack/baselineGrid.py b/contrib/stack/topsStack/baselineGrid.py index 178ce90..faf3a92 100755 --- a/contrib/stack/topsStack/baselineGrid.py +++ b/contrib/stack/topsStack/baselineGrid.py @@ -15,11 +15,11 @@ import s1a_isce_utils as ut def createParser(): parser = argparse.ArgumentParser( description='Use polynomial offsets and create burst by burst interferograms') - parser.add_argument('-m', '--master', dest='master', type=str, required=True, - help='Directory with master acquisition') + parser.add_argument('-m', '--reference', dest='reference', type=str, required=True, + help='Directory with reference acquisition') - parser.add_argument('-s', '--slave', dest='slave', type=str, required=True, - help='Directory with slave acquisition') + parser.add_argument('-s', '--secondary', dest='secondary', type=str, required=True, + help='Directory with secondary acquisition') parser.add_argument('-b', '--baseline_file', dest='baselineFile', type=str, required=True, help='An output text file which contains the computed baseline') @@ -66,44 +66,44 @@ def main(iargs=None): import numpy as np - masterSwathList = ut.getSwathList(inps.master) - slaveSwathList = ut.getSwathList(inps.slave) - swathList = list(sorted(set(masterSwathList+slaveSwathList))) + referenceSwathList = ut.getSwathList(inps.reference) + secondarySwathList = ut.getSwathList(inps.secondary) + swathList = list(sorted(set(referenceSwathList+secondarySwathList))) #catalog = isceobj.Catalog.createCatalog(self._insar.procDoc.name) baselineDir = os.path.dirname(inps.baselineFile) if baselineDir != '': os.makedirs(baselineDir, exist_ok=True) - masterswaths = [] - slaveswaths = [] + referenceswaths = [] + secondaryswaths = [] for swath in swathList: - masterxml = os.path.join( inps.master, 'IW{0}.xml'.format(swath)) - slavexml = os.path.join( inps.slave, 'IW{0}.xml'.format(swath)) + referencexml = os.path.join( inps.reference, 'IW{0}.xml'.format(swath)) + secondaryxml = os.path.join( inps.secondary, 'IW{0}.xml'.format(swath)) - if os.path.exists(masterxml) and os.path.exists(slavexml): + if os.path.exists(referencexml) and os.path.exists(secondaryxml): - master = ut.loadProduct(os.path.join(inps.master , 'IW{0}.xml'.format(swath))) - slave = ut.loadProduct(os.path.join(inps.slave , 'IW{0}.xml'.format(swath))) + reference = ut.loadProduct(os.path.join(inps.reference , 'IW{0}.xml'.format(swath))) + secondary = ut.loadProduct(os.path.join(inps.secondary , 'IW{0}.xml'.format(swath))) - masterswaths.append(master) - slaveswaths.append(slave) + referenceswaths.append(reference) + secondaryswaths.append(secondary) refElp = Planet(pname='Earth').ellipsoid - mStartingRange = min([x.startingRange for x in masterswaths]) - mFarRange = max([x.farRange for x in masterswaths]) - mSensingStart = min([x.sensingStart for x in masterswaths]) - mSensingStop = max([x.sensingStop for x in masterswaths]) - mOrb = getMergedOrbit(masterswaths) + mStartingRange = min([x.startingRange for x in referenceswaths]) + mFarRange = max([x.farRange for x in referenceswaths]) + mSensingStart = min([x.sensingStart for x in referenceswaths]) + mSensingStop = max([x.sensingStop for x in referenceswaths]) + mOrb = getMergedOrbit(referenceswaths) - dr = masterswaths[0].bursts[0].rangePixelSize - dt = masterswaths[0].bursts[0].azimuthTimeInterval + dr = referenceswaths[0].bursts[0].rangePixelSize + dt = referenceswaths[0].bursts[0].azimuthTimeInterval nPixels = int(np.round( (mFarRange - mStartingRange)/dr)) + 1 nLines = int(np.round( (mSensingStop - mSensingStart).total_seconds() / dt)) + 1 - sOrb = getMergedOrbit(slaveswaths) + sOrb = getMergedOrbit(secondaryswaths) rangeLimits = mFarRange - mStartingRange nRange = int(np.ceil(rangeLimits/7000.)) @@ -121,15 +121,15 @@ def main(iargs=None): fid = open(inps.baselineFile, 'wb') print('Baseline file {0} dims: {1}L x {2}P'.format(inps.baselineFile, nAzimuth, nRange)) - if inps.master == inps.slave: + if inps.reference == inps.secondary: Bperp = np.zeros((nAzimuth,nRange), dtype=np.float32) Bperp.tofile(fid) else: for ii, taz in enumerate(azimuthTime): - masterSV = mOrb.interpolate(taz, method='hermite') - mxyz = np.array(masterSV.getPosition()) - mvel = np.array(masterSV.getVelocity()) + referenceSV = mOrb.interpolate(taz, method='hermite') + mxyz = np.array(referenceSV.getPosition()) + mvel = np.array(referenceSV.getVelocity()) for jj, rng in enumerate(slantRange): @@ -138,9 +138,9 @@ def main(iargs=None): targxyz = np.array(refElp.LLH(target[0], target[1], target[2]).ecef().tolist()) slvTime,slvrng = sOrb.geo2rdr(target) - slaveSV = sOrb.interpolateOrbit(slvTime, method='hermite') + secondarySV = sOrb.interpolateOrbit(slvTime, method='hermite') - sxyz = np.array( slaveSV.getPosition()) + sxyz = np.array( secondarySV.getPosition()) aa = np.linalg.norm(sxyz-mxyz) costheta = (rng*rng + aa*aa - slvrng*slvrng)/(2.*rng*aa) diff --git a/contrib/stack/topsStack/computeBaseline.py b/contrib/stack/topsStack/computeBaseline.py index 498401d..666e345 100755 --- a/contrib/stack/topsStack/computeBaseline.py +++ b/contrib/stack/topsStack/computeBaseline.py @@ -14,11 +14,11 @@ import s1a_isce_utils as ut def createParser(): parser = argparse.ArgumentParser( description='Use polynomial offsets and create burst by burst interferograms') - parser.add_argument('-m', '--master', dest='master', type=str, required=True, - help='Directory with master acquisition') + parser.add_argument('-m', '--reference', dest='reference', type=str, required=True, + help='Directory with reference acquisition') - parser.add_argument('-s', '--slave', dest='slave', type=str, required=True, - help='Directory with slave acquisition') + parser.add_argument('-s', '--secondary', dest='secondary', type=str, required=True, + help='Directory with secondary acquisition') parser.add_argument('-b', '--baseline_file', dest='baselineFile', type=str, required=True, help='An output text file which contains the computed baseline') @@ -44,13 +44,13 @@ def main(iargs=None): #swathList = self._insar.getInputSwathList(self.swaths) - #commonBurstStartMasterIndex = [-1] * self._insar.numberOfSwaths - #commonBurstStartSlaveIndex = [-1] * self._insar.numberOfSwaths + #commonBurstStartReferenceIndex = [-1] * self._insar.numberOfSwaths + #commonBurstStartSecondaryIndex = [-1] * self._insar.numberOfSwaths #numberOfCommonBursts = [0] * self._insar.numberOfSwaths - masterSwathList = ut.getSwathList(inps.master) - slaveSwathList = ut.getSwathList(inps.slave) - swathList = list(sorted(set(masterSwathList+slaveSwathList))) + referenceSwathList = ut.getSwathList(inps.reference) + secondarySwathList = ut.getSwathList(inps.secondary) + swathList = list(sorted(set(referenceSwathList+secondarySwathList))) #catalog = isceobj.Catalog.createCatalog(self._insar.procDoc.name) baselineDir = os.path.dirname(inps.baselineFile) @@ -60,24 +60,24 @@ def main(iargs=None): for swath in swathList: - masterxml = os.path.join( inps.master, 'IW{0}.xml'.format(swath)) - slavexml = os.path.join( inps.slave, 'IW{0}.xml'.format(swath)) + referencexml = os.path.join( inps.reference, 'IW{0}.xml'.format(swath)) + secondaryxml = os.path.join( inps.secondary, 'IW{0}.xml'.format(swath)) - if os.path.exists(masterxml) and os.path.exists(slavexml): + if os.path.exists(referencexml) and os.path.exists(secondaryxml): - master = ut.loadProduct(os.path.join(inps.master , 'IW{0}.xml'.format(swath))) - slave = ut.loadProduct(os.path.join(inps.slave , 'IW{0}.xml'.format(swath))) + reference = ut.loadProduct(os.path.join(inps.reference , 'IW{0}.xml'.format(swath))) + secondary = ut.loadProduct(os.path.join(inps.secondary , 'IW{0}.xml'.format(swath))) - minMaster = master.bursts[0].burstNumber - maxMaster = master.bursts[-1].burstNumber + minReference = reference.bursts[0].burstNumber + maxReference = reference.bursts[-1].burstNumber - minSlave = slave.bursts[0].burstNumber - maxSlave = slave.bursts[-1].burstNumber + minSecondary = secondary.bursts[0].burstNumber + maxSecondary = secondary.bursts[-1].burstNumber - minBurst = max(minSlave, minMaster) - maxBurst = min(maxSlave, maxMaster) - print ('minSlave,maxSlave',minSlave, maxSlave) - print ('minMaster,maxMaster',minMaster, maxMaster) + minBurst = max(minSecondary, minReference) + maxBurst = min(maxSecondary, maxReference) + print ('minSecondary,maxSecondary',minSecondary, maxSecondary) + print ('minReference,maxReference',minReference, maxReference) print ('minBurst, maxBurst: ', minBurst, maxBurst) refElp = Planet(pname='Earth').ellipsoid Bpar = [] @@ -87,17 +87,17 @@ def main(iargs=None): ###Bookkeeping - #commonBurstStartMasterIndex[swath-1] = minBurst - #commonBurstStartSlaveIndex[swath-1] = commonSlaveIndex + #commonBurstStartReferenceIndex[swath-1] = minBurst + #commonBurstStartSecondaryIndex[swath-1] = commonSecondaryIndex #numberOfCommonBursts[swath-1] = numberCommon - #catalog.addItem('IW-{0} Number of bursts in master'.format(swath), master.numberOfBursts, 'baseline') - #catalog.addItem('IW-{0} First common burst in master'.format(swath), minBurst, 'baseline') - #catalog.addItem('IW-{0} Last common burst in master'.format(swath), maxBurst, 'baseline') - #catalog.addItem('IW-{0} Number of bursts in slave'.format(swath), slave.numberOfBursts, 'baseline') - #catalog.addItem('IW-{0} First common burst in slave'.format(swath), minBurst + burstOffset, 'baseline') - #catalog.addItem('IW-{0} Last common burst in slave'.format(swath), maxBurst + burstOffset, 'baseline') + #catalog.addItem('IW-{0} Number of bursts in reference'.format(swath), reference.numberOfBursts, 'baseline') + #catalog.addItem('IW-{0} First common burst in reference'.format(swath), minBurst, 'baseline') + #catalog.addItem('IW-{0} Last common burst in reference'.format(swath), maxBurst, 'baseline') + #catalog.addItem('IW-{0} Number of bursts in secondary'.format(swath), secondary.numberOfBursts, 'baseline') + #catalog.addItem('IW-{0} First common burst in secondary'.format(swath), minBurst + burstOffset, 'baseline') + #catalog.addItem('IW-{0} Last common burst in secondary'.format(swath), maxBurst + burstOffset, 'baseline') #catalog.addItem('IW-{0} Number of common bursts'.format(swath), numberCommon, 'baseline') #refElp = Planet(pname='Earth').ellipsoid @@ -106,22 +106,22 @@ def main(iargs=None): #for boff in [0, numberCommon-1]: ###Baselines at top of common bursts - mBurst = master.bursts[ii-minMaster] - sBurst = slave.bursts[ii-minSlave] + mBurst = reference.bursts[ii-minReference] + sBurst = secondary.bursts[ii-minSecondary] ###Target at mid range tmid = mBurst.sensingMid rng = mBurst.midRange - masterSV = mBurst.orbit.interpolate(tmid, method='hermite') + referenceSV = mBurst.orbit.interpolate(tmid, method='hermite') target = mBurst.orbit.rdr2geo(tmid, rng) slvTime, slvrng = sBurst.orbit.geo2rdr(target) - slaveSV = sBurst.orbit.interpolateOrbit(slvTime, method='hermite') + secondarySV = sBurst.orbit.interpolateOrbit(slvTime, method='hermite') targxyz = np.array(refElp.LLH(target[0], target[1], target[2]).ecef().tolist()) - mxyz = np.array(masterSV.getPosition()) - mvel = np.array(masterSV.getVelocity()) - sxyz = np.array(slaveSV.getPosition()) + mxyz = np.array(referenceSV.getPosition()) + mvel = np.array(referenceSV.getVelocity()) + sxyz = np.array(secondarySV.getPosition()) aa = np.linalg.norm(sxyz-mxyz) costheta = (rng*rng + aa*aa - slvrng*slvrng)/(2.*rng*aa) @@ -149,8 +149,8 @@ def main(iargs=None): # print('Skipping processing for swath number IW-{0}'.format(swath)) - #self._insar.commonBurstStartMasterIndex = commonBurstStartMasterIndex - #self._insar.commonBurstStartSlaveIndex = commonBurstStartSlaveIndex + #self._insar.commonBurstStartReferenceIndex = commonBurstStartReferenceIndex + #self._insar.commonBurstStartSecondaryIndex = commonBurstStartSecondaryIndex #self._insar.numberOfCommonBursts = numberOfCommonBursts diff --git a/contrib/stack/topsStack/coregSwathSLCProduct.py b/contrib/stack/topsStack/coregSwathSLCProduct.py index 85354d4..d1e18e8 100644 --- a/contrib/stack/topsStack/coregSwathSLCProduct.py +++ b/contrib/stack/topsStack/coregSwathSLCProduct.py @@ -24,7 +24,7 @@ SOURCE = Component.Facility('source', ''' adding reference and source to TOPSSwathSLCProduct and name the new instance coregSwathSLCProduct. -This way we can store the source(before coregistration) and the refernce (stack master) images. +This way we can store the source(before coregistration) and the refernce (stack reference) images. ''' class coregSwathSLCProduct(TOPSSwathSLCProduct): diff --git a/contrib/stack/topsStack/cuDenseOffsets.py b/contrib/stack/topsStack/cuDenseOffsets.py index 1d7addc..1f99f83 100755 --- a/contrib/stack/topsStack/cuDenseOffsets.py +++ b/contrib/stack/topsStack/cuDenseOffsets.py @@ -27,18 +27,18 @@ def createParser(): ''' parser = argparse.ArgumentParser( description='Generate offset field between two Sentinel slc') - parser.add_argument('-m','--master', type=str, dest='master', required=True, - help='Master image') - parser.add_argument('-s', '--slave',type=str, dest='slave', required=True, - help='Slave image') + parser.add_argument('-m','--reference', type=str, dest='reference', required=True, + help='Reference image') + parser.add_argument('-s', '--secondary',type=str, dest='secondary', required=True, + help='Secondary image') parser.add_argument('-l', '--lat',type=str, dest='lat', required=False, help='Latitude') parser.add_argument('-L', '--lon',type=str, dest='lon', required=False, help='Longitude') parser.add_argument('--los',type=str, dest='los', required=False, help='Line of Sight') - parser.add_argument('--masterxml',type=str, dest='masterxml', required=False, - help='Master Image Xml File') + parser.add_argument('--referencexml',type=str, dest='referencexml', required=False, + help='Reference Image Xml File') parser.add_argument('--ww', type=int, dest='winwidth', default=64, help='Window Width') parser.add_argument('--wh', type=int, dest='winhgt', default=64, @@ -96,18 +96,18 @@ def cmdLineParse(iargs = None): return inps @use_api -def estimateOffsetField(master, slave, inps=None): +def estimateOffsetField(reference, secondary, inps=None): - ###Loading the slave image object + ###Loading the secondary image object sim = isceobj.createSlcImage() - sim.load(slave+'.xml') + sim.load(secondary+'.xml') sim.setAccessMode('READ') sim.createImage() - ###Loading the master image object + ###Loading the reference image object sar = isceobj.createSlcImage() - sar.load(master + '.xml') + sar.load(reference + '.xml') sar.setAccessMode('READ') sar.createImage() @@ -123,12 +123,12 @@ def estimateOffsetField(master, slave, inps=None): objOffset.derampMethod = inps.deramp print(objOffset.derampMethod) - objOffset.masterImageName = master + '.vrt' - objOffset.masterImageHeight = length - objOffset.masterImageWidth = width - objOffset.slaveImageName = slave + '.vrt' - objOffset.slaveImageHeight = length - objOffset.slaveImageWidth = width + objOffset.referenceImageName = reference + '.vrt' + objOffset.referenceImageHeight = length + objOffset.referenceImageWidth = width + objOffset.secondaryImageName = secondary + '.vrt' + objOffset.secondaryImageHeight = length + objOffset.secondaryImageWidth = width print("image length:",length) print("image width:",width) @@ -160,8 +160,8 @@ def estimateOffsetField(master, slave, inps=None): print(inps.srchgt,inps.srcwidth) # starting pixel - objOffset.masterStartPixelDownStatic = inps.margin - objOffset.masterStartPixelAcrossStatic = inps.margin + objOffset.referenceStartPixelDownStatic = inps.margin + objOffset.referenceStartPixelAcrossStatic = inps.margin # skip size objOffset.skipSampleDown = inps.skiphgt @@ -222,7 +222,7 @@ def estimateOffsetField(master, slave, inps=None): objGrossOff.setLatFile(inps.lat) objGrossOff.setLonFile(inps.lon) objGrossOff.setLosFile(inps.los) - objGrossOff.setMasterFile(inps.masterxml) + objGrossOff.setReferenceFile(inps.referencexml) objGrossOff.setbTemp(inps.bTemp) @@ -305,7 +305,7 @@ def main(iargs=None): print(inps.outprefix) os.makedirs(outDir, exist_ok=True) - objOffset = estimateOffsetField(inps.master, inps.slave, inps) + objOffset = estimateOffsetField(inps.reference, inps.secondary, inps) if __name__ == '__main__': diff --git a/contrib/stack/topsStack/denseOffsets.py b/contrib/stack/topsStack/denseOffsets.py index f38e68e..d73df04 100755 --- a/contrib/stack/topsStack/denseOffsets.py +++ b/contrib/stack/topsStack/denseOffsets.py @@ -22,10 +22,10 @@ def createParser(): ''' parser = argparse.ArgumentParser( description='Generate offset field between two Sentinel slc') - parser.add_argument('-m','--master', type=str, dest='master', required=True, - help='Master image') - parser.add_argument('-s', '--slave',type=str, dest='slave', required=True, - help='Slave image') + parser.add_argument('-m','--reference', type=str, dest='reference', required=True, + help='Reference image') + parser.add_argument('-s', '--secondary',type=str, dest='secondary', required=True, + help='Secondary image') parser.add_argument('--ww', type=int, dest='winwidth', default=64, help='Window Width') @@ -62,20 +62,20 @@ def cmdLineParse(iargs = None): return inps @use_api -def estimateOffsetField(master, slave, inps=None): +def estimateOffsetField(reference, secondary, inps=None): ''' Estimate offset field between burst and simamp. ''' - ###Loading the slave image object + ###Loading the secondary image object sim = isceobj.createSlcImage() - sim.load(slave+'.xml') + sim.load(secondary+'.xml') sim.setAccessMode('READ') sim.createImage() - ###Loading the master image object + ###Loading the reference image object sar = isceobj.createSlcImage() - sar.load(master + '.xml') + sar.load(reference + '.xml') sar.setAccessMode('READ') sar.createImage() @@ -138,7 +138,7 @@ def main(iargs=None): outDir = os.path.dirname(inps.outprefix) os.makedirs(outDir, exist_ok=True) - objOffset = estimateOffsetField(inps.master, inps.slave, inps) + objOffset = estimateOffsetField(inps.reference, inps.secondary, inps) print('Top left corner of offset image: ', objOffset.locationDown[0][0],objOffset.locationAcross[0][0]) diff --git a/contrib/stack/topsStack/estimateAzimuthMisreg.py b/contrib/stack/topsStack/estimateAzimuthMisreg.py index 63aed81..d177599 100755 --- a/contrib/stack/topsStack/estimateAzimuthMisreg.py +++ b/contrib/stack/topsStack/estimateAzimuthMisreg.py @@ -41,10 +41,10 @@ def main(iargs=None): #catalog = isceobj.Catalog.createCatalog(self._insar.procDoc.name) - #master = self._insar.loadProduct( self._insar.masterSlcProduct + '.xml' ) + #reference = self._insar.loadProduct( self._insar.referenceSlcProduct + '.xml' ) - #minBurst, maxBurst = self._insar.commonMasterBurstLimits - #slaveBurstStart, slaveBurstEnd = self._insar.commonSlaveBurstLimits + #minBurst, maxBurst = self._insar.commonReferenceBurstLimits + #secondaryBurstStart, secondaryBurstEnd = self._insar.commonSecondaryBurstLimits esdPath = inps.esdDirname swathList = ut.getSwathList(esdPath) @@ -172,7 +172,7 @@ def main(iargs=None): # catalog.printToLog(logger, "runESD") # self._insar.procDoc.addAllFromCatalog(catalog) -# slaveTimingCorrection = medianval * master.bursts[0].azimuthTimeInterval +# secondaryTimingCorrection = medianval * reference.bursts[0].azimuthTimeInterval outputDir = os.path.dirname(inps.output) os.makedirs(outputDir, exist_ok=True) diff --git a/contrib/stack/topsStack/estimateRangeMisreg.py b/contrib/stack/topsStack/estimateRangeMisreg.py index b4607f0..916a7fe 100755 --- a/contrib/stack/topsStack/estimateRangeMisreg.py +++ b/contrib/stack/topsStack/estimateRangeMisreg.py @@ -26,10 +26,10 @@ def createParser(): parser.add_argument('-t', '--snr_threshold', type=float, dest='offsetSNRThreshold', default=6.0, help='SNR threshold for overlap masking') - parser.add_argument('-m','--master', type=str, dest='master', required=True, - help='Master image') - parser.add_argument('-s', '--slave',type=str, dest='slave', required=True, - help='Slave image') + parser.add_argument('-m','--reference', type=str, dest='reference', required=True, + help='Reference image') + parser.add_argument('-s', '--secondary',type=str, dest='secondary', required=True, + help='Secondary image') return parser @@ -41,7 +41,7 @@ def cmdLineParse(iargs=None): return parser.parse_args(args=iargs) -def runAmpcor(master, slave): +def runAmpcor(reference, secondary): ''' Run one ampcor process. ''' @@ -49,12 +49,12 @@ def runAmpcor(master, slave): from mroipac.ampcor.Ampcor import Ampcor mImg = isceobj.createSlcImage() - mImg.load(master + '.xml') + mImg.load(reference + '.xml') mImg.setAccessMode('READ') mImg.createImage() sImg = isceobj.createSlcImage() - sImg.load(slave + '.xml') + sImg.load(secondary + '.xml') sImg.setAccessMode('READ') sImg.createImage() @@ -144,9 +144,9 @@ def main(iargs=None): #catalog = isceobj.Catalog.createCatalog(self._insar.procDoc.name) #swathList = self._insar.getValidSwathList(self.swaths) - masterSwathList = ut.getSwathList(os.path.join(inps.master, 'overlap')) - slaveSwathList = ut.getSwathList(os.path.join(inps.slave, 'overlap')) - swathList = list(sorted(set(masterSwathList+slaveSwathList))) + referenceSwathList = ut.getSwathList(os.path.join(inps.reference, 'overlap')) + secondarySwathList = ut.getSwathList(os.path.join(inps.secondary, 'overlap')) + swathList = list(sorted(set(referenceSwathList+secondarySwathList))) rangeOffsets = [] snr = [] @@ -157,34 +157,34 @@ def main(iargs=None): # print('Skipping range coreg for swath IW{0}'.format(swath)) # continue - #minBurst, maxBurst = self._insar.commonMasterBurstLimits(swath-1) + #minBurst, maxBurst = self._insar.commonReferenceBurstLimits(swath-1) #maxBurst = maxBurst - 1 ###For overlaps - #masterTop = self._insar.loadProduct( os.path.join(self._insar.masterSlcOverlapProduct, 'top_IW{0}.xml'.format(swath))) - #masterBottom = self._insar.loadProduct( os.path.join(self._insar.masterSlcOverlapProduct , 'bottom_IW{0}.xml'.format(swath))) - masterTop = ut.loadProduct(os.path.join(inps.master , 'overlap','IW{0}_top.xml'.format(swath))) - masterBottom = ut.loadProduct(os.path.join(inps.master ,'overlap', 'IW{0}_bottom.xml'.format(swath))) - slaveTop = ut.loadProduct(os.path.join(inps.slave, 'overlap', 'IW{0}_top.xml'.format(swath))) - slaveBottom = ut.loadProduct(os.path.join(inps.slave, 'overlap', 'IW{0}_bottom.xml'.format(swath))) + #referenceTop = self._insar.loadProduct( os.path.join(self._insar.referenceSlcOverlapProduct, 'top_IW{0}.xml'.format(swath))) + #referenceBottom = self._insar.loadProduct( os.path.join(self._insar.referenceSlcOverlapProduct , 'bottom_IW{0}.xml'.format(swath))) + referenceTop = ut.loadProduct(os.path.join(inps.reference , 'overlap','IW{0}_top.xml'.format(swath))) + referenceBottom = ut.loadProduct(os.path.join(inps.reference ,'overlap', 'IW{0}_bottom.xml'.format(swath))) + secondaryTop = ut.loadProduct(os.path.join(inps.secondary, 'overlap', 'IW{0}_top.xml'.format(swath))) + secondaryBottom = ut.loadProduct(os.path.join(inps.secondary, 'overlap', 'IW{0}_bottom.xml'.format(swath))) - #slaveTop = self._insar.loadProduct( os.path.join(self._insar.coregOverlapProduct , 'top_IW{0}.xml'.format(swath))) - #slaveBottom = self._insar.loadProduct( os.path.join(self._insar.coregOverlapProduct, 'bottom_IW{0}.xml'.format(swath))) - minMaster = masterTop.bursts[0].burstNumber - maxMaster = masterTop.bursts[-1].burstNumber + #secondaryTop = self._insar.loadProduct( os.path.join(self._insar.coregOverlapProduct , 'top_IW{0}.xml'.format(swath))) + #secondaryBottom = self._insar.loadProduct( os.path.join(self._insar.coregOverlapProduct, 'bottom_IW{0}.xml'.format(swath))) + minReference = referenceTop.bursts[0].burstNumber + maxReference = referenceTop.bursts[-1].burstNumber - minSlave = slaveTop.bursts[0].burstNumber - maxSlave = slaveTop.bursts[-1].burstNumber + minSecondary = secondaryTop.bursts[0].burstNumber + maxSecondary = secondaryTop.bursts[-1].burstNumber - minBurst = max(minSlave, minMaster) - maxBurst = min(maxSlave, maxMaster) + minBurst = max(minSecondary, minReference) + maxBurst = min(maxSecondary, maxReference) #maxBurst = maxBurst - 1 ###For overlaps maxBurst = maxBurst + 1 - for pair in [(masterTop,slaveTop), (masterBottom,slaveBottom)]: + for pair in [(referenceTop,secondaryTop), (referenceBottom,secondaryBottom)]: for ii in range(minBurst,maxBurst): - mFile = pair[0].bursts[ii-minMaster].image.filename - sFile = pair[1].bursts[ii-minSlave].image.filename + mFile = pair[0].bursts[ii-minReference].image.filename + sFile = pair[1].bursts[ii-minSecondary].image.filename field = runAmpcor(mFile, sFile) @@ -201,9 +201,9 @@ def main(iargs=None): stdval = np.std(val) # convert the estimations to meters - medianval = medianval * masterTop.bursts[0].rangePixelSize - meanval = meanval * masterTop.bursts[0].rangePixelSize - stdval = stdval * masterTop.bursts[0].rangePixelSize + medianval = medianval * referenceTop.bursts[0].rangePixelSize + meanval = meanval * referenceTop.bursts[0].rangePixelSize + stdval = stdval * referenceTop.bursts[0].rangePixelSize hist, bins = np.histogram(val, 50, normed=1) center = 0.5*(bins[:-1] + bins[1:]) diff --git a/contrib/stack/topsStack/extractCommonValidRegion.py b/contrib/stack/topsStack/extractCommonValidRegion.py index db21886..7405521 100755 --- a/contrib/stack/topsStack/extractCommonValidRegion.py +++ b/contrib/stack/topsStack/extractCommonValidRegion.py @@ -16,11 +16,11 @@ import glob def createParser(): parser = argparse.ArgumentParser( description='Extract valid overlap region for the stack') - parser.add_argument('-m', '--master', dest='master', type=str, required=True, - help='Directory with master acquisition') + parser.add_argument('-m', '--reference', dest='reference', type=str, required=True, + help='Directory with reference acquisition') - parser.add_argument('-s', '--slave', dest='slave', type=str, required=True, - help='Directory with slave acquisition') + parser.add_argument('-s', '--secondary', dest='secondary', type=str, required=True, + help='Directory with secondary acquisition') return parser @@ -28,43 +28,43 @@ def cmdLineParse(iargs = None): parser = createParser() return parser.parse_args(args=iargs) -def updateValidRegion(topMaster, slavePath, swath): +def updateValidRegion(topReference, secondaryPath, swath): - #slaveSwathList = ut.getSwathList(slave) - #swathList = list(sorted(set(masterSwathList+slaveSwathList))) + #secondarySwathList = ut.getSwathList(secondary) + #swathList = list(sorted(set(referenceSwathList+secondarySwathList))) #for swath in swathList: #IWstr = 'IW{0}'.format(swath) ####Load relevant products - #topMaster = ut.loadProduct(os.path.join(inps.master , 'IW{0}.xml'.format(swath))) + #topReference = ut.loadProduct(os.path.join(inps.reference , 'IW{0}.xml'.format(swath))) - topCoreg = ut.loadProduct(os.path.join(slavePath , 'IW{0}.xml'.format(swath))) + topCoreg = ut.loadProduct(os.path.join(secondaryPath , 'IW{0}.xml'.format(swath))) topIfg = ut.coregSwathSLCProduct() topIfg.configure() - minMaster = topMaster.bursts[0].burstNumber - maxMaster = topMaster.bursts[-1].burstNumber + minReference = topReference.bursts[0].burstNumber + maxReference = topReference.bursts[-1].burstNumber - minSlave = topCoreg.bursts[0].burstNumber - maxSlave = topCoreg.bursts[-1].burstNumber + minSecondary = topCoreg.bursts[0].burstNumber + maxSecondary = topCoreg.bursts[-1].burstNumber - minBurst = max(minSlave, minMaster) - maxBurst = min(maxSlave, maxMaster) - print ('minSlave,maxSlave',minSlave, maxSlave) - print ('minMaster,maxMaster',minMaster, maxMaster) + minBurst = max(minSecondary, minReference) + maxBurst = min(maxSecondary, maxReference) + print ('minSecondary,maxSecondary',minSecondary, maxSecondary) + print ('minReference,maxReference',minReference, maxReference) print ('minBurst, maxBurst: ', minBurst, maxBurst) for ii in range(minBurst, maxBurst + 1): ####Process the top bursts - master = topMaster.bursts[ii-minMaster] - slave = topCoreg.bursts[ii-minSlave] - ut.adjustCommonValidRegion(master,slave) - #topMaster.bursts[ii-minMaster].firstValidLine = master.firstValidLine + reference = topReference.bursts[ii-minReference] + secondary = topCoreg.bursts[ii-minSecondary] + ut.adjustCommonValidRegion(reference,secondary) + #topReference.bursts[ii-minReference].firstValidLine = reference.firstValidLine - return topMaster + return topReference def main(iargs=None): @@ -72,33 +72,33 @@ def main(iargs=None): ''' inps=cmdLineParse(iargs) - stackDir = os.path.join(os.path.dirname(inps.master),'stack') + stackDir = os.path.join(os.path.dirname(inps.reference),'stack') if not os.path.exists(stackDir): print('creating ', stackDir) os.makedirs(stackDir) else: print(stackDir , ' already exists.') - print('Replacing master with existing stack.') - inps.master = stackDir + print('Replacing reference with existing stack.') + inps.reference = stackDir print('updating the valid overlap region of:') print(stackDir) - masterSwathList = ut.getSwathList(inps.master) - slaveList = glob.glob(os.path.join(inps.slave,'2*')) - slaveSwathList = ut.getSwathList(slaveList[0]) # assuming all slaves have the same swaths - swathList = list(sorted(set(masterSwathList+slaveSwathList))) + referenceSwathList = ut.getSwathList(inps.reference) + secondaryList = glob.glob(os.path.join(inps.secondary,'2*')) + secondarySwathList = ut.getSwathList(secondaryList[0]) # assuming all secondarys have the same swaths + swathList = list(sorted(set(referenceSwathList+secondarySwathList))) for swath in swathList: print('******************') print('swath: ', swath) ####Load relevant products - topMaster = ut.loadProduct(os.path.join(inps.master , 'IW{0}.xml'.format(swath))) - #print('master.firstValidLine: ', topMaster.bursts[4].firstValidLine) - for slave in slaveList: - topMaster = updateValidRegion(topMaster, slave, swath) + topReference = ut.loadProduct(os.path.join(inps.reference , 'IW{0}.xml'.format(swath))) + #print('reference.firstValidLine: ', topReference.bursts[4].firstValidLine) + for secondary in secondaryList: + topReference = updateValidRegion(topReference, secondary, swath) print('writing ', os.path.join(stackDir , 'IW{0}.xml'.format(swath))) - ut.saveProduct(topMaster, os.path.join(stackDir , 'IW{0}.xml'.format(swath))) + ut.saveProduct(topReference, os.path.join(stackDir , 'IW{0}.xml'.format(swath))) os.makedirs(os.path.join(stackDir ,'IW{0}'.format(swath)), exist_ok=True) @@ -109,11 +109,11 @@ if __name__ == '__main__': main() -#swathList = ut.getSwathList(master) +#swathList = ut.getSwathList(reference) #swathList[2] #frames = [] #for swath in swathList: -# ifg = ut.loadProduct(os.path.join(inps.master , 'IW{0}.xml'.format(swath))) +# ifg = ut.loadProduct(os.path.join(inps.reference , 'IW{0}.xml'.format(swath))) # if inps.isaligned: # reference = ifg.reference @@ -134,7 +134,7 @@ if __name__ == '__main__': ''' -slcPath = '/home/hfattahi/PROCESSDIR/MexicoCity_Test/TestStack_offsets/master' +slcPath = '/home/hfattahi/PROCESSDIR/MexicoCity_Test/TestStack_offsets/reference' swath = ut.loadProduct(os.path.join(slcPath , 'IW{0}.xml'.format(2))) tref = swath.sensingStart diff --git a/contrib/stack/topsStack/generateIgram.py b/contrib/stack/topsStack/generateIgram.py index c44cf84..c00448d 100755 --- a/contrib/stack/topsStack/generateIgram.py +++ b/contrib/stack/topsStack/generateIgram.py @@ -19,11 +19,11 @@ import gdal def createParser(): parser = argparse.ArgumentParser( description='Use polynomial offsets and create burst by burst interferograms') - parser.add_argument('-m', '--master', dest='master', type=str, required=True, - help='Directory with master acquisition') + parser.add_argument('-m', '--reference', dest='reference', type=str, required=True, + help='Directory with reference acquisition') - parser.add_argument('-s', '--slave', dest='slave', type=str, required=True, - help='Directory with slave acquisition') + parser.add_argument('-s', '--secondary', dest='secondary', type=str, required=True, + help='Directory with secondary acquisition') parser.add_argument('-f', '--flatten', dest='flatten', action='store_true', default=False, help='Flatten the interferograms with offsets if needed') @@ -43,7 +43,7 @@ def cmdLineParse(iargs = None): return parser.parse_args(args=iargs) -def multiply(masname, slvname, outname, rngname1, rngname2, fact, masterFrame, +def multiply(masname, slvname, outname, rngname1, rngname2, fact, referenceFrame, flatten=False): print('multiply') @@ -54,14 +54,14 @@ def multiply(masname, slvname, outname, rngname1, rngname2, fact, masterFrame, length = masImg.getLength() ds = gdal.Open(masname + '.vrt', gdal.GA_ReadOnly) - master = ds.GetRasterBand(1).ReadAsArray() + reference = ds.GetRasterBand(1).ReadAsArray() ds = None ds = gdal.Open(slvname + '.vrt', gdal.GA_ReadOnly) - slave = ds.GetRasterBand(1).ReadAsArray() + secondary = ds.GetRasterBand(1).ReadAsArray() ds = None print('read') - #master = np.memmap(masname, dtype=np.complex64, mode='r', shape=(length,width)) - #slave = np.memmap(slvname, dtype=np.complex64, mode='r', shape=(length, width)) + #reference = np.memmap(masname, dtype=np.complex64, mode='r', shape=(length,width)) + #secondary = np.memmap(slvname, dtype=np.complex64, mode='r', shape=(length, width)) if os.path.exists(rngname1): rng1 = np.memmap(rngname1, dtype=np.float32, mode='r', shape=(length,width)) @@ -81,20 +81,20 @@ def multiply(masname, slvname, outname, rngname1, rngname2, fact, masterFrame, #Zero out anytging outside the valid region: ifg = np.memmap(outname, dtype=np.complex64, mode='w+', shape=(length,width)) - firstS = masterFrame.firstValidSample - lastS = masterFrame.firstValidSample + masterFrame.numValidSamples -1 - firstL = masterFrame.firstValidLine - lastL = masterFrame.firstValidLine + masterFrame.numValidLines - 1 + firstS = referenceFrame.firstValidSample + lastS = referenceFrame.firstValidSample + referenceFrame.numValidSamples -1 + firstL = referenceFrame.firstValidLine + lastL = referenceFrame.firstValidLine + referenceFrame.numValidLines - 1 for kk in range(firstL,lastL + 1): - ifg[kk,firstS:lastS + 1] = master[kk,firstS:lastS + 1] * np.conj(slave[kk,firstS:lastS + 1]) + ifg[kk,firstS:lastS + 1] = reference[kk,firstS:lastS + 1] * np.conj(secondary[kk,firstS:lastS + 1]) if flatten: phs = np.exp(cJ*fact*rng12[kk,firstS:lastS + 1]) ifg[kk,firstS:lastS + 1] *= phs #### - master=None - slave=None + reference=None + secondary=None ifg = None objInt = isceobj.createIntImage() @@ -115,12 +115,12 @@ def main(iargs=None): inps=cmdLineParse(iargs) if inps.overlap: - masterSwathList = ut.getSwathList(os.path.join(inps.master, 'overlap')) - slaveSwathList = ut.getSwathList(os.path.join(inps.slave, 'overlap')) + referenceSwathList = ut.getSwathList(os.path.join(inps.reference, 'overlap')) + secondarySwathList = ut.getSwathList(os.path.join(inps.secondary, 'overlap')) else: - masterSwathList = ut.getSwathList(inps.master) - slaveSwathList = ut.getSwathList(inps.slave) - swathList = list(sorted(set(masterSwathList+slaveSwathList))) + referenceSwathList = ut.getSwathList(inps.reference) + secondarySwathList = ut.getSwathList(inps.secondary) + swathList = list(sorted(set(referenceSwathList+secondarySwathList))) for swath in swathList: IWstr = 'IW{0}'.format(swath) @@ -133,19 +133,19 @@ def main(iargs=None): ####Load relevant products if inps.overlap: - topMaster = ut.loadProduct(os.path.join(inps.master , 'overlap','IW{0}_top.xml'.format(swath))) - botMaster = ut.loadProduct(os.path.join(inps.master ,'overlap', 'IW{0}_bottom.xml'.format(swath))) - topCoreg = ut.loadProduct(os.path.join(inps.slave, 'overlap', 'IW{0}_top.xml'.format(swath))) - botCoreg = ut.loadProduct(os.path.join(inps.slave, 'overlap', 'IW{0}_bottom.xml'.format(swath))) + topReference = ut.loadProduct(os.path.join(inps.reference , 'overlap','IW{0}_top.xml'.format(swath))) + botReference = ut.loadProduct(os.path.join(inps.reference ,'overlap', 'IW{0}_bottom.xml'.format(swath))) + topCoreg = ut.loadProduct(os.path.join(inps.secondary, 'overlap', 'IW{0}_top.xml'.format(swath))) + botCoreg = ut.loadProduct(os.path.join(inps.secondary, 'overlap', 'IW{0}_bottom.xml'.format(swath))) else: - topMaster = ut.loadProduct(os.path.join(inps.master , 'IW{0}.xml'.format(swath))) - topCoreg = ut.loadProduct(os.path.join(inps.slave , 'IW{0}.xml'.format(swath))) + topReference = ut.loadProduct(os.path.join(inps.reference , 'IW{0}.xml'.format(swath))) + topCoreg = ut.loadProduct(os.path.join(inps.secondary , 'IW{0}.xml'.format(swath))) if inps.overlap: - coregdir = os.path.join(inps.slave, 'overlap', 'IW{0}'.format(swath)) + coregdir = os.path.join(inps.secondary, 'overlap', 'IW{0}'.format(swath)) else: - coregdir = os.path.join(inps.slave,'IW{0}'.format(swath)) + coregdir = os.path.join(inps.secondary,'IW{0}'.format(swath)) topIfg = ut.coregSwathSLCProduct() topIfg.configure() @@ -154,51 +154,51 @@ def main(iargs=None): botIfg = ut.coregSwathSLCProduct() botIfg.configure() - minMaster = topMaster.bursts[0].burstNumber - maxMaster = topMaster.bursts[-1].burstNumber + minReference = topReference.bursts[0].burstNumber + maxReference = topReference.bursts[-1].burstNumber - minSlave = topCoreg.bursts[0].burstNumber - maxSlave = topCoreg.bursts[-1].burstNumber + minSecondary = topCoreg.bursts[0].burstNumber + maxSecondary = topCoreg.bursts[-1].burstNumber - minBurst = max(minSlave, minMaster) - maxBurst = min(maxSlave, maxMaster) - print ('minSlave,maxSlave',minSlave, maxSlave) - print ('minMaster,maxMaster',minMaster, maxMaster) + minBurst = max(minSecondary, minReference) + maxBurst = min(maxSecondary, maxReference) + print ('minSecondary,maxSecondary',minSecondary, maxSecondary) + print ('minReference,maxReference',minReference, maxReference) print ('minBurst, maxBurst: ', minBurst, maxBurst) for ii in range(minBurst, maxBurst + 1): ####Process the top bursts - master = topMaster.bursts[ii-minMaster] - slave = topCoreg.bursts[ii-minSlave] + reference = topReference.bursts[ii-minReference] + secondary = topCoreg.bursts[ii-minSecondary] - print('matching burst numbers: ',master.burstNumber, slave.burstNumber) + print('matching burst numbers: ',reference.burstNumber, secondary.burstNumber) - mastername = master.image.filename - slavename = slave.image.filename + referencename = reference.image.filename + secondaryname = secondary.image.filename if inps.overlap: - rdict = { 'rangeOff1' : os.path.join(inps.master, 'overlap', IWstr, 'range_top_%02d_%02d.off'%(ii,ii+1)), - 'rangeOff2' : os.path.join(inps.slave, 'overlap', IWstr, 'range_top_%02d_%02d.off'%(ii,ii+1)), - 'azimuthOff': os.path.join(inps.slave, 'overlap', IWstr, 'azimuth_top_%02d_%02d.off'%(ii,ii+1))} + rdict = { 'rangeOff1' : os.path.join(inps.reference, 'overlap', IWstr, 'range_top_%02d_%02d.off'%(ii,ii+1)), + 'rangeOff2' : os.path.join(inps.secondary, 'overlap', IWstr, 'range_top_%02d_%02d.off'%(ii,ii+1)), + 'azimuthOff': os.path.join(inps.secondary, 'overlap', IWstr, 'azimuth_top_%02d_%02d.off'%(ii,ii+1))} intname = os.path.join(ifgdir, '%s_top_%02d_%02d.int'%(inps.intprefix,ii,ii+1)) else: - rdict = {'rangeOff1' : os.path.join(inps.master, IWstr, 'range_%02d.off'%(ii)), - 'rangeOff2' : os.path.join(inps.slave, IWstr, 'range_%02d.off'%(ii)), - 'azimuthOff1': os.path.join(inps.slave, IWstr, 'azimuth_%02d.off'%(ii))} + rdict = {'rangeOff1' : os.path.join(inps.reference, IWstr, 'range_%02d.off'%(ii)), + 'rangeOff2' : os.path.join(inps.secondary, IWstr, 'range_%02d.off'%(ii)), + 'azimuthOff1': os.path.join(inps.secondary, IWstr, 'azimuth_%02d.off'%(ii))} intname = os.path.join(ifgdir, '%s_%02d.int'%(inps.intprefix,ii)) - ut.adjustCommonValidRegion(master,slave) - fact = 4 * np.pi * slave.rangePixelSize / slave.radarWavelength - intimage = multiply(mastername, slavename, intname, - rdict['rangeOff1'], rdict['rangeOff2'], fact, master, flatten=inps.flatten) + ut.adjustCommonValidRegion(reference,secondary) + fact = 4 * np.pi * secondary.rangePixelSize / secondary.radarWavelength + intimage = multiply(referencename, secondaryname, intname, + rdict['rangeOff1'], rdict['rangeOff2'], fact, reference, flatten=inps.flatten) - burst = copy.deepcopy(master) + burst = copy.deepcopy(reference) burst.image = intimage burst.burstNumber = ii topIfg.bursts.append(burst) @@ -206,33 +206,33 @@ def main(iargs=None): if inps.overlap: ####Process the bottom bursts - master = botMaster.bursts[ii-minMaster] - slave = botCoreg.bursts[ii-minSlave] + reference = botReference.bursts[ii-minReference] + secondary = botCoreg.bursts[ii-minSecondary] - mastername = master.image.filename - slavename = slave.image.filename + referencename = reference.image.filename + secondaryname = secondary.image.filename # rdict = {'rangeOff' : os.path.join(coregdir, 'range_bot_%02d_%02d.off'%(ii,ii+1)), # 'azimuthOff': os.path.join(coregdir, 'azimuth_bot_%02d_%02d.off'%(ii,ii+1))} - rdict = { 'rangeOff1' : os.path.join(inps.master, 'overlap', IWstr, 'range_bot_%02d_%02d.off'%(ii,ii+1)), - 'rangeOff2' : os.path.join(inps.slave, 'overlap', IWstr, 'range_bot_%02d_%02d.off'%(ii,ii+1)), - 'azimuthOff': os.path.join(inps.slave, 'overlap', IWstr, 'azimuth_bot_%02d_%02d.off'%(ii,ii+1))} + rdict = { 'rangeOff1' : os.path.join(inps.reference, 'overlap', IWstr, 'range_bot_%02d_%02d.off'%(ii,ii+1)), + 'rangeOff2' : os.path.join(inps.secondary, 'overlap', IWstr, 'range_bot_%02d_%02d.off'%(ii,ii+1)), + 'azimuthOff': os.path.join(inps.secondary, 'overlap', IWstr, 'azimuth_bot_%02d_%02d.off'%(ii,ii+1))} print ('rdict: ', rdict) - ut.adjustCommonValidRegion(master,slave) + ut.adjustCommonValidRegion(reference,secondary) intname = os.path.join(ifgdir, '%s_bot_%02d_%02d.int'%(inps.intprefix,ii,ii+1)) - fact = 4 * np.pi * slave.rangePixelSize / slave.radarWavelength + fact = 4 * np.pi * secondary.rangePixelSize / secondary.radarWavelength - #intimage = multiply(mastername, slavename, intname, - # rdict['rangeOff'], fact, master, flatten=True) + #intimage = multiply(referencename, secondaryname, intname, + # rdict['rangeOff'], fact, reference, flatten=True) - intimage = multiply(mastername, slavename, intname, - rdict['rangeOff1'], rdict['rangeOff2'], fact, master, flatten=inps.flatten) + intimage = multiply(referencename, secondaryname, intname, + rdict['rangeOff1'], rdict['rangeOff2'], fact, reference, flatten=inps.flatten) - burst = copy.deepcopy(master) + burst = copy.deepcopy(reference) burst.burstNumber = ii burst.image = intimage botIfg.bursts.append(burst) @@ -242,7 +242,7 @@ def main(iargs=None): if hasattr(topCoreg, 'reference'): topIfg.reference = topCoreg.reference else: - topIfg.reference = topMaster.reference + topIfg.reference = topReference.reference print('Type: ',type(topIfg.reference)) diff --git a/contrib/stack/topsStack/geo2rdr.py b/contrib/stack/topsStack/geo2rdr.py index 11a0292..23c972f 100644 --- a/contrib/stack/topsStack/geo2rdr.py +++ b/contrib/stack/topsStack/geo2rdr.py @@ -11,13 +11,13 @@ import s1a_isce_utils as ut def createParser(): parser = argparse.ArgumentParser( description='Generate offset field between two Sentinel swaths') - parser.add_argument('-m', '--master', type=str, dest='master', required=True, - help='Directory with the master image') - parser.add_argument('-s', '--slave', type=str, dest='slave', required=True, - help='Directory with the slave image') - parser.add_argument('-g', '--geom_masterDir', type=str, dest='geom_masterDir', default='geom_master', - help='Directory for geometry files of the master') - parser.add_argument('-c', '--coregSLCdir', type=str, dest='coregdir', default='coreg_slaves', + parser.add_argument('-m', '--reference', type=str, dest='reference', required=True, + help='Directory with the reference image') + parser.add_argument('-s', '--secondary', type=str, dest='secondary', required=True, + help='Directory with the secondary image') + parser.add_argument('-g', '--geom_referenceDir', type=str, dest='geom_referenceDir', default='geom_reference', + help='Directory for geometry files of the reference') + parser.add_argument('-c', '--coregSLCdir', type=str, dest='coregdir', default='coreg_secondarys', help='Directory with coregistered SLC data') parser.add_argument('-a', '--azimuth_misreg', type=str, dest='misreg_az', default='', help='A text file that contains zimuth misregistration in subpixels') @@ -216,15 +216,15 @@ def main(iargs=None): runGeo2rdr = runGeo2rdrCPU - masterSwathList = ut.getSwathList(inps.master) - slaveSwathList = ut.getSwathList(inps.slave) + referenceSwathList = ut.getSwathList(inps.reference) + secondarySwathList = ut.getSwathList(inps.secondary) - swathList = list(sorted(set(masterSwathList+slaveSwathList))) + swathList = list(sorted(set(referenceSwathList+secondarySwathList))) for swath in swathList: - ##Load slave metadata - slave = ut.loadProduct(os.path.join(inps.slave, 'IW{0}.xml'.format(swath))) - master = ut.loadProduct(os.path.join(inps.master, 'IW{0}.xml'.format(swath))) + ##Load secondary metadata + secondary = ut.loadProduct(os.path.join(inps.secondary, 'IW{0}.xml'.format(swath))) + reference = ut.loadProduct(os.path.join(inps.reference, 'IW{0}.xml'.format(swath))) ### output directory if inps.overlap: @@ -246,28 +246,28 @@ def main(iargs=None): else: misreg_rg = 0.0 - burstoffset, minBurst, maxBurst = master.getCommonBurstLimits(slave) + burstoffset, minBurst, maxBurst = reference.getCommonBurstLimits(secondary) - ###Burst indices w.r.t master + ###Burst indices w.r.t reference if inps.overlap: maxBurst = maxBurst - 1 - geomDir = os.path.join(inps.geom_masterDir, inps.overlapDir, 'IW{0}'.format(swath)) + geomDir = os.path.join(inps.geom_referenceDir, inps.overlapDir, 'IW{0}'.format(swath)) else: - geomDir = os.path.join(inps.geom_masterDir, 'IW{0}'.format(swath)) + geomDir = os.path.join(inps.geom_referenceDir, 'IW{0}'.format(swath)) - slaveBurstStart = minBurst + burstoffset + secondaryBurstStart = minBurst + burstoffset for mBurst in range(minBurst, maxBurst): - ###Corresponding slave burst - sBurst = slaveBurstStart + (mBurst - minBurst) - burstTop = slave.bursts[sBurst] + ###Corresponding secondary burst + sBurst = secondaryBurstStart + (mBurst - minBurst) + burstTop = secondary.bursts[sBurst] if inps.overlap: - burstBot = slave.bursts[sBurst+1] + burstBot = secondary.bursts[sBurst+1] - print('Overlap pair {0}: Burst {1} of master matched with Burst {2} of slave'.format(mBurst-minBurst, mBurst, sBurst)) + print('Overlap pair {0}: Burst {1} of reference matched with Burst {2} of secondary'.format(mBurst-minBurst, mBurst, sBurst)) if inps.overlap: ####Generate offsets for top burst rdict = {'lat': os.path.join(geomDir,'lat_%02d_%02d.rdr'%(mBurst+1,mBurst+2)), @@ -278,7 +278,7 @@ def main(iargs=None): runGeo2rdr(burstTop, rdict, misreg_az=misreg_az, misreg_rg=misreg_rg) - print('Overlap pair {0}: Burst {1} of master matched with Burst {2} of slave'.format(mBurst-minBurst, mBurst+1, sBurst+1)) + print('Overlap pair {0}: Burst {1} of reference matched with Burst {2} of secondary'.format(mBurst-minBurst, mBurst+1, sBurst+1)) ####Generate offsets for bottom burst rdict = {'lat': os.path.join(geomDir,'lat_%02d_%02d.rdr'%(mBurst+1,mBurst+2)), 'lon': os.path.join(geomDir, 'lon_%02d_%02d.rdr'%(mBurst+1,mBurst+2)), @@ -289,7 +289,7 @@ def main(iargs=None): runGeo2rdr(burstBot, rdict, misreg_az=misreg_az, misreg_rg=misreg_rg) else: - print('Burst {1} of master matched with Burst {2} of slave'.format(mBurst-minBurst, mBurst, sBurst)) + print('Burst {1} of reference matched with Burst {2} of secondary'.format(mBurst-minBurst, mBurst, sBurst)) ####Generate offsets for top burst rdict = {'lat': os.path.join(geomDir,'lat_%02d.rdr'%(mBurst+1)), 'lon': os.path.join(geomDir,'lon_%02d.rdr'%(mBurst+1)), diff --git a/contrib/stack/topsStack/geocodeGdal.py b/contrib/stack/topsStack/geocodeGdal.py index 5665031..24b6b67 100755 --- a/contrib/stack/topsStack/geocodeGdal.py +++ b/contrib/stack/topsStack/geocodeGdal.py @@ -103,7 +103,7 @@ def prepare_lat_lon(inps): return 'tempLAT.vrt', 'tempLON.vrt' - # gdal_translate -of VRT -srcwin 384 384 64889 12785 -outsize 1013 199 ../../COMBINED/GEOM_MASTER/LAT.rdr LAT_off.vrt + # gdal_translate -of VRT -srcwin 384 384 64889 12785 -outsize 1013 199 ../../COMBINED/GEOM_REFERENCE/LAT.rdr LAT_off.vrt def writeVRT(infile, latFile, lonFile): diff --git a/contrib/stack/topsStack/geocodeIsce.py b/contrib/stack/topsStack/geocodeIsce.py index de51078..bba1d38 100755 --- a/contrib/stack/topsStack/geocodeIsce.py +++ b/contrib/stack/topsStack/geocodeIsce.py @@ -35,11 +35,11 @@ def createParser(): parser.add_argument('-d', '--demfilename', dest='demfilename', type=str, required=True, help='DEM filename') - parser.add_argument('-m', '--master', dest='master', type=str, required=True, - help='Directory with master acquisition') + parser.add_argument('-m', '--reference', dest='reference', type=str, required=True, + help='Directory with reference acquisition') - parser.add_argument('-s', '--slave', dest='slave', type=str, required=True, - help='Directory with slave acquisition') + parser.add_argument('-s', '--secondary', dest='secondary', type=str, required=True, + help='Directory with secondary acquisition') parser.add_argument('-r', '--numberRangeLooks', dest='numberRangeLooks', type=int, required=True, help='number range looks') @@ -99,14 +99,14 @@ def runGeocode(inps, prodlist, bbox, demfilename, is_offset_mode=False): #swathList = self._insar.getValidSwathList(self.swaths) - masterSwathList = ut.getSwathList(inps.master) - slaveSwathList = ut.getSwathList(inps.slave) - swathList = list(sorted(set(masterSwathList+slaveSwathList))) + referenceSwathList = ut.getSwathList(inps.reference) + secondarySwathList = ut.getSwathList(inps.secondary) + swathList = list(sorted(set(referenceSwathList+secondarySwathList))) frames = [] for swath in swathList: - #topMaster = ut.loadProduct(os.path.join(inps.master , 'IW{0}.xml'.format(swath))) - referenceProduct = ut.loadProduct(os.path.join(inps.slave , 'IW{0}.xml'.format(swath))) + #topReference = ut.loadProduct(os.path.join(inps.reference , 'IW{0}.xml'.format(swath))) + referenceProduct = ut.loadProduct(os.path.join(inps.secondary , 'IW{0}.xml'.format(swath))) #referenceProduct = insar.loadProduct( os.path.join(insar.fineCoregDirname, 'IW{0}.xml'.format(swath))) frames.append(referenceProduct) diff --git a/contrib/stack/topsStack/invertMisreg.py b/contrib/stack/topsStack/invertMisreg.py index 6ff1c4f..56551d1 100755 --- a/contrib/stack/topsStack/invertMisreg.py +++ b/contrib/stack/topsStack/invertMisreg.py @@ -15,11 +15,11 @@ def createParser(): Create command line parser. ''' - parser = argparse.ArgumentParser( description='extracts the overlap geometry between master bursts') + parser = argparse.ArgumentParser( description='extracts the overlap geometry between reference bursts') parser.add_argument('-i', '--input', type=str, dest='input', required=True, help='Directory with the overlap directories that has calculated misregistration for each pair') parser.add_argument('-o', '--output', type=str, dest='output', required=True, - help='output directory to save misregistration for each date with respect to the stack Master date') + help='output directory to save misregistration for each date with respect to the stack Reference date') # parser.add_argument('-f', '--misregFileName', type=str, dest='misregFileName', default='misreg.txt', # help='misreg file name that contains the calculated misregistration for a pair') @@ -138,7 +138,7 @@ def main(iargs=None): print('Using a fully connected network is recommended.') print('RMSE : '+str(RMSE)+' pixels') print('') - print('Estimated offsets with respect to the stack master date') + print('Estimated offsets with respect to the stack reference date') print('') offset_dict={} @@ -152,7 +152,7 @@ def main(iargs=None): if __name__ == '__main__' : ''' invert a network of the pair's mis-registrations to - estimate the mis-registrations wrt the Master date. + estimate the mis-registrations wrt the Reference date. ''' main() diff --git a/contrib/stack/topsStack/mergeBursts.py b/contrib/stack/topsStack/mergeBursts.py index 9e5033f..bc6b714 100755 --- a/contrib/stack/topsStack/mergeBursts.py +++ b/contrib/stack/topsStack/mergeBursts.py @@ -24,8 +24,8 @@ def createParser(): ''' parser = argparse.ArgumentParser( description='Generate offset field between two Sentinel swaths') - parser.add_argument('-i', '--inp_master', type=str, dest='master', required=True, - help='Directory with the master image') + parser.add_argument('-i', '--inp_reference', type=str, dest='reference', required=True, + help='Directory with the reference image') parser.add_argument('-s', '--stack', type=str, dest='stack', default = None, help='Directory with the stack xml files which includes the common valid region of the stack') @@ -40,7 +40,7 @@ def createParser(): help = 'Method: top / bot/ avg') parser.add_argument('-a', '--aligned', action='store_true', dest='isaligned', - default=False, help='Use master information instead of coreg for merged grid.') + default=False, help='Use reference information instead of coreg for merged grid.') parser.add_argument('-l', '--multilook', action='store_true', dest='multilook', default=False, help = 'Multilook the merged products. True or False') @@ -179,14 +179,14 @@ def mergeBursts(frame, fileList, outfile, scheme = img.scheme npType = IML.NUMPY_type(img.dataType) - azMasterOff = [] + azReferenceOff = [] for index in range(frame.numberOfBursts): burst = frame.bursts[index] soff = burst.sensingStart + datetime.timedelta(seconds = (burst.firstValidLine*dt)) start = int(np.round((soff - tstart).total_seconds() / dt)) end = start + burst.numValidLines - azMasterOff.append([start,end]) + azReferenceOff.append([start,end]) print('Burst: ', index, [start,end]) @@ -198,14 +198,14 @@ def mergeBursts(frame, fileList, outfile, for index in range(frame.numberOfBursts): curBurst = frame.bursts[index] - curLimit = azMasterOff[index] + curLimit = azReferenceOff[index] curMap = IML.mmapFromISCE(fileList[index], logging) #####If middle burst if index > 0: topBurst = frame.bursts[index-1] - topLimit = azMasterOff[index-1] + topLimit = azReferenceOff[index-1] topMap = IML.mmapFromISCE(fileList[index-1], logging) olap = topLimit[1] - curLimit[0] @@ -243,7 +243,7 @@ def mergeBursts(frame, fileList, outfile, if index != (frame.numberOfBursts-1): botBurst = frame.bursts[index+1] - botLimit = azMasterOff[index+1] + botLimit = azReferenceOff[index+1] olap = curLimit[1] - botLimit[0] @@ -350,14 +350,14 @@ def main(iargs=None): inps=cmdLineParse(iargs) virtual = inps.useVirtualFiles - swathList = ut.getSwathList(inps.master) + swathList = ut.getSwathList(inps.reference) referenceFrames = [] frames=[] fileList = [] namePattern = inps.namePattern.split('*') for swath in swathList: - ifg = ut.loadProduct(os.path.join(inps.master , 'IW{0}.xml'.format(swath))) + ifg = ut.loadProduct(os.path.join(inps.reference , 'IW{0}.xml'.format(swath))) if inps.stack: stack = ut.loadProduct(os.path.join(inps.stack , 'IW{0}.xml'.format(swath))) if inps.isaligned: diff --git a/contrib/stack/topsStack/overlap_withDEM.py b/contrib/stack/topsStack/overlap_withDEM.py index b3c17af..0271a3f 100644 --- a/contrib/stack/topsStack/overlap_withDEM.py +++ b/contrib/stack/topsStack/overlap_withDEM.py @@ -17,10 +17,10 @@ def createParser(): parser.add_argument('-i', '--interferogram', type=str, dest='interferogram',required=True, help='Directory with the overlap interferogram') - parser.add_argument('-m', '--master_dir', type=str, dest='master', required=True, - help='Directory with the slave image') - parser.add_argument('-s', '--slave_dir', type=str, dest='slave', required=True, - help='Directory with the slave image') + parser.add_argument('-m', '--reference_dir', type=str, dest='reference', required=True, + help='Directory with the secondary image') + parser.add_argument('-s', '--secondary_dir', type=str, dest='secondary', required=True, + help='Directory with the secondary image') parser.add_argument('-d', '--overlap_dir', type=str, dest='overlap', required=True, help='Directory with overlap products') @@ -54,31 +54,31 @@ def multilook(intName, alks=5, rlks=15): -def overlapSpectralSeparation(topBurstIfg, botBurstIfg, masterTop, masterBot, slaveTop, slaveBot, azMasTop, rgMasTop, azMasBot, rgMasBot, azSlvTop, rgSlvTop, azSlvBot, rgSlvBot , misreg=0.0): +def overlapSpectralSeparation(topBurstIfg, botBurstIfg, referenceTop, referenceBot, secondaryTop, secondaryBot, azMasTop, rgMasTop, azMasBot, rgMasBot, azSlvTop, rgSlvTop, azSlvBot, rgSlvBot , misreg=0.0): # Added by Heresh Fattahi ''' Estimate separation in frequency due to unit pixel misregistration. ''' ''' dt = topBurstIfg.azimuthTimeInterval - topStart = int(np.round((topBurstIfg.sensingStart - masterTop.sensingStart).total_seconds() / dt)) + topStart = int(np.round((topBurstIfg.sensingStart - referenceTop.sensingStart).total_seconds() / dt)) overlapLen = topBurstIfg.numberOfLines - botStart = int(np.round((botBurstIfg.sensingStart - masterBot.sensingStart).total_seconds() / dt)) + botStart = int(np.round((botBurstIfg.sensingStart - referenceBot.sensingStart).total_seconds() / dt)) - print(topBurstIfg.sensingStart, masterTop.sensingStart) - print(botBurstIfg.sensingStart, masterBot.sensingStart) + print(topBurstIfg.sensingStart, referenceTop.sensingStart) + print(botBurstIfg.sensingStart, referenceBot.sensingStart) print(topStart, botStart, overlapLen) ''' print ('++++++++++++++++++++++') dt = topBurstIfg.azimuthTimeInterval - topStart = int ( np.round( (masterBot.sensingStart - masterTop.sensingStart).total_seconds()/dt))+ masterBot.firstValidLine + topStart = int ( np.round( (referenceBot.sensingStart - referenceTop.sensingStart).total_seconds()/dt))+ referenceBot.firstValidLine overlapLen = topBurstIfg.numberOfLines - botStart = masterBot.firstValidLine + botStart = referenceBot.firstValidLine print(topStart, botStart, overlapLen) #print(Debug) ############## - # master top : m1 + # reference top : m1 @@ -98,18 +98,18 @@ def overlapSpectralSeparation(topBurstIfg, botBurstIfg, masterTop, masterBot, sl azi = y + yy rng = x + xx - Vs = np.linalg.norm(masterTop.orbit.interpolateOrbit(masterTop.sensingMid, method='hermite').getVelocity()) - Ks = 2 * Vs * masterTop.azimuthSteeringRate / masterTop.radarWavelength - rng = masterTop.startingRange + masterTop.rangePixelSize * rng - Ka = masterTop.azimuthFMRate(rng) + Vs = np.linalg.norm(referenceTop.orbit.interpolateOrbit(referenceTop.sensingMid, method='hermite').getVelocity()) + Ks = 2 * Vs * referenceTop.azimuthSteeringRate / referenceTop.radarWavelength + rng = referenceTop.startingRange + referenceTop.rangePixelSize * rng + Ka = referenceTop.azimuthFMRate(rng) Ktm1 = Ks / (1.0 - Ks / Ka) - tm1 = (azi - (masterTop.numberOfLines//2)) * masterTop.azimuthTimeInterval + tm1 = (azi - (referenceTop.numberOfLines//2)) * referenceTop.azimuthTimeInterval - fm1 = masterTop.doppler(rng) + fm1 = referenceTop.doppler(rng) ############## - # master bottom : m2 + # reference bottom : m2 y = np.arange(botStart, botStart + overlapLen)[:,None] * np.ones((overlapLen, botBurstIfg.numberOfSamples)) x = np.ones((overlapLen, botBurstIfg.numberOfSamples)) * np.arange(botBurstIfg.numberOfSamples)[None,:] @@ -125,18 +125,18 @@ def overlapSpectralSeparation(topBurstIfg, botBurstIfg, masterTop, masterBot, sl azi = y + yy rng = x + xx - Vs = np.linalg.norm(masterBot.orbit.interpolateOrbit(masterBot.sensingMid, method='hermite').getVelocity()) - Ks = 2 * Vs * masterBot.azimuthSteeringRate / masterBot.radarWavelength - rng = masterBot.startingRange + masterBot.rangePixelSize * rng - Ka = masterBot.azimuthFMRate(rng) + Vs = np.linalg.norm(referenceBot.orbit.interpolateOrbit(referenceBot.sensingMid, method='hermite').getVelocity()) + Ks = 2 * Vs * referenceBot.azimuthSteeringRate / referenceBot.radarWavelength + rng = referenceBot.startingRange + referenceBot.rangePixelSize * rng + Ka = referenceBot.azimuthFMRate(rng) Ktm2 = Ks / (1.0 - Ks / Ka) - tm2 = (azi - (masterBot.numberOfLines//2)) * masterBot.azimuthTimeInterval - fm2 = masterBot.doppler(rng) + tm2 = (azi - (referenceBot.numberOfLines//2)) * referenceBot.azimuthTimeInterval + fm2 = referenceBot.doppler(rng) ############## - # slave top : s1 + # secondary top : s1 y = np.arange(topStart, topStart+overlapLen)[:,None] * np.ones((overlapLen, topBurstIfg.numberOfSamples)) x = np.ones((overlapLen, topBurstIfg.numberOfSamples)) * np.arange(topBurstIfg.numberOfSamples)[None,:] @@ -158,23 +158,23 @@ def overlapSpectralSeparation(topBurstIfg, botBurstIfg, masterTop, masterBot, sl # print('Rng top: ', rng[0,0], azi[-1,-1]) # print('XX top: ', xx[0,0], xx[-1,-1]) - Vs = np.linalg.norm(slaveTop.orbit.interpolateOrbit(slaveTop.sensingMid, method='hermite').getVelocity()) - Ks = 2 * Vs * slaveTop.azimuthSteeringRate / slaveTop.radarWavelength - rng = slaveTop.startingRange + slaveTop.rangePixelSize * rng - Ka = slaveTop.azimuthFMRate(rng) + Vs = np.linalg.norm(secondaryTop.orbit.interpolateOrbit(secondaryTop.sensingMid, method='hermite').getVelocity()) + Ks = 2 * Vs * secondaryTop.azimuthSteeringRate / secondaryTop.radarWavelength + rng = secondaryTop.startingRange + secondaryTop.rangePixelSize * rng + Ka = secondaryTop.azimuthFMRate(rng) Kts1 = Ks / (1.0 - Ks / Ka) - ts1 = (azi - (slaveTop.numberOfLines//2)) * slaveTop.azimuthTimeInterval - fs1 = slaveTop.doppler(rng) + ts1 = (azi - (secondaryTop.numberOfLines//2)) * secondaryTop.azimuthTimeInterval + fs1 = secondaryTop.doppler(rng) ############## - # slave bot : s2 + # secondary bot : s2 y = np.arange(botStart, botStart + overlapLen)[:,None] * np.ones((overlapLen, botBurstIfg.numberOfSamples)) x = np.ones((overlapLen, botBurstIfg.numberOfSamples)) * np.arange(botBurstIfg.numberOfSamples)[None,:] - ####Bottom slave + ####Bottom secondary if os.path.exists(azSlvBot) and os.path.exists(rgSlvBot): yy = np.memmap( azSlvBot, dtype=np.float32, mode='r', shape=(botBurstIfg.numberOfLines, botBurstIfg.numberOfSamples)) @@ -192,14 +192,14 @@ def overlapSpectralSeparation(topBurstIfg, botBurstIfg, masterTop, masterBot, sl # print('Rng bot: ', rng[0,0], azi[-1,-1]) # print('XX bot: ', xx[0,0], xx[-1,-1]) - Vs = np.linalg.norm(slaveBot.orbit.interpolateOrbit(slaveBot.sensingMid, method='hermite').getVelocity()) - Ks = 2 * Vs * slaveBot.azimuthSteeringRate / slaveBot.radarWavelength - rng = slaveBot.startingRange + slaveBot.rangePixelSize * rng - Ka = slaveBot.azimuthFMRate(rng) + Vs = np.linalg.norm(secondaryBot.orbit.interpolateOrbit(secondaryBot.sensingMid, method='hermite').getVelocity()) + Ks = 2 * Vs * secondaryBot.azimuthSteeringRate / secondaryBot.radarWavelength + rng = secondaryBot.startingRange + secondaryBot.rangePixelSize * rng + Ka = secondaryBot.azimuthFMRate(rng) Kts2 = Ks / (1.0 - Ks / Ka) - ts2 = (azi - (slaveBot.numberOfLines//2)) * slaveBot.azimuthTimeInterval - fs2 = slaveBot.doppler(rng) + ts2 = (azi - (secondaryBot.numberOfLines//2)) * secondaryBot.azimuthTimeInterval + fs2 = secondaryBot.doppler(rng) ############## frequencySeparation = -Ktm2*tm2 + Ktm1*tm1 + Kts1*ts1 - Kts2*ts2 + fm2 - fm1 + fs1 -fs2 @@ -255,21 +255,21 @@ def main(iargs=None): inps = cmdLineParse(iargs) inps.interferogram = os.path.join(inps.interferogram,'overlap') - inps.master = os.path.join(inps.master,'overlap') - inps.slave = os.path.join(inps.slave,'overlap') + inps.reference = os.path.join(inps.reference,'overlap') + inps.secondary = os.path.join(inps.secondary,'overlap') - masterSwathList = ut.getSwathList(inps.master) - slaveSwathList = ut.getSwathList(inps.slave) + referenceSwathList = ut.getSwathList(inps.reference) + secondarySwathList = ut.getSwathList(inps.secondary) - swathList = list(sorted(set(masterSwathList+slaveSwathList))) + swathList = list(sorted(set(referenceSwathList+secondarySwathList))) for swath in swathList: IWstr = 'IW{0}'.format(swath) - masterTop = ut.loadProduct(os.path.join(inps.master, IWstr + '_top.xml')) - masterBot = ut.loadProduct(os.path.join(inps.master , IWstr + '_bottom.xml')) + referenceTop = ut.loadProduct(os.path.join(inps.reference, IWstr + '_top.xml')) + referenceBot = ut.loadProduct(os.path.join(inps.reference , IWstr + '_bottom.xml')) - slaveTop = ut.loadProduct(os.path.join(inps.slave, IWstr + '_top.xml')) - slaveBot = ut.loadProduct(os.path.join(inps.slave, IWstr + '_bottom.xml')) + secondaryTop = ut.loadProduct(os.path.join(inps.secondary, IWstr + '_top.xml')) + secondaryBot = ut.loadProduct(os.path.join(inps.secondary, IWstr + '_bottom.xml')) ####Load metadata for burst IFGs @@ -281,20 +281,20 @@ def main(iargs=None): os.makedirs(esddir, exist_ok=True) ####Overlap offsets directory - masterOffdir = os.path.join(inps.master, IWstr) - slaveOffdir = os.path.join(inps.slave,IWstr) + referenceOffdir = os.path.join(inps.reference, IWstr) + secondaryOffdir = os.path.join(inps.secondary,IWstr) ######### - minMaster = masterTop.bursts[0].burstNumber - maxMaster = masterTop.bursts[-1].burstNumber + minReference = referenceTop.bursts[0].burstNumber + maxReference = referenceTop.bursts[-1].burstNumber - minSlave = slaveTop.bursts[0].burstNumber - maxSlave = slaveTop.bursts[-1].burstNumber + minSecondary = secondaryTop.bursts[0].burstNumber + maxSecondary = secondaryTop.bursts[-1].burstNumber minBurst = ifgTop.bursts[0].burstNumber maxBurst = ifgTop.bursts[-1].burstNumber - print ('minSlave,maxSlave',minSlave, maxSlave) - print ('minMaster,maxMaster',minMaster, maxMaster) + print ('minSecondary,maxSecondary',minSecondary, maxSecondary) + print ('minReference,maxReference',minReference, maxReference) print ('minBurst, maxBurst: ', minBurst, maxBurst) ######### @@ -307,20 +307,20 @@ def main(iargs=None): for ii in range(minBurst, maxBurst + 1): ind = ii - minBurst ###Index into overlaps - mind = ii - minMaster ### Index into master - sind = ii - minSlave ###Index into slave + mind = ii - minReference ### Index into reference + sind = ii - minSecondary ###Index into secondary topBurstIfg = ifgTop.bursts[ind] botBurstIfg = ifgBottom.bursts[ind] ############### - '''stackMasterTop = ifgTop.source.bursts[mind] - stackMasterBot = ifgBottom.source.bursts[mind] + '''stackReferenceTop = ifgTop.source.bursts[mind] + stackReferenceBot = ifgBottom.source.bursts[mind] - dt = stackMasterTop.azimuthTimeInterval - topStart = int(np.round((stackMasterBot.sensingStart - stackMasterTop.sensingStart).total_seconds() / dt)) + dt = stackReferenceTop.azimuthTimeInterval + topStart = int(np.round((stackReferenceBot.sensingStart - stackReferenceTop.sensingStart).total_seconds() / dt)) #overlapLen = .numberOfLines - botStart = stackMasterBot.firstValidLine #int(np.round((.sensingStart - masterBot.sensingStart).total_seconds() / dt)) + botStart = stackReferenceBot.firstValidLine #int(np.round((.sensingStart - referenceBot.sensingStart).total_seconds() / dt)) print('+++++++++++++++++++') print(topStart, botStart) print('+++++++++++++++++++') ''' @@ -360,20 +360,20 @@ def main(iargs=None): cohlist.append(multCor) ####Estimate the frequency difference - azMasTop = os.path.join(masterOffdir, 'azimuth_top_%02d_%02d.off'%(ii,ii+1)) - rgMasTop = os.path.join(masterOffdir, 'range_top_%02d_%02d.off'%(ii,ii+1)) - azMasBot = os.path.join(masterOffdir, 'azimuth_bot_%02d_%02d.off'%(ii,ii+1)) - rgMasBot = os.path.join(masterOffdir, 'range_bot_%02d_%02d.off'%(ii,ii+1)) + azMasTop = os.path.join(referenceOffdir, 'azimuth_top_%02d_%02d.off'%(ii,ii+1)) + rgMasTop = os.path.join(referenceOffdir, 'range_top_%02d_%02d.off'%(ii,ii+1)) + azMasBot = os.path.join(referenceOffdir, 'azimuth_bot_%02d_%02d.off'%(ii,ii+1)) + rgMasBot = os.path.join(referenceOffdir, 'range_bot_%02d_%02d.off'%(ii,ii+1)) - azSlvTop = os.path.join(slaveOffdir, 'azimuth_top_%02d_%02d.off'%(ii,ii+1)) - rgSlvTop = os.path.join(slaveOffdir, 'range_top_%02d_%02d.off'%(ii,ii+1)) - azSlvBot = os.path.join(slaveOffdir, 'azimuth_bot_%02d_%02d.off'%(ii,ii+1)) - rgSlvBot = os.path.join(slaveOffdir, 'range_bot_%02d_%02d.off'%(ii,ii+1)) + azSlvTop = os.path.join(secondaryOffdir, 'azimuth_top_%02d_%02d.off'%(ii,ii+1)) + rgSlvTop = os.path.join(secondaryOffdir, 'range_top_%02d_%02d.off'%(ii,ii+1)) + azSlvBot = os.path.join(secondaryOffdir, 'azimuth_bot_%02d_%02d.off'%(ii,ii+1)) + rgSlvBot = os.path.join(secondaryOffdir, 'range_bot_%02d_%02d.off'%(ii,ii+1)) - mFullTop = masterTop.source.bursts[mind] - mFullBot = masterBot.source.bursts[mind+1] - sFullTop = slaveTop.source.bursts[sind] - sFullBot = slaveBot.source.bursts[sind+1] + mFullTop = referenceTop.source.bursts[mind] + mFullBot = referenceBot.source.bursts[mind+1] + sFullTop = secondaryTop.source.bursts[sind] + sFullBot = secondaryBot.source.bursts[sind+1] freqdiff = overlapSpectralSeparation(topBurstIfg, botBurstIfg, mFullTop, mFullBot, sFullTop, sFullBot, azMasTop, rgMasTop, azMasBot, rgMasBot, azSlvTop, rgSlvTop, azSlvBot, rgSlvBot) diff --git a/contrib/stack/topsStack/plotBursts.py b/contrib/stack/topsStack/plotBursts.py index 8795b58..5fae2e6 100755 --- a/contrib/stack/topsStack/plotBursts.py +++ b/contrib/stack/topsStack/plotBursts.py @@ -23,7 +23,7 @@ def createParser(): ''' parser = argparse.ArgumentParser( description='Generate offset field between two Sentinel swaths') - parser.add_argument('-i', '--master', type=str, dest='master', required=True, help='Path to folder') + parser.add_argument('-i', '--reference', type=str, dest='reference', required=True, help='Path to folder') parser.add_argument('-k', '--kml', type=str, dest='shapefile', default=None, help='Path to kml') parser.add_argument('-f', '--figure', type=str, dest='figure', default=None, help='Path to output PDF') @@ -56,7 +56,7 @@ def main(iargs=None): import matplotlib.patches as patches - swathList = ut.getSwathList(inps.master) + swathList = ut.getSwathList(inps.reference) swathColors = ['r', 'g', 'b'] shapeColors = ['FF0000','00FF00','0000FF'] @@ -86,7 +86,7 @@ def main(iargs=None): for swath in swathList: - ifg = ut.loadProduct(os.path.join(inps.master , 'IW{0}.xml'.format(swath))) + ifg = ut.loadProduct(os.path.join(inps.reference , 'IW{0}.xml'.format(swath))) minBurst = ifg.bursts[0].burstNumber maxBurst = ifg.bursts[-1].burstNumber diff --git a/contrib/stack/topsStack/plotBursts_master_slaves.py b/contrib/stack/topsStack/plotBursts_reference_secondaries.py similarity index 83% rename from contrib/stack/topsStack/plotBursts_master_slaves.py rename to contrib/stack/topsStack/plotBursts_reference_secondaries.py index 26e23bb..4a48ad2 100755 --- a/contrib/stack/topsStack/plotBursts_master_slaves.py +++ b/contrib/stack/topsStack/plotBursts_reference_secondaries.py @@ -14,8 +14,8 @@ def createParser(): Create command line parser. ''' - parser = argparse.ArgumentParser(description='Generate all kml files for the master and slave slc') - parser.add_argument('-i', '--i', dest='inputdir', type=str, default="slaves", help='Input directory') + parser = argparse.ArgumentParser(description='Generate all kml files for the reference and secondary slc') + parser.add_argument('-i', '--i', dest='inputdir', type=str, default="secondarys", help='Input directory') parser.add_argument('-o', '--o', dest='outputdir', type=str, default="kml_slcs", help='Output directory') return parser @@ -41,12 +41,12 @@ def main(iargs=None): os.mkdir(outputdir) - # see if the masterdir also exist - indir = os.path.abspath(os.path.join(inputdir, '..',"master")) + # see if the referencedir also exist + indir = os.path.abspath(os.path.join(inputdir, '..',"reference")) if os.path.isdir(inputdir): - outfile = os.path.join(outputdir,'master.kml') + outfile = os.path.join(outputdir,'reference.kml') cmd = "plotBursts.py -i " + indir + " -k " + outfile - print("master date:") + print("reference date:") print(cmd) os.system(cmd) diff --git a/contrib/stack/topsStack/plotMisreg.py b/contrib/stack/topsStack/plotMisreg.py index 4b2ab9b..b0ce63e 100755 --- a/contrib/stack/topsStack/plotMisreg.py +++ b/contrib/stack/topsStack/plotMisreg.py @@ -60,7 +60,7 @@ def main(iargs=None): if __name__ == '__main__' : ''' invert a network of the pair's mis-registrations to - estimate the mis-registrations wrt the Master date. + estimate the mis-registrations wrt the Reference date. ''' main() diff --git a/contrib/stack/topsStack/prep4timeseries.py b/contrib/stack/topsStack/prep4timeseries.py index 547ce17..35008f9 100755 --- a/contrib/stack/topsStack/prep4timeseries.py +++ b/contrib/stack/topsStack/prep4timeseries.py @@ -40,7 +40,7 @@ def createParser(): parser.add_argument('-o', '--orbit_direction', dest='orbitDirection', type=str, default=None, help='Direction of the orbit: ascending, or descending ') parser.add_argument('-x', '--xml_file', dest='xmlFile', type=str, default=None, - help='An xml file to extract common metada for the stack: e.g.: master/IW3.xml') + help='An xml file to extract common metada for the stack: e.g.: reference/IW3.xml') parser.add_argument('-b', '--baseline_dir', dest='baselineDir', type=str, default=None, help=' directory with baselines ') parser.add_argument('-g', '--geometry_dir', dest='geometryDir', type=str, default=None, @@ -53,9 +53,9 @@ def cmdLineParse(iargs = None): def extractIsceMetadata(xmlFile): - master = ut.loadProduct(xmlFile) - burst = master.bursts[0] - burstEnd = master.bursts[-1] + reference = ut.loadProduct(xmlFile) + burst = reference.bursts[0] + burstEnd = reference.bursts[-1] metadata = {} metadata['radarWavelength'] = burst.radarWavelength metadata['rangePixelSize'] = burst.rangePixelSize diff --git a/contrib/stack/topsStack/resamp_withCarrier.py b/contrib/stack/topsStack/resamp_withCarrier.py index eb26039..046c1c6 100755 --- a/contrib/stack/topsStack/resamp_withCarrier.py +++ b/contrib/stack/topsStack/resamp_withCarrier.py @@ -16,13 +16,13 @@ from isceobj.Sensor.TOPS import createTOPSSwathSLCProduct def createParser(): parser = argparse.ArgumentParser( description='Resampling burst by burst SLCs ') - parser.add_argument('-m', '--master', dest='master', type=str, required=True, - help='Directory with master acquisition') + parser.add_argument('-m', '--reference', dest='reference', type=str, required=True, + help='Directory with reference acquisition') - parser.add_argument('-s', '--slave', dest='slave', type=str, required=True, - help='Directory with slave acquisition') + parser.add_argument('-s', '--secondary', dest='secondary', type=str, required=True, + help='Directory with secondary acquisition') - parser.add_argument('-o', '--coregdir', dest='coreg', type=str, default='coreg_slave', + parser.add_argument('-o', '--coregdir', dest='coreg', type=str, default='coreg_secondary', help='Directory with coregistered SLCs and IFGs') parser.add_argument('-a', '--azimuth_misreg', dest='misreg_az', type=str, default=0.0, @@ -38,7 +38,7 @@ def createParser(): help='Is this an overlap burst slc. default: False') parser.add_argument('-d', '--overlapDir', dest='overlapDir', type=str, default='overlap', - help='master overlap directory') + help='reference overlap directory') return parser @@ -46,7 +46,7 @@ def cmdLineParse(iargs = None): parser = createParser() return parser.parse_args(args=iargs) -def resampSlave(mas, slv, rdict, outname, flatten): +def resampSecondary(mas, slv, rdict, outname, flatten): ''' Resample burst by burst. ''' @@ -100,26 +100,26 @@ def resampSlave(mas, slv, rdict, outname, flatten): def main(iargs=None): ''' - Create coregistered overlap slaves. + Create coregistered overlap secondarys. ''' inps = cmdLineParse(iargs) - masterSwathList = ut.getSwathList(inps.master) - slaveSwathList = ut.getSwathList(inps.slave) + referenceSwathList = ut.getSwathList(inps.reference) + secondarySwathList = ut.getSwathList(inps.secondary) - swathList = list(sorted(set(masterSwathList+slaveSwathList))) + swathList = list(sorted(set(referenceSwathList+secondarySwathList))) for swath in swathList: - ####Load slave metadata - master = ut.loadProduct( os.path.join(inps.master , 'IW{0}.xml'.format(swath))) - slave = ut.loadProduct( os.path.join(inps.slave , 'IW{0}.xml'.format(swath))) + ####Load secondary metadata + reference = ut.loadProduct( os.path.join(inps.reference , 'IW{0}.xml'.format(swath))) + secondary = ut.loadProduct( os.path.join(inps.secondary , 'IW{0}.xml'.format(swath))) if inps.overlap: - masterTop = ut.loadProduct(os.path.join(inps.master, inps.overlapDir , 'IW{0}_top.xml'.format(swath))) - masterBottom = ut.loadProduct(os.path.join(inps.master, inps.overlapDir , 'IW{0}_bottom.xml'.format(swath))) + referenceTop = ut.loadProduct(os.path.join(inps.reference, inps.overlapDir , 'IW{0}_top.xml'.format(swath))) + referenceBottom = ut.loadProduct(os.path.join(inps.reference, inps.overlapDir , 'IW{0}_bottom.xml'.format(swath))) - dt = slave.bursts[0].azimuthTimeInterval - dr = slave.bursts[0].rangePixelSize + dt = secondary.bursts[0].azimuthTimeInterval + dr = secondary.bursts[0].rangePixelSize if os.path.exists(str(inps.misreg_az)): with open(inps.misreg_az, 'r') as f: @@ -143,12 +143,12 @@ def main(iargs=None): os.makedirs(outdir, exist_ok=True) - ####Indices w.r.t master - burstoffset, minBurst, maxBurst = master.getCommonBurstLimits(slave) - slaveBurstStart = minBurst + burstoffset - slaveBurstEnd = maxBurst + ####Indices w.r.t reference + burstoffset, minBurst, maxBurst = reference.getCommonBurstLimits(secondary) + secondaryBurstStart = minBurst + burstoffset + secondaryBurstEnd = maxBurst - relShifts = ut.getRelativeShifts(master, slave, minBurst, maxBurst, slaveBurstStart) + relShifts = ut.getRelativeShifts(reference, secondary, minBurst, maxBurst, secondaryBurstStart) if inps.overlap: maxBurst = maxBurst - 1 ###For overlaps @@ -172,22 +172,22 @@ def main(iargs=None): botCoreg.configure() for ii in range(minBurst, maxBurst): - jj = slaveBurstStart + ii - minBurst + jj = secondaryBurstStart + ii - minBurst if inps.overlap: - botBurst = masterBottom.bursts[ii] - topBurst = masterTop.bursts[ii] + botBurst = referenceBottom.bursts[ii] + topBurst = referenceTop.bursts[ii] else: - topBurst = master.bursts[ii] + topBurst = reference.bursts[ii] - slvBurst = slave.bursts[jj] + slvBurst = secondary.bursts[jj] #####Top burst processing try: offset = relShifts[jj] except: - raise Exception('Trying to access shift for slave burst index {0}, which may not overlap with master'.format(jj)) + raise Exception('Trying to access shift for secondary burst index {0}, which may not overlap with reference'.format(jj)) if inps.overlap: outname = os.path.join(outdir, 'burst_top_%02d_%02d.slc'%(ii+1,ii+2)) @@ -202,12 +202,12 @@ def main(iargs=None): ###For future - should account for azimuth and range misreg here .. ignoring for now. - azCarrPoly, dpoly = slave.estimateAzimuthCarrierPolynomials(slvBurst, offset = -1.0 * offset) + azCarrPoly, dpoly = secondary.estimateAzimuthCarrierPolynomials(slvBurst, offset = -1.0 * offset) rdict['carrPoly'] = azCarrPoly rdict['doppPoly'] = dpoly - outimg = resampSlave(topBurst, slvBurst, rdict, outname, (not inps.noflat)) + outimg = resampSecondary(topBurst, slvBurst, rdict, outname, (not inps.noflat)) copyBurst = copy.deepcopy(topBurst) ut.adjustValidSampleLine(copyBurst) @@ -217,7 +217,7 @@ def main(iargs=None): ####################################################### - slvBurst = slave.bursts[jj+1] + slvBurst = secondary.bursts[jj+1] outname = os.path.join(outdir, 'burst_bot_%02d_%02d.slc'%(ii+1,ii+2)) ####Setup initial polynomials @@ -228,12 +228,12 @@ def main(iargs=None): 'rangeOff' : os.path.join(offdir, 'range_bot_%02d_%02d.off'%(ii+1,ii+2)), 'azimuthOff': os.path.join(offdir, 'azimuth_bot_%02d_%02d.off'%(ii+1,ii+2))} - azCarrPoly, dpoly = slave.estimateAzimuthCarrierPolynomials(slvBurst, offset = -1.0 * offset) + azCarrPoly, dpoly = secondary.estimateAzimuthCarrierPolynomials(slvBurst, offset = -1.0 * offset) rdict['carrPoly'] = azCarrPoly rdict['doppPoly'] = dpoly - outimg = resampSlave(botBurst, slvBurst, rdict, outname, (not inps.noflat)) + outimg = resampSecondary(botBurst, slvBurst, rdict, outname, (not inps.noflat)) copyBurst = copy.deepcopy(botBurst) ut.adjustValidSampleLine(copyBurst) @@ -256,12 +256,12 @@ def main(iargs=None): ###For future - should account for azimuth and range misreg here .. ignoring for now. - azCarrPoly, dpoly = slave.estimateAzimuthCarrierPolynomials(slvBurst, offset = -1.0 * offset) + azCarrPoly, dpoly = secondary.estimateAzimuthCarrierPolynomials(slvBurst, offset = -1.0 * offset) rdict['carrPoly'] = azCarrPoly rdict['doppPoly'] = dpoly - outimg = resampSlave(topBurst, slvBurst, rdict, outname, (not inps.noflat)) + outimg = resampSecondary(topBurst, slvBurst, rdict, outname, (not inps.noflat)) minAz, maxAz, minRg, maxRg = ut.getValidLines(slvBurst, rdict, outname, misreg_az = misreg_az - offset, misreg_rng = misreg_rg) @@ -276,18 +276,18 @@ def main(iargs=None): topCoreg.numberOfBursts = len(topCoreg.bursts) - topCoreg.source = ut.asBaseClass(slave) + topCoreg.source = ut.asBaseClass(secondary) if inps.overlap: botCoreg.numberOfBursts = len(botCoreg.bursts) - topCoreg.reference = ut.asBaseClass(masterTop) - botCoreg.reference = ut.asBaseClass(masterBottom) - botCoreg.source = ut.asBaseClass(slave) + topCoreg.reference = ut.asBaseClass(referenceTop) + botCoreg.reference = ut.asBaseClass(referenceBottom) + botCoreg.source = ut.asBaseClass(secondary) ut.saveProduct(topCoreg, outdir + '_top.xml') ut.saveProduct(botCoreg, outdir + '_bottom.xml') else: - topCoreg.reference = master + topCoreg.reference = reference ut.saveProduct(topCoreg, outdir + '.xml') if __name__ == '__main__': diff --git a/contrib/stack/topsStack/s1a_isce_utils.py b/contrib/stack/topsStack/s1a_isce_utils.py index 30261fb..c79208d 100755 --- a/contrib/stack/topsStack/s1a_isce_utils.py +++ b/contrib/stack/topsStack/s1a_isce_utils.py @@ -46,166 +46,166 @@ def saveProduct( obj, xmlname): return None -def getRelativeShifts(mFrame, sFrame, minBurst, maxBurst, slaveBurstStart): +def getRelativeShifts(mFrame, sFrame, minBurst, maxBurst, secondaryBurstStart): ''' Estimate the relative shifts between the start of the bursts. ''' import numpy as np - azMasterOff = {} - azSlaveOff = {} + azReferenceOff = {} + azSecondaryOff = {} azRelOff = {} tm = mFrame.bursts[minBurst].sensingStart dt = mFrame.bursts[minBurst].azimuthTimeInterval - ts = sFrame.bursts[slaveBurstStart].sensingStart + ts = sFrame.bursts[secondaryBurstStart].sensingStart for index in range(minBurst, maxBurst): burst = mFrame.bursts[index] - azMasterOff[index] = int(np.round((burst.sensingStart - tm).total_seconds() / dt)) + azReferenceOff[index] = int(np.round((burst.sensingStart - tm).total_seconds() / dt)) - burst = sFrame.bursts[slaveBurstStart + index - minBurst] - azSlaveOff[slaveBurstStart + index - minBurst] = int(np.round((burst.sensingStart - ts).total_seconds() / dt)) + burst = sFrame.bursts[secondaryBurstStart + index - minBurst] + azSecondaryOff[secondaryBurstStart + index - minBurst] = int(np.round((burst.sensingStart - ts).total_seconds() / dt)) - azRelOff[slaveBurstStart + index - minBurst] = azSlaveOff[slaveBurstStart + index - minBurst] - azMasterOff[index] + azRelOff[secondaryBurstStart + index - minBurst] = azSecondaryOff[secondaryBurstStart + index - minBurst] - azReferenceOff[index] return azRelOff -def adjustValidSampleLine(master, minAz=0, maxAz=0, minRng=0, maxRng=0): +def adjustValidSampleLine(reference, minAz=0, maxAz=0, minRng=0, maxRng=0): import numpy as np import isce import isceobj # Valid region in the resampled slc based on offsets ####Adjust valid samples and first valid sample here print ("Adjust valid samples") - print('Before: ', master.firstValidSample, master.numValidSamples) + print('Before: ', reference.firstValidSample, reference.numValidSamples) print('Offsets : ', minRng, maxRng) if (minRng > 0) and (maxRng > 0): - master.numValidSamples -= (int(np.ceil(maxRng)) + 8) - master.firstValidSample += 4 + reference.numValidSamples -= (int(np.ceil(maxRng)) + 8) + reference.firstValidSample += 4 elif (minRng < 0) and (maxRng < 0): - master.firstValidSample -= int(np.floor(minRng) - 4) - master.numValidSamples += int(np.floor(minRng) - 8) + reference.firstValidSample -= int(np.floor(minRng) - 4) + reference.numValidSamples += int(np.floor(minRng) - 8) elif (minRng < 0) and (maxRng > 0): - master.firstValidSample -= int(np.floor(minRng) - 4) - master.numValidSamples += int(np.floor(minRng) - 8) - int(np.ceil(maxRng)) + reference.firstValidSample -= int(np.floor(minRng) - 4) + reference.numValidSamples += int(np.floor(minRng) - 8) - int(np.ceil(maxRng)) - print('After: ', master.firstValidSample, master.numValidSamples) + print('After: ', reference.firstValidSample, reference.numValidSamples) ###Adjust valid lines and first valid line here print ("Adjust valid lines") - print('Before: ', master.firstValidLine, master.numValidLines) + print('Before: ', reference.firstValidLine, reference.numValidLines) print('Offsets : ', minAz, maxAz) if (minAz > 0) and (maxAz > 0): - master.numValidLines -= (int(np.ceil(maxAz)) + 8) - master.firstValidLine += 4 + reference.numValidLines -= (int(np.ceil(maxAz)) + 8) + reference.firstValidLine += 4 elif (minAz < 0) and (maxAz < 0): - master.firstValidLine -= int(np.floor(minAz) - 4) - master.numValidLines += int(np.floor(minAz) - 8) + reference.firstValidLine -= int(np.floor(minAz) - 4) + reference.numValidLines += int(np.floor(minAz) - 8) elif (minAz < 0) and (maxAz > 0): - master.firstValidLine -= int(np.floor(minAz) - 4) - master.numValidLines += int(np.floor(minAz) - 8) - int(np.ceil(maxAz)) - print('After:', master.firstValidLine, master.numValidLines) + reference.firstValidLine -= int(np.floor(minAz) - 4) + reference.numValidLines += int(np.floor(minAz) - 8) - int(np.ceil(maxAz)) + print('After:', reference.firstValidLine, reference.numValidLines) -def adjustValidSampleLine_V2(master, slave, minAz=0, maxAz=0, minRng=0, maxRng=0): +def adjustValidSampleLine_V2(reference, secondary, minAz=0, maxAz=0, minRng=0, maxRng=0): import numpy as np import isce import isceobj ####Adjust valid samples and first valid sample here print ("Adjust valid samples") - print('Before: ', master.firstValidSample, master.numValidSamples) + print('Before: ', reference.firstValidSample, reference.numValidSamples) print('Offsets : ', minRng, maxRng) if (minRng > 0) and (maxRng > 0): - master.firstValidSample = slave.firstValidSample - int(np.floor(maxRng)-4) - lastValidSample = master.firstValidSample - 8 + slave.numValidSamples + reference.firstValidSample = secondary.firstValidSample - int(np.floor(maxRng)-4) + lastValidSample = reference.firstValidSample - 8 + secondary.numValidSamples - if lastValidSample < master.numberOfSamples: - master.numValidSamples = slave.numValidSamples - 8 + if lastValidSample < reference.numberOfSamples: + reference.numValidSamples = secondary.numValidSamples - 8 else: - master.numValidSamples = master.numberOfSamples - master.firstValidSample + reference.numValidSamples = reference.numberOfSamples - reference.firstValidSample elif (minRng < 0) and (maxRng < 0): - master.firstValidSample = slave.firstValidSample - int(np.floor(minRng) - 4) - lastValidSample = master.firstValidSample + slave.numValidSamples - 8 - if lastValidSample < master.numberOfSamples: - master.numValidSamples = slave.numValidSamples - 8 + reference.firstValidSample = secondary.firstValidSample - int(np.floor(minRng) - 4) + lastValidSample = reference.firstValidSample + secondary.numValidSamples - 8 + if lastValidSample < reference.numberOfSamples: + reference.numValidSamples = secondary.numValidSamples - 8 else: - master.numValidSamples = master.numberOfSamples - master.firstValidSample + reference.numValidSamples = reference.numberOfSamples - reference.firstValidSample elif (minRng < 0) and (maxRng > 0): - master.firstValidSample = slave.firstValidSample - int(np.floor(minRng) - 4) - lastValidSample = master.firstValidSample + slave.numValidSamples + int(np.floor(minRng) - 8) - int(np.ceil(maxRng)) - if lastValidSample < master.numberOfSamples: - master.numValidSamples = slave.numValidSamples + int(np.floor(minRng) - 8) - int(np.ceil(maxRng)) + reference.firstValidSample = secondary.firstValidSample - int(np.floor(minRng) - 4) + lastValidSample = reference.firstValidSample + secondary.numValidSamples + int(np.floor(minRng) - 8) - int(np.ceil(maxRng)) + if lastValidSample < reference.numberOfSamples: + reference.numValidSamples = secondary.numValidSamples + int(np.floor(minRng) - 8) - int(np.ceil(maxRng)) else: - master.numValidSamples = master.numberOfSamples - master.firstValidSample + reference.numValidSamples = reference.numberOfSamples - reference.firstValidSample - master.firstValidSample = np.max([0, master.firstValidSample]) + reference.firstValidSample = np.max([0, reference.firstValidSample]) - print('After: ', master.firstValidSample, master.numValidSamples) + print('After: ', reference.firstValidSample, reference.numValidSamples) ###Adjust valid lines and first valid line here print ("Adjust valid lines") - print('Before: ', master.firstValidLine, master.numValidLines) + print('Before: ', reference.firstValidLine, reference.numValidLines) print('Offsets : ', minAz, maxAz) if (minAz > 0) and (maxAz > 0): - master.firstValidLine = slave.firstValidLine - int(np.floor(maxAz) - 4) - lastValidLine = master.firstValidLine - 8 + slave.numValidLines - if lastValidLine < master.numberOfLines: - master.numValidLines = slave.numValidLines - 8 + reference.firstValidLine = secondary.firstValidLine - int(np.floor(maxAz) - 4) + lastValidLine = reference.firstValidLine - 8 + secondary.numValidLines + if lastValidLine < reference.numberOfLines: + reference.numValidLines = secondary.numValidLines - 8 else: - master.numValidLines = master.numberOfLines - master.firstValidLine + reference.numValidLines = reference.numberOfLines - reference.firstValidLine elif (minAz < 0) and (maxAz < 0): - master.firstValidLine = slave.firstValidLine - int(np.floor(minAz) - 4) - lastValidLine = master.firstValidLine + slave.numValidLines + int(np.floor(minAz) - 8) - lastValidLine = master.firstValidLine + slave.numValidLines - 8 - if lastValidLine < master.numberOfLines: - master.numValidLines = slave.numValidLines - 8 + reference.firstValidLine = secondary.firstValidLine - int(np.floor(minAz) - 4) + lastValidLine = reference.firstValidLine + secondary.numValidLines + int(np.floor(minAz) - 8) + lastValidLine = reference.firstValidLine + secondary.numValidLines - 8 + if lastValidLine < reference.numberOfLines: + reference.numValidLines = secondary.numValidLines - 8 else: - master.numValidLines = master.numberOfLines - master.firstValidLine + reference.numValidLines = reference.numberOfLines - reference.firstValidLine elif (minAz < 0) and (maxAz > 0): - master.firstValidLine = slave.firstValidLine - int(np.floor(minAz) - 4) - lastValidLine = master.firstValidLine + slave.numValidLines + int(np.floor(minAz) - 8) - int(np.ceil(maxAz)) - if lastValidLine < master.numberOfLines: - master.numValidLines = slave.numValidLines + int(np.floor(minAz) - 8) - int(np.ceil(maxAz)) + reference.firstValidLine = secondary.firstValidLine - int(np.floor(minAz) - 4) + lastValidLine = reference.firstValidLine + secondary.numValidLines + int(np.floor(minAz) - 8) - int(np.ceil(maxAz)) + if lastValidLine < reference.numberOfLines: + reference.numValidLines = secondary.numValidLines + int(np.floor(minAz) - 8) - int(np.ceil(maxAz)) else: - master.numValidLines = master.numberOfLines - master.firstValidLine + reference.numValidLines = reference.numberOfLines - reference.firstValidLine - return master + return reference -def adjustCommonValidRegion(master,slave): - # valid lines between master and slave +def adjustCommonValidRegion(reference,secondary): + # valid lines between reference and secondary - master_lastValidLine = master.firstValidLine + master.numValidLines - 1 - master_lastValidSample = master.firstValidSample + master.numValidSamples - 1 - slave_lastValidLine = slave.firstValidLine + slave.numValidLines - 1 - slave_lastValidSample = slave.firstValidSample + slave.numValidSamples - 1 + reference_lastValidLine = reference.firstValidLine + reference.numValidLines - 1 + reference_lastValidSample = reference.firstValidSample + reference.numValidSamples - 1 + secondary_lastValidLine = secondary.firstValidLine + secondary.numValidLines - 1 + secondary_lastValidSample = secondary.firstValidSample + secondary.numValidSamples - 1 - igram_lastValidLine = min(master_lastValidLine, slave_lastValidLine) - igram_lastValidSample = min(master_lastValidSample, slave_lastValidSample) + igram_lastValidLine = min(reference_lastValidLine, secondary_lastValidLine) + igram_lastValidSample = min(reference_lastValidSample, secondary_lastValidSample) - master.firstValidLine = max(master.firstValidLine, slave.firstValidLine) - master.firstValidSample = max(master.firstValidSample, slave.firstValidSample) + reference.firstValidLine = max(reference.firstValidLine, secondary.firstValidLine) + reference.firstValidSample = max(reference.firstValidSample, secondary.firstValidSample) #set to 0 to avoid negative values - if master.firstValidLine<0: - master.firstValidLine=0 - if master.firstValidSample<0: - master.firstValidSample=0 + if reference.firstValidLine<0: + reference.firstValidLine=0 + if reference.firstValidSample<0: + reference.firstValidSample=0 - master.numValidLines = igram_lastValidLine - master.firstValidLine + 1 - master.numValidSamples = igram_lastValidSample - master.firstValidSample + 1 + reference.numValidLines = igram_lastValidLine - reference.firstValidLine + 1 + reference.numValidSamples = igram_lastValidSample - reference.firstValidSample + 1 -def getValidLines(slave, rdict, inname, misreg_az=0.0, misreg_rng=0.0): +def getValidLines(secondary, rdict, inname, misreg_az=0.0, misreg_rng=0.0): ''' - Looks at the master, slave and azimuth offsets and gets the Interferogram valid lines + Looks at the reference, secondary and azimuth offsets and gets the Interferogram valid lines ''' import numpy as np import isce diff --git a/contrib/stack/topsStack/sentinelApp.py b/contrib/stack/topsStack/sentinelApp.py index 0bb3c56..00d7c81 100755 --- a/contrib/stack/topsStack/sentinelApp.py +++ b/contrib/stack/topsStack/sentinelApp.py @@ -64,7 +64,7 @@ def createParser(): help='Working directory ') parser.add_argument('-d', '--dem', dest='dem', type=str, required=True, - help='Directory with slave acquisition') + help='Directory with secondary acquisition') parser.add_argument('-n', '--swath_num', dest='swath_num', type=str, default='1 2 3', help='A list of swaths to be processed') diff --git a/contrib/stack/topsStack/stackSentinel.py b/contrib/stack/topsStack/stackSentinel.py index 6dd8adb..f9bf33c 100755 --- a/contrib/stack/topsStack/stackSentinel.py +++ b/contrib/stack/topsStack/stackSentinel.py @@ -111,8 +111,8 @@ def createParser(): parser.add_argument('-d', '--dem', dest='dem', type=str, required=True, help='Directory with the DEM') - parser.add_argument('-m', '--master_date', dest='master_date', type=str, default=None, - help='Directory with master acquisition') + parser.add_argument('-m', '--reference_date', dest='reference_date', type=str, default=None, + help='Directory with reference acquisition') parser.add_argument('-c','--num_connections', dest='num_connections', type=str, default = '1', help='number of interferograms between each date and subsequent dates. -- Default : 1') @@ -395,26 +395,26 @@ def get_dates(inps): print(dateListframeGAP) print("") - if inps.master_date is None: + if inps.reference_date is None: if len(dateList)<1: print('*************************************') print('Error:') print('No acquisition forfills the temporal range and bbox requirement.') sys.exit(1) - inps.master_date = dateList[0] - print ("The master date was not chosen. The first date is considered as master date.") + inps.reference_date = dateList[0] + print ("The reference date was not chosen. The first date is considered as reference date.") print ("") - print ("All SLCs will be coregistered to : " + inps.master_date) + print ("All SLCs will be coregistered to : " + inps.reference_date) - slaveList = [key for key in safe_dict.keys()] - slaveList.sort() - slaveList.remove(inps.master_date) - print ("slave dates :") - print (slaveList) + secondaryList = [key for key in safe_dict.keys()] + secondaryList.sort() + secondaryList.remove(inps.reference_date) + print ("secondary dates :") + print (secondaryList) print ("") - return dateList, inps.master_date, slaveList, safe_dict + return dateList, inps.reference_date, secondaryList, safe_dict def selectNeighborPairs(dateList, num_connections, updateStack=False): # should be changed to able to account for the existed aquisitions -- Minyan Zhong @@ -436,27 +436,27 @@ def selectNeighborPairs(dateList, num_connections, updateStack=False): # should ######################################## # Below are few workflow examples. -def slcStack(inps, acquisitionDates, stackMasterDate, slaveDates, safe_dict, updateStack, mergeSLC=False): +def slcStack(inps, acquisitionDates, stackReferenceDate, secondaryDates, safe_dict, updateStack, mergeSLC=False): ############################# i=0 if not updateStack: i += 1 runObj = run() - runObj.configure(inps, 'run_{:02d}_unpack_topo_master'.format(i)) - runObj.unpackStackMasterSLC(safe_dict) + runObj.configure(inps, 'run_{:02d}_unpack_topo_reference'.format(i)) + runObj.unpackStackReferenceSLC(safe_dict) runObj.finalize() i+=1 runObj = run() - runObj.configure(inps, 'run_{:02d}_unpack_slave_slc'.format(i)) - runObj.unpackSlavesSLC(stackMasterDate, slaveDates, safe_dict) + runObj.configure(inps, 'run_{:02d}_unpack_secondary_slc'.format(i)) + runObj.unpackSecondarysSLC(stackReferenceDate, secondaryDates, safe_dict) runObj.finalize() i+=1 runObj = run() runObj.configure(inps, 'run_{:02d}_average_baseline'.format(i)) - runObj.averageBaseline(stackMasterDate, slaveDates) + runObj.averageBaseline(stackReferenceDate, secondaryDates) runObj.finalize() if inps.coregistration in ['NESD', 'nesd']: @@ -470,20 +470,20 @@ def slcStack(inps, acquisitionDates, stackMasterDate, slaveDates, safe_dict, upd i += 1 runObj = run() runObj.configure(inps, 'run_{:02d}_overlap_geo2rdr'.format(i)) - runObj.geo2rdr_offset(slaveDates) + runObj.geo2rdr_offset(secondaryDates) runObj.finalize() i += 1 runObj = run() runObj.configure(inps, 'run_{:02d}_overlap_resample'.format(i)) - runObj.resample_with_carrier(slaveDates) + runObj.resample_with_carrier(secondaryDates) runObj.finalize() i+=1 runObj = run() runObj.configure(inps, 'run_{:02d}_pairs_misreg'.format(i)) if updateStack: - runObj.pairs_misregistration(slaveDates, safe_dict) + runObj.pairs_misregistration(secondaryDates, safe_dict) else: runObj.pairs_misregistration(acquisitionDates, safe_dict) runObj.finalize() @@ -497,13 +497,13 @@ def slcStack(inps, acquisitionDates, stackMasterDate, slaveDates, safe_dict, upd i += 1 runObj = run() runObj.configure(inps, 'run_{:02d}_fullBurst_geo2rdr'.format(i)) - runObj.geo2rdr_offset(slaveDates, fullBurst='True') + runObj.geo2rdr_offset(secondaryDates, fullBurst='True') runObj.finalize() i += 1 runObj = run() runObj.configure(inps, 'run_{:02d}_fullBurst_resample'.format(i)) - runObj.resample_with_carrier(slaveDates, fullBurst='True') + runObj.resample_with_carrier(secondaryDates, fullBurst='True') runObj.finalize() i+=1 @@ -516,30 +516,30 @@ def slcStack(inps, acquisitionDates, stackMasterDate, slaveDates, safe_dict, upd i+=1 runObj = run() runObj.configure(inps, 'run_{:02d}_merge'.format(i)) - runObj.mergeMaster(stackMasterDate, virtual = 'False') - runObj.mergeSlaveSLC(slaveDates, virtual = 'False') + runObj.mergeReference(stackReferenceDate, virtual = 'False') + runObj.mergeSecondarySLC(secondaryDates, virtual = 'False') runObj.finalize() i+=1 runObj = run() runObj.configure(inps, 'run_{:02d}_grid_baseline'.format(i)) - runObj.gridBaseline(stackMasterDate, slaveDates) + runObj.gridBaseline(stackReferenceDate, secondaryDates) runObj.finalize() return i -def correlationStack(inps, acquisitionDates, stackMasterDate, slaveDates, safe_dict, pairs, updateStack): +def correlationStack(inps, acquisitionDates, stackReferenceDate, secondaryDates, safe_dict, pairs, updateStack): ############################# - i = slcStack(inps, acquisitionDates,stackMasterDate, slaveDates, safe_dict, updateStack) + i = slcStack(inps, acquisitionDates,stackReferenceDate, secondaryDates, safe_dict, updateStack) i+=1 runObj = run() - runObj.configure(inps, 'run_{:02d}_merge_master_slave_slc'.format(i)) - runObj.mergeMaster(stackMasterDate, virtual = 'True') - runObj.mergeSlaveSLC(slaveDates, virtual = 'True') + runObj.configure(inps, 'run_{:02d}_merge_reference_secondary_slc'.format(i)) + runObj.mergeReference(stackReferenceDate, virtual = 'True') + runObj.mergeSecondarySLC(secondaryDates, virtual = 'True') runObj.finalize() i+=1 @@ -555,15 +555,15 @@ def correlationStack(inps, acquisitionDates, stackMasterDate, slaveDates, safe_d runObj.finalize() -def interferogramStack(inps, acquisitionDates, stackMasterDate, slaveDates, safe_dict, pairs, updateStack): +def interferogramStack(inps, acquisitionDates, stackReferenceDate, secondaryDates, safe_dict, pairs, updateStack): - i = slcStack(inps, acquisitionDates, stackMasterDate, slaveDates, safe_dict, updateStack) + i = slcStack(inps, acquisitionDates, stackReferenceDate, secondaryDates, safe_dict, updateStack) i+=1 runObj = run() - runObj.configure(inps, 'run_{:02d}_merge_master_slave_slc'.format(i)) - runObj.mergeMaster(stackMasterDate, virtual = 'True') - runObj.mergeSlaveSLC(slaveDates, virtual = 'True') + runObj.configure(inps, 'run_{:02d}_merge_reference_secondary_slc'.format(i)) + runObj.mergeReference(stackReferenceDate, virtual = 'True') + runObj.mergeSecondarySLC(secondaryDates, virtual = 'True') runObj.finalize() i+=1 @@ -591,15 +591,15 @@ def interferogramStack(inps, acquisitionDates, stackMasterDate, slaveDates, safe runObj.finalize() -def offsetStack(inps, acquisitionDates, stackMasterDate, slaveDates, safe_dict, pairs, updateStack): +def offsetStack(inps, acquisitionDates, stackReferenceDate, secondaryDates, safe_dict, pairs, updateStack): - i = slcStack(inps, acquisitionDates, stackMasterDate, slaveDates, safe_dict, updateStack) + i = slcStack(inps, acquisitionDates, stackReferenceDate, secondaryDates, safe_dict, updateStack) i+=1 runObj = run() - runObj.configure(inps, 'run_{:02d}_merge_master_slave_slc'.format(i)) - runObj.mergeMaster(stackMasterDate, virtual = 'False') - runObj.mergeSlaveSLC(slaveDates, virtual = 'False') + runObj.configure(inps, 'run_{:02d}_merge_reference_secondary_slc'.format(i)) + runObj.mergeReference(stackReferenceDate, virtual = 'False') + runObj.mergeSecondarySLC(secondaryDates, virtual = 'False') runObj.finalize() i+=1 @@ -610,12 +610,12 @@ def offsetStack(inps, acquisitionDates, stackMasterDate, slaveDates, safe_dict, def checkCurrentStatus(inps): - acquisitionDates, stackMasterDate, slaveDates, safe_dict = get_dates(inps) - coregSLCDir = os.path.join(inps.work_dir, 'coreg_slaves') + acquisitionDates, stackReferenceDate, secondaryDates, safe_dict = get_dates(inps) + coregSLCDir = os.path.join(inps.work_dir, 'coreg_secondarys') stackUpdate = False if os.path.exists(coregSLCDir): - coregSlaves = glob.glob(os.path.join(coregSLCDir, '[0-9]???[0-9]?[0-9]?')) - coregSLC = [os.path.basename(slv) for slv in coregSlaves] + coregSecondarys = glob.glob(os.path.join(coregSLCDir, '[0-9]???[0-9]?[0-9]?')) + coregSLC = [os.path.basename(slv) for slv in coregSecondarys] coregSLC.sort() if len(coregSLC)>0: print('%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%') @@ -628,7 +628,7 @@ def checkCurrentStatus(inps): else: pass - newAcquisitions = list(set(slaveDates).difference(set(coregSLC))) + newAcquisitions = list(set(secondaryDates).difference(set(coregSLC))) newAcquisitions.sort() if len(newAcquisitions)>0: print('%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%') @@ -654,32 +654,32 @@ def checkCurrentStatus(inps): if inps.coregistration in ['NESD','nesd']: numSLCReprocess = 2*int(inps.num_overlap_connections) - if numSLCReprocess > len(slaveDates): - numSLCReprocess = len(slaveDates) + if numSLCReprocess > len(secondaryDates): + numSLCReprocess = len(secondaryDates) latestCoregSLCs = coregSLC[-1*numSLCReprocess:] - latestCoregSLCs_original = list(set(slaveDates).intersection(set(latestCoregSLCs))) + latestCoregSLCs_original = list(set(secondaryDates).intersection(set(latestCoregSLCs))) if len(latestCoregSLCs_original) < numSLCReprocess: raise Exception('The original SAFE files for latest {0} coregistered SLCs is needed'.format(numSLCReprocess)) else: # add by Minyan Zhong, should be changed later as numSLCReprocess should be 0 numSLCReprocess = int(inps.num_connections) - if numSLCReprocess > len(slaveDates): - numSLCReprocess = len(slaveDates) + if numSLCReprocess > len(secondaryDates): + numSLCReprocess = len(secondaryDates) latestCoregSLCs = coregSLC[-1*numSLCReprocess:] - latestCoregSLCs_original = list(set(slaveDates).intersection(set(latestCoregSLCs))) + latestCoregSLCs_original = list(set(secondaryDates).intersection(set(latestCoregSLCs))) if len(latestCoregSLCs_original) < numSLCReprocess: raise Exception('The original SAFE files for latest {0} coregistered SLCs is needed'.format(numSLCReprocess)) print ('Last {0} coregistred SLCs to be updated: '.format(numSLCReprocess), latestCoregSLCs) - slaveDates = latestCoregSLCs + newAcquisitions - slaveDates.sort() + secondaryDates = latestCoregSLCs + newAcquisitions + secondaryDates.sort() - acquisitionDates = slaveDates.copy() - acquisitionDates.append(stackMasterDate) + acquisitionDates = secondaryDates.copy() + acquisitionDates.append(stackReferenceDate) acquisitionDates.sort() print('%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%') print('') @@ -689,15 +689,15 @@ def checkCurrentStatus(inps): print('') print('%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%') print('') - print('stack master:') + print('stack reference:') print('') - print(stackMasterDate) + print(stackReferenceDate) print('') print('%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%') print('') - print('slave acquisitions to be processed: ') + print('secondary acquisitions to be processed: ') print('') - print(slaveDates) + print(secondaryDates) print('') print('%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%') safe_dict_new={} @@ -708,7 +708,7 @@ def checkCurrentStatus(inps): else: print('No existing stack was identified. A new stack will be generated.') - return acquisitionDates, stackMasterDate, slaveDates, safe_dict, stackUpdate + return acquisitionDates, stackReferenceDate, secondaryDates, safe_dict, stackUpdate def main(iargs=None): @@ -734,7 +734,7 @@ def main(iargs=None): print('') sys.exit(1) - acquisitionDates, stackMasterDate, slaveDates, safe_dict, updateStack = checkCurrentStatus(inps) + acquisitionDates, stackReferenceDate, secondaryDates, safe_dict, updateStack = checkCurrentStatus(inps) @@ -742,7 +742,7 @@ def main(iargs=None): print('') print('Updating an existing stack ...') print('') - pairs = selectNeighborPairs(slaveDates, inps.num_connections,updateStack) # will be change later + pairs = selectNeighborPairs(secondaryDates, inps.num_connections,updateStack) # will be change later else: pairs = selectNeighborPairs(acquisitionDates, inps.num_connections,updateStack) @@ -753,19 +753,19 @@ def main(iargs=None): print ('*****************************************') if inps.workflow == 'interferogram': - interferogramStack(inps, acquisitionDates, stackMasterDate, slaveDates, safe_dict, pairs, updateStack) + interferogramStack(inps, acquisitionDates, stackReferenceDate, secondaryDates, safe_dict, pairs, updateStack) elif inps.workflow == 'offset': - offsetStack(inps, acquisitionDates, stackMasterDate, slaveDates, safe_dict, pairs, updateStack) + offsetStack(inps, acquisitionDates, stackReferenceDate, secondaryDates, safe_dict, pairs, updateStack) elif inps.workflow == 'correlation': - correlationStack(inps, acquisitionDates, stackMasterDate, slaveDates, safe_dict, pairs, updateStack) + correlationStack(inps, acquisitionDates, stackReferenceDate, secondaryDates, safe_dict, pairs, updateStack) elif inps.workflow == 'slc': - slcStack(inps, acquisitionDates, stackMasterDate, slaveDates, safe_dict, updateStack, mergeSLC=True) + slcStack(inps, acquisitionDates, stackReferenceDate, secondaryDates, safe_dict, updateStack, mergeSLC=True) if __name__ == "__main__": diff --git a/contrib/stack/topsStack/subsetMaster.py b/contrib/stack/topsStack/subsetReference.py similarity index 80% rename from contrib/stack/topsStack/subsetMaster.py rename to contrib/stack/topsStack/subsetReference.py index fc2b942..ed4b975 100755 --- a/contrib/stack/topsStack/subsetMaster.py +++ b/contrib/stack/topsStack/subsetReference.py @@ -21,13 +21,13 @@ def createParser(): Create command line parser. ''' - parser = argparse.ArgumentParser( description='extracts the overlap geometry between master bursts') - parser.add_argument('-m', '--master', type=str, dest='master', required=True, - help='Directory with the master image') + parser = argparse.ArgumentParser( description='extracts the overlap geometry between reference bursts') + parser.add_argument('-m', '--reference', type=str, dest='reference', required=True, + help='Directory with the reference image') parser.add_argument('-o', '--overlapDir', type=str, dest='overlapDir', default='overlap', help='overlap subdirectory name') - parser.add_argument('-g', '--geomMaster', type=str, dest='geom_master', required=True, - help='Directory with the master geometry') + parser.add_argument('-g', '--geomReference', type=str, dest='geom_reference', required=True, + help='Directory with the reference geometry') return parser @@ -109,18 +109,18 @@ def subset(inname, outname, sliceline, slicepix, def main(iargs=None): inps = cmdLineParse(iargs) - swathList = ut.getSwathList(inps.master) + swathList = ut.getSwathList(inps.reference) for swath in swathList: - ####Load master metadata - mFrame = ut.loadProduct( os.path.join(inps.master, 'IW{0}.xml'.format(swath))) + ####Load reference metadata + mFrame = ut.loadProduct( os.path.join(inps.reference, 'IW{0}.xml'.format(swath))) ####Output directory for overlap geometry images - geomdir = os.path.join(inps.geom_master, 'IW{0}'.format(swath)) - outdir = os.path.join(inps.geom_master, inps.overlapDir, 'IW{0}'.format(swath)) - submasterdir = os.path.join(inps.master, inps.overlapDir, 'IW{0}'.format(swath)) + geomdir = os.path.join(inps.geom_reference, 'IW{0}'.format(swath)) + outdir = os.path.join(inps.geom_reference, inps.overlapDir, 'IW{0}'.format(swath)) + subreferencedir = os.path.join(inps.reference, inps.overlapDir, 'IW{0}'.format(swath)) if os.path.isdir(outdir): @@ -129,10 +129,10 @@ def main(iargs=None): os.makedirs(outdir) - if os.path.isdir(submasterdir): - catalog.addItem('Submaster Overlap directory {0} already exists'.format(submasterdir)) + if os.path.isdir(subreferencedir): + catalog.addItem('Subreference Overlap directory {0} already exists'.format(subreferencedir)) else: - os.makedirs(submasterdir) + os.makedirs(subreferencedir) ###Azimuth time interval @@ -190,13 +190,13 @@ def main(iargs=None): masname2 = botBurst.image.filename - master_outname1 = os.path.join(submasterdir , 'burst_top_%02d_%02d.slc'%(ind+1,ind+2)) - master_outname2 = os.path.join(submasterdir , 'burst_bot_%02d_%02d.slc'%(ind+1,ind+2)) + reference_outname1 = os.path.join(subreferencedir , 'burst_top_%02d_%02d.slc'%(ind+1,ind+2)) + reference_outname2 = os.path.join(subreferencedir , 'burst_bot_%02d_%02d.slc'%(ind+1,ind+2)) - subset(masname1, master_outname1, topslicey, topslicex) - subset(masname2, master_outname2, botslicey, botslicex) + subset(masname1, reference_outname1, topslicey, topslicex) + subset(masname2, reference_outname2, botslicey, botslicex) ####TOP frame @@ -208,7 +208,7 @@ def main(iargs=None): burst.sensingStop = topBurst.sensingStart + datetime.timedelta(0,(topStart+overlapLen-1)*dt) # (topStart+overlapLen-1)*dt ###Replace file name in image - burst.image.filename = master_outname1 + burst.image.filename = reference_outname1 burst.image.setLength(overlapLen) burst.image.setWidth(width) @@ -226,7 +226,7 @@ def main(iargs=None): burst.sensingStop = botBurst.sensingStart + datetime.timedelta(seconds=(botBurst.firstValidLine+overlapLen-1)*dt) ###Replace file name in image - burst.image.filename = master_outname2 + burst.image.filename = reference_outname2 burst.image.setLength(overlapLen) burst.image.setWidth(width) @@ -240,8 +240,8 @@ def main(iargs=None): topFrame.numberOfBursts = len(topFrame.bursts) bottomFrame.numberOfBursts = len(bottomFrame.bursts) - #self._insar.saveProduct(topFrame, os.path.join(self._insar.masterSlcOverlapProduct, 'top_IW{0}.xml'.format(swath))) - #self._insar.saveProduct(bottomFrame, os.path.join(self._insar.masterSlcOverlapProduct, 'bottom_IW{0}.xml'.format(swath))) + #self._insar.saveProduct(topFrame, os.path.join(self._insar.referenceSlcOverlapProduct, 'top_IW{0}.xml'.format(swath))) + #self._insar.saveProduct(bottomFrame, os.path.join(self._insar.referenceSlcOverlapProduct, 'bottom_IW{0}.xml'.format(swath))) topFrame.reference = mFrame bottomFrame.reference = mFrame @@ -249,8 +249,8 @@ def main(iargs=None): topFrame.source = mFrame bottomFrame.source = mFrame - ut.saveProduct(topFrame, submasterdir + '_top.xml') - ut.saveProduct(bottomFrame, submasterdir + '_bottom.xml') + ut.saveProduct(topFrame, subreferencedir + '_top.xml') + ut.saveProduct(bottomFrame, subreferencedir + '_bottom.xml') diff --git a/contrib/stack/topsStack/topo.py b/contrib/stack/topsStack/topo.py index 0f88cf9..328b367 100755 --- a/contrib/stack/topsStack/topo.py +++ b/contrib/stack/topsStack/topo.py @@ -15,12 +15,12 @@ import multiprocessing as mp def createParser(): parser = argparse.ArgumentParser( description='Generates lat/lon/h and los for each pixel') - parser.add_argument('-m', '--master', type=str, dest='master', required=True, - help='Directory with the master image') + parser.add_argument('-m', '--reference', type=str, dest='reference', required=True, + help='Directory with the reference image') parser.add_argument('-d', '--dem', type=str, dest='dem', required=True, help='DEM to use for coregistration') - parser.add_argument('-g', '--geom_masterDir', type=str, dest='geom_masterDir', default='geom_master', - help='Directory for geometry files of the master') + parser.add_argument('-g', '--geom_referenceDir', type=str, dest='geom_referenceDir', default='geom_reference', + help='Directory for geometry files of the reference') return parser @@ -34,9 +34,9 @@ def cmdLineParse(iargs=None): def call_topo(input): - (dirname, demImage, master, ind) = input + (dirname, demImage, reference, ind) = input - burst = master.bursts[ind] + burst = reference.bursts[ind] latname = os.path.join(dirname, 'lat_%02d.rdr' % (ind + 1)) lonname = os.path.join(dirname, 'lon_%02d.rdr' % (ind + 1)) hgtname = os.path.join(dirname, 'hgt_%02d.rdr' % (ind + 1)) @@ -79,7 +79,7 @@ def main(iargs=None): inps = cmdLineParse(iargs) - swathList = ut.getSwathList(inps.master) + swathList = ut.getSwathList(inps.reference) demImage = isceobj.createDemImage() demImage.load(inps.dem + '.xml') @@ -88,14 +88,14 @@ def main(iargs=None): inputs = [] for swath in swathList: - master = ut.loadProduct(os.path.join(inps.master , 'IW{0}.xml'.format(swath))) + reference = ut.loadProduct(os.path.join(inps.reference , 'IW{0}.xml'.format(swath))) ###Check if geometry directory already exists. - dirname = os.path.join(inps.geom_masterDir, 'IW{0}'.format(swath)) + dirname = os.path.join(inps.geom_referenceDir, 'IW{0}'.format(swath)) os.makedirs(dirname, exist_ok=True) - for ind in range(master.numberOfBursts): - inputs.append((dirname, demImage, master, ind)) + for ind in range(reference.numberOfBursts): + inputs.append((dirname, demImage, reference, ind)) pool = mp.Pool(mp.cpu_count()) results = pool.map(call_topo, inputs) diff --git a/contrib/stack/topsStack/unwrap.py b/contrib/stack/topsStack/unwrap.py index e6c9182..abc4dce 100755 --- a/contrib/stack/topsStack/unwrap.py +++ b/contrib/stack/topsStack/unwrap.py @@ -66,8 +66,8 @@ def createParser(): parser.add_argument('-d', '--defomax', dest='defomax', type=float, default=2.0, help='Max cycles of deformation') - parser.add_argument('-s', '--master', dest='master', type=str, default='master', - help='Master directory') + parser.add_argument('-s', '--reference', dest='reference', type=str, default='reference', + help='Reference directory') parser.add_argument('-m', '--method', dest='method', type=str, default='icu', help='unwrapping method') @@ -328,9 +328,9 @@ def main(iargs=None): fncall = runUnwrap else: fncall = runUnwrapMcf - swathList = ut.getSwathList(inps.master) - #metadata = extractInfo(inps.master+'.xml', inps) - xmlFile = os.path.join(inps.master , 'IW{0}.xml'.format(swathList[0])) + swathList = ut.getSwathList(inps.reference) + #metadata = extractInfo(inps.reference+'.xml', inps) + xmlFile = os.path.join(inps.reference , 'IW{0}.xml'.format(swathList[0])) metadata = extractInfo(xmlFile, inps) fncall(inps.intfile, inps.unwfile, inps.cohfile, metadata, defomax=inps.defomax) diff --git a/contrib/timeseries/prepStackToStaMPS/bin/get_quickview_isce b/contrib/timeseries/prepStackToStaMPS/bin/get_quickview_isce index 8fda435..1ac20cc 100755 --- a/contrib/timeseries/prepStackToStaMPS/bin/get_quickview_isce +++ b/contrib/timeseries/prepStackToStaMPS/bin/get_quickview_isce @@ -129,14 +129,14 @@ if [ ! -d $wkdir ]; then fi # see if small baselines or not -mastertemp=`pwd | awk '{print substr($0,length-7)}'` +referencetemp=`pwd | awk '{print substr($0,length-7)}'` dir=pwd # what type of processing has been done flag_sb=0 flag_sm=0 if [ $flag_slc == 0 ]; then - if [ $mastertemp == ASELINES ]; then + if [ $referencetemp == ASELINES ]; then echo "SMALL BASELINES" flag_sb=1 else @@ -147,14 +147,14 @@ if [ $flag_sm == 1 ]; then for folder in `ls -d [0-9]*/` do # doing nothing just want one date - master_slave=`basename $folder` + reference_secondary=`basename $folder` done - lengthstr=`echo "$master_slave" | awk '{print length($0)}'` + lengthstr=`echo "$reference_secondary" | awk '{print length($0)}'` if [ $lengthstr == 17 ]; then flag_sb=1 echo "SMALL BASELINES" else - echo "SINGLE MASTER" + echo "SINGLE REFERENCE" flag_sm=1 fi fi @@ -165,22 +165,22 @@ do echo $folder if [ $flag_sb == 1 ]; then - master_slave=`echo "$folder" | awk '{print substr($0,1,17)}'` + reference_secondary=`echo "$folder" | awk '{print substr($0,1,17)}'` elif [ $flag_sm == 1 ]; then - slave=`echo "$folder" | awk '{print substr($0,1,8)}'` - master_slave=$mastertemp"_"$slave + secondary=`echo "$folder" | awk '{print substr($0,1,8)}'` + reference_secondary=$referencetemp"_"$secondary elif [ $flag_slc == 1 ]; then - master_slave=`basename $folder` + reference_secondary=`basename $folder` fi - echo $master_slave + echo $reference_secondary # if SLC the data of the folder will determine file name if [ $file_in_or == date.slc ] then - file_in=${master_slave}.${extension_out} - wkfile=${master_slave}_${r_looks}l.${extension_out} + file_in=${reference_secondary}.${extension_out} + wkfile=${reference_secondary}_${r_looks}l.${extension_out} fi @@ -205,9 +205,9 @@ do fi # convert from ppm files to png - convert -despeckle -resize 50% $folder/out.ppm $folder/$wkdir/ISCE_$master_slave.png + convert -despeckle -resize 50% $folder/out.ppm $folder/$wkdir/ISCE_$reference_secondary.png rm $folder/out.ppm - cp $folder/$wkdir/ISCE_$master_slave.png $wkdir/. + cp $folder/$wkdir/ISCE_$reference_secondary.png $wkdir/. done cd $wkdir diff --git a/contrib/timeseries/prepStackToStaMPS/bin/isce2stamps b/contrib/timeseries/prepStackToStaMPS/bin/isce2stamps index 7788607..65f152e 100755 --- a/contrib/timeseries/prepStackToStaMPS/bin/isce2stamps +++ b/contrib/timeseries/prepStackToStaMPS/bin/isce2stamps @@ -33,10 +33,10 @@ endif if ("$datasource" != "slc_stack_burst") then ## default filenames when starting from scratch with isce stack generation: # this is when one start processing with isce from scratch - set los_file = $curdir/master/geom/los.rdr$geom_suffix - set lon_file = $curdir/master/geom/lon.rdr$geom_suffix - set lat_file = $curdir/master/geom/lat.rdr$geom_suffix - set dem_file = $curdir/master/geom/z.rdr$geom_suffix + set los_file = $curdir/reference/geom/los.rdr$geom_suffix + set lon_file = $curdir/reference/geom/lon.rdr$geom_suffix + set lat_file = $curdir/reference/geom/lat.rdr$geom_suffix + set dem_file = $curdir/reference/geom/z.rdr$geom_suffix # setting the output filenames set heading_file_out = $curdir/heading.raw set incangle_file_out = $curdir/inc_angle.raw @@ -45,7 +45,7 @@ if ("$datasource" != "slc_stack_burst") then set dem_file_out = $curdir/dem.raw ## modification of the height filename for the SLC stack processing: if ("$datasource" == "slc_stack") then - set dem_file = $curdir/master/geom/hgt.rdr$geom_suffix + set dem_file = $curdir/reference/geom/hgt.rdr$geom_suffix endif # extracting the dem diff --git a/contrib/timeseries/prepStackToStaMPS/bin/isce_los2stamps_ENU b/contrib/timeseries/prepStackToStaMPS/bin/isce_los2stamps_ENU index 8653181..ed207a3 100755 --- a/contrib/timeseries/prepStackToStaMPS/bin/isce_los2stamps_ENU +++ b/contrib/timeseries/prepStackToStaMPS/bin/isce_los2stamps_ENU @@ -31,7 +31,7 @@ endif # setting the filenames -set los_file = $curdir/master/geom/los.rdr$geom_suffix +set los_file = $curdir/reference/geom/los.rdr$geom_suffix # extracting the enu conversion files if ( -f $curdir/e.raw & "$overwrite_flag" == "n" ) then diff --git a/contrib/timeseries/prepStackToStaMPS/bin/make_single_master_stack_isce b/contrib/timeseries/prepStackToStaMPS/bin/make_single_reference_stack_isce similarity index 63% rename from contrib/timeseries/prepStackToStaMPS/bin/make_single_master_stack_isce rename to contrib/timeseries/prepStackToStaMPS/bin/make_single_reference_stack_isce index 69258a9..c1f70f8 100755 --- a/contrib/timeseries/prepStackToStaMPS/bin/make_single_master_stack_isce +++ b/contrib/timeseries/prepStackToStaMPS/bin/make_single_reference_stack_isce @@ -35,8 +35,8 @@ endif set datasource = `grep source_data input_file | awk '{print $2}'` # check if there is an slc stack path specified set slc_stack_path = `grep slc_stack_path input_file | awk '{print $2}'` -# check the master date -set master_date = `grep slc_stack_master input_file | awk '{print $2}'` +# check the reference date +set reference_date = `grep slc_stack_reference input_file | awk '{print $2}'` # cehck the geom path is specified set stack_geom_path = `grep slc_stack_geom_path input_file | awk '{print $2}'` # get the slc suffix if specified @@ -69,13 +69,13 @@ if (("$datasource" != "slc_stack") && ("$datasource" != "slc_stack_burst")) then endif # catch error specific for the type of stack processing # the stack processing option -if (( "$slc_stack_path" == "" ) || ( "$master_date" == "" ) || ( "$lambda" == "" ) || ( "$looks" == "" ) || ( "$ar" == "" ) || ( "$stack_geom_path" == "" ) || ( "$slc_stack_baseline_path" == "" )) then +if (( "$slc_stack_path" == "" ) || ( "$reference_date" == "" ) || ( "$lambda" == "" ) || ( "$looks" == "" ) || ( "$ar" == "" ) || ( "$stack_geom_path" == "" ) || ( "$slc_stack_baseline_path" == "" )) then echo Need to define: echo \- slc_stack_path as the path to the slc\'s - echo \- slc_stack_master as the master of the \"NEW\" SM network as YYYYMMDD. This does not need to be the master used to generate the stack + echo \- slc_stack_reference as the reference of the \"NEW\" SM network as YYYYMMDD. This does not need to be the reference used to generate the stack echo \- slc_stack_geom_path as the path to the geometry for the stack echo \- slc_stack_baseline_path as the path to the baseline folder for the stack, with files containing single baseline value as AAAAAAAA_YYYYMMDD.txt or grid of baselines as YYYYMMDD (isce readable file with xml information), and with the baseline in m units. - echo \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ AAAAAAAA is the data of the master used to generate the intital stack + echo \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ AAAAAAAA is the data of the reference used to generate the intital stack echo \- lambda as the SAR wavelength in m units echo \- looks as the number of looks. Used only for multi-looked products \(e.g. quickviews\) echo \- aspect_ratio as the integer ratio n_lines/n_pixels for a square pixel. Used only for multi-looked products \(e.g. quickviews\) @@ -104,72 +104,72 @@ if ("$geom_suffix" != "") then echo Geometry files have a suffix as: $geom_suffix endif -# check if the master is likely given as YYYYMMDD format -set n_char = `echo $master_date | wc -c` # this includes the new line char too, so date should be 9 not 8 char -#( $master_date !~ ^[0-9]+$ ) => expression does not seem to catch letter... -if (( "$n_char" != "9" ) || ( "$master_date" !~ ^[0-9]+$ )) then - echo The slc_stack_master does not look to be in YYYYMMDD format: $master_date +# check if the reference is likely given as YYYYMMDD format +set n_char = `echo $reference_date | wc -c` # this includes the new line char too, so date should be 9 not 8 char +#( $reference_date !~ ^[0-9]+$ ) => expression does not seem to catch letter... +if (( "$n_char" != "9" ) || ( "$reference_date" !~ ^[0-9]+$ )) then + echo The slc_stack_reference does not look to be in YYYYMMDD format: $reference_date echo exit 1 endif # check if the SM dir already exists -set SMdir = INSAR_$master_date +set SMdir = INSAR_$reference_date if (! -e $SMdir) then mkdir $SMdir endif # will now rename the input file and copy a version into the INSAR_YYYYMMDD folder cp input_file $SMdir/. -mv input_file input_file_$master_date +mv input_file input_file_$reference_date # save the ar, looks, and lambda files for StaMPS echo $lambda > $SMdir/lambda.1.in set SM_DIR = $WORKDIR/$SMdir -# the master date -echo SM: Master Date = $master_date +# the reference date +echo SM: Reference Date = $reference_date echo ------------------------------- echo -# linking the master SLC -if (! -e $SM_DIR/master) then - mkdir $SM_DIR/master +# linking the reference SLC +if (! -e $SM_DIR/reference) then + mkdir $SM_DIR/reference endif -cd $SM_DIR/master +cd $SM_DIR/reference # the SLC structure for the BURST is different if ($datasource == "slc_stack") then - ln -s -f $slc_stack_path/$master_date/$master_date.slc${slc_suffix}* . - if ( -e $slc_stack_path/$master_date/${master_date}.slc.hdr) then - ln -s -f $slc_stack_path/$master_date/${master_date}.slc.hdr . - else if ( -e $slc_stack_path/$master_date/${master_date}.hdr) then - ln -s -f $slc_stack_path/$master_date/${master_date}.hdr . + ln -s -f $slc_stack_path/$reference_date/$reference_date.slc${slc_suffix}* . + if ( -e $slc_stack_path/$reference_date/${reference_date}.slc.hdr) then + ln -s -f $slc_stack_path/$reference_date/${reference_date}.slc.hdr . + else if ( -e $slc_stack_path/$reference_date/${reference_date}.hdr) then + ln -s -f $slc_stack_path/$reference_date/${reference_date}.hdr . endif - rm $master_date.slc${slc_suffix}.vrt - gdal_translate -of VRT $master_date.slc${slc_suffix} $master_date.slc${slc_suffix}.vrt - rm $master_date.slc${slc_suffix}.xml - gdal2isce_xml.py -i $master_date.slc${slc_suffix}.vrt - ln -s -f $slc_stack_path/$master_date/$master_date.slc${slc_suffix} master.slc - set master_slc = $slc_stack_path/$master_date/$master_date.slc$slc_suffix - set master_slc_local = master/$master_date.slc$slc_suffix + rm $reference_date.slc${slc_suffix}.vrt + gdal_translate -of VRT $reference_date.slc${slc_suffix} $reference_date.slc${slc_suffix}.vrt + rm $reference_date.slc${slc_suffix}.xml + gdal2isce_xml.py -i $reference_date.slc${slc_suffix}.vrt + ln -s -f $slc_stack_path/$reference_date/$reference_date.slc${slc_suffix} reference.slc + set reference_slc = $slc_stack_path/$reference_date/$reference_date.slc$slc_suffix + set reference_slc_local = reference/$reference_date.slc$slc_suffix # check if the xml file exist - if (! -e $master_date.slc$slc_suffix.xml) then + if (! -e $reference_date.slc$slc_suffix.xml) then echo "xml file for the SLC does not exist, you need to have these" exit 1 endif cd $SM_DIR # getting the meta-data used in stamps - get_LengthWidth.py master/$master_date.slc$slc_suffix + get_LengthWidth.py reference/$reference_date.slc$slc_suffix - # linking the master geometry information - if (! -e $SM_DIR/master/geom) then - mkdir $SM_DIR/master/geom + # linking the reference geometry information + if (! -e $SM_DIR/reference/geom) then + mkdir $SM_DIR/reference/geom endif - cd $SM_DIR/master/geom + cd $SM_DIR/reference/geom ln -s -f $stack_geom_path/los.rdr${geom_suffix}* . ln -s -f $stack_geom_path/lat.rdr${geom_suffix}* . ln -s -f $stack_geom_path/lon.rdr${geom_suffix}* . @@ -203,64 +203,64 @@ endif # generating a file with the baseline information cd $SM_DIR -step_baseline_stack.py -i $slc_stack_baseline_path -m $master_date +step_baseline_stack.py -i $slc_stack_baseline_path -m $reference_date # Setting the new SM processing directory cd $slc_stack_path if (-e $SM_DIR/slcs.list) then rm $SM_DIR/slcs.list > /dev/null endif if (! -e $SM_DIR/slcs.list) then - \ls -d [0-9]*[0-9] | sed "/$master_date/ d" | gawk 'BEGIN {FS="/"} {print $(NF)}' > $SM_DIR/slcs.list - echo "Processing all SLCs as slaves except $master_date" + \ls -d [0-9]*[0-9] | sed "/$reference_date/ d" | gawk 'BEGIN {FS="/"} {print $(NF)}' > $SM_DIR/slcs.list + echo "Processing all SLCs as secondarys except $reference_date" endif cd $SM_DIR # loop over the set of dates to make SM combinations -echo Looping over the slave acquisitions now: +echo Looping over the secondary acquisitions now: foreach dir(`cat slcs.list`) - set slave_date = `echo $dir | gawk 'BEGIN {FS="/"} {print $NF}'` - if ($slave_date == "") then - set slave_date = `echo $dir | gawk 'BEGIN {FS="/"} {print $(NF-1)}'` + set secondary_date = `echo $dir | gawk 'BEGIN {FS="/"} {print $NF}'` + if ($secondary_date == "") then + set secondary_date = `echo $dir | gawk 'BEGIN {FS="/"} {print $(NF-1)}'` endif - echo $slave_date + echo $secondary_date # check if the SLC directoy needs to be made - if (! -e $slave_date) then - mkdir $slave_date + if (! -e $secondary_date) then + mkdir $secondary_date endif - # the slave SLC - set slave_slc = ${slc_stack_path}/$slave_date/$slave_date.slc$slc_suffix - set slave_slc_local = $slave_date/coreg_fine/$slave_date.slc$slc_suffix - cd $slave_date + # the secondary SLC + set secondary_slc = ${slc_stack_path}/$secondary_date/$secondary_date.slc$slc_suffix + set secondary_slc_local = $secondary_date/coreg_fine/$secondary_date.slc$slc_suffix + cd $secondary_date # generate the coreg_fine symbolic link which is used when loading into stamps if (! -e coreg_fine) then mkdir coreg_fine/ endif cd coreg_fine - ln -s -f ${slave_slc}* . - if ( -e ${slc_stack_path}/$slave_date/$slave_date.slc.hdr ) then - ln -s -f ${slc_stack_path}/$slave_date/$slave_date.slc.hdr . - else if ( -e ${slc_stack_path}/$slave_date/$slave_date.hdr) then - ln -s -f ${slc_stack_path}/$slave_date/$slave_date.hdr . + ln -s -f ${secondary_slc}* . + if ( -e ${slc_stack_path}/$secondary_date/$secondary_date.slc.hdr ) then + ln -s -f ${slc_stack_path}/$secondary_date/$secondary_date.slc.hdr . + else if ( -e ${slc_stack_path}/$secondary_date/$secondary_date.hdr) then + ln -s -f ${slc_stack_path}/$secondary_date/$secondary_date.hdr . endif - rm $slave_date.slc${slc_suffix}.vrt - gdal_translate -of VRT $slave_date.slc$slc_suffix $slave_date.slc${slc_suffix}.vrt - rm $slave_date.slc${slc_suffix}.xml - gdal2isce_xml.py -i $slave_date.slc${slc_suffix}.vrt - ln -s -f $slave_slc coreg.slc + rm $secondary_date.slc${slc_suffix}.vrt + gdal_translate -of VRT $secondary_date.slc$slc_suffix $secondary_date.slc${slc_suffix}.vrt + rm $secondary_date.slc${slc_suffix}.xml + gdal2isce_xml.py -i $secondary_date.slc${slc_suffix}.vrt + ln -s -f $secondary_slc coreg.slc # check if the xml file exist, if not need to make it - if (! -e $slave_date.slc$slc_suffix.xml) then + if (! -e $secondary_date.slc$slc_suffix.xml) then echo "xml file for the SLC does not exist, you need to have these" - echo try: gdal2isce_xml.py -i $slave_date.slc$slc_suffix + echo try: gdal2isce_xml.py -i $secondary_date.slc$slc_suffix exit 1 endif cd $SM_DIR # generate the intererograms if requested - set IFG_DIR = $slave_date + set IFG_DIR = $secondary_date if ( "$generate_ifgs" == "y" ) then set save_ifg = $IFG_DIR/isce_minrefdem.int # store the information on how isce will be called @@ -268,9 +268,9 @@ foreach dir(`cat slcs.list`) # nothing to be done, file exist and user does not want to overwrite it echo $save_ifg exist, will not overwrite on user request else - echo "imageMath.py -e='a*conj(b)' --a=$master_slc_local --b=$slave_slc_local -o $save_ifg -t CFLOAT -s BIP" >> processing_SM.log - echo "imageMath.py -e='a*conj(b)' --a=$master_slc_local --b=$slave_slc_local -o $save_ifg -t CFLOAT -s BIP" - imageMath.py -e='a*conj(b)' --a=$master_slc_local --b=$slave_slc_local -o $save_ifg -t CFLOAT -s BIP + echo "imageMath.py -e='a*conj(b)' --a=$reference_slc_local --b=$secondary_slc_local -o $save_ifg -t CFLOAT -s BIP" >> processing_SM.log + echo "imageMath.py -e='a*conj(b)' --a=$reference_slc_local --b=$secondary_slc_local -o $save_ifg -t CFLOAT -s BIP" + imageMath.py -e='a*conj(b)' --a=$reference_slc_local --b=$secondary_slc_local -o $save_ifg -t CFLOAT -s BIP fixImageXml.py -f -i $save_ifg endif endif @@ -282,19 +282,19 @@ foreach dir(`cat slcs.list`) if ( -f $save_ampl & $overwrite == 0 ) then echo $save_ampl exist, will not overwrite on user request else - echo "imageMath.py -e='abs(a);abs(b)' --a=$master_slc_local --b=$slave_slc_local -o $save_ampl -t FLOAT -s BIP" >> processing_SM.log - echo "imageMath.py -e='abs(a);abs(b)' --a=$master_slc_local --b=$slave_slc_local -o $save_ampl -t FLOAT -s BIP" - imageMath.py -e='abs(a);abs(b)' --a=$master_slc_local --b=$slave_slc_local -o $save_ampl -t FLOAT -s BIP + echo "imageMath.py -e='abs(a);abs(b)' --a=$reference_slc_local --b=$secondary_slc_local -o $save_ampl -t FLOAT -s BIP" >> processing_SM.log + echo "imageMath.py -e='abs(a);abs(b)' --a=$reference_slc_local --b=$secondary_slc_local -o $save_ampl -t FLOAT -s BIP" + imageMath.py -e='abs(a);abs(b)' --a=$reference_slc_local --b=$secondary_slc_local -o $save_ampl -t FLOAT -s BIP fixImageXml.py -f -i $save_ampl endif endif - # include a symbolic link for the slave and master slc. + # include a symbolic link for the secondary and reference slc. # This will be used latter on to get the amplitude information from in StaMPS cd $IFG_DIR - ln -s -f $slave_slc slave.slc - ln -s -f $master_slc master.slc + ln -s -f $secondary_slc secondary.slc + ln -s -f $reference_slc reference.slc cd $SM_DIR diff --git a/contrib/timeseries/prepStackToStaMPS/bin/make_small_baselines_isce b/contrib/timeseries/prepStackToStaMPS/bin/make_small_baselines_isce index f73c04a..9671037 100755 --- a/contrib/timeseries/prepStackToStaMPS/bin/make_small_baselines_isce +++ b/contrib/timeseries/prepStackToStaMPS/bin/make_small_baselines_isce @@ -32,7 +32,7 @@ endif if (! -e $list ) then echo $list file does not exist, you need to generate this first. - echo Do this manually where you provide an interferogram on each line as: master_YYYYMMDD slave_YYYYMMDD + echo Do this manually where you provide an interferogram on each line as: reference_YYYYMMDD secondary_YYYYMMDD echo Or use some scripts e.g. run: echo \> mt_extract_info_isce \(in case you did not run PS before\) echo \> matlab @@ -56,7 +56,7 @@ endif # quick check to see if the SM set-up was run before -if (! -e master) then +if (! -e reference) then echo Looks like you did not run the SM processing or SM set-up before. echo exit 1 @@ -69,13 +69,13 @@ if ($datasource == "slc_stack") then echo Looks like an SLC stack is specified # check if there is an slc stack path specified set slc_stack_path = `grep slc_stack_path input_file | awk '{print $2}'` - # check the master date - set masterdate = `grep slc_stack_master input_file | awk '{print $2}'` + # check the reference date + set referencedate = `grep slc_stack_reference input_file | awk '{print $2}'` # give message in case not specified - if (( "$slc_stack_path" == "" ) || ( "$masterdate" == "" )) then + if (( "$slc_stack_path" == "" ) || ( "$referencedate" == "" )) then echo Need to define: echo \- slc_stack_path as the path to the slc\'s - echo \- slc_stack_master as the master of the \"NEW\" SM network as YYYYMMDD. This does not need to be the master used to generate the stack + echo \- slc_stack_reference as the reference of the \"NEW\" SM network as YYYYMMDD. This does not need to be the reference used to generate the stack echo exit 1 endif @@ -87,15 +87,15 @@ if ($datasource == "slc_stack") then endif else - # Getting the master date information - basename `ls master/[0-9]*[0-9].slc$slc_suffix` | gawk '{print substr($0,1,8)}' > tmp.master - set masterdate = `cat tmp.master` - rm tmp.master + # Getting the reference date information + basename `ls reference/[0-9]*[0-9].slc$slc_suffix` | gawk '{print substr($0,1,8)}' > tmp.reference + set referencedate = `cat tmp.reference` + rm tmp.reference endif -# output the master date +# output the reference date echo -echo SM: Master Date = $masterdate +echo SM: Reference Date = $referencedate echo # loop over the set of SB interferogram to be made @@ -105,37 +105,37 @@ while ($interferogram_number <= `cat $WORKDIR/$list | wc -l`) set interferogram = `cat $WORKDIR/$list | head -$interferogram_number | tail -1` echo $interferogram - # splitting into master and slave - set master = `echo $interferogram | awk '{split($0,a," "); print a[1]'}` - set slave = `echo $interferogram | awk '{split($0,a," "); print a[2]'}` + # splitting into reference and secondary + set reference = `echo $interferogram | awk '{split($0,a," "); print a[1]'}` + set secondary = `echo $interferogram | awk '{split($0,a," "); print a[2]'}` # check if the interferogram directoy needs to be made - set IFG_DIR = $SB_DIR/$master"_"$slave + set IFG_DIR = $SB_DIR/$reference"_"$secondary if (! -e $IFG_DIR) then mkdir $IFG_DIR endif - # retrieving the master and slave SLC name + # retrieving the reference and secondary SLC name if ($datasource == "slc_stack") then - # for and pre-processed SLC stack, the structure is YYYYMMDD/YYYYMMDD.slc, with the SM master assumed to be in master/yyyymmdd.slc - set master_slc = ${slc_stack_path}$master/$master.slc$slc_suffix - set slave_slc = ${slc_stack_path}$slave/$slave.slc$slc_suffix + # for and pre-processed SLC stack, the structure is YYYYMMDD/YYYYMMDD.slc, with the SM reference assumed to be in reference/yyyymmdd.slc + set reference_slc = ${slc_stack_path}$reference/$reference.slc$slc_suffix + set secondary_slc = ${slc_stack_path}$secondary/$secondary.slc$slc_suffix else if ($datasource == "slc_stack_burst") then echo TO BE IMPLEMENTED echo exit 1 else # the format when processing the stack using isce2stamps - # check if the master of the SB interferogram master is the SM master as these have a different directory - if ($master == $masterdate) then - set master_slc = master/$masterdate.slc$slc_suffix + # check if the reference of the SB interferogram reference is the SM reference as these have a different directory + if ($reference == $referencedate) then + set reference_slc = reference/$referencedate.slc$slc_suffix else - set master_slc = $master/coreg_fine/coreg.slc + set reference_slc = $reference/coreg_fine/coreg.slc endif - if ($slave == $masterdate) then - set slave_slc = master/$masterdate.slc$slc_suffix + if ($secondary == $referencedate) then + set secondary_slc = reference/$referencedate.slc$slc_suffix else - set slave_slc = $slave/coreg_fine/coreg.slc + set secondary_slc = $secondary/coreg_fine/coreg.slc endif @@ -143,34 +143,34 @@ while ($interferogram_number <= `cat $WORKDIR/$list | wc -l`) set save_ifg = $IFG_DIR/isce_minrefdem.int # store the information on how isce will be called - echo "imageMath.py -e='a*conj(b)' --a=$master_slc --b=$slave_slc -o $save_ifg -t CFLOAT -s BIP" >> processing_SB.log - echo "imageMath.py -e='a*conj(b)' --a=$master_slc --b=$slave_slc -o $save_ifg -t CFLOAT -s BIP" - imageMath.py -e='a*conj(b)' --a=$master_slc --b=$slave_slc -o $save_ifg -t CFLOAT -s BIP + echo "imageMath.py -e='a*conj(b)' --a=$reference_slc --b=$secondary_slc -o $save_ifg -t CFLOAT -s BIP" >> processing_SB.log + echo "imageMath.py -e='a*conj(b)' --a=$reference_slc --b=$secondary_slc -o $save_ifg -t CFLOAT -s BIP" + imageMath.py -e='a*conj(b)' --a=$reference_slc --b=$secondary_slc -o $save_ifg -t CFLOAT -s BIP # making the amplitude file if ( "$amplitude_flag" == "y") then set save_ampl = $IFG_DIR/isce_minrefdem.amp # making the amplitude for the ifgs, for ISCE the amp is a BIP file typically - echo "imageMath.py -e='abs(a);abs(b)' --a=$master_slc --b=$slave_slc -o $save_ampl -t FLOAT -s BIP" >> processing_SB.log - echo "imageMath.py -e='abs(a);abs(b)' --a=$master_slc --b=$slave_slc -o $save_ampl -t FLOAT -s BIP" - imageMath.py -e='abs(a);abs(b)' --a=$master_slc --b=$slave_slc -o $save_ampl -t FLOAT -s BIP + echo "imageMath.py -e='abs(a);abs(b)' --a=$reference_slc --b=$secondary_slc -o $save_ampl -t FLOAT -s BIP" >> processing_SB.log + echo "imageMath.py -e='abs(a);abs(b)' --a=$reference_slc --b=$secondary_slc -o $save_ampl -t FLOAT -s BIP" + imageMath.py -e='abs(a);abs(b)' --a=$reference_slc --b=$secondary_slc -o $save_ampl -t FLOAT -s BIP endif - # include a symbolic link for the slave and master slc. + # include a symbolic link for the secondary and reference slc. # This will be used latter on to get the amplitude information from cd $IFG_DIR if ($datasource == "slc_stack") then - ln -s -f $slave_slc slave.slc - ln -s -f $master_slc master.slc + ln -s -f $secondary_slc secondary.slc + ln -s -f $reference_slc reference.slc else if ($datasource == "slc_stack_burst") then echo TO BE IMPLEMENTED echo exit 1 else - ln -s -f ../../$slave_slc slave.slc - ln -s -f ../../$master_slc master.slc + ln -s -f ../../$secondary_slc secondary.slc + ln -s -f ../../$reference_slc reference.slc endif cd $WORKDIR diff --git a/contrib/timeseries/prepStackToStaMPS/bin/mt_extract_info_isce b/contrib/timeseries/prepStackToStaMPS/bin/mt_extract_info_isce index 5c77362..a866ed2 100755 --- a/contrib/timeseries/prepStackToStaMPS/bin/mt_extract_info_isce +++ b/contrib/timeseries/prepStackToStaMPS/bin/mt_extract_info_isce @@ -21,7 +21,7 @@ if ($dirname == "SMALL_BASELINES") then # copying the extra files from SM processing cp $INSARDIR/lambda.1.in $INSARDIR/SMALL_BASELINES/. cp $INSARDIR/heading.1.in $INSARDIR/SMALL_BASELINES/. - cp $INSARDIR/master_day.1.in $INSARDIR/SMALL_BASELINES/. + cp $INSARDIR/reference_day.1.in $INSARDIR/SMALL_BASELINES/. cp $INSARDIR/day.1.in $INSARDIR/SMALL_BASELINES/. cp $INSARDIR/bperp.1.in $INSARDIR/SMALL_BASELINES/. cp $INSARDIR/slc_osfactor.1.in $INSARDIR/SMALL_BASELINES/. @@ -39,10 +39,10 @@ echo $SLC_OSF > $INSARDIR/slc_osfactor.1.in # put oversampling f echo isce > processor.txt # Create date, and bperp information -# note that day.1.in and bperp.1.in only has the slave information +# note that day.1.in and bperp.1.in only has the secondary information grep ' ' $INSARDIR/[0-9]*/baseline | gawk '{print $2}' > bperp.1.in grep ' ' $INSARDIR/[0-9]*/baseline | gawk 'BEGIN {FS = ":"}{print substr($(NF),1,8) }' > day.1.in -grep ' ' $INSARDIR/master/baseline | gawk '{print $1}' > master_day.1.in +grep ' ' $INSARDIR/reference/baseline | gawk '{print $1}' > reference_day.1.in if ($dirname == "SMALL_BASELINES") then ls $WORKDIR/*/isce_minrefdem.int | gawk 'BEGIN {FS = "/"}{print substr($(NF-1),1,8) " " substr($(NF-1),10,8)}' > ifgday.1.in diff --git a/contrib/timeseries/prepStackToStaMPS/bin/mt_prep_isce b/contrib/timeseries/prepStackToStaMPS/bin/mt_prep_isce index 37e4245..8d9ad7f 100755 --- a/contrib/timeseries/prepStackToStaMPS/bin/mt_prep_isce +++ b/contrib/timeseries/prepStackToStaMPS/bin/mt_prep_isce @@ -96,8 +96,8 @@ if ($dirname == "SMALL_BASELINES") then ls $WORKDIR/[0-9]*/*.slc > $WORKDIR/calamp.in set selfile = $WORKDIR/selsbc.in else - ls $INSARDIR/master/master.slc > $WORKDIR/calamp.in - ls $INSARDIR/*/slave.slc >> $WORKDIR/calamp.in + ls $INSARDIR/reference/reference.slc > $WORKDIR/calamp.in + ls $INSARDIR/*/secondary.slc >> $WORKDIR/calamp.in set selfile = $WORKDIR/selpsc.in endif calamp calamp.in $width $WORKDIR/calamp.out diff --git a/contrib/timeseries/prepStackToStaMPS/bin/run_SLCcropStack.csh b/contrib/timeseries/prepStackToStaMPS/bin/run_SLCcropStack.csh index 22ca38e..725f42d 100755 --- a/contrib/timeseries/prepStackToStaMPS/bin/run_SLCcropStack.csh +++ b/contrib/timeseries/prepStackToStaMPS/bin/run_SLCcropStack.csh @@ -20,7 +20,7 @@ if (! -e $proc_dir) then endif # getting the crop extend -cd $data_path/geom_master +cd $data_path/geom_reference crop_rdr.py -b '27.86 28.2 85.1 85.4' > $proc_dir/crop_log.txt @@ -28,7 +28,7 @@ crop_rdr.py -b '27.86 28.2 85.1 85.4' > $proc_dir/crop_log.txt # getting the files to crop cd $proc_dir -ls -1 $data_path/geom_master/*.full > $proc_dir/geomFiles2crop.txt +ls -1 $data_path/geom_reference/*.full > $proc_dir/geomFiles2crop.txt ls -1 $data_path/SLC/2*/2*.slc.full > $proc_dir/slcFiles2crop.txt ls -1 $data_path/baselines/2*/2*.full.vrt > $proc_dir/baselineFiles2crop.txt @@ -41,10 +41,10 @@ echo $command_baseline # generating the new geometry files # create geom directory cd $proc_dir -if (! -d geom_master ) then - mkdir geom_master +if (! -d geom_reference ) then + mkdir geom_reference endif -cd geom_master +cd geom_reference foreach file(`cat $proc_dir/geomFiles2crop.txt`) set filename = `basename $file` diff --git a/contrib/timeseries/prepStackToStaMPS/bin/step_baseline_stack.py b/contrib/timeseries/prepStackToStaMPS/bin/step_baseline_stack.py index ef672aa..a9c6e16 100755 --- a/contrib/timeseries/prepStackToStaMPS/bin/step_baseline_stack.py +++ b/contrib/timeseries/prepStackToStaMPS/bin/step_baseline_stack.py @@ -1,6 +1,6 @@ #!/usr/bin/env python3 -# Script that computes the baselines for a given master based on a stack of baselines +# Script that computes the baselines for a given reference based on a stack of baselines # #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -44,9 +44,9 @@ def cmdLineParse(): ''' Command line parser. ''' - parser = argparse.ArgumentParser(description='baseline re-estimation for a master date') + parser = argparse.ArgumentParser(description='baseline re-estimation for a reference date') parser.add_argument('-i','--input', dest='baseline_dir', type=str,required=True, help='Path to the baseline directory') - parser.add_argument('-m', '--master_date' ,dest='new_master', type=str, required=True , help='New master date for stack') + parser.add_argument('-m', '--reference_date' ,dest='new_reference', type=str, required=True , help='New reference date for stack') return parser.parse_args() @@ -60,7 +60,7 @@ def baselinegrid(inps): # parsing the command line inputs baseline_dir = inps.baseline_dir - new_master = int(inps.new_master) + new_reference = int(inps.new_reference) # check if the baseline grids are all in the same folder or if they are date YYYYMMDD_YYYYMMDD folders. baseline_files = glob(os.path.join(baseline_dir,"2*","2*[0-9].vrt")) @@ -71,29 +71,29 @@ def baselinegrid(inps): # need to raize error as no baseline files where found raise ValueError('No Baseline files were found') - # finding the master baseline grid file - master_file = False + # finding the reference baseline grid file + reference_file = False for baseline_file in baseline_files: date = os.path.basename(baseline_file) date = date.split('.vrt') date = int(date[0]) - if date == new_master: - master_file = os.path.join(os.path.dirname(baseline_file),str(date)) - if not master_file: - raise Exception('Could not find the master baseline grid') + if date == new_reference: + reference_file = os.path.join(os.path.dirname(baseline_file),str(date)) + if not reference_file: + raise Exception('Could not find the reference baseline grid') - # generate new baseline grid for each slave and also store the average for overview + # generate new baseline grid for each secondary and also store the average for overview baselines_new = [float(0)] - dates_new = [new_master] + dates_new = [new_reference] for baseline_file in baseline_files: date = os.path.basename(baseline_file) date = date.split('.vrt') date = int(date[0]) - # check if this is a slave date - if not date == new_master: - slave_file = os.path.join(os.path.dirname(baseline_file),str(date)) + # check if this is a secondary date + if not date == new_reference: + secondary_file = os.path.join(os.path.dirname(baseline_file),str(date)) local_baseline_file = "baselineGRID_" + str(date) - cmd = "imageMath.py -e='a-b' --a=" + slave_file + " --b=" + master_file + " -o " + local_baseline_file + " -t FLOAT -s BIP" + cmd = "imageMath.py -e='a-b' --a=" + secondary_file + " --b=" + reference_file + " -o " + local_baseline_file + " -t FLOAT -s BIP" os.system(cmd) # generating a vrt file as well cmd = "isce2gis.py vrt -i " + local_baseline_file @@ -116,8 +116,8 @@ def baselinegrid(inps): # generate a baseline file for each acquisition for counter in range(temp.shape[0]): - if temp[counter,0] == new_master: - dir_name = 'master' + if temp[counter,0] == new_reference: + dir_name = 'reference' else: dir_name = str(int(temp[counter,0])) # generate the directory if it does not exist yet @@ -134,7 +134,7 @@ def baselinefile(inps): """ # parsing the command line inputs baseline_dir = inps.baseline_dir - new_master = int(inps.new_master) + new_reference = int(inps.new_reference) # check if the baseline files are all in the same folder or if they are date YYYYMMDD_YYYYMMDD folders. baseline_files = glob(os.path.join(baseline_dir,"2*","2*.txt")) @@ -147,14 +147,14 @@ def baselinefile(inps): raise ValueError('No Baseline files were found') # generate an array of dates - master = [] - slave = [] + reference = [] + secondary = [] baseline = [] for baseline_file in baseline_files: dates = os.path.basename(baseline_file) dates = dates.split('.')[0] - master.append(int(dates.split('_')[0])) - slave.append(int(dates.split('_')[1])) + reference.append(int(dates.split('_')[0])) + secondary.append(int(dates.split('_')[1])) # read file and either catch a single value or read for specific -perp (average):- string file = open(baseline_file,'r') @@ -179,55 +179,55 @@ def baselinefile(inps): # converting to an numpy array baseline = np.reshape(np.array(baseline),(-1,1)) - master = np.reshape(np.array(master),(-1,1)) - slave = np.reshape(np.array(slave),(-1,1)) + reference = np.reshape(np.array(reference),(-1,1)) + secondary = np.reshape(np.array(secondary),(-1,1)) # count the number of nan in the baseline ix_count = np.count_nonzero(np.isnan(baseline)) if ix_count>0: for ix in range(baseline.shape[0]): if np.isnan(baseline[ix])==1: - print(str(master[ix,0]) + "_" + str(slave[ix,0])) + print(str(reference[ix,0]) + "_" + str(secondary[ix,0])) # now raize error raise ValueError('NaN found for baseline...') # generating an array of acquisitions - dates= np.reshape(np.unique(np.concatenate((master,slave), axis=0)),(-1,1)) + dates= np.reshape(np.unique(np.concatenate((reference,secondary), axis=0)),(-1,1)) # getting number of baseline combinations and the number of acquisitions n_acquistions = dates.shape[0] n_combinations = baseline.shape[0] - #### mapping the baselines to a new master + #### mapping the baselines to a new reference # generate the design matrix that maps the baselines to dates A = np.zeros((n_combinations,n_acquistions)) for counter in range(n_combinations): - pos_master, temp = np.where(dates == master[counter]) - pos_slave, temp = np.where(dates == slave[counter]) - A[counter,pos_master]=-1 - A[counter,pos_slave]=1 - del pos_slave - del pos_master + pos_reference, temp = np.where(dates == reference[counter]) + pos_secondary, temp = np.where(dates == secondary[counter]) + A[counter,pos_reference]=-1 + A[counter,pos_secondary]=1 + del pos_secondary + del pos_reference - # location of the requested master - pos_master, temp = np.where(dates == new_master) + # location of the requested reference + pos_reference, temp = np.where(dates == new_reference) - # remove the new master from the design matrix and acquisitions - A[:,pos_master[0]]=0 + # remove the new reference from the design matrix and acquisitions + A[:,pos_reference[0]]=0 # compute the new baselines baselines_new = np.linalg.lstsq(A, baseline)[0] -# # add the new master back in and write out the file +# # add the new reference back in and write out the file # baselines_new = np.concatenate((baselines_new, np.zeros((1,1)))) - # dates = np.concatenate((dates, [[new_master]])) + # dates = np.concatenate((dates, [[new_reference]])) # concatenate together to write single matrix temp= np.concatenate((dates, baselines_new), axis=1) np.savetxt('baseline_overview', temp, fmt='%.f %.2f ', delimiter='\t', newline='\n') # generate a baseline file for each acquisition for counter in range(n_acquistions): - if temp[counter,0] == new_master: - dir_name = 'master' + if temp[counter,0] == new_reference: + dir_name = 'reference' else: dir_name = str(int(temp[counter,0])) # generate the directory if it does not exist yet diff --git a/contrib/timeseries/prepStackToStaMPS/bin/step_filt_coh_isce b/contrib/timeseries/prepStackToStaMPS/bin/step_filt_coh_isce index 397f73c..a6d461e 100755 --- a/contrib/timeseries/prepStackToStaMPS/bin/step_filt_coh_isce +++ b/contrib/timeseries/prepStackToStaMPS/bin/step_filt_coh_isce @@ -81,10 +81,10 @@ if ( "$multi_look_flag" == "y") then set file_coh_out = {$filename_out}_filt_{$r_looks}l.coh endif -# retrieve the current slave data folder being processed +# retrieve the current secondary data folder being processed set date = `basename $CURDIR` -# I included to be in the slave data folder, such one can reprocess easily without the need to manually specify the inputs +# I included to be in the secondary data folder, such one can reprocess easily without the need to manually specify the inputs # move dir above cd .. diff --git a/contrib/timeseries/prepStackToStaMPS/bin/step_multilook_isce b/contrib/timeseries/prepStackToStaMPS/bin/step_multilook_isce index 02fda4b..1bee101 100755 --- a/contrib/timeseries/prepStackToStaMPS/bin/step_multilook_isce +++ b/contrib/timeseries/prepStackToStaMPS/bin/step_multilook_isce @@ -1,6 +1,6 @@ #!/bin/tcsh -f -# Script which make an interferometric combination between slave and master +# Script which make an interferometric combination between secondary and reference #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # copyright: 2017 to the present, california institute of technology. @@ -67,10 +67,10 @@ else set CURDIR = `pwd` echo $CURDIR - # retrieve the current slave data folder being processed + # retrieve the current secondary data folder being processed set date = `basename $CURDIR` - # I included to be in the slave data folder, such one can reprocess easily without the need to manually specify the inputs + # I included to be in the secondary data folder, such one can reprocess easily without the need to manually specify the inputs # move dir above cd .. diff --git a/docs/dev/Example0_autoxml.py b/docs/dev/Example0_autoxml.py index e3e33f5..19d6f18 100644 --- a/docs/dev/Example0_autoxml.py +++ b/docs/dev/Example0_autoxml.py @@ -13,19 +13,19 @@ if __name__ == '__main__': insar = xml.Component('insar') ####Python dictionaries become components - ####Master info - master = {} - master['hdf5'] = 'master.h5' - master['output'] = 'master.raw' + ####Reference info + reference = {} + reference['hdf5'] = 'reference.h5' + reference['output'] = 'reference.raw' - ####Slave info - slave = {} - slave['hdf5'] = 'slave.h5' - slave['output'] = 'slave.raw' + ####Secondary info + secondary = {} + secondary['hdf5'] = 'secondary.h5' + secondary['output'] = 'secondary.raw' #####Set sub-component - insar['master'] = master - insar['slave'] = slave + insar['reference'] = reference + insar['secondary'] = secondary ####Set properties insar['doppler method'] = 'useDEFAULT' @@ -46,20 +46,20 @@ The output should be of the form. - + - master.h5 + reference.h5 - master.raw + reference.raw - + - slave.h5 + secondary.h5 - slave.raw + secondary.raw diff --git a/docs/dev/Example1_ampcor.py b/docs/dev/Example1_ampcor.py index 12958d4..2b48446 100644 --- a/docs/dev/Example1_ampcor.py +++ b/docs/dev/Example1_ampcor.py @@ -10,14 +10,14 @@ import numpy as np def cmdLineParser(): parser = argparse.ArgumentParser(description='Simple ampcor driver') - parser.add_argument('-m', dest='master', type=str, - help='Master image with ISCE XML file', required=True) + parser.add_argument('-m', dest='reference', type=str, + help='Reference image with ISCE XML file', required=True) parser.add_argument('-b1', dest='band1', type=int, - help='Band number of master image', default=0) - parser.add_argument('-s', dest='slave', type=str, - help='Slave image with ISCE XML file', required=True) + help='Band number of reference image', default=0) + parser.add_argument('-s', dest='secondary', type=str, + help='Secondary image with ISCE XML file', required=True) parser.add_argument('-b2', dest='band2', type=int, - help='Band number of slave image', default=0) + help='Band number of secondary image', default=0) parser.add_argument('-o', dest='outfile', default= 'offsets.txt', type=str, help='Output ASCII file') return parser.parse_args() @@ -31,17 +31,17 @@ if __name__ == '__main__': #Parse command line inps = cmdLineParser() - ####Create master image object - masterImg = isceobj.createImage() #Empty image - masterImg.load(inps.master +'.xml') #Load from XML file - masterImg.setAccessMode('read') #Set it up for reading - masterImg.createImage() #Create File + ####Create reference image object + referenceImg = isceobj.createImage() #Empty image + referenceImg.load(inps.reference +'.xml') #Load from XML file + referenceImg.setAccessMode('read') #Set it up for reading + referenceImg.createImage() #Create File - #####Create slave image object - slaveImg = isceobj.createImage() #Empty image - slaveImg.load(inps.slave +'.xml') #Load it from XML file - slaveImg.setAccessMode('read') #Set it up for reading - slaveImg.createImage() #Create File + #####Create secondary image object + secondaryImg = isceobj.createImage() #Empty image + secondaryImg.load(inps.secondary +'.xml') #Load it from XML file + secondaryImg.setAccessMode('read') #Set it up for reading + secondaryImg.createImage() #Create File @@ -54,12 +54,12 @@ if __name__ == '__main__': coarseDown = 0 ####Get file types - if masterImg.getDataType().upper().startswith('C'): + if referenceImg.getDataType().upper().startswith('C'): objAmpcor.setImageDataType1('complex') else: objAmpcor.setImageDataType1('real') - if slaveImg.getDataType().upper().startswith('C'): + if secondaryImg.getDataType().upper().startswith('C'): objAmpcor.setImageDataType2('complex') else: objAmpcor.setImageDataType2('real') @@ -79,11 +79,11 @@ if __name__ == '__main__': logging.info('Down Gross Offset = %d'%(objAmpcor.downGrossOffset)) ####Stage 4: Call the main method - objAmpcor.ampcor(masterImg,slaveImg) + objAmpcor.ampcor(referenceImg,secondaryImg) ###Close ununsed images - masterImg.finalizeImage() - slaveImg.finalizeImage() + referenceImg.finalizeImage() + secondaryImg.finalizeImage() ######Stage 5: Get required data out of the processing run diff --git a/docs/dev/Example2_ENU2LOS.py b/docs/dev/Example2_ENU2LOS.py index ac4ffba..f23ae8c 100644 --- a/docs/dev/Example2_ENU2LOS.py +++ b/docs/dev/Example2_ENU2LOS.py @@ -104,7 +104,7 @@ if __name__ == '__main__': ####Get the wavelength information. ###This is available in multiple locations within insarProc - #wvl = iObj.getMasterFrame().getInstrument().getRadarWavelength() + #wvl = iObj.getReferenceFrame().getInstrument().getRadarWavelength() wvl = topo.radarWavelength diff --git a/docs/dev/Example3_orbits.py b/docs/dev/Example3_orbits.py index d8c4501..02843a1 100644 --- a/docs/dev/Example3_orbits.py +++ b/docs/dev/Example3_orbits.py @@ -27,7 +27,7 @@ if __name__ == '__main__': #####Copy the original state vectors #####These are the 10-15 vectors provided #####with the sensor data in WGS84 coords - origOrbit = copy.copy(iObj.masterFrame.getOrbit()) + origOrbit = copy.copy(iObj.referenceFrame.getOrbit()) print('From Original Metadata - WGS84') print('Number of state vectors: %d'%len(origOrbit._stateVectors)) print('Time interval: %s %s'%(str(origOrbit._minTime), @@ -36,7 +36,7 @@ if __name__ == '__main__': #####Line-by-line WGS84 interpolated orbit #####This was done using Hermite polynomials - xyzOrbit = copy.copy(iObj.masterOrbit) + xyzOrbit = copy.copy(iObj.referenceOrbit) print('Line-by-Line XYZ interpolated') print('Number of state vectors: %d'%len(xyzOrbit._stateVectors)) print('Time interval: %s %s'%(str(xyzOrbit._minTime), @@ -61,7 +61,7 @@ if __name__ == '__main__': planet = copy.copy(iObj.planet) ###Copy the orbits - schOrbit = copy.copy(iObj.masterOrbit) + schOrbit = copy.copy(iObj.referenceOrbit) del iObj print('Line-by-Line SCH interpolated') print('Number of state vectors: %d'%len(schOrbit._stateVectors)) diff --git a/examples/input_files/README.txt b/examples/input_files/README.txt index 07bc447..f359548 100644 --- a/examples/input_files/README.txt +++ b/examples/input_files/README.txt @@ -3,14 +3,14 @@ application insarApp.py. The insarApp.xml file is extensively documented with comments. Please read that for further information. The insarApp.xml file contains references to two files (or "catalogs" in ISCE -parlance), master.xml and slave.xml, which contain further input data for -insarApp.xml. The structure of the master.xml and slave.xml files are the same +parlance), reference.xml and secondary.xml, which contain further input data for +insarApp.xml. The structure of the reference.xml and secondary.xml files are the same for any given sensor (only the specific image/meta data filenames will be different). The structure of these files, however, are different for the different sensors. Examples for each supported sensor are contained in this -directory with names such as master_alos.xml. You can edit these files and +directory with names such as reference_alos.xml. You can edit these files and change the name used in the insarApp.xml file (or else change the name of these -master_SENSOR.xml and slave_SENSOR.xml files to master.xml and slave.xml to +reference_SENSOR.xml and secondary_SENSOR.xml files to reference.xml and secondary.xml to match the namse of the catalog files referred to in insarApp.xml). A catalog file is parsed as if its contents (omitting the inital tag and its @@ -22,21 +22,21 @@ insarApp.xml ALOS - - master_alos.xml + + reference_alos.xml - - slave_alos.xml + + secondary_alos.xml -with the following master_alos.xml and slave_alos.xml file, +with the following reference_alos.xml and secondary_alos.xml file, -master_alos.xml +reference_alos.xml ---------- - + //IMG-HH-ALPSRP056480670-H1.0__A @@ -46,9 +46,9 @@ master_alos.xml 20070215.raw -slave_alos.xml +secondary_alos.xml --------- - + //IMG-HH-ALPSRP049770670-H1.0__A @@ -66,7 +66,7 @@ insarApp_AllInOne.xml ALOS - + //IMG-HH-ALPSRP056480670-H1.0__A @@ -75,7 +75,7 @@ insarApp_AllInOne.xml 20070215.raw - + //IMG-HH-ALPSRP049770670-H1.0__A @@ -106,30 +106,30 @@ a component configuration file. The difference between a catalog file and a component configuration file is in the one extra tag ("" in the above insarApp.xml file) that -is an extra structure around the data that the example master_alos.xml and -slave_alos.xml files found in this directory are lacking. The other difference +is an extra structure around the data that the example reference_alos.xml and +secondary_alos.xml files found in this directory are lacking. The other difference is in the name of the files. A component configuration file must be named properly as explained in the top level README.txt file in order for the ISCE framework to find it. When named appropriately the component configuration files are found automatically. A catalog file is referred to explicitly in the input file and may have any name desired. -The master_alos.xml and slave_alos.xml files here could be turned into +The reference_alos.xml and secondary_alos.xml files here could be turned into component configuration files by adding one tag (with any name desired) at the top of the file and its required closing tag at the bottom of the file -and by changing their names to master.xml and slave.xml. The difference would +and by changing their names to reference.xml and secondary.xml. The difference would also be that the component configuration versions would be loaded automatically without needing to refer to them in the input file. As catalogs, however, they can be given any name as long as the insarApp.xml file uses that name in a catalog tag. If you were to have both catalog files and component configuration files, then -both will be read when configuring the master and slave components. If there is +both will be read when configuring the reference and secondary components. If there is conflicting information in the catalog file and the component configuration file, then, by the rules of priority discussed in the top level README.txt, the catalog referred to in the insarApp.xml file will win because it specifies both -the application (insarApp) and the component (master or slave), whereas the -component configuration file would only refer to the component (master or -slave). +the application (insarApp) and the component (reference or secondary), whereas the +component configuration file would only refer to the component (reference or +secondary). =============================================================================== diff --git a/examples/input_files/alos2/alos2App.xml b/examples/input_files/alos2/alos2App.xml index 235c28d..83fc135 100644 --- a/examples/input_files/alos2/alos2App.xml +++ b/examples/input_files/alos2/alos2App.xml @@ -3,23 +3,23 @@ - - ../../../z_common_data/insarzd_test_dataset/gorkha/d048/150405 - ../../../z_common_data/insarzd_test_dataset/gorkha/d048/150503 - - [3055] - [3055] + [3055] + [3055] - - - + + + - - - - + + + + - [3055] - [3055] + [3055] + [3055] ../../../z_common_data/insarzd_test_dataset/gorkha/dem/demLat_N22_N33_Lon_E078_E092.dem.wgs84 @@ -165,7 +165,7 @@ FBD (indicated by ^) is the acquisition mode code. Here is the list of acquistio ScanSAR | WD1 | WBS, WBD, WWS, WWD | WD2 | VBS, VBD -Note that, in ScanSAR-stripmap interferometry, ScanSAR must be master! +Note that, in ScanSAR-stripmap interferometry, ScanSAR must be reference! ########################################### @@ -214,7 +214,7 @@ ion: folder for computing ionospheric phase. subband interferograms are created "upper", and final computations are done in "ion_cal". dense_offset: dense offset processing results. In this folder: -*_coreg.slc: coregistered slave image. Offsets used to do resampling include geomtrical offsets + residual +*_coreg.slc: coregistered secondary image. Offsets used to do resampling include geomtrical offsets + residual offsets from cross-correlation. @@ -223,7 +223,7 @@ offsets from cross-correlation. ########################################### File names shown here are from particular pairs, you need to find your corresponding ones. For all sign -conventions, we assume master is the earlier acquistion. If your master is the later acquistion, the sign +conventions, we assume reference is the earlier acquistion. If your reference is the later acquistion, the sign will be opposite! @@ -330,15 +330,15 @@ or alos2burstApp.py --dostep=ion_filt -3. Master and slave have different wavelengths -If master and slave are acquired in different acquistion modes, it's likely that they have different -wavelengths, If master and slave have different wavelengths, the resulting interferogram might have a +3. Reference and secondary have different wavelengths +If reference and secondary are acquired in different acquistion modes, it's likely that they have different +wavelengths, If reference and secondary have different wavelengths, the resulting interferogram might have a residual range ramp. This is probably caused by the relative wavelength errors of the two wavelengths. 4. ScanSAR burst synchronization For ScanSAR data acquired before February 8, 2015, chances of having enough burst synchronization for -interferometry is very low. If the master image, slave image or both are acquired before this date, the +interferometry is very low. If the reference image, secondary image or both are acquired before this date, the interferogram will be probably full of noise and not useful. diff --git a/examples/input_files/alos2/alos2burstApp.xml b/examples/input_files/alos2/alos2burstApp.xml index d4645d5..adca8c6 100644 --- a/examples/input_files/alos2/alos2burstApp.xml +++ b/examples/input_files/alos2/alos2burstApp.xml @@ -3,23 +3,23 @@ - - ../../../z_common_data/insarzd_test_dataset/gorkha/d048/150405 - ../../../z_common_data/insarzd_test_dataset/gorkha/d048/150503 - - [3055] - [3055] + [3055] + [3055] - - - + + + - - - - + + + + @@ -143,7 +143,7 @@ IEEE Transactions on Geoscience and Remote Sensing, vol. 56, no. 8, pp. 4492-450 - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + @@ -129,7 +129,7 @@ IEEE Transactions on Geoscience and Remote Sensing, vol. 56, no. 8, pp. 4492-450 - - - + + + - - - - + + + + @@ -129,7 +129,7 @@ IEEE Transactions on Geoscience and Remote Sensing, vol. 56, no. 8, pp. 4492-450 - - - + + + - - - - + + + + @@ -129,7 +129,7 @@ IEEE Transactions on Geoscience and Remote Sensing, vol. 56, no. 8, pp. 4492-450 - - - + + + - - - - + + + + @@ -129,7 +129,7 @@ IEEE Transactions on Geoscience and Remote Sensing, vol. 56, no. 8, pp. 4492-450 - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + diff --git a/examples/input_files/legacy/insarALOS_latest.xml b/examples/input_files/legacy/insarALOS_latest.xml index 28bde8c..62c4296 100644 --- a/examples/input_files/legacy/insarALOS_latest.xml +++ b/examples/input_files/legacy/insarALOS_latest.xml @@ -41,7 +41,7 @@ True --> - + ../ALOS2/IMG-HH-ALPSRP028910640-H1.0__A @@ -52,7 +52,7 @@ 060810.raw - + ../ALOS2/IMG-HH-ALPSRP042330640-H1.0__A diff --git a/examples/input_files/legacy/insarALOS_pre_svn704.xml b/examples/input_files/legacy/insarALOS_pre_svn704.xml index 25c4aea..a7e4724 100644 --- a/examples/input_files/legacy/insarALOS_pre_svn704.xml +++ b/examples/input_files/legacy/insarALOS_pre_svn704.xml @@ -54,7 +54,7 @@ Option 3: any combination of in-line properties and components or catalogs. 8192 - + 'IMG-HH-ALPSRPXXXXXXXXXX-P1.0__A' @@ -62,10 +62,10 @@ Option 3: any combination of in-line properties and components or catalogs. 'LED-ALPSRPXXXXXXXXXXX-P1.0__A' - master.raw + reference.raw - + 'IMG-HH-ALPSRP080110680-P1.0__A' @@ -73,7 +73,7 @@ Option 3: any combination of in-line properties and components or catalogs. 'LED-ALPSRP080110680-P1.0__A' - slave.raw + secondary.raw diff --git a/examples/input_files/legacy/insarERS_latest.xml b/examples/input_files/legacy/insarERS_latest.xml index 670dbea..367e668 100644 --- a/examples/input_files/legacy/insarERS_latest.xml +++ b/examples/input_files/legacy/insarERS_latest.xml @@ -44,7 +44,7 @@ useDopIQ - + '../IMAGERY19920715' @@ -61,7 +61,7 @@ "../../orbit/ODR/ERS1" - + '../IMAGERY19920819' diff --git a/examples/input_files/legacy/insarEnvisat_latest.xml b/examples/input_files/legacy/insarEnvisat_latest.xml index af55508..e1943bc 100644 --- a/examples/input_files/legacy/insarEnvisat_latest.xml +++ b/examples/input_files/legacy/insarEnvisat_latest.xml @@ -44,11 +44,11 @@ useDOPIQ - - envisatMaster.xml + + envisatReference.xml - - envisatSlave.xml + + envisatSecondary.xml + + envisatReference.xml - - envisatSlave.xml + + envisatSecondary.xml diff --git a/examples/input_files/legacy/insarRSAT2_latest.xml b/examples/input_files/legacy/insarRSAT2_latest.xml index 5ce086f..722546e 100644 --- a/examples/input_files/legacy/insarRSAT2_latest.xml +++ b/examples/input_files/legacy/insarRSAT2_latest.xml @@ -9,7 +9,7 @@ ampcor 30 - + 20100707/product.xml @@ -23,7 +23,7 @@ 20100707.raw - + 20100402/product.xml diff --git a/examples/input_files/legacy/insarTSX_latest.xml b/examples/input_files/legacy/insarTSX_latest.xml index c129370..627dcea 100644 --- a/examples/input_files/legacy/insarTSX_latest.xml +++ b/examples/input_files/legacy/insarTSX_latest.xml @@ -47,20 +47,20 @@ False - + dims_op_oc_dfd2_204281662_1/TSX-1.SAR.L1B/TSX1_SAR__SSC______SM_S_SRA_20091205T042212_20091205T042220/TSX1_SAR__SSC______SM_S_SRA_20091205T042212_20091205T042220.xml - master.slc + reference.slc - + dims_op_oc_dfd2_204281679_1/TSX-1.SAR.L1B/TSX1_SAR__SSC______SM_S_SRA_20091216T042211_20091216T042219/TSX1_SAR__SSC______SM_S_SRA_20091216T042211_20091216T042219.xml - slave.slc + secondary.slc - - masterdir + + referencedir /home/vagrant/orbit/S1A/precise /home/vagrant/orbit/S1A/aux - @@ -140,11 +140,11 @@ files directly in the insarApp.xml file as in the following example for ALOS: