osmc:Metodologia/Algoritmo SQL/Lib/Cpp: mudanças entre as edições

De Documentação
Sem resumo de edição
(revisando)
Linha 12: Linha 12:


neighbors_raw
neighbors_raw




Linha 47: Linha 45:
osmc.neighbors_raw
osmc.neighbors_raw


== Decisões de projeto pendentes ==
* Número de argumentos e complexidade das arrays: o que é mais rápido?<br/> uma função f(x,y,z) ou uma função de array f(xyz_array)?  Não só o código, mas o custo de chamar uma função com 1 argumento e com vários.
** Para ser amigo do usuário final, basta criar "funções wrap", para sobrecarga nos diferentes estilo de passagem de argumento (por array ou por multiplos parametros).


criar wrap para funções com mais de um argumento.
* "IMMUTABLE" "STRICT", etc. o que precisa? em wrap para funções c++? ver em libs de alta performance (ex. MadLib) as boas práticas
 
IMMUTABLE ou LANGUAGE C STRICT em wrap para funções c++? referencia de alta performance Postrgesql https://github.com/madlib


Curiosidade: implementação em Scala, sugere uso das funções Contains e Overlaps, https://github.com/locationtech/geomesa/blob/main/geomesa-z3/src/main/scala/org/locationtech/geomesa/zorder/sfcurve/Z2.scala
== Lembretes
* https://madlib.apache.org/  e [https://github.com/madlib fontes] PostgreSQL para entender como paralelizar e declarar funções de alta performance
* [https://github.com/locationtech/geomesa/blob/main/geomesa-z3/src/main/scala/org/locationtech/geomesa/zorder/sfcurve/Z2.scala Curva-Z no GeoMesa]. Implementação em Scala, sugere uso das funções *Contains* e *Overlaps*.

Edição das 12h40min de 21 de agosto de 2024

Funções já feitas em https://github.com/osm-codes/NaturalCodes/blob/main/src-c:

interleaveBits

deinterleaveBits

xy_to_cover

deinterleaveBitsOdd

deinterleaveBitsEven

neighbors_raw


para as proximas, da uma olhada nas "oficiais" em https://wiki.addressforall.org/doc/osmc:Metodologia/Algoritmo_SQL/Lib#Construtor_do_identificador_cbits


Funções para estimar custo em horas, para copiar e colar template do PostGIS (para Afacodes CM):


Desafios: dado um ID de célula, retornar a array das vizinhas4 top/botton/left/right, https://en.wikipedia.org/wiki/Z-order_curve#Coordinate_values

PS: supor apenas células quadradas, caso retangular avaliamos numa segunda etapa (aparentemente não terá problema pois a topologia é a mesma - apenas rotaciona).


natcod.hiddenBig_to_vBit

natcod.vBit_to_hiddenBig

grid_cm.xy_to_cover (feita)

grid_cm.cover_to_xy

grid_cm.cover_to_xy

osmc.cell_relate (https://github.com/osm-codes/GGeohash/blob/main/src/step03def-lib.sql)

osmc.neighborsl0

osmc.neighbors_raw

Decisões de projeto pendentes

  • Número de argumentos e complexidade das arrays: o que é mais rápido?
    uma função f(x,y,z) ou uma função de array f(xyz_array)? Não só o código, mas o custo de chamar uma função com 1 argumento e com vários.
    • Para ser amigo do usuário final, basta criar "funções wrap", para sobrecarga nos diferentes estilo de passagem de argumento (por array ou por multiplos parametros).
  • "IMMUTABLE" "STRICT", etc. o que precisa? em wrap para funções c++? ver em libs de alta performance (ex. MadLib) as boas práticas

== Lembretes