GithubHelp home page GithubHelp logo

interruptorpt / ate-onde-chega-cultura Goto Github PK

View Code? Open in Web Editor NEW
23.0 23.0 16.0 2.21 MB

Mapa interativo dos equipamentos culturais em Portugal

Home Page: https://interruptorpt.github.io/ate-onde-chega-cultura/

License: GNU General Public License v3.0

HTML 14.59% Kotlin 0.44% Ruby 3.99% Swift 1.19% Objective-C 0.11% Dart 32.33% CMake 20.46% C++ 8.12% C 1.97% Python 9.30% Shell 7.51%
data-visualization hacktoberfest hacktoberfest2020 maps wikidata

ate-onde-chega-cultura's People

Contributors

aariops avatar andreisantos avatar brunomiguel avatar gustavosilvappb avatar hugopeixoto avatar kiiran avatar lapisdecor avatar lima21 avatar marado avatar mendesmcmg avatar pedrorio avatar tcarreira avatar tcarrondo avatar waldyrious avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

ate-onde-chega-cultura's Issues

geolocalização no mapa global

Era interessante poder abrir o mapa global e ter um botãozito para nos fazer zoom na nossa localização actual (se quisermos ver o que há perto de nós!).

Wikidata queries para outros espaços

No seguimento do PR #1 do @marado, ir buscar as queries de Wikidata para os seguintes equipamentos culturais em Portugal:

  • teatros
  • cinemas
  • museus
  • recintos de espectáculo
  • galerias de arte

O PR deve conter os ficheiros HTML.

Refatorizar queries e páginas html

Agora que existe uma forma de mostrar tudo num só mapa, proponho o seguinte:

  • eliminar os vários ficheiros separados {bibliotecas,cinamas,galerias,...}.html
  • juntar as queries num único sítio (eg: 1 ficheiro por query?)
  • juntar o que está a ser feito em #28 e passar a consumir o conteúdo estático

O que te parece @marado ?

Copiar o ficheiro .gitignore para a pasta root do repositório?

A aplicação mobile tem um .gitignore que está fora do root do projecto, não sei se isto tem implicações visto que para abrir o projecto mobile abro a pasta correspondente, mas a documentação do github diz que o .gitignore deve estar no root.

No entanto, isto também põe um problema para quem desenvolve porque se abrimos o projecto a partir do seu root verdadeiro ficamos com o projecto mobile como subpasta o que pode não dar muito jeito por exemplo no android-studio.

Qual é a solução? Ter dois .gitignore?

Melhoria dos dados no Wikidata

Além de afinarmos as queries de Wikidata (#2), convém irmos melhorando a qualidade dos dados lá disponibilizados.

  • Verificação automatizada:

    • através de bases de dados com listagens de equipamentos (quais?)
  • Verificação manual

Criar o Mapa

Era boa ideia um query que tivesse tudo para termos uma ideia do mapa.
A segunda fase seria contruir o mapa. Não sei se é para ser OpenStreetMaps ou outra coisa.

A malta do Flutter podia fazer também uma app com o mapa.

visão por distrito?

Em #16 (comment) temos uma visualização interessante (com divisão por distrito), que se calhar podíamos de alguma forma replicar, por uma questão de usabilidade.

Melhorar documentação de como contribuir

Quando resolvermos os issues #53 , #51 e #48, convinha expandir o README para explicar melhor como se pode contribuir, quer do ponto de vista dos dados no Wikidata, quer do software que os agrega e exibe (este repositório).

Na parte relativa ao Wikidata, por exemplo, algo semelhante ao que comentei aqui podia ser uma base:

A atualização é simples, basta ir ao link do item, http://www.wikidata.org/entity/Q100871052, e carregar no botão de editar aqui:

Screenshot 2020-10-26 at 14 54 31

Após gravar, os dados ficam logo live, podendo haver um delay de alguns segundos para o query service o apanhar.

Além de ajustes a items existentes, fará sentido também mencionar opções de importação de dados, nomeadamente com recurso ao OpenRefine, QuickStatements, Mix'n'Match, OSM.Wikidata.link, e outras ferramentas.

imagem em falta

adicionou-se ao mapa global a opção de monumentos, mas falta incluir a imagem images/account_balance24px.svg

Fazer o snap da App

É preciso fazer o snap da app.
Quem ficar responsável por isso vai ter também de manter o snap, porque é preciso conta no snapcraft.io
Manter o snap, é básicamente fazer um novo build, quando há actualizações de segurança (carregar num notão no site e publicar a nova build como release nos canais).
As alterações ao ficheiro de configuração do snap podem ser feitas por qualquer pessoa, não dependem da conta.

Deixar mais claro o que é o projeto (do ponto de vista tecnológico)

A intenção do projeto parece estar bem explícita, porém do ponto de vista tecnológico nem tanto. Na raiz do projeto você tem vários arquivos HTML, mas também tem uma pasta de um app mobile, não fica claro se é um projeto Web ou Mobile (ou ambos). Seria bom deixar mais claro isso no README.md principal, dizer que existem dois subprojetos etc. Além disso, deveria organizar os arquivos em pasta por subprojeto, por exemplo criar uma pasta para Web.

tentar ter uma "página web única" para os vários mapas

Temos actualmente uma série de HTMLs estáticos em que a única coisa que muda é o texto do header e a query wikidata... Talvez usar uma ferramenta de templating ou algo do género fosse bom para manter só um .html em vez de vários "iguais".

Cache dos dados wikidata

Preparar um script que faça download dos dados das queries, e os guarde em formato estático (eg: json)
Publicar esses dados num sítio acessível (outro branch?)

  • download json
  • encontrar as queries nos ficheiros html
  • github actions para publicar os json -> #51

Cache dos dados em formato CSV ou TSV

O formato do JSON para a cache dos dados do Wikidata (#47) é consideravelmente ruidoso e ocupa bastante espaço com dados que não precisamos.

Exemplo do JSON que temos agora:
-{
-    "head": {
-        "vars": [
-            "item",
-            "itemLabel",
-            "geo"
-        ]
-    },
-    "results": {
-        "bindings": [
-            {
+                "geo": {
-                    "datatype": "http://www.opengis.net/ont/geosparql#wktLiteral",
-                    "type": "literal",
+                    "value": "Point(-9.147787 38.706746)"
-                },
+                "item": {
-                    "type": "uri",
+                    "value": "http://www.wikidata.org/entity/Q99845706"
-                },
+                "itemLabel": {
-                    "type": "literal",
+                    "value": "A Pequena Galeria",
-                    "xml:lang": "pt"
-                }
-            },
-            {
+                "geo": {
-                    "datatype": "http://www.opengis.net/ont/geosparql#wktLiteral",
-                    "type": "literal",
+                    "value": "Point(-16.90333 32.64816)"
-                },
+                "item": {
-                    "type": "uri",
+                    "value": "http://www.wikidata.org/entity/Q76955108"
-                },
+                "itemLabel": {
-                    "type": "literal",
+                    "value": "Capela de Nossa Senhora da Oliveira",
-                    "xml:lang": "pt"
-                }
-            }
-        ]
-    }
-}
Exemplo do JSON que realmente precisamos:
- [
-    {
+        "item": "http://www.wikidata.org/entity/Q99845706",
+        "itemLabel": "A Pequena Galeria",
+        "geo": "Point(-9.147787 38.706746)"
-    },
-    {
+        "item": "http://www.wikidata.org/entity/Q76955108",
+        "itemLabel": "Capela de Nossa Senhora da Oliveira",
+        "geo": "Point(-16.90333 32.64816)"
-    }
-]

Ou ainda melhor, em TSV:

item	itemLabel	geo
http://www.wikidata.org/entity/Q99845706	A Pequena Galeria	Point(-9.147787 38.706746)
http://www.wikidata.org/entity/Q76955108	Capela de Nossa Senhora da Oliveira	Point(-16.90333 32.64816)

Não sei se ao implementarmos a conversão para GeoJSON (#48) iremos substituir os dados e a forma como montamos o mapa.html; mas caso decidamos manter os dados brutos em paralelo ao GeoJSON, pode ser vantajoso usar um formato mais compacto e mais legível. Citando o meu comentário em #47:

talvez possamos fazer o download em csv ou tsv? Assim os ficheiros ficam mais pequenos, e até fica mais fácil consultá-los no github porque são mostrados como tabelas.

links no mapa global

Pode ser o link para o item no wikidata, como primeiro passo, e numa passo futuro melhorar as queries para fazer algo do género mostrar o site oficial se tiver, caso contrário mostrar a página wikipédia (pt ou en) se tiver, caso contrário mostrar o item no wikidata.

Converter o JSON em GeoJSON

☐ download json

Em relação ao formato, penso que guardar diretamente em GeoJSON pode ser a melhor opção, porque não só os dados ficam semanticamente anotados, como quer o Leaflet quer o próprio GitHub conseguem fazer rendering diretamente de dados em GeoJSON, não sendo preciso qualquer processamento. Até dá para configurar o GeoJSON para usar ícones personalizados (do conjunto Maki) e color-coding dos pontos por categoria!

Estive a fazer umas experiências e basicamente basta transformar os dados brutos do Wikidata no GeoJSON equivalente, o que pode ser feito de forma completamente determinística. Por exemplo, esta entrada de uma lista de resultados do Wikidata (exportado como JSON):

{
  "item": "http://www.wikidata.org/entity/Q71890449",
  "itemLabel": "Biblioteca Municipal de Figueiró dos Vinhos",
  "geo": "Point(-8.273731 39.900399)"
}

...seria convertido neste GeoJSON (mostrado em notação diff para salientar as linhas correspondentes ao JSON acima):

 {
   "type": "Feature",
   "geometry": {
     "type": "Point",
+    "coordinates": [-8.273731, 39.900399]
   },
   "properties": {
+    "nome": "Biblioteca Municipal de Figueiró dos Vinhos",
     "tipo": "biblioteca",
+    "wikidata": "<a href='https://www.wikidata.org/wiki/Q71890449'>Q71890449</a>",
     "marker-symbol": "library",
     "marker-color": "#f90"
   }
 }

Criei um gist a mostrar como fica com vários tipos de entidades, ícones e cores personalizadas. Screenshot abaixo para aguçar o apetite :)

Screenshot 2020-10-24 at 23 38 13

Originally posted by @waldyrious in #28 (comment)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.