Quando o mapa vira banco de dados: por que o Movie Scene Map interessa mais a devs do que a cinéfilos
Quando vi a notícia do Sapo.pt sobre o Movie Scene Map, meu primeiro instinto não foi pensar em filmes — foi pensar em query SPARQL. Um mapa interativo, sem login, sem ads, agregando 15.845 locais reais de filmagem em 166 países, com a Wikidata como espinha dorsal e um pipeline de mineração de texto na Wikipédia rodando desde agosto de 2026? Isso é um caso de estudo de knowledge graph mal disfarçado de site de curiosidades. Na minha experiência, projetos assim são onde a engenharia de dados encontra o produto final de um jeito que dá para aprender muito.
Vamos dissecar isso do ponto de vista técnico — o que tem por trás, como reproduzir a extração de dados, onde estão as armadilhas e por que vale a pena você perder 15 minutos brincando com isso.
O que é o Movie Scene Map, na prática
O Movie Scene Map é um mapa-múndi interativo onde cada pin representa um local real usado como cenário em algum filme, série ou jogo. Você entra, digita “Lord of the Rings” e vê os pontos na Nova Zelândia acenderem. Pode inverter a busca: clica num ponto em Tóquio e descobre quais produções passaram por ali.
Detalhes que a nota do Sapo.pt destaca e que fazem diferença técnica:
- 15.845 locais catalogados, espalhados por 166 países.
- Backend totalmente gratuito, sem ads, sem cadastro — modelo raro hoje.
- Animes e mangás são indexados pelo local onde a história se passa, não onde foram filmados (decisão editorial relevante para filtragem).
- Dados estruturados vêm da Wikidata via declarações “filming location” (P276).
- Desde agosto de 2026, scraping adicional do texto da Wikipédia captura locais mencionados em prosa que ainda não estão estruturados.
A arquitetura por trás do projeto — e o que devs podem aprender com ela
O stack me parece ser o clássico: um frontend de mapa (provavelmente Leaflet ou MapLibre, considerando que é gratuito e sem tracking) consumindo um endpoint que serve GeoJSON. O dado vive na Wikidata, é espelhado para um banco próprio (provavelmente PostgreSQL/PostGIS para queries geográficas rápidas), e um job periódico faz entity extraction em prosa da Wikipédia para preencher buracos.
Isso é importante: a Wikidata não é só um wiki. É um grafo de conhecimento aberto, com URIs estáveis (Q-numbers), propriedades tipadas (P-numbers) e qualificadores. Para um dev, é a maior fonte de dados estruturados do mundo que existe — e quase ninguém explora direito.
Por que a P276 muda tudo
A propriedade P276 na Wikidata é “location” — usada tanto para eventos quanto para filmagens quando combinada com o qualificador apropriado ou quando o item da obra tem uma declaração explícita “filming location”. O Movie Scene Map provavelmente faz algo assim:
SELECT ?film ?filmLabel ?location ?locationLabel ?coords WHERE {
?film wdt:P31/wdt:P279* wd:Q11424 . # instância de filme
?film wdt:P276 ?location . # propriedade filming location
?location wdt:P625 ?coords . # coordenadas geográficas
SERVICE wikibase:label { bd:serviceParam wikibase:language "en,pt". }
}
LIMIT 500
Rode isso no Query Service da Wikidata e você terá um subset do que alimenta o Movie Scene Map. Em produção, com 15k+ locais, eles devem pré-computar isso e cachear.
Na Prática: reproduzindo o dataset em 5 minutos
Se você quiser testar a abordagem antes de depender de qualquer serviço externo, dá para montar um pipeline mínimo com Python. Aqui vai um exemplo funcional usando a biblioteca qwikidata + requests:
import requests
import json
QUERY = """
SELECT ?film ?filmLabel ?location ?locationLabel ?lat ?lon WHERE {
?film wdt:P31 wd:Q11424 .
?film wdt:P276 ?location .
?location wdt:P625 ?coord .
SERVICE wikibase:label { bd:serviceParam wikibase:language "en". }
BIND(geof:latitude(?coord) AS ?lat)
BIND(geof:longitude(?coord) AS ?lon)
}
LIMIT 1000
"""
def fetch_filming_locations(endpoint="https://query.wikidata.org/sparql"):
headers = {"Accept": "application/sparql-results+json"}
r = requests.get(endpoint, params={"query": QUERY}, headers=headers, timeout=30)
r.raise_for_status()
bindings = r.json()["results"]["bindings"]
return [
{
"film": b["filmLabel"]["value"],
"location": b["locationLabel"]["value"],
"lat": float(b["lat"]["value"]),
"lon": float(b["lon"]["value"]),
"qid": b["location"]["value"].split("/")[-1],
}
for b in bindings
]
if __name__ == "__main__":
data = fetch_filming_locations()
with open("locations.geojson", "w", encoding="utf-8") as f:
geojson = {
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"geometry": {"type": "Point", "coordinates": [d["lon"], d["lat"]]},
"properties": {"film": d["film"], "location": d["location"], "qid": d["qid"]},
}
for d in data
],
}
json.dump(geojson, f, ensure_ascii=False, indent=2)
print(f"Exportadas {len(data)} localizações")
Esse script baixa mil localizações, converte para GeoJSON e está pronto para abrir no QGIS, Kepler.gl ou direto no MapLibre. Para chegar aos 15.845 do Movie Scene Map, basta aumentar o LIMIT, paginar com OFFSET e remover o filtro restritivo wd:Q11424 (filme) — inclua wd:Q5398426 (série de TV) e wd:Q7889 (videogame).
O truque do “scraping de prosa”
O segundo pipeline, ativo desde agosto de 2026, é mais interessante tecnicamente. A Wikidata só tem o que os editores estruturaram. Mas a Wikipédia tem muito mais: parágrafos inteiros descrevendo filmagens que nunca viraram tripletas RDF. Para preencher isso, você precisa de NER (Named Entity Recognition) geográfico rodando sobre os artigos.
Em produção, o pipeline provavelmente é:
- Para cada item “film” na Wikidata, pegar o
sitelinkse puxar o texto do artigo em inglês. - Rodar um NER (spaCy com
en_core_web_trf, ou o modelo do Google Geocoding API, ou GeoNames + heurística). - Resolver a entidade para um Q-item da Wikidata via
wikidata entity linker. - Cruzar com as coordenadas da P625 e adicionar como nova declaração P276.
É NLP + knowledge graph fusion. Não é trivial — é por isso que o Movie Scene Map só foi adicionar essa camada agora.
Erros comuns que devs cometem quando mexem com dados geográficos da Wikidata
Já vi muita gente tropeçar nesses pontos. Salva tempo:
- Confundir P276 com P937. P276 é “local do evento” (inclui filmagem). P937 é “local de trabalho” (cidade onde alguém viveu). Para filmagem, é P276 com a obra como sujeito.
- Esquecer os qualificadores. Uma filmagem pode ter múltiplos P276 com qualificador
P580/P582(início/fim) ouP659(tipo de gravação). Filtrar só pelo claim principal perde filmagens parciais ou B-roll. - Coordenadas (0,0). A P625 às vezes tem
Precision=0ou aponta para Null Island. Sempre valide antes de plotar. - Limites da API. O endpoint público da Wikidata limita em ~60s por query. Para datasets grandes, use
OFFSETou o novo endpoint/bigdata/namespace/wdq/. - Idiomas. O
SERVICE wikibase:labeltenta todos os idiomas configurados. Se você quer só PT-BR, declare explicitamente para não pegar labels em japonês com transliteração ruim. - Deduplicação por distância. Dois Q-items podem representar o mesmo local (Castelo de Edimburgo vs. Edinburgh Castle). Calcule distância geográfica antes de mesclar — confiar só no label dá falso positivo.
Comparação honesta: como o Movie Scene Map se posiciona contra alternativas
Você pode estar se perguntando: “Mas o TMDB e o IMDb já não têm isso?” Resposta curta: não do mesmo jeito, e por motivos diferentes.
| Fonte | Cobertura | Acesso | Estrutura |
|---|---|---|---|
| Movie Scene Map | 15.845 locais, 166 países | Grátis, aberto | GeoJSON via Wikidata |
| TMDB API | Boa, mas location é string solta | API key gratuita | JSON semi-estruturado |
| IMDb | Melhor cobertura histórica | Paga para uso comercial | Não georreferenciado |
| Wikidata direta | Tudo, mas cru | SPARQL aberto | Knowledge graph puro |
Na minha experiência, o Movie Scene Map vence pela curadoria. Pegar a Wikidata crua resultaria num mapa poluído com estúdios genéricos, cidades de produção (não de filmagem) e falsos positivos de geocoding. Quem mantém o site fez o trabalho sujo de validar e limpar — e isso vale mais do que ter o dataset bruto.
Quando não usar dados da Wikidata
Se você precisa de dados para fins comerciais, com SLA e estabilidade de schema, a Wikidata não é a fonte certa — é wikibase, qualquer editor pode mudar estrutura. Para produção séria, faça mirror para um banco seu e congele o snapshot. Já vi sistemas quebrarem porque alguém renomeou uma propriedade num domingo à noite.
FAQ — perguntas reais que devs fazem
O Movie Scene Map tem API pública?
Pela descrição do Sapo.pt, o site é gratuito e sem cadastro, mas não menciona endpoint oficial. Para integrações, o caminho é consultar a Wikidata diretamente via SPARQL — é o que mostrei no script acima.
Os dados cobrem videogames e animes de verdade?
Videogames sim, com a ressalva de que a captura é mais fraca que filmes/séries. Animes entram pelo local narrativo, não real — então Attack on Titan aparece na Muralha Maria (Paradis), não num estúdio de Tóquio. É uma decisão de modelagem válida, mas precisa ficar clara para o usuário.
Posso contribuir com novos locais?
A Wikidata é wiki — qualquer pessoa com conta pode editar a propriedade P276 de um filme. Suas mudanças aparecem no Movie Scene Map no próximo refresh do mirror. É o jeito mais direto de “crowdsource” o dataset.
Qual a stack provável do frontend?
Aposto em MapLibre GL JS (sucessor open-source do Mapbox) sobre tiles do OpenStreetMap, com clustering nativo para não fritar o browser com 16k pontos. É a combinação padrão para projetos sem orçamento de tiles comerciais.
Esse tipo de projeto sobrevive sem financiamento?
Sobrevive enquanto o mantenedor tiver motivação pessoal. Quando a motivação acaba, o mirror fica desatualizado e o site morre silenciosamente. Se você depende disso em produção, faça seu próprio mirror. Não confie em side projects alheios como fonte crítica.
Veredito: vale os 15 minutos?
Vale, e por motivos que vão além da curiosidade geográfica. O Movie Scene Map é um exemplo limpo de como montar um produto de dados sem ter os dados — você terceiriza a curadoria para a comunidade (Wikidata), automatiza a coleta (SPARQL), complementa com NLP (Wikipedia) e entrega numa interface que qualquer pessoa entende. É o template que vale copiar.
Na minha experiência, os projetos que sobrevivem mais tempo são exatamente esses: os que constroem sobre open data em vez de brigar com ela. Se você trabalha com knowledge graphs, geolocalização ou simplesmente quer ver SPARQL em ação num contexto divertido, abra o site, rode o query acima e depois me conta o que achou.
Gostou? Me segue no GitHub e deixa um comentário se tiver dúvida ou quiser aprofundar algum ponto.