1
1
CREATE EXTENSION IF NOT EXISTS postgis;
2
2
CREATE SCHEMA IF NOT EXISTS api;
3
3
4
- -- scientific
4
+ -- SCIENTIFIC
5
+
5
6
CREATE or replace FUNCTION api .br_afacode_encode(
6
7
p_lat float,
7
8
p_lon float,
@@ -17,7 +18,8 @@ CREATE or replace FUNCTION api.br_afacode_encode(
17
18
' area' , afa .br_cell_area (L),
18
19
' side' , afa .br_cell_side (L),
19
20
' base' ,' base16h' ,
20
- ' jurisd_base_id' ,76
21
+ ' jurisd_base_id' ,76 ,
22
+ ' isolabel_ext' , ' BR'
21
23
)
22
24
)))::jsonb
23
25
FROM afa .br_cell_nearst_level (p_u) a(L), afa .br_encode (p_lat,p_lon,L) b(hbig)
@@ -40,7 +42,8 @@ CREATE or replace FUNCTION api.cm_afacode_encode(
40
42
' area' , afa .cm_cell_area (L),
41
43
' side' , afa .cm_cell_side (L),
42
44
' base' ,' base16h' ,
43
- ' jurisd_base_id' ,120
45
+ ' jurisd_base_id' ,120 ,
46
+ ' isolabel_ext' , ' CM'
44
47
)
45
48
)))::jsonb
46
49
FROM afa .cm_cell_nearst_level (p_u) a(L), afa .cm_encode (p_lat,p_lon,L) b(hbig)
@@ -63,7 +66,8 @@ CREATE or replace FUNCTION api.co_afacode_encode(
63
66
' area' , afa .co_cell_area (L),
64
67
' side' , afa .co_cell_side (L),
65
68
' base' ,' base16h' ,
66
- ' jurisd_base_id' ,170
69
+ ' jurisd_base_id' ,170 ,
70
+ ' isolabel_ext' , ' CO'
67
71
)
68
72
)))::jsonb
69
73
FROM afa .co_cell_nearst_level (p_u) a(L), afa .co_encode (p_lat,p_lon,L) b(hbig)
@@ -72,24 +76,6 @@ COMMENT ON FUNCTION api.co_afacode_encode(float,float,float)
72
76
IS ' Encodes lat/lon to AFAcode grid in Colombia. Returns a GeoJSON FeatureCollection with cell geometry and metadata.' ;
73
77
;
74
78
75
- CREATE or replace FUNCTION api .afacode_encode(
76
- p_uri text ,
77
- p_grid int DEFAULT 0 ,
78
- p_iso text DEFAULT NULL
79
- ) RETURNS jsonb AS $wrap$
80
- SELECT
81
- CASE p_iso
82
- WHEN ' BR' THEN api .br_afacode_encode (u[1 ],u[2 ],u[3 ])
83
- WHEN ' CM' THEN api .cm_afacode_encode (u[1 ],u[2 ],u[3 ])
84
- WHEN ' CO' THEN api .co_afacode_encode (u[1 ],u[2 ],u[3 ])
85
- END
86
- FROM str_geouri_decode_new(p_uri) t(u)
87
- $wrap$ LANGUAGE SQL IMMUTABLE PARALLEL SAFE;
88
- COMMENT ON FUNCTION api .afacode_encode (text ,int ,text )
89
- IS ' Wrapper for country-specific AFAcode encoders. Decodes a GeoURI and delegates encoding based on ISO country code.' ;
90
- ;
91
-
92
-
93
79
CREATE or replace FUNCTION api .br_afacode_decode(
94
80
p_code text
95
81
) RETURNS jsonb AS $f$
@@ -103,7 +89,8 @@ CREATE or replace FUNCTION api.br_afacode_decode(
103
89
' side' , afa .br_cell_side (xyL[3 ]),
104
90
' base' ,' base16h' ,
105
91
' jurisd_base_id' ,76 ,
106
- ' truncated_code' ,(CASE WHEN length(id) <> length(code) THEN FALSE ELSE TRUE END)
92
+ ' isolabel_ext' , ' BR'
93
+ ' truncated_code' ,(CASE WHEN length(id) <> length(code) THEN TRUE ELSE FALSE END)
107
94
)
108
95
)))::jsonb
109
96
FROM
@@ -120,7 +107,7 @@ COMMENT ON FUNCTION api.br_afacode_decode(text)
120
107
IS ' Decodes a scientific AFAcode into a GeoJSON FeatureCollection for Brazil.' ;
121
108
;
122
109
123
- CREATE or replace FUNCTION api .co_afacode_decode (
110
+ CREATE or replace FUNCTION api .cm_afacode_decode (
124
111
p_code text
125
112
) RETURNS jsonb AS $f$
126
113
SELECT
@@ -129,28 +116,29 @@ CREATE or replace FUNCTION api.co_afacode_decode(
129
116
' geometry' , ST_AsGeoJSON(ST_Transform_Resilient(geom,4326 ,0 .005 ,0 .00000005 ),8 ,0 )::jsonb,
130
117
' id' , id,
131
118
' properties' , jsonb_build_object(
132
- ' area' , afa .co_cell_area (xyL[3 ]),
133
- ' side' , afa .co_cell_side (xyL[3 ]),
119
+ ' area' , afa .cm_cell_area (xyL[3 ]),
120
+ ' side' , afa .cm_cell_side (xyL[3 ]),
134
121
' base' ,' base16h' ,
135
- ' jurisd_base_id' ,170 ,
136
- ' truncated_code' ,(CASE WHEN length(id) <> length(code) THEN FALSE ELSE TRUE END)
122
+ ' jurisd_base_id' ,120 ,
123
+ ' isolabel_ext' , ' CM'
124
+ ' truncated_code' ,(CASE WHEN length(id) <> length(code) THEN TRUE ELSE FALSE END)
137
125
)
138
126
)))::jsonb
139
127
FROM
140
128
(
141
- SELECT code, hbig, afa .hBig_to_hex (hbig) AS id, afa .co_hBig_to_xyLRef (hbig) AS xyL, afa .co_decode (hbig) AS geom
129
+ SELECT code, hbig, afa .hBig_to_hex (hbig) AS id, afa .cm_hBig_to_xyLRef (hbig) AS xyL, afa .cm_decode (hbig) AS geom
142
130
FROM
143
131
(
144
- SELECT code, afa .co_hex_to_hBig (substring (code,1 ,11 )) AS hbig
132
+ SELECT code, afa .cm_hex_to_hBig (substring (code,1 ,10 )) AS hbig
145
133
FROM regexp_split_to_table(p_code,' ,' ) code
146
134
) a
147
135
) b
148
136
$f$ LANGUAGE SQL IMMUTABLE PARALLEL SAFE;
149
- COMMENT ON FUNCTION api .co_afacode_decode (text )
150
- IS ' Decodes a scientific AFAcode into a GeoJSON FeatureCollection for Colombia .' ;
137
+ COMMENT ON FUNCTION api .cm_afacode_decode (text )
138
+ IS ' Decodes a scientific AFAcode into a GeoJSON FeatureCollection for Cameroon .' ;
151
139
;
152
140
153
- CREATE or replace FUNCTION api .cm_afacode_decode (
141
+ CREATE or replace FUNCTION api .co_afacode_decode (
154
142
p_code text
155
143
) RETURNS jsonb AS $f$
156
144
SELECT
@@ -159,25 +147,43 @@ CREATE or replace FUNCTION api.cm_afacode_decode(
159
147
' geometry' , ST_AsGeoJSON(ST_Transform_Resilient(geom,4326 ,0 .005 ,0 .00000005 ),8 ,0 )::jsonb,
160
148
' id' , id,
161
149
' properties' , jsonb_build_object(
162
- ' area' , afa .cm_cell_area (xyL[3 ]),
163
- ' side' , afa .cm_cell_side (xyL[3 ]),
150
+ ' area' , afa .co_cell_area (xyL[3 ]),
151
+ ' side' , afa .co_cell_side (xyL[3 ]),
164
152
' base' ,' base16h' ,
165
- ' jurisd_base_id' ,120 ,
166
- ' truncated_code' ,(CASE WHEN length(id) <> length(code) THEN FALSE ELSE TRUE END)
153
+ ' jurisd_base_id' ,170 ,
154
+ ' isolabel_ext' , ' CO'
155
+ ' truncated_code' ,(CASE WHEN length(id) <> length(code) THEN TRUE ELSE FALSE END)
167
156
)
168
157
)))::jsonb
169
158
FROM
170
159
(
171
- SELECT code, hbig, afa .hBig_to_hex (hbig) AS id, afa .cm_hBig_to_xyLRef (hbig) AS xyL, afa .cm_decode (hbig) AS geom
160
+ SELECT code, hbig, afa .hBig_to_hex (hbig) AS id, afa .co_hBig_to_xyLRef (hbig) AS xyL, afa .co_decode (hbig) AS geom
172
161
FROM
173
162
(
174
- SELECT code, afa .cm_hex_to_hBig (substring (code,1 ,10 )) AS hbig
163
+ SELECT code, afa .co_hex_to_hBig (substring (code,1 ,11 )) AS hbig
175
164
FROM regexp_split_to_table(p_code,' ,' ) code
176
165
) a
177
166
) b
178
167
$f$ LANGUAGE SQL IMMUTABLE PARALLEL SAFE;
179
- COMMENT ON FUNCTION api .cm_afacode_decode (text )
180
- IS ' Decodes a scientific AFAcode into a GeoJSON FeatureCollection for Cameroon.' ;
168
+ COMMENT ON FUNCTION api .co_afacode_decode (text )
169
+ IS ' Decodes a scientific AFAcode into a GeoJSON FeatureCollection for Colombia.' ;
170
+ ;
171
+
172
+ CREATE or replace FUNCTION api .afacode_encode(
173
+ p_uri text ,
174
+ p_grid int DEFAULT 0 ,
175
+ p_iso text DEFAULT NULL
176
+ ) RETURNS jsonb AS $wrap$
177
+ SELECT
178
+ CASE p_iso
179
+ WHEN ' BR' THEN api .br_afacode_encode (u[1 ],u[2 ],u[3 ])
180
+ WHEN ' CM' THEN api .cm_afacode_encode (u[1 ],u[2 ],u[3 ])
181
+ WHEN ' CO' THEN api .co_afacode_encode (u[1 ],u[2 ],u[3 ])
182
+ END
183
+ FROM str_geouri_decode_new(p_uri) t(u)
184
+ $wrap$ LANGUAGE SQL IMMUTABLE PARALLEL SAFE;
185
+ COMMENT ON FUNCTION api .afacode_encode (text ,int ,text )
186
+ IS ' Wrapper for country-specific AFAcode encoders. Decodes a GeoURI and delegates encoding based on ISO country code.' ;
181
187
;
182
188
183
189
CREATE or replace FUNCTION api .afacode_decode(
@@ -186,9 +192,9 @@ CREATE or replace FUNCTION api.afacode_decode(
186
192
) RETURNS jsonb AS $wrap$
187
193
SELECT
188
194
CASE p_iso
189
- WHEN ' BR' THEN api .br_afacode_decode (list)
190
- WHEN ' CM' THEN api .cm_afacode_decode (list)
191
- WHEN ' CO' THEN api .co_afacode_decode (list)
195
+ WHEN ' BR' THEN api .br_afacode_decode (list)
196
+ WHEN ' CM' THEN api .cm_afacode_decode (list)
197
+ WHEN ' CO' THEN api .co_afacode_decode (list)
192
198
END
193
199
FROM natcod .reduxseq_to_list (p_code) u(list)
194
200
$wrap$ LANGUAGE SQL IMMUTABLE PARALLEL SAFE;
@@ -202,37 +208,114 @@ CREATE or replace FUNCTION api.afacode_decode_with_prefix(
202
208
) RETURNS jsonb AS $wrap$
203
209
SELECT api .afacode_decode (REPLACE(u[2 ],' .' ,' ' ),u[1 ])
204
210
FROM regexp_split_to_array(p_code,p_separator) u
205
- $wrap$ LANGUAGE SQL IMMUTABLE;
211
+ $wrap$ LANGUAGE SQL IMMUTABLE PARALLEL SAFE ;
206
212
COMMENT ON FUNCTION api .afacode_decode_with_prefix (text ,text )
207
213
IS ' Parses and decodes a prefixed AFAcode. Splits ISO prefix and code, and delegates to afacode_decode.' ;
208
214
;
209
- -- EXPLAIN ANALYZE SELECT api.afacode_decode_with_prefix('BR+D1A',18 );
215
+ -- EXPLAIN ANALYZE SELECT api.afacode_decode_with_prefix('BR+D1A');
210
216
217
+ -- LOGISTICS
211
218
212
- -- logistics
219
+ CREATE or replace FUNCTION api .br_afacode_encode_log(
220
+ p_lat float,
221
+ p_lon float,
222
+ p_u float,
223
+ p_isolabel_ext text
224
+ ) RETURNS jsonb AS $f$
225
+ SELECT
226
+ jsonb_build_object(' type' ,' FeatureCollection' ,' features' , jsonb_agg(jsonb_build_object(
227
+ ' type' ,' Feature' ,
228
+ ' geometry' , ST_AsGeoJSON(ST_Transform_Resilient(afa .br_decode (hbig),4326 ,0 .005 ,0 .00000005 ),8 ,0 )::jsonb,
229
+ ' id' , afa .hBig_to_hex (hbig),
230
+ ' properties' , jsonb_build_object(
231
+ ' area' , afa .br_cell_area (L),
232
+ ' side' , afa .br_cell_side (L),
233
+ ' base' ,' base32' ,
234
+ ' jurisd_base_id' ,76 ,
235
+ ' isolabel_ext' , p_isolabel_ext,
236
+ ' isolabel_ext_abbrev' , (SELECT abbrev FROM mvwjurisdiction_synonym_default_abbrev x WHERE x .isolabel_ext = p_isolabel_ext)
237
+ -- 'logistic_id', CASE p_type WHEN 2 THEN split_part(isolabel_ext,'-',1) || '-' || jurisd_local_id ELSE isolabel_ext END || '~' || short_code,
238
+ -- 'jurisd_local_id', jurisd_local_id
239
+ )
240
+ )))::jsonb
241
+ FROM afa .br_cell_nearst_level (p_u) a(L), afa .br_encode (p_lat,p_lon,L) b(hbig)
242
+ $f$ LANGUAGE SQL IMMUTABLE PARALLEL SAFE;
243
+ COMMENT ON FUNCTION api .br_afacode_encode (float,float,float)
244
+ IS ' Encodes lat/lon to AFAcode Logistics in Brazil. Returns a GeoJSON FeatureCollection with cell geometry and metadata.' ;
245
+ ;
213
246
214
- CREATE or replace FUNCTION api .osmcode_encode_postal(
215
- uri text ,
216
- grid int DEFAULT 0 ,
247
+ CREATE or replace FUNCTION api .cm_afacode_encode_log(
248
+ p_lat float,
249
+ p_lon float,
250
+ p_u float,
251
+ p_isolabel_ext text
252
+ ) RETURNS jsonb AS $f$
253
+ SELECT
254
+ jsonb_build_object(' type' ,' FeatureCollection' ,' features' , jsonb_agg(jsonb_build_object(
255
+ ' type' ,' Feature' ,
256
+ ' geometry' , ST_AsGeoJSON(ST_Transform_Resilient(afa .cm_decode (hbig),4326 ,0 .005 ,0 .00000005 ),8 ,0 )::jsonb,
257
+ ' id' , afa .hBig_to_hex (hbig),
258
+ ' properties' , jsonb_build_object(
259
+ ' area' , afa .cm_cell_area (L),
260
+ ' side' , afa .cm_cell_side (L),
261
+ ' base' ,' base32' ,
262
+ ' jurisd_base_id' ,120 ,
263
+ ' isolabel_ext' , p_isolabel_ext,
264
+ ' isolabel_ext_abbrev' , (SELECT abbrev FROM mvwjurisdiction_synonym_default_abbrev x WHERE x .isolabel_ext = p_isolabel_ext)
265
+ -- 'logistic_id', CASE p_type WHEN 2 THEN split_part(isolabel_ext,'-',1) || '-' || jurisd_local_id ELSE isolabel_ext END || '~' || short_code,
266
+ -- 'jurisd_local_id', jurisd_local_id
267
+ )
268
+ )))::jsonb
269
+ FROM afa .cm_cell_nearst_level (p_u) a(L), afa .cm_encode (p_lat,p_lon,L) b(hbig)
270
+ $f$ LANGUAGE SQL IMMUTABLE PARALLEL SAFE;
271
+ COMMENT ON FUNCTION api .cm_afacode_encode (float,float,float)
272
+ IS ' Encodes lat/lon to AFAcode Logistics in Cameroon. Returns a GeoJSON FeatureCollection with cell geometry and metadata.' ;
273
+ ;
274
+
275
+ CREATE or replace FUNCTION api .co_afacode_encode_log(
276
+ p_lat float,
277
+ p_lon float,
278
+ p_u float,
279
+ p_isolabel_ext text
280
+ ) RETURNS jsonb AS $f$
281
+ SELECT
282
+ jsonb_build_object(' type' ,' FeatureCollection' ,' features' , jsonb_agg(jsonb_build_object(
283
+ ' type' ,' Feature' ,
284
+ ' geometry' , ST_AsGeoJSON(ST_Transform_Resilient(afa .co_decode (hbig),4326 ,0 .005 ,0 .00000005 ),8 ,0 )::jsonb,
285
+ ' id' , afa .hBig_to_hex (hbig),
286
+ ' properties' , jsonb_build_object(
287
+ ' area' , afa .co_cell_area (L),
288
+ ' side' , afa .co_cell_side (L),
289
+ ' base' ,' base32' ,
290
+ ' jurisd_base_id' ,170 ,
291
+ ' isolabel_ext' , p_isolabel_ext,
292
+ ' isolabel_ext_abbrev' , (SELECT abbrev FROM mvwjurisdiction_synonym_default_abbrev x WHERE x .isolabel_ext = p_isolabel_ext)
293
+ -- 'logistic_id', CASE p_type WHEN 2 THEN split_part(isolabel_ext,'-',1) || '-' || jurisd_local_id ELSE isolabel_ext END || '~' || short_code,
294
+ -- 'jurisd_local_id', jurisd_local_id
295
+ )
296
+ )))::jsonb
297
+ FROM afa .co_cell_nearst_level (p_u) a(L), afa .co_encode (p_lat,p_lon,L) b(hbig)
298
+ $f$ LANGUAGE SQL IMMUTABLE PARALLEL SAFE;
299
+ COMMENT ON FUNCTION api .co_afacode_encode (float,float,float)
300
+ IS ' Encodes lat/lon to AFAcode Logistics in Colombia. Returns a GeoJSON FeatureCollection with cell geometry and metadata.' ;
301
+ ;
302
+
303
+ CREATE or replace FUNCTION api .afacode_encode_log(
304
+ p_uri text ,
305
+ p_grid int DEFAULT 0 ,
217
306
p_isolabel_ext text DEFAULT NULL
218
307
) RETURNS jsonb AS $wrap$
219
308
SELECT
220
309
CASE split_part(p_isolabel_ext,' -' ,1 )
221
- WHEN ' BR' THEN osmc .encode_postal_br (ST_Transform(ST_SetSRID(ST_MakePoint(u[2 ],u[1 ]),4326 ),952019 ),u[4 ],grid,p_isolabel_ext)
222
- WHEN ' CM' THEN osmc .encode_postal_cm (ST_Transform(ST_SetSRID(ST_MakePoint(u[2 ],u[1 ]),4326 ), 32632 ),u[4 ],grid,p_isolabel_ext)
223
- WHEN ' CO' THEN osmc .encode_postal_co (ST_Transform(ST_SetSRID(ST_MakePoint(u[2 ],u[1 ]),4326 ), 9377 ),u[4 ],grid,p_isolabel_ext)
224
- WHEN ' UY' THEN osmc .encode_postal_uy (ST_Transform(ST_SetSRID(ST_MakePoint(u[2 ],u[1 ]),4326 ), 32721 ),u[4 ],grid,p_isolabel_ext)
225
- WHEN ' EC' THEN osmc .encode_postal_ec (ST_Transform(ST_SetSRID(ST_MakePoint(u[2 ],u[1 ]),4326 ), 32717 ),u[4 ],grid,p_isolabel_ext)
226
- WHEN ' SV' THEN osmc .encode_postal_sv (ST_Transform(ST_SetSRID(ST_MakePoint(u[2 ],u[1 ]),4326 ), 5399 ),u[4 ],grid,p_isolabel_ext)
310
+ WHEN ' BR' THEN api .br_afacode_encode_log (u[1 ],u[2 ],u[3 ],p_isolabel_ext)
311
+ WHEN ' CM' THEN api .cm_afacode_encode_log (u[1 ],u[2 ],u[3 ],p_isolabel_ext)
312
+ WHEN ' CO' THEN api .co_afacode_encode_log (u[1 ],u[2 ],u[3 ],p_isolabel_ext)
227
313
END
228
- FROM (SELECT str_geouri_decode(uri) ) t(u)
229
-
230
- $wrap$ LANGUAGE SQL IMMUTABLE;
314
+ FROM str_geouri_decode_new(p_uri) t(u)
315
+ $wrap$ LANGUAGE SQL IMMUTABLE PARALLEL SAFE;
231
316
COMMENT ON FUNCTION api .osmcode_encode_postal (text ,int ,text )
232
317
IS ' Encodes Geo URI to Postal OSMcode. Wrap for osmcode_encode_postal.'
233
318
;
234
- -- EXPLAIN ANALYZE SELECT api.osmcode_encode_postal('geo:-15.5,-47.8',0,'BR-GO-Planaltina');
235
- -- EXPLAIN ANALYZE SELECT api.osmcode_encode('geo:-15.5,-47.8',0);
236
319
237
320
CREATE or replace FUNCTION api .osmcode_encode(
238
321
uri text ,
@@ -272,72 +355,11 @@ $wrap$ LANGUAGE SQL IMMUTABLE;
272
355
COMMENT ON FUNCTION api .osmcode_encode (text ,int )
273
356
IS ' Encodes Geo URI (no context) to logistic OSMcode.'
274
357
;
358
+ -- EXPLAIN ANALYZE SELECT api.afacode_encode_log('geo:-15.5,-47.8',0,'BR-GO-Planaltina');
275
359
-- EXPLAIN ANALYZE SELECT api.osmcode_encode('geo:3.461,-76.577');
276
360
-- EXPLAIN ANALYZE SELECT api.osmcode_encode('geo:-15.5,-47.8');
277
361
278
362
279
- CREATE or replace FUNCTION api .osmcode_decode_postal_absolute(
280
- p_code text , -- e.g.: '645' in 16h1c
281
- p_iso text -- e.g.: 'BR'
282
- ) RETURNS jsonb AS $f$
283
- SELECT jsonb_build_object(
284
- ' type' , ' FeatureCollection' ,
285
- ' features' ,
286
- (
287
- SELECT jsonb_agg(
288
- ST_AsGeoJSONb(ST_Transform_resilient(v .geom ,4326 ,0 .005 ,0 .00000005 ),8 ,0 ,null ,
289
- jsonb_strip_nulls(jsonb_build_object(
290
- ' code' , code,
291
- ' area' , ST_Area(v .geom ),
292
- ' side' , SQRT(ST_Area(v .geom )),
293
- ' base' , ' 32nvu' ,
294
- ' jurisd_local_id' , t .jurisd_local_id ,
295
- ' jurisd_base_id' , v .jurisd_id , -- ***
296
- ' isolabel_ext' , t .isolabel_ext ,
297
- ' short_code' , CASE WHEN upper_p_iso IN (' CO' ) THEN upper_p_iso || ' -' || t .jurisd_local_id ELSE t .isolabel_ext END || ' ~' || t .short_code ,
298
- ' scientic_code' , CASE
299
- WHEN upper_p_iso IN (' BR' ,' UY' ) THEN osmc .encode_16h1c (natcod .vbit_to_baseh (osmc .cbits_b32nvu_to_16h (codebits,jurisd_id),16 ,true),jurisd_id)
300
- ELSE natcod .vbit_to_baseh (osmc .cbits_b32nvu_to_16h (codebits,jurisd_id),16 ,true)
301
- END
302
- ))
303
- )::jsonb) AS gj
304
- FROM
305
- (
306
- SELECT DISTINCT upper (p_iso) AS upper_p_iso, code, natcod .b32nvu_to_vbit (code) AS codebits
307
- FROM regexp_split_to_table(upper (p_code),' ,' ) code
308
- ) c
309
- LEFT JOIN LATERAL
310
- (
311
- SELECT osmc .extract_jurisdbits (cbits) AS jurisd_id, cbits,
312
- ggeohash .draw_cell_bybox (ggeohash .decode_box2 (osmc .vbit_withoutL0 (osmc .vbit_withoutL0 ((osmc .cbits_b32nvu_to_16h (codebits,osmc .extract_jurisdbits (cbits))),osmc .extract_jurisdbits (cbits)),osmc .extract_jurisdbits (cbits)),bbox, CASE WHEN c .upper_p_iso = ' EC' THEN TRUE ELSE FALSE END),false,ST_SRID(geom)) AS geom
313
- FROM osmc .coverage
314
- WHERE is_country IS TRUE AND isolabel_ext = c .upper_p_iso AND ( ( osmc .cbits_16h_to_b32nvu (osmc .extract_L0bits (cbits),osmc .extract_jurisdbits (cbits)) # codebits::bit(5) ) = 0::bit(5) )
315
- ) v
316
- ON TRUE
317
-
318
- -- responsável pelo código logístico
319
- LEFT JOIN LATERAL ( SELECT * FROM osmc .encode_short_code (c .code ,v .jurisd_id ::bit (8 )|| osmc .cbits_b32nvu_to_16h (c .codebits ,v .jurisd_id ),null ,ST_Centroid(v .geom )) ) t ON TRUE
320
-
321
- WHERE
322
- CASE WHEN upper_p_iso = ' UY' THEN natcod .vbit_to_baseh (osmc .cbits_b32nvu_to_16h (codebits,v .jurisd_id ),16 ,true) NOT IN (' 0eg' ,' 10g' ,' 12g' ,' 00r' ,' 12r' ,' 0eh' ,' 05q' ,' 11q' ) ELSE TRUE END
323
- )
324
- )
325
- $f$ LANGUAGE SQL IMMUTABLE;
326
- COMMENT ON FUNCTION api .osmcode_decode_postal_absolute (text ,text )
327
- IS ' Decode absolute postal OSMcode.'
328
- ;
329
- -- EXPLAIN ANALYZE SELECT api.osmcode_decode_postal_absolute('6HRJ27TB','CO');
330
-
331
- CREATE or replace FUNCTION api .osmcode_decode_postal_absolute(
332
- p_code text
333
- ) RETURNS jsonb AS $wrap$
334
- SELECT api .osmcode_decode_postal_absolute (REPLACE(u[2 ],' .' ,' ' ),u[1 ])
335
- FROM regexp_split_to_array(p_code,' ~' ) u
336
- $wrap$ LANGUAGE SQL IMMUTABLE;
337
- COMMENT ON FUNCTION api .osmcode_decode_postal_absolute (text )
338
- IS ' Decode Postal OSMcode. Wrap for osmcode_decode_postal_absolute.'
339
- ;
340
- -- EXPLAIN ANALYZE SELECT api.osmcode_decode_postal_absolute('CO~D6MCY0');
341
363
342
364
CREATE or replace FUNCTION api .osmcode_decode_postal(
343
365
p_code text ,
0 commit comments