Calculate the location of a point on a spheroid, give a start point, bearing and distance.
Calculate the location of a point on a spheroid, give a start point, bearing and distance.
- Parameters
-
r | - location of first point. |
spheroid | - spheroid definition. |
distance | - distance, in units of the spheroid def'n. |
azimuth | - azimuth in radians. |
- Returns
- s - location of projected point.
Definition at line 2099 of file lwgeodetic.c.
2114 azimuth -= 2.0 * M_PI * floor(azimuth / (2.0 * M_PI));
2119 lwerror(
"Distance must not be greater than %g", M_PI * spheroid->
radius);
2131 LWDEBUGF(3,
"Unable to project from (%g %g) with azimuth %g and distance %g",
x,
y, azimuth,
distance);
2132 lwerror(
"Unable to project from (%g %g) with azimuth %g and distance %g",
x,
y, azimuth,
distance);
2140 pt_dest.
z = pt_dest.
m = 0.0;
void lwgeom_set_geodetic(LWGEOM *geom, int value)
Set the FLAGS geodetic bit on geometry an all sub-geometries and pointlists.
double lwpoint_get_x(const LWPOINT *point)
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...
LWGEOM * lwpoint_as_lwgeom(const LWPOINT *obj)
LWPOINT * lwpoint_construct(int srid, GBOX *bbox, POINTARRAY *point)
#define LW_TRUE
Return types for functions with status returns.
void ptarray_set_point4d(POINTARRAY *pa, uint32_t n, const POINT4D *p4d)
double lwpoint_get_y(const LWPOINT *point)
double longitude_radians_normalize(double lon)
Convert a longitude to the range of -PI,PI.
double latitude_radians_normalize(double lat)
Convert a latitude to the range of -PI/2,PI/2.
void geographic_point_init(double lon, double lat, GEOGRAPHIC_POINT *g)
Initialize a geographic point.
int spheroid_project(const GEOGRAPHIC_POINT *r, const SPHEROID *spheroid, double distance, double azimuth, GEOGRAPHIC_POINT *g)
Given a location, an azimuth and a distance, computes the location of the projected point.
Datum distance(PG_FUNCTION_ARGS)
#define LWDEBUGF(level, msg,...)
void lwerror(const char *fmt,...)
Write a notice out to the error handler.
Point in spherical coordinates on the world.
References distance(), geographic_point_init(), GEOGRAPHIC_POINT::lat, latitude_radians_normalize(), GEOGRAPHIC_POINT::lon, longitude_radians_normalize(), LW_FAILURE, LW_TRUE, LWDEBUGF, lwerror(), lwgeom_set_geodetic(), lwpoint_as_lwgeom(), lwpoint_construct(), lwpoint_get_x(), lwpoint_get_y(), POINT4D::m, ptarray_construct(), ptarray_set_point4d(), r, rad2deg, SPHEROID::radius, spheroid_project(), POINT4D::x, pixval::x, POINT4D::y, pixval::y, and POINT4D::z.
Referenced by geography_project().