54 #ifndef DOXYGEN_SHOULD_SKIP_THIS 66 #define GAIA_GEODESIC_ARC_LENGTH_DEGREES 0 69 #define GAIA_GEODESIC_ARC_LENGTH_METERS 1 72 #define GAIA_GEODESIC_CHORD_LENGTH_DEGREES 2 75 #define GAIA_GEODESIC_CHORD_LENGTH_METERS 3 78 #define GAIA_GEODESIC_CENTRAL_ANGLE_RADIANS 4 81 #define GAIA_GEODESIC_CENTRAL_ANGLE_DEGREES 5 84 #define GAIA_GEODESIC_ARC_AREA_METERS 6 87 #define GAIA_GEODESIC_ARC_HEIGHT_METERS 7 102 GAIAGEO_DECLARE
void gaiaFree (
void *ptr);
1135 double *x,
double *y,
double *z,
1163 double x,
double y,
double z,
1191 double *y,
double *z,
double *m);
1218 double y,
double z,
double m);
1798 double pt_x,
double pt_y);
1810 double x,
double y);
1828 int dims,
double *coords,
int vert);
1847 GAIAGEO_DECLARE
int gaiaIntersect (
double *x0,
double *y0,
double x1,
1848 double y1,
double x2,
double y2,
1849 double x3,
double y3,
double x4,
1863 double shift_x,
double shift_y);
1877 double shift_x,
double shift_y,
1917 double scale_x,
double scale_y);
2009 double *b,
double *rf);
2030 double lat1,
double lon1,
2031 double lat2,
double lon2);
2053 double rf,
double lat1,
2054 double lon1,
double lat2,
2104 double rf,
int dims,
2105 double *coords,
int vert);
2122 int unit_to,
double *cvt);
2154 int return_type,
double *retval);
2171 double radius,
double step);
2207 double radius,
double start,
2208 double stop,
double step);
GAIAGEO_DECLARE gaiaGeomCollPtr gaiaCastGeomCollToXYZMnoData(gaiaGeomCollPtr geom, double z_no_data, double m_no_data)
Duplicates a Geometry object [casting dimensions to 3D XYZM - noData].
GAIAGEO_DECLARE double gaiaMeasureLength(int dims, double *coords, int vert)
Measures the geometric length for a Linestring or Ring.
GAIAGEO_DECLARE int gaiaIsNotClosedGeomColl(gaiaGeomCollPtr geom)
Checks for not-closed Rings in a Geometry object.
GAIAGEO_DECLARE void gaiaFreeGeomColl(gaiaGeomCollPtr geom)
Destroys a Geometry object.
GAIAGEO_DECLARE gaiaPolygonPtr gaiaAllocPolygonXYM(int vert, int holes)
Allocates a 2D POLYGON [XYM].
GAIAGEO_DECLARE void gaiaCopyRingCoords(gaiaRingPtr dst, gaiaRingPtr src)
Copies coordinates between two RING objects.
GAIAGEO_DECLARE double gaiaGreatCircleTotalLength(double a, double b, int dims, double *coords, int vert)
Calculates the Great Circle Total Length for a Linestring / Ring.
GAIAGEO_DECLARE gaiaGeomCollPtr gaiaAllocGeomCollXYZM(void)
Allocates a 3D Geometry [XYZM].
GAIAGEO_DECLARE int gaiaIsToxic_r(const void *p_cache, gaiaGeomCollPtr geom)
Checks for toxic Geometry object.
GAIAGEO_DECLARE gaiaRingPtr gaiaAllocRingXYZM(int vert)
Allocates a 3D RING [XYZM].
GAIAGEO_DECLARE gaiaGeomCollPtr gaiaExtractLinestringsFromGeomColl(gaiaGeomCollPtr geom)
Extracts any Linestring from a Geometry object.
GAIAGEO_DECLARE gaiaGeomCollPtr gaiaEnsureClosedRings(gaiaGeomCollPtr org)
Attempts to sanitize a possibly malformed Geometry object.
GAIAGEO_DECLARE gaiaLinestringPtr gaiaCloneLinestringSpecial(gaiaLinestringPtr line, int mode)
Duplicates a Linestring object (special)
GAIAGEO_DECLARE void gaiaUpDownHeight(gaiaLinestringPtr line, double *up, double *down)
Computes the Uphill and Downhill total Height for some 3D Linestrings.
GAIAGEO_DECLARE int gaiaRingSetPoint(gaiaRingPtr rng, int v, double x, double y, double z, double m)
Sets coodinates for a Ring's Point.
GAIAGEO_DECLARE void gaiaFreePolygon(gaiaPolygonPtr polyg)
Destroys a POLYGON object.
GAIAGEO_DECLARE gaiaGeomCollPtr gaiaMakeEllipticArc(double center_x, double center_y, double x_axis, double y_axis, double start, double stop, double step)
Creates an Elliptic Arc (Linestring) Geometry.
GAIAGEO_DECLARE gaiaGeomCollPtr gaiaExtractPointsFromGeomColl(gaiaGeomCollPtr geom)
Extracts any Point from a Geometry object.
GAIAGEO_DECLARE int gaiaIsNotClosedGeomColl_r(const void *p_data, gaiaGeomCollPtr geom)
Checks for not-closed Rings in a Geometry object.
GAIAGEO_DECLARE int gaiaIsNotClosedRing_r(const void *p_data, gaiaRingPtr ring)
Checks for not-closed Rings.
GAIAGEO_DECLARE double gaiaGeodesicDistance(double a, double b, double rf, double lat1, double lon1, double lat2, double lon2)
Calculates the Geodesic Distance between two Points.
GAIAGEO_DECLARE void gaiaCopyRingCoordsEx(gaiaRingPtr dst, gaiaRingPtr src, double z_no_data, double m_no_data)
Copies coordinates between two RING objects.
Container for OGC POINT Geometry.
Definition: gg_structs.h:78
GAIAGEO_DECLARE gaiaGeomCollPtr gaiaMergeGeometries_r(const void *p_cache, gaiaGeomCollPtr geom1, gaiaGeomCollPtr geom2)
Merges two Geometry objects into a single one.
Container for OGC POLYGON Geometry.
Definition: gg_structs.h:192
GAIAGEO_DECLARE gaiaGeomCollPtr gaiaRemoveRepeatedPoints(gaiaGeomCollPtr org, double tolerance)
Attempts to sanitize a possibly malformed Geometry object.
GAIAGEO_DECLARE gaiaGeomCollPtr gaiaDissolvePoints(gaiaGeomCollPtr geom)
Attempts to resolve a collection of Points from a Geometry object.
GAIAGEO_DECLARE gaiaGeomCollPtr gaiaCloneGeomCollPoints(gaiaGeomCollPtr geom)
Duplicates a Geometry object [Points only].
GAIAGEO_DECLARE gaiaLinestringPtr gaiaAllocLinestring(int vert)
Allocates a 2D LINESTRING [XY].
GAIAGEO_DECLARE int gaiaIsNotClosedRing(gaiaRingPtr ring)
Checks for not-closed Rings.
GAIAGEO_DECLARE void gaiaFree(void *ptr)
Safely frees any dynamic memory block allocated by the library itself.
GAIAGEO_DECLARE void gaiaFreeRing(gaiaRingPtr ptr)
Destroys a RING object.
GAIAGEO_DECLARE gaiaGeomCollPtr gaiaCastGeomCollToXYZM(gaiaGeomCollPtr geom)
Duplicates a Geometry object [casting dimensions to 3D XYZM].
GAIAGEO_DECLARE gaiaPointPtr gaiaAllocPointXYZM(double x, double y, double z, double m)
Allocates a 3D POINT [XYZM].
GAIAGEO_DECLARE gaiaGeomCollPtr gaiaMakeArc(double center_x, double center_y, double radius, double start, double stop, double step)
Creates a Circular Arc (Linestring) Geometry.
GAIAGEO_DECLARE int gaiaIsValidTrajectory(gaiaGeomCollPtr geom)
Checks if a Geometry object is valid Trajectory.
GAIAGEO_DECLARE int gaiaLineSetPoint(gaiaLinestringPtr ln, int v, double x, double y, double z, double m)
Sets coordinates for a Linestring's Point.
GAIAGEO_DECLARE int gaiaIsPointOnRingSurface(gaiaRingPtr ring, double pt_x, double pt_y)
Check if a Point lays on a Ring surface.
GAIAGEO_DECLARE int gaiaInterpolatePoint(const void *p_cache, gaiaGeomCollPtr line, gaiaGeomCollPtr point, double *m_value)
Will interpolate the M-value for a LinestringM at the point closest to the given Point.
GAIAGEO_DECLARE int gaiaPolygonEquals(gaiaPolygonPtr polyg1, gaiaPolygonPtr polyg2)
Checks if two Polygons objects are equivalent.
GAIAGEO_DECLARE gaiaGeomCollPtr gaiaMakePolygon(gaiaGeomCollPtr exterior, gaiaGeomCollPtr interiors)
Creates a Polygon from closed Linestrings.
GAIAGEO_DECLARE void gaiaCopyLinestringCoordsEx(gaiaLinestringPtr dst, gaiaLinestringPtr src, double z_no_data, double m_no_data)
Copies coordinates between two LINESTRING objects.
GAIAGEO_DECLARE void gaiaNormalizeLonLat(gaiaGeomCollPtr geom)
Shifts any coordinate to within the "normal range" of longitude and latitude values (-180....
GAIAGEO_DECLARE void gaiaAddPointToGeomColl(gaiaGeomCollPtr p, double x, double y)
Creates a new 2D Point [XY] object into a Geometry object.
GAIAGEO_DECLARE int gaiaGeodesicArcLength(sqlite3 *sqlite, const void *cache, gaiaGeomCollPtr geom1, gaiaGeomCollPtr geom2, int return_type, double *retval)
Computes several Geodesic values based on the Distance between two Geometries.
GAIAGEO_DECLARE gaiaLinestringPtr gaiaAllocLinestringXYM(int vert)
Allocates a 2D LINESTRING [XYM].
GAIAGEO_DECLARE gaiaRingPtr gaiaAddInteriorRing(gaiaPolygonPtr p, int pos, int vert)
Creates a new Interior Ring object into a Polygon object.
GAIAGEO_DECLARE int gaiaGeometryAliasType(gaiaGeomCollPtr geom)
Determines the corresponding Type for a Geometry object.
GAIAGEO_DECLARE gaiaPolygonPtr gaiaInsertPolygonInGeomColl(gaiaGeomCollPtr p, gaiaRingPtr ring)
Creates a new Polygon object into a Geometry object starting from an already existing Ring object.
GAIAGEO_DECLARE void gaiaCopyLinestringCoords(gaiaLinestringPtr dst, gaiaLinestringPtr src)
Copies coordinates between two LINESTRING objects.
GAIAGEO_DECLARE gaiaGeomCollPtr gaiaAllocGeomCollXYM(void)
Allocates a 2D Geometry [XYM].
GAIAGEO_DECLARE gaiaGeomCollPtr gaiaMakeCircle(double center_x, double center_y, double radius, double step)
Creates a Circle (Linestring) Geometry.
GAIAGEO_DECLARE int gaiaIsToxic(gaiaGeomCollPtr geom)
Checks for toxic Geometry object.
GAIAGEO_DECLARE gaiaGeomCollPtr gaiaCastGeomCollToXYZ(gaiaGeomCollPtr geom)
Duplicates a Geometry object [casting dimensions to 3D XYZ].
Container for OGC RING Geometry.
Definition: gg_structs.h:158
GAIAGEO_DECLARE void gaiaAddPointToGeomCollXYZ(gaiaGeomCollPtr p, double x, double y, double z)
Creates a new 3D Point [XYZ] object into a Geometry object.
GAIAGEO_DECLARE gaiaRingPtr gaiaCloneRingSpecial(gaiaRingPtr ring, int mode)
Duplicates a Ring object (special)
GAIAGEO_DECLARE double gaiaGreatCircleDistance(double a, double b, double lat1, double lon1, double lat2, double lon2)
Calculates the Great Circle Distance between between two Points.
GAIAGEO_DECLARE gaiaLinestringPtr gaiaAllocLinestringXYZM(int vert)
Allocates a 3D LINESTRING [XYZM].
GAIAGEO_DECLARE int gaiaDimension(gaiaGeomCollPtr geom)
Determines OGC dimensions for a Geometry object.
GAIAGEO_DECLARE gaiaPolygonPtr gaiaClonePolygonSpecial(gaiaPolygonPtr polyg, int mode)
Duplicates a Polygon object (special)
GAIAGEO_DECLARE int gaiaIsEmpty(gaiaGeomCollPtr geom)
Checks for empty Geometry object.
GAIAGEO_DECLARE double gaiaCurvosityIndex(const void *p_cache, gaiaLinestringPtr line, int extra_points)
Computes the Curvosity Index for some Linestrings.
GAIAGEO_DECLARE void gaiaRingCentroid(gaiaRingPtr ring, double *rx, double *ry)
Determines the Centroid for a Ring object.
GAIAGEO_DECLARE void gaiaInsertLinestringInGeomColl(gaiaGeomCollPtr p, gaiaLinestringPtr line)
Inserts an already existing Linestring object into a Geometry object.
GAIAGEO_DECLARE int gaiaLinestringEquals(gaiaLinestringPtr line1, gaiaLinestringPtr line2)
Checks if two Linestring objects are equivalent.
GAIAGEO_DECLARE gaiaGeomCollPtr gaiaCloneGeomCollLinestrings(gaiaGeomCollPtr geom)
Duplicates a Geometry object [Linestrings only].
Container for OGC LINESTRING Geometry.
Definition: gg_structs.h:128
GAIAGEO_DECLARE gaiaGeomCollPtr gaiaLocateBetweenMeasures(gaiaGeomCollPtr geom, double m_start, double m_end)
Return a GeometryCollection containing elements matching the specified range of measures.
GAIAGEO_DECLARE void gaiaAddPointToGeomCollXYM(gaiaGeomCollPtr p, double x, double y, double m)
Creates a new 2D Point [XYM] object into a Geometry object.
GAIAGEO_DECLARE void gaiaCopyLinestringCoordsReverse(gaiaLinestringPtr dst, gaiaLinestringPtr src)
Copies coordinates between two LINESTRING objects in reverse order.
GAIAGEO_DECLARE gaiaRingPtr gaiaAllocRing(int vert)
Allocates a 2D RING [XY].
GAIAGEO_DECLARE void gaiaCopyRingCoordsReverse(gaiaRingPtr dst, gaiaRingPtr src)
Copies coordinates between two RING objects in reverse order.
GAIAGEO_DECLARE void gaiaFreePoint(gaiaPointPtr ptr)
Destroys a POINT object.
GAIAGEO_DECLARE gaiaGeomCollPtr gaiaSanitize(gaiaGeomCollPtr org)
Attempts to sanitize a possibly malformed Geometry object.
GAIAGEO_DECLARE int gaiaIntersect(double *x0, double *y0, double x1, double y1, double x2, double y2, double x3, double y3, double x4, double y4)
Determines the intesection Point between two Segments.
GAIAGEO_DECLARE gaiaGeomCollPtr gaiaCastGeomCollToXYM(gaiaGeomCollPtr geom)
Duplicates a Geometry object [casting dimensions to 2D XYM].
GAIAGEO_DECLARE gaiaGeomCollPtr gaiaCloneGeomColl(gaiaGeomCollPtr geom)
Duplicates a Geometry object.
GAIAGEO_DECLARE gaiaRingPtr gaiaAllocRingXYZ(int vert)
Allocates a 3D RING [XYZ].
GAIAGEO_DECLARE double gaiaMeasureArea(gaiaRingPtr ring)
Measures the geometric area for a Ring object.
GAIAGEO_DECLARE gaiaRingPtr gaiaCloneRing(gaiaRingPtr ring)
Duplicates a Ring object.
GAIAGEO_DECLARE int gaiaConvertLength(double value, int unit_from, int unit_to, double *cvt)
Convert a Length from a Measure Unit to another.
GAIAGEO_DECLARE gaiaLinestringPtr gaiaCloneLinestring(gaiaLinestringPtr line)
Duplicates a Linestring object.
GAIAGEO_DECLARE void gaiaAddRingToPolyg(gaiaPolygonPtr polyg, gaiaRingPtr ring)
Inserts an already existing Ring object into a Polygon object.
GAIAGEO_DECLARE gaiaPointPtr gaiaAllocPointXYM(double x, double y, double m)
Allocates a 2D POINT [XYM].
GAIAGEO_DECLARE void gaiaInsertInteriorRing(gaiaPolygonPtr p, gaiaRingPtr ring)
Inserts an already existing Ring object into a Polygon object.
GAIAGEO_DECLARE gaiaPointPtr gaiaAllocPoint(double x, double y)
Allocates a 2D POINT [XY].
GAIAGEO_DECLARE gaiaGeomCollPtr gaiaAddMeasure(gaiaGeomCollPtr geom, double m_start, double m_end)
Will return a new GEOMETRY (supporting M) with measures linearly interpolated between the start and e...
GAIAGEO_DECLARE int gaiaRingGetPoint(gaiaRingPtr rng, int v, double *x, double *y, double *z, double *m)
Gets coordinates from a Ring's Point.
GAIAGEO_DECLARE double gaiaMinDistance(double x0, double y0, int dims, double *coords, int vert)
Computes the minimum distance between a Point and a Linestring or Ring.
GAIAGEO_DECLARE gaiaPolygonPtr gaiaAllocPolygonXYZM(int vert, int holes)
Allocates a 3D POLYGON [XYZM].
GAIAGEO_DECLARE void gaiaShiftCoords(gaiaGeomCollPtr geom, double shift_x, double shift_y)
Shifts any coordinate within a Geometry object.
GAIAGEO_DECLARE gaiaPolygonPtr gaiaAllocPolygonXYZ(int vert, int holes)
Allocates a 3D POLYGON [XYZ].
GAIAGEO_DECLARE void gaiaShiftCoords3D(gaiaGeomCollPtr geom, double shift_x, double shift_y, double shift_z)
Shifts any coordinate within a 3D Geometry object.
GAIAGEO_DECLARE void gaiaReflectCoords(gaiaGeomCollPtr geom, int x_axis, int y_axis)
Reflects any coordinate within a Geometry object.
GAIAGEO_DECLARE int gaiaGeometryType(gaiaGeomCollPtr geom)
Determines the corresponding Type for a Geometry object.
GAIAGEO_DECLARE gaiaPointPtr gaiaAllocPointXYZ(double x, double y, double z)
Allocates a 3D POINT [XYZ].
GAIAGEO_DECLARE gaiaGeomCollPtr gaiaCastGeomCollToXYMnoData(gaiaGeomCollPtr geom, double no_data)
Duplicates a Geometry object [casting dimensions to 2D XYM - noData].
GAIAGEO_DECLARE gaiaGeomCollPtr gaiaLinearize(gaiaGeomCollPtr geom, int force_multi)
Attempts to resolve a (Multi)Linestring from a Geometry object.
GAIAGEO_DECLARE gaiaGeomCollPtr gaiaCastGeomCollToXYZnoData(gaiaGeomCollPtr geom, double no_data)
Duplicates a Geometry object [casting dimensions to 3D XYZ - noData].
GAIAGEO_DECLARE void gaiaSwapCoords(gaiaGeomCollPtr geom)
Swaps any coordinate within a Geometry object.
GAIAGEO_DECLARE int gaiaCheckCounterClockwise(gaiaGeomCollPtr geom)
Checks for CounterClockwise Geometry object.
GAIAGEO_DECLARE gaiaGeomCollPtr gaiaAllocGeomColl(void)
Allocates a 2D Geometry [XY].
GAIAGEO_DECLARE gaiaPolygonPtr gaiaCreatePolygon(gaiaRingPtr ring)
Allocates a POLYGON.
GAIAGEO_DECLARE void gaiaClockwise(gaiaRingPtr p)
Determines the direction for a Ring object.
GAIAGEO_DECLARE void gaiaShiftLongitude(gaiaGeomCollPtr geom)
Shifts negative longitudes.
GAIAGEO_DECLARE gaiaGeomCollPtr gaiaAllocGeomCollXYZ(void)
Allocates a 3D Geometry [XYZ].
GAIAGEO_DECLARE void gaiaFreeLinestring(gaiaLinestringPtr ptr)
Destroys a LINESTRING object.
GAIAGEO_DECLARE gaiaLinestringPtr gaiaAddLinestringToGeomColl(gaiaGeomCollPtr p, int vert)
Creates a new Linestring object into a Geometry object.
GAIAGEO_DECLARE gaiaPolygonPtr gaiaClonePolygon(gaiaPolygonPtr polyg)
Duplicates a Polygon object.
GAIAGEO_DECLARE gaiaGeomCollPtr gaiaCloneGeomCollPolygons(gaiaGeomCollPtr geom)
Duplicates a Geometry object [Polygons only].
GAIAGEO_DECLARE gaiaLinestringPtr gaiaAllocLinestringXYZ(int vert)
Allocates a 3D LINESTRING [XYZ].
GAIAGEO_DECLARE gaiaGeomCollPtr gaiaMakeEllipse(double center_x, double center_y, double x_axis, double y_axis, double step)
Creates an Ellipse (Linestring) Geometry.
GAIAGEO_DECLARE int gaiaIsPointOnPolygonSurface(gaiaPolygonPtr polyg, double x, double y)
Checks if a Point lays on a Polygon surface.
Container for OGC GEOMETRYCOLLECTION Geometry.
Definition: gg_structs.h:226
GAIAGEO_DECLARE void gaiaRotateCoords(gaiaGeomCollPtr geom, double angle)
Rotates any coordinate within a Geometry object.
GAIAGEO_DECLARE gaiaGeomCollPtr gaiaMergeGeometries(gaiaGeomCollPtr geom1, gaiaGeomCollPtr geom2)
Merges two Geometry objects into a single one.
GAIAGEO_DECLARE gaiaGeomCollPtr gaiaDissolveSegments(gaiaGeomCollPtr geom)
Attempts to resolve a collection of Segments from a Geometry object.
GAIAGEO_DECLARE gaiaGeomCollPtr gaiaCastGeomCollToXY(gaiaGeomCollPtr geom)
Duplicates a Geometry object [casting dimensions to 2D XY].
GAIAGEO_DECLARE int gaiaEllipseParams(const char *name, double *a, double *b, double *rf)
Retrieves Geodesic params for an Ellipsoid definition.
GAIAGEO_DECLARE void gaiaAddPointToGeomCollXYZM(gaiaGeomCollPtr p, double x, double y, double z, double m)
Creates a new 3D Point [XYZM] object into a Geometry object.
GAIAGEO_DECLARE int gaiaLineGetPoint(gaiaLinestringPtr ln, int v, double *x, double *y, double *z, double *m)
Gets coodinates from a Linestring's Point.
GAIAGEO_DECLARE gaiaPolygonPtr gaiaAllocPolygon(int vert, int holes)
Allocates a 2D POLYGON [XY].
GAIAGEO_DECLARE gaiaGeomCollPtr gaiaExtractPolygonsFromGeomColl(gaiaGeomCollPtr geom)
Extracts any Polygon from a Geometry object.
GAIAGEO_DECLARE double gaiaGeodesicTotalLength(double a, double b, double rf, int dims, double *coords, int vert)
Calculates the Geodesic Total Length for a Linestring / Ring.
GAIAGEO_DECLARE void gaiaScaleCoords(gaiaGeomCollPtr geom, double scale_x, double scale_y)
Scales any coordinate within a Geometry object.
GAIAGEO_DECLARE gaiaGeomCollPtr gaiaCloneGeomCollSpecial(gaiaGeomCollPtr geom, int mode)
Duplicates a Geometry object (special)
GAIAGEO_DECLARE gaiaGeomCollPtr gaiaTrajectoryInterpolatePoint(gaiaGeomCollPtr geom, double m)
Attempts to interpolate a Point along a Trajectory accordingly to given M-Value.
GAIAGEO_DECLARE gaiaPolygonPtr gaiaAddPolygonToGeomColl(gaiaGeomCollPtr p, int vert, int interiors)
Creates a new Polygon object into a Geometry object.
GAIAGEO_DECLARE gaiaRingPtr gaiaAllocRingXYM(int vert)
Allocates 2D RING [XYM].
GAIAGEO_DECLARE int gaiaCheckClockwise(gaiaGeomCollPtr geom)
Checks for Clockwise Geometry object.