* Add lookside check to geozero, fixes #294
comparison is based on 0eb175f86f/cxx/isce3/geometry/detail/Geo2Rdr.icc (L83-L89)
This gets rid of the duplicate image for UAVSAR geocoding with diagonal heading
* fix bindings and include for new number of arguments
LT1AB
parent
eb5790a884
commit
b99aa5975f
|
@ -247,7 +247,7 @@ class Geocode(Component):
|
|||
demCropAcc = 0
|
||||
geozero.geozero_Py(demAccessor, inputAccessor, demCropAcc,
|
||||
self.geoAccessor, inband, outband,
|
||||
int(complexFlag), int(self.interp_methods[self.method]))
|
||||
int(complexFlag), int(self.interp_methods[self.method]), int(self.lookSide))
|
||||
|
||||
combinedlibmodule.freeCOrbit(cOrbit)
|
||||
self.getState()
|
||||
|
|
|
@ -75,15 +75,15 @@ PyObject * geozero_C(PyObject* self, PyObject* args)
|
|||
uint64_t var1;
|
||||
uint64_t var2;
|
||||
uint64_t var3;
|
||||
int b1, b2, b3,b4;
|
||||
if(!PyArg_ParseTuple(args, "KKKKiiii", &var0, &var1, &var2, &var3,
|
||||
&b1,&b2,&b3,&b4))
|
||||
int b1, b2, b3, b4, b5;
|
||||
if(!PyArg_ParseTuple(args, "KKKKiiiii", &var0, &var1, &var2, &var3,
|
||||
&b1,&b2,&b3,&b4,&b5))
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
b1++; //Python bandnumber to Fortran bandnumber
|
||||
b2++; //Python bandnumber to Fortran bandnumber
|
||||
geozero_f(&var0,&var1,&var2,&var3,&b1,&b2,&b3,&b4);
|
||||
geozero_f(&var0,&var1,&var2,&var3,&b1,&b2,&b3,&b4,&b5);
|
||||
return Py_BuildValue("i", 0);
|
||||
}
|
||||
PyObject * setEllipsoidMajorSemiAxis_C(PyObject* self, PyObject* args)
|
||||
|
|
|
@ -41,7 +41,7 @@ extern "C"
|
|||
#include "poly1d.h"
|
||||
|
||||
void geozero_f(uint64_t *, uint64_t *, uint64_t *, uint64_t *,
|
||||
int*, int*, int*, int*);
|
||||
int*, int*, int*, int*, int*);
|
||||
PyObject * geozero_C(PyObject *, PyObject *);
|
||||
void setEllipsoidMajorSemiAxis_f(double *);
|
||||
PyObject * setEllipsoidMajorSemiAxis_C(PyObject *, PyObject *);
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
subroutine geozero(demAccessor,inAccessor,demCropAccessor,outAccessor,inband,outband,iscomplex,method)
|
||||
subroutine geozero(demAccessor,inAccessor,demCropAccessor,outAccessor,inband,outband,iscomplex,method,lookSide)
|
||||
use geozeroState
|
||||
use geozeroReadWrite
|
||||
use geozeroMethods
|
||||
|
@ -16,7 +16,7 @@ subroutine geozero(demAccessor,inAccessor,demCropAccessor,outAccessor,inband,out
|
|||
!! DECLARE LOCAL VARIABLES
|
||||
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||
integer inband,outband
|
||||
integer iscomplex,method
|
||||
integer iscomplex,method,lookSide
|
||||
integer stat,cnt
|
||||
integer*8 inAccessor,demAccessor
|
||||
integer*8 outAccessor,demCropAccessor
|
||||
|
@ -69,6 +69,10 @@ subroutine geozero(demAccessor,inAccessor,demCropAccessor,outAccessor,inband,out
|
|||
real*8 BAD_VALUE
|
||||
parameter(BAD_VALUE = -10000.0d0)
|
||||
|
||||
!! Cross product holder, for comparison to lookSide
|
||||
real*8 :: look_side_vec(3)
|
||||
real*8 look_side_sign
|
||||
integer pixel_side
|
||||
|
||||
!Doppler factor
|
||||
type(poly1dType) :: fdvsrng, fddotvsrng
|
||||
|
@ -300,6 +304,22 @@ subroutine geozero(demAccessor,inAccessor,demCropAccessor,outAccessor,inband,out
|
|||
satx = xyz_mid
|
||||
satv = vel_mid
|
||||
|
||||
! Check that the pixel is on the correct side of the platform
|
||||
! https://github.com/isce-framework/isce2/issues/294#issuecomment-853413396
|
||||
dr = xyz - satx
|
||||
call cross(dr, satv, look_side_vec)
|
||||
look_side_sign = dot(look_side_vec, satx)
|
||||
if(look_side_sign.gt.0) then
|
||||
pixel_side = -1
|
||||
else
|
||||
pixel_side = 1
|
||||
endif
|
||||
! Skip if the current pixel side doesn't matches the look side
|
||||
if(pixel_side.ne.lookSide) then
|
||||
! print *, "Skipp. lookSide ", lookSide, "look_side_sign", look_side_sign
|
||||
goto 100
|
||||
endif
|
||||
|
||||
do k=1,21
|
||||
tprev = tline
|
||||
!! print *, pixel, k, tline
|
||||
|
@ -321,7 +341,6 @@ subroutine geozero(demAccessor,inAccessor,demCropAccessor,outAccessor,inband,out
|
|||
|
||||
tline = tline + c1/(c2-c3)
|
||||
|
||||
|
||||
stat = interpolateWGS84Orbit_f(orbit,tline,satx,satv)
|
||||
|
||||
if (stat.ne.0) then
|
||||
|
|
Loading…
Reference in New Issue