-
Notifications
You must be signed in to change notification settings - Fork 1
/
geography_measurement.h
162 lines (140 loc) · 4.62 KB
/
geography_measurement.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
/*
* File: geography_measurement.h
* Author: fanzhongning
*
* Created on 2017年9月17日, 下午8:27
*/
#ifndef GEOGRAPHY_MEASUREMENT_H
#define GEOGRAPHY_MEASUREMENT_H
#include <impala_udf/udf.h>
using namespace impala_udf;
#ifdef __cplusplus
extern "C" {
#endif
/**
*
* @param context UDF context object
* @param wktText
* @return double area in meters square
*/
DoubleVal geography_area_use_spheroid(FunctionContext* context, const StringVal& wktText);
/**
*
* @param context UDF context object
* @param wktText
* @param useSpheroid
* @return double area in meters square
*/
DoubleVal geography_area(FunctionContext* context, const StringVal& wktText, const BooleanVal& useSpheroid);
/**
*
* @param context
* @param wktText1
* @param wktText2
* @return direction between points (north = 0)
* azimuth (bearing) and distance
*/
DoubleVal geography_azimuth(FunctionContext* context, const StringVal& wktText1, const StringVal& wktText2);
/**
*
* @param context
* @param wktText1
* @param wktText2
* @return boolean Only works for (multi)points and (multi)polygons currently.
* Attempts a simple point-in-polygon test on the polygon and point.
* Current algorithm does not distinguish between points on edge and points within.
*/
BooleanVal geography_covers(FunctionContext* context, const StringVal& wktText1, const StringVal& wktText2);
/**
*
* @param context
* @param wktText1
* @param wktText2
* @param distanceMeters
* @return double distance in meters
*/
BooleanVal geography_dwithin_use_spheroid(FunctionContext* context, const StringVal& wktText1, const StringVal& wktText2, const DoubleVal& distanceMeters);
/**
*
* @param context
* @param wktText1
* @param wktText2
* @param distanceMeters
* @param useSpheroid
* @return double distance in meters
*/
BooleanVal geography_dwithin(FunctionContext* context, const StringVal& wktText1, const StringVal& wktText2, const DoubleVal& distanceMeters, const BooleanVal& useSpheroid);
/**
*
* @param context
* @param wktText1
* @param wktText2
* @return double distance in meters
*/
DoubleVal geography_distance_use_spheroid(FunctionContext* context, const StringVal& wktText1, const StringVal& wktText2);
/**
*
* @param context
* @param wktText1
* @param wktText2
* @param useSpheroid
* @return double distance in meters
*/
DoubleVal geography_distance(FunctionContext* context, const StringVal& wktText1, const StringVal& wktText2, const BooleanVal& useSpheroid);
/**
*
* @param context
* @param wktText
* @return double length in meters
*/
DoubleVal geography_length_use_spheroid(FunctionContext* context, const StringVal& wktText);
/**
*
* @param context
* @param wktText
* @param useSpheroid
* @return double length in meters
*/
DoubleVal geography_length(FunctionContext* context, const StringVal& wktText, const BooleanVal& useSpheroid);
/**
*
* @param context
* @param wktText
* @return double perimeter in meters for area features
*/
DoubleVal geography_perimeter_use_spheroid(FunctionContext* context, const StringVal& wktText);
/**
*
* @param context
* @param wktText
* @param useSpheroid
* @return double perimeter in meters for area features
*/
DoubleVal geography_perimeter(FunctionContext* context, const StringVal& wktText, const BooleanVal& useSpheroid);
/**
*
* @param context
* @param wktText
* @param distance
* @param azimuth
* @return point of projection given start point, azimuth in radians (bearing) and distance in meters
*/
StringVal geography_project(FunctionContext* context, const StringVal& wktText, const DoubleVal& distance, const DoubleVal& azimuth);
/**
*
* @param context
* @param wktText
* @param distance
* @param azimuth
* @return point of projection given start point, azimuth in radians (bearing) and distance in meters
*/
StringVal geography_segmentize(FunctionContext* context, const StringVal& wktText, const DoubleVal& max_seg_length);
#ifdef __cplusplus
}
#endif
#endif /* GEOGRAPHY_MEASUREMENT_H */