@@ -37,6 +37,7 @@ CREATE or replace FUNCTION api.osmcode_encode_scientific(
37
37
WHEN ' CO' THEN osmc .encode_scientific_co (ST_Transform(ST_SetSRID(ST_MakePoint(u[2 ],u[1 ]),4326 ), 9377 ),u[4 ],grid)
38
38
WHEN ' UY' THEN osmc .encode_scientific_uy (ST_Transform(ST_SetSRID(ST_MakePoint(u[2 ],u[1 ]),4326 ), 32721 ),u[4 ],grid)
39
39
WHEN ' EC' THEN osmc .encode_scientific_ec (ST_Transform(ST_SetSRID(ST_MakePoint(u[2 ],u[1 ]),4326 ), 32717 ),u[4 ],grid)
40
+ WHEN ' SV' THEN osmc .encode_scientific_sv (ST_Transform(ST_SetSRID(ST_MakePoint(u[2 ],u[1 ]),4326 ), 5399 ),u[4 ],grid)
40
41
END
41
42
FROM ( SELECT str_geouri_decode(uri) ) t(u)
42
43
$wrap$ LANGUAGE SQL IMMUTABLE;
@@ -144,6 +145,7 @@ CREATE or replace FUNCTION api.osmcode_decode_scientific_absolute(
144
145
WHEN p_base <> 18 AND length(code16h) > 12 AND up_iso IN (' BR' ) THEN substring (code16h,1 ,12 )
145
146
WHEN p_base <> 18 AND length(code16h) > 11 AND up_iso IN (' EC' ,' CO' ,' UY' ) THEN substring (code16h,1 ,11 )
146
147
WHEN p_base <> 18 AND length(code16h) > 10 AND up_iso IN (' CM' ) THEN substring (code16h,1 ,10 )
148
+ WHEN p_base <> 18 AND length(code16h) > 9 AND up_iso IN (' SV' ) THEN substring (code16h,1 ,9 )
147
149
WHEN p_base = 18 AND length(code) > 11 AND up_iso IN (' BR' ) THEN substring (code,1 ,11 )
148
150
WHEN p_base = 18 AND length(code) > 10 AND up_iso IN (' UY' ) THEN substring (code,1 ,10 )
149
151
ELSE (CASE WHEN p_base= 18 THEN code ELSE code16h END)
@@ -154,6 +156,7 @@ CREATE or replace FUNCTION api.osmcode_decode_scientific_absolute(
154
156
WHEN p_base <> 18 AND length(code16h) > 12 AND up_iso IN (' BR' ) THEN TRUE
155
157
WHEN p_base <> 18 AND length(code16h) > 11 AND up_iso IN (' EC' ,' CO' ,' UY' ) THEN TRUE
156
158
WHEN p_base <> 18 AND length(code16h) > 10 AND up_iso IN (' CM' ) THEN TRUE
159
+ WHEN p_base <> 18 AND length(code16h) > 9 AND up_iso IN (' SV' ) THEN TRUE
157
160
WHEN p_base = 18 AND length(code) > 11 AND up_iso IN (' BR' ) THEN TRUE
158
161
WHEN p_base = 18 AND length(code) > 10 AND up_iso IN (' UY' ) THEN TRUE
159
162
ELSE NULL
@@ -164,6 +167,7 @@ CREATE or replace FUNCTION api.osmcode_decode_scientific_absolute(
164
167
WHEN length(code16h) > 12 AND up_iso IN (' BR' ) THEN natcod .baseh_to_vbit (substring (code16h,1 ,12 ),16 )
165
168
WHEN length(code16h) > 11 AND up_iso IN (' EC' ,' CO' ,' UY' ) THEN natcod .baseh_to_vbit (substring (code16h,1 ,11 ),16 )
166
169
WHEN length(code16h) > 10 AND up_iso IN (' CM' ) THEN natcod .baseh_to_vbit (substring (code16h,1 ,10 ),16 )
170
+ WHEN length(code16h) > 10 AND up_iso IN (' SV' ) THEN natcod .baseh_to_vbit (substring (code16h,1 ,9 ),16 )
167
171
ELSE natcod .baseh_to_vbit (code16h,16 )
168
172
END AS codebits,
169
173
@@ -186,8 +190,8 @@ CREATE or replace FUNCTION api.osmcode_decode_scientific_absolute(
186
190
WHERE is_country IS TRUE AND isolabel_ext = c .up_iso -- cobertura nacional apenas
187
191
AND
188
192
CASE
189
- WHEN up_iso IN (' CO' ,' CM' ) THEN ( ( osmc .extract_L0bits (cbits) # codebits::bit(4) ) = 0::bit(4) ) -- 1 dígitos base16h
190
- ELSE ( ( osmc .extract_L0bits (cbits) # codebits::bit(8) ) = 0::bit(8) ) -- 2 dígitos base16h
193
+ WHEN up_iso IN (' CO' ,' CM' , ' SV ' ) THEN ( ( osmc .extract_L0bits (cbits) # codebits::bit(4) ) = 0::bit(4) ) -- 1 dígitos base16h
194
+ ELSE ( ( osmc .extract_L0bits (cbits) # codebits::bit(8) ) = 0::bit(8) ) -- 2 dígitos base16h
191
195
END
192
196
) v
193
197
0 commit comments