Get raster's convex hull.
The convex hull is typically a 4 vertices (5 to be closed) single ring polygon bearing the raster's rotation and using projection coordinates.
839 {
840 double gt[6] = {0.0};
842
845
846 assert(hull != NULL);
847 *hull = NULL;
848
849
850 if (raster == NULL)
852
853
856
858
859
863
864
868 }
869
870 else {
873
874
876
877
879 raster,
882 gt
884 rterror(
"rt_raster_get_convex_hull: Could not get second point for linestring");
886 }
889
891 }
892
894 }
895 else {
898
899
901 if (!rings) {
902 rterror(
"rt_raster_get_convex_hull: Could not allocate memory for polygon ring");
904 }
906
907
908 if (!rings[0]) {
909 rterror(
"rt_raster_get_convex_hull: Could not construct point array");
911 }
912 pts = rings[0];
913
914
919
920
922 raster,
925 gt
926 );
928
929
931 raster,
934 gt
935 );
937
938
940 raster,
943 gt
944 );
946
949 }
950
952}
LWGEOM * lwpoint_as_lwgeom(const LWPOINT *obj)
POINTARRAY * ptarray_construct_empty(char hasz, char hasm, uint32_t maxpoints)
Create a new POINTARRAY with no points.
LWLINE * lwline_construct(int32_t srid, GBOX *bbox, POINTARRAY *points)
LWPOINT * lwpoint_make2d(int32_t srid, double x, double y)
LWGEOM * lwline_as_lwgeom(const LWLINE *obj)
LWPOLY * lwpoly_construct(int32_t srid, GBOX *bbox, uint32_t nrings, POINTARRAY **points)
int ptarray_append_point(POINTARRAY *pa, const POINT4D *pt, int allow_duplicates)
Append a point to the end of an existing POINTARRAY If allow_duplicate is LW_FALSE,...
#define LW_TRUE
Return types for functions with status returns.
#define SRID_UNKNOWN
Unknown SRID value.
void ptarray_set_point4d(POINTARRAY *pa, uint32_t n, const POINT4D *p4d)
LWGEOM * lwpoly_as_lwgeom(const LWPOLY *obj)
POINTARRAY * ptarray_construct(char hasz, char hasm, uint32_t npoints)
Construct an empty pointarray, allocating storage and setting the npoints, but not filling in any inf...
void rterror(const char *fmt,...) __attribute__((format(printf
Wrappers used for reporting errors and info.
void * rtalloc(size_t size)
Wrappers used for managing memory.
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.
int32_t rt_raster_get_srid(rt_raster raster)
Get raster's SRID.
#define RASTER_DEBUGF(level, msg,...)
uint16_t rt_raster_get_height(rt_raster raster)
uint16_t rt_raster_get_width(rt_raster raster)
void rt_raster_get_geotransform_matrix(rt_raster raster, double *gt)
Get 6-element array of raster geotransform matrix.
raster
Be careful!! Zeros function's input parameter can be a (height x width) array, not (width x height): ...