PostGIS 3.7.0dev-r@@SVN_REVISION@@
Loading...
Searching...
No Matches

◆ rt_raster_get_envelope()

rt_errorstate rt_raster_get_envelope ( rt_raster  raster,
rt_envelope env 
)

Get raster's envelope.

The envelope is the minimum bounding rectangle of the raster

Parameters
raster: the raster to get envelope of
env: pointer to rt_envelope
Returns
ES_NONE if success, ES_ERROR if error

Definition at line 782 of file rt_raster.c.

785 {
786 int i;
787 int rtn;
788 int set = 0;
789 double _r[2] = {0.};
790 double _w[2] = {0.};
791 double _gt[6] = {0.};
792
793 assert(raster != NULL);
794 assert(env != NULL);
795
797
798 for (i = 0; i < 4; i++) {
799 switch (i) {
800 case 0:
801 _r[0] = 0;
802 _r[1] = 0;
803 break;
804 case 1:
805 _r[0] = 0;
806 _r[1] = raster->height;
807 break;
808 case 2:
809 _r[0] = raster->width;
810 _r[1] = raster->height;
811 break;
812 case 3:
813 _r[0] = raster->width;
814 _r[1] = 0;
815 break;
816 }
817
819 raster,
820 _r[0], _r[1],
821 &(_w[0]), &(_w[1]),
822 _gt
823 );
824 if (rtn != ES_NONE) {
825 rterror("rt_raster_get_envelope: Could not compute spatial coordinates for raster pixel");
826 return ES_ERROR;
827 }
828
829 if (!set) {
830 set = 1;
831 env->MinX = _w[0];
832 env->MaxX = _w[0];
833 env->MinY = _w[1];
834 env->MaxY = _w[1];
835 }
836 else {
837 if (_w[0] < env->MinX)
838 env->MinX = _w[0];
839 else if (_w[0] > env->MaxX)
840 env->MaxX = _w[0];
841
842 if (_w[1] < env->MinY)
843 env->MinY = _w[1];
844 else if (_w[1] > env->MaxY)
845 env->MaxY = _w[1];
846 }
847 }
848
849 return ES_NONE;
850}
void rterror(const char *fmt,...) __attribute__((format(printf
Wrappers used for reporting errors and info.
@ ES_NONE
Definition librtcore.h:182
@ ES_ERROR
Definition librtcore.h:183
raster
Be careful!! Zeros function's input parameter can be a (height x width) array, not (width x height): ...
Definition rtrowdump.py:125
rt_errorstate rt_raster_cell_to_geopoint(rt_raster raster, double xr, double yr, double *xw, double *yw, double *gt)
Convert an xr, yr raster point to an xw, yw point on map.
Definition rt_raster.c:637
void rt_raster_get_geotransform_matrix(rt_raster raster, double *gt)
Get 6-element array of raster geotransform matrix.
Definition rt_raster.c:588
double MinX
Definition librtcore.h:167
double MaxX
Definition librtcore.h:168
double MinY
Definition librtcore.h:169
double MaxY
Definition librtcore.h:170

References ES_ERROR, ES_NONE, rt_envelope::MaxX, rt_envelope::MaxY, rt_envelope::MinX, rt_envelope::MinY, rt_raster_cell_to_geopoint(), rt_raster_get_geotransform_matrix(), and rterror().

Referenced by RASTER_InterpolateRaster(), rt_raster_get_envelope_geom(), and test_raster_envelope().

Here is the call graph for this function:
Here is the caller graph for this function: