A função str_geouri_decode foi implementada apenas para prova de conceito, agora podemos agregar restante da funcionalidade. Em geral ela vai rodar no PostgREST com valores da regex NGINX.
Requisitos encode
- Incorporar incerteza, ou seja sintaxe com a variável
u. Por exemplo geo:323482,4306480;u=2000.
- Novo tipo de retorno: como GeoURI comporta altitude, a array teria 4 partes, [Lat,Lon,Alt,Unc]
Sugestão de nova função:
CREATE or replace FUNCTION str_geouri_decode(uri text) RETURNS float[] as $f$
SELECT CASE
WHEN cardinality(a)>=2 AND u IS NULL THEN a || array[null]::float[]
WHEN cardinality(a)=2 AND u IS NOT NULL THEN a || array[null,u]::float[]
WHEN cardinality(a)=3 AND u IS NOT NULL THEN a || array[u]::float[]
ELSE NULL
END
FROM (
SELECT regexp_split_to_array(regexp_replace(uri,'^geo:|;.+$','','ig'),',')::float[] AS a,
(regexp_match(uri,';u=([0-9\.]+)'))[1] AS u
) t
$f$ LANGUAGE SQL IMMUTABLE;
Requisitos decode
Conforme a proposta de 2020, de expansão do GeoURI, e conforme API do OSM-codes, o geocódigo pode ser fornecido diretamente, para que a API decodifique (retorne decode).
- URL do tipo
osm.code/CO-xpto-1234
- GeoURI do tipo
geo:CO-xpto-1234
A função str_geouri_decode foi implementada apenas para prova de conceito, agora podemos agregar restante da funcionalidade. Em geral ela vai rodar no PostgREST com valores da regex NGINX.
Requisitos encode
u. Por exemplogeo:323482,4306480;u=2000.Sugestão de nova função:
Requisitos decode
Conforme a proposta de 2020, de expansão do GeoURI, e conforme API do OSM-codes, o geocódigo pode ser fornecido diretamente, para que a API decodifique (retorne decode).
osm.code/CO-xpto-1234geo:CO-xpto-1234