[Gastosabertos] Organização dos dados geoespaciais
Andres MRM
andres em inventati.org
Quarta Julho 15 02:15:04 UTC 2015
Criei a coluna extra para marcar o que já se tentou localizar, e os métodos
que você falou para pegar pontos/regiões (mais ainda não testei esses últimos,
provavelmente estão errados...) [0].
Sobre esse SRID, erm... Como uso isso?
Há um tempo atrás tínhamos conversado sobre como mandar os pontos para serem
colocados no mapa, de forma a não ser um pacote de dados muito grande.
Esse endpoint "minlist" [1] busca fazer isso mandando todos os pontos mapeados
de um ano. Porém, apenas a lat, lon e o UID deles. Assim é o mínimo para o
mapa conseguir desenhar todos eles e poder pedir mais informações quando
clicados. Aparentemente funciona, mas é um bom jeito de fazer mesmo?
(Sei que você tinha dito para dar preferência ao GeoJSON, mas nesse caso achei
melhor otimizar e mandar as lat,log direto... Ou será que deveria montar um
GeoJSON com todos os pontos dentro antes de enviar?)
[0]: https://github.com/andresmrm/gastos_abertos/blob/master/gastosabertos/execucao/models.py
[1]: https://github.com/andresmrm/gastos_abertos/blob/master/gastosabertos/execucao/views.py#L46-L59
Quoting Luiz Armesto (2015-07-14 13:05:25)
> Se são poucas regiões e poucos pontos, então a principio acho que podemos usar
> queries espaciais mesmo.
>
> Então eu faria assim:
>
> Primeiro criaria um método ou uma property no model de região que devolveria o
> resultado da query dos pontos que estão naquela região.
> Faria o mesmo no model de ponto para retornar a região. (devolva o resultado da
> query e não diretamente os pontos/regiões, para que seja possível fazer novas
> filtragens a partir do resultado devolvido)
>
> Sempre que precisar dos pontos de uma região ou das regiões de um ponto eu
> usaria esses métodos. Desse modo se mais pra frente tiver outras necessidades,
> ou percebermos problema de performance, e a modelagem for alterada, é só mudar
> a implementação desses dois métodos.
>
>
> PS.: Não esquece de definir explicitamente o srid das colunas geometricas.
>
> 2015-07-14 12:40 GMT-03:00 Andres MRM <andres em inventati.org>:
>
>
> Entendo. A ideia que tenho é usar as subprefeituras como regiões fixas. E
> colocar em que subprefeitura cada despesa está.
> Ou seja, seriam 32 (?) regiões e ~10K pontos distribuídos nelas.
> Mas isso é para dar as funcionalidades básicas que comentei anteriormente,
> não
> sei se vamos além disso...
>
>
> Quoting Luiz Armesto (2015-07-14 12:04:17)
> > As regiões são fixas ou com o tempo serão incluidas regiões novas? São
> apenas
> > as regiões oficiais ou terá regiões personalizadas? A relação seria de
> uma
> > região para muitos pontos ou de muitas regiões para muitos pontos?
> >
> > Tem que avaliar e decidir a modelagem. Se a relação entre ponto e região
> será
> > armazenada no banco de dados ou será obtida por query espacial. Para
> decidir
> > isso melhor seria bom ter uma ideia da quantidade de pontos que serão
> > armazenados, quantidade de regiões, casos de uso e restrições, para saber
> qual
> > opção é melhor.
> >
> > Se teremos muitos pontos e as regiões são fixas, então armazenar a
> relação é
> > uma boa pois é mais barato fazer uma query por relação do que uma query
> > espacial, principalmente quando temos muitos pontos.
> >
> > Se não tiver tantos pontos, a query espacial não é tão custosa e
> armazenar a
> > relação pode ser desnecessário.
> >
> > Se as regiões não são fixas, caso seja salva a relação com pontos teremos
> que
> > cada vez que uma região for adicionada/editada/removida atualizar as
> relações
> > com os pontos. Se for usada query espacial, então não tem problema ter
> > alterações nas regiões, sempre pegaremos as relações corretas.
> >
> > 2015-07-14 11:41 GMT-03:00 Andres MRM <andres em inventati.org>:
> >
> >
> > Quoting Luiz Armesto (2015-07-14 11:30:49)
> > > Cria uma outra coluna e salva nela o status do processamento. Não é
> uma
> > boa
> > > usar o valor da coluna "point" para inferir algo que seria melhor
> > armazenado
> > > explicitamente.
> >
> > Ok.
> >
> > > Como estamos usando um banco relacional, o melhor é criar uma
> tabela de
> > regiões
> > > e relacionar execucao com regiao.
> > >
> > > Qual é o uso de armazenar em qual regiao esta uma execucao?
> agilizar
> > alguma
> > > filtragem ou busca sem precisar fazer query espacial?
> >
> > Erm... Não sei bem. Imagino que em alguns momentos vamos querer
> mostrar em
> > que
> > região está uma despesa.
> > Por exemplo, quando clicar em um ponto e mostrar todas as informações
> dele,
> > a
> > região deve estar lá. Ou então quando quisermos mostrar, em um mapa,
> o
> > total
> > gasto em cada região.
> > Como essas informações seriam obtidas?
> > _______________________________________________
> > Gastosabertos mailing list
> > Gastosabertos em lists.okfn.org
> > https://lists.okfn.org/mailman/listinfo/gastosabertos
> >
> >
> >
> >
> > --
> > Luiz Armesto
> _______________________________________________
> Gastosabertos mailing list
> Gastosabertos em lists.okfn.org
> https://lists.okfn.org/mailman/listinfo/gastosabertos
>
>
>
>
> --
> Luiz Armesto
Mais detalhes sobre a lista de discussão Gastosabertos