Skip to content

Funções para APIs de encode/decode das GeoURIs generalizadas #10

Description

@ppKrauss

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

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Fields

No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions