geoapi.pt
geoapi.pt copied to clipboard
Muitos pontos fora do polígono na visualização de CP4
Em alguns casos o polígono à volta dos pontos de um código postal tem um ajuste bastante bom:
https://geoapi.pt/cp/1000 | https://geoapi.pt/cp/4000 |
---|---|
![]() |
![]() |
Há casos em que alguns pontos ficam fora do polígono, mas não de forma preocupante para uma aproximação:
https://geoapi.pt/cp/3000 | https://geoapi.pt/cp/6000 |
---|---|
![]() |
![]() |
No entanto, há casos em que a proporção de pontos fora do polígono é considerável, gerando áreas claramente incorretas como indicação da cobertura geográfica do código postal:
https://geoapi.pt/cp/2000 | https://geoapi.pt/cp/5000 |
---|---|
![]() |
![]() |
Não sei se esta situação corresponde ao https://github.com/jfoclpf/outliers2d/issues/1, mas achei melhor reportar de qualquer forma.
Já agora, será que ficaria melhor se o polígono não fosse suavizado? Ou isto é o resultado da remoção de outliers e não da suavização do polígono?
Tens razão @waldyrious Neste momento a remoção de outliers não está a funcionar bem. Vou fazer uns testes com outro algoritmo que encontrei, chama-se DBSCAN e é muito popular para clustering.
Muito obrigado por evidenciares esses CP4, pois vou adicionar esses CP4 à minha lista de teste.
Vou dando notícias
Boas @waldyrious , estava aqui a calibrar a remoção de outliers com o DBSCAN No teu entender qual é a distância entre dois pontos a partir da qual esses dois pontos passam a pertencer a cluster diferentes? Estou a testar clustering, na medida que o cluster principal é o que queremos aproveitar e os restantes clusters mais pequenos à volta são outliers? É apenas uma ideia de partida para dar ao algoritmo. 500 metros? 1km?
@joao tens ideia?
@waldyrious, nos exemplos que partilhaste, consideras que todos tem algumas moradas com códigos-postais errados (outliers)?
Os que eu conheço, de onde vivo, tem poucos outliers (menos de uma dezena), que estavam a estragar o polígono do CP4 e motivou procurar identificar os outlier. Aliás, acho que eram apenas dois no caso do meu CP4:
@jfoclpf, penso que não haverá nenhuma distância correcta :/ Numa área urbana, acho que uma distancia de 250m basta, mas uma rural no interior, 2km ou mais ainda poderá ter o mesmo código postal.
Talvez a única forma de fazer isto direito seja limpar as moradas, contudo poderá ser complicado. Uma fórmula como: se numa rua houver uma morada com um CP4 diferente das outras moradas nessa rua, essa morada tem uma probabilidade de quase 100% de estar com um código-postal errado e não deve ser incluida no desenho do polígono CP4.
Também seria possível uma correcção automática, corrigindo o código postal para o mais 'dominante' na rua. Esta abordagem poderia funcionar numa área urbana, mas no interior rural, em que há ruas/estradas só com um ou duas moradas, não funcionaria.
@jfoclpf, é possível gerar estatísticas de quantas ruas tem múltiplos CP4? Seria útil para informar a estratégia a seguir, pois idenficaria os outliers errados.
Ah, eu até agora estava a assumir que os CPs estavam essencialmente corretos, e que simplesmente se estava a fazer um polígono simplificado para aproximar o que seria uma área bastante irregular (mas correspondente à realidade). Algo semelhante aos distritos gerrymandered nos EUA.
No entanto, se estou a perceber bem, aqui o problema é mesmo haver pontos com CPs errados. A minha dúvida é se o erro estará na atribuição do CP, ou se poderá estar nas coordenadas geográficas das moradas. Por exemplo, aqui mencionei um caso em que seis moradas diferentes estão mapeadas no mesmo ponto... :thinking:
Eu não sei que abordagem poderia funcionar aqui. Mando algumas ideias para o ar:
- A ideia de clustering é interessante, mas sendo variável a área que cada CP cobre, penso que o threshold também devia ser adaptativo.
- Talvez considerar outliers os pontos cuja distância ao centro é maior que x% da distância média (ou se calhar mediana) de todos os pontos ao centro.
- Ou então eliminar os pontos cuja distância ao ponto mais próximo seja maior que 2x a distância mediana entre pontos (embora isto exija calcular NxN distâncias...)
- As sugestões do @joao também me parecem razoáveis. Em particular, a ideia de corrigir os CPs que se desviam muito dos outros, para adotarem o valor dominante da sua vizinhança, lembra-me os algoritmos de noise reduction/despeckling em processamento de imagem, como os filtros de mediana, que atribuem a cada ponto o valor mediano dos seus pontos vizinhos. Mas sim, isto provavelmente não iria dar grande resultado em locais com baixa densidade de CP :(
Caros amigos @joao @waldyrious ando aqui às voltas com valores e é difícil calibrar os parâmetros, mas já consegui bastantes melhoramentos, mas vocês podiam dar uma ajuda preciosa a tentar achar esses parâmetros, é só correr na vossa máquina e testar para ver o que acham, basta terem o Git e o NodeJs, e
Instalar na vossa máquina
git clone https://github.com/jfoclpf/geoapi.pt.git
cd geoapi.pt
npm install
calibrar os valores aqui (basta editar aquelas constantes):
gerar todos os CP4 (se quiserem gerar apenas alguns para ser rápido, tirem o comentário aqui)
DEBUG=geoptapi:* npm run generate-postalcodes -- --onlyCP4
depois de gerados, basta correr o servidor localmente
npm start
e testar por exemplo em: http://localhost:8080/cp/6000
Acham que podem fazer isso, não estou a conseguir arranjar uma boa combinação de valores
muito obrigado (neste momento o meu CPU está a correr uma combinação de valores :)
fiz agora um teste com
const alpha = 10 // minimum number of points for cluster NOT to be considered as outlier
const radius = 0.008 // distance between points to be considered in the same cluster
const neighbours = 3 // minimum number of neighbours around one point to be considered a cluster
e consegui melhores resultados
que vos parece?
@joao interessante, nesse caso, se normalmente apenas 1 ou 2 são outliers por cluster, talvez deva baixar a constante alpha
@waldyrious compara por exemplo o 7580 antes e depois
Talvez a única forma de fazer isto direito seja limpar as moradas, contudo poderá ser complicado. Uma fórmula como: se numa rua houver uma morada com um CP4 diferente das outras moradas nessa rua, essa morada tem uma probabilidade de quase 100% de estar com um código-postal errado e não deve ser incluida no desenho do polígono CP4.
Bem visto @joao mas refereste-te a código CP4-CP3, certo? Os códigos CP3 são sempre da mesma rua, certo?
@jfoclpf, é possível gerar estatísticas de quantas ruas tem múltiplos CP4?
@joao referes-te a CP4-CP3, certo?
já actualizei e já está em produção, acho que agora está bem melhor
@jfoclpf Vi a última versão e está melhor nos códigos CP4 que testei.
Quanto à questão de erros de localização errada de moradas, lendo o que o @waldyrious escreveu, ocorreu-me que eu estava a assumir erradamente que a questão das moradas mal localizadas fosse somente um CP4 inserido incorrectamente no preenchimento dos Censos 2011.
Não é possível assumir tal, pois pode ser outro tipo de erro: uma morada totalmente errada, até só o CP4/CP3/CP4-CP3 mal, ou a morada postal estar 100% correcta, mas com a latitude/longitude erradas. Vou tentar analisar, e encontrar, alguns casos a ver se há algum padrão nos erros.
Também irei testar o 'git clone' como pedido.
Muito obrigado @joao @joao e @waldyrious se entretanto testarem, eu alterei ligeiramente o código para ser mais fácil testar
Instalar:
git clone https://github.com/jfoclpf/geoapi.pt.git
cd geoapi.pt
npm ci
Testar CP4 1900 e 4400:
npm run generate-postalcodes -- --onlyCP4 1900 4400 --download-zip
npm start
verificar no browser http://localhost:8080/cp/1900
- Não sei se há algo que se possa fazer sobre isso, mas o repositório é enorme e demora imenso tempo a clonar
-
$ npm run generate-postalcodes -- --onlyCP4 1900 4400
dá erro:> [email protected] generate-postalcodes > node --max-old-space-size=16384 js/routines/generatePostalCodes/generate.js "--onlyCP4" "1900" "4400" extracting /home/waldyrious/repos/geoapi.pt/res/postal-codes/pt_addresses.csv.zip Error: Error unziping file /home/waldyrious/repos/geoapi.pt/res/postal-codes/pt_addresses.csv.zip. ENOENT: no such file or directory, open '/home/waldyrious/repos/geoapi.pt/res/postal-codes/pt_addresses.csv.zip' at /home/waldyrious/repos/geoapi.pt/js/routines/generatePostalCodes/generate.js:155:14
- Depois de fazer
cp res/postal-codes/CodigosPostais.zip res/postal-codes/pt_addresses.csv.zip
, o comando acima dá um erro diferente:> [email protected] generate-postalcodes > node --max-old-space-size=16384 js/routines/generatePostalCodes/generate.js "--onlyCP4" "1900" "4400" extracting /home/waldyrious/repos/geoapi.pt/res/postal-codes/pt_addresses.csv.zip extraction complete to /home/waldyrious/repos/geoapi.pt/res/postal-codes/leiame.txt CSV file from OpenAddresses has 114 entries Parsing CSV file from OpenAddresses [=-------------------------------------------------------------------------------] 0% Extracted CSV data from /home/waldyrious/repos/geoapi.pt/res/postal-codes/leiame.txt Extracted CSF file deleted after being processed zip file extraction for /home/waldyrious/repos/geoapi.pt/res/postal-codes/CodigosPostais.zip complete Extracted CSV data from /home/waldyrious/repos/geoapi.pt/res/postal-codes/distritos.txt Extracted CSV data from /home/waldyrious/repos/geoapi.pt/res/postal-codes/concelhos.txt Extracted CSV data from /home/waldyrious/repos/geoapi.pt/res/postal-codes/todos_cp.txt Extracted files deleted Postal Codes prepared with success Found 192940 different CP4-CP3 postal codes in CTT file Found 861 different CP4 postal codes in CTT file Process and assemble CP4 Postal Codes data from both databases (OpenAddresses and CTT) only these CP4: [ '1900', '4400' ] [================----------------------------------------------------------------] 20% Beginning Error on 1900. Cannot read properties of undefined (reading 'split'). TypeError: Cannot read properties of undefined (reading 'split') at splitCP (/home/waldyrious/repos/geoapi.pt/js/routines/generatePostalCodes/functions.js:300:18) at Object.createCP4jsonFile (/home/waldyrious/repos/geoapi.pt/js/routines/generatePostalCodes/functions.js:191:29) at /home/waldyrious/repos/geoapi.pt/js/routines/generatePostalCodes/generate.js:305:34 at /home/waldyrious/repos/geoapi.pt/node_modules/async/dist/async.js:2588:44 at eachOfArrayLike (/home/waldyrious/repos/geoapi.pt/node_modules/async/dist/async.js:506:13) at eachOf (/home/waldyrious/repos/geoapi.pt/node_modules/async/dist/async.js:626:16) at awaitable (/home/waldyrious/repos/geoapi.pt/node_modules/async/dist/async.js:211:32) at Object.eachLimit (/home/waldyrious/repos/geoapi.pt/node_modules/async/dist/async.js:2691:16) at Object.awaitable (/home/waldyrious/repos/geoapi.pt/node_modules/async/dist/async.js:211:32) at assembleCP4Data (/home/waldyrious/repos/geoapi.pt/js/routines/generatePostalCodes/generate.js:303:9) at /home/waldyrious/repos/geoapi.pt/node_modules/async/dist/async.js:3674:28 at replenish (/home/waldyrious/repos/geoapi.pt/node_modules/async/dist/async.js:446:21) at iterateeCallback (/home/waldyrious/repos/geoapi.pt/node_modules/async/dist/async.js:430:21) at /home/waldyrious/repos/geoapi.pt/node_modules/async/dist/async.js:327:20 at /home/waldyrious/repos/geoapi.pt/node_modules/async/dist/async.js:3679:17 at /home/waldyrious/repos/geoapi.pt/js/routines/generatePostalCodes/generate.js:223:7 pointsArr: [] [================================================--------------------------------] 60% 1900 Error: Error: Error: TypeError: Cannot read properties of undefined (reading 'split') at /home/waldyrious/repos/geoapi.pt/js/routines/generatePostalCodes/generate.js:315:16 at wrapper (/home/waldyrious/repos/geoapi.pt/node_modules/async/dist/async.js:271:20) at iteratorCallback (/home/waldyrious/repos/geoapi.pt/node_modules/async/dist/async.js:499:17) at /home/waldyrious/repos/geoapi.pt/node_modules/async/dist/async.js:327:20 at /home/waldyrious/repos/geoapi.pt/js/routines/generatePostalCodes/generate.js:308:18 at Object.createCP4jsonFile (/home/waldyrious/repos/geoapi.pt/js/routines/generatePostalCodes/functions.js:290:5) at /home/waldyrious/repos/geoapi.pt/js/routines/generatePostalCodes/generate.js:305:34 at /home/waldyrious/repos/geoapi.pt/node_modules/async/dist/async.js:2588:44 at eachOfArrayLike (/home/waldyrious/repos/geoapi.pt/node_modules/async/dist/async.js:506:13) at eachOf (/home/waldyrious/repos/geoapi.pt/node_modules/async/dist/async.js:626:16) at awaitable (/home/waldyrious/repos/geoapi.pt/node_modules/async/dist/async.js:211:32) at Object.eachLimit (/home/waldyrious/repos/geoapi.pt/node_modules/async/dist/async.js:2691:16) at Object.awaitable (/home/waldyrious/repos/geoapi.pt/node_modules/async/dist/async.js:211:32) at assembleCP4Data (/home/waldyrious/repos/geoapi.pt/js/routines/generatePostalCodes/generate.js:303:9) at /home/waldyrious/repos/geoapi.pt/node_modules/async/dist/async.js:3674:28 at replenish (/home/waldyrious/repos/geoapi.pt/node_modules/async/dist/async.js:446:21) Error on 4400. Cannot read properties of undefined (reading 'split'). TypeError: Cannot read properties of undefined (reading 'split') at splitCP (/home/waldyrious/repos/geoapi.pt/js/routines/generatePostalCodes/functions.js:300:18) at Object.createCP4jsonFile (/home/waldyrious/repos/geoapi.pt/js/routines/generatePostalCodes/functions.js:191:29) at /home/waldyrious/repos/geoapi.pt/js/routines/generatePostalCodes/generate.js:305:34 at /home/waldyrious/repos/geoapi.pt/node_modules/async/dist/async.js:2588:44 at eachOfArrayLike (/home/waldyrious/repos/geoapi.pt/node_modules/async/dist/async.js:506:13) at eachOf (/home/waldyrious/repos/geoapi.pt/node_modules/async/dist/async.js:626:16) at awaitable (/home/waldyrious/repos/geoapi.pt/node_modules/async/dist/async.js:211:32) at Object.eachLimit (/home/waldyrious/repos/geoapi.pt/node_modules/async/dist/async.js:2691:16) at Object.awaitable (/home/waldyrious/repos/geoapi.pt/node_modules/async/dist/async.js:211:32) at assembleCP4Data (/home/waldyrious/repos/geoapi.pt/js/routines/generatePostalCodes/generate.js:303:9) at /home/waldyrious/repos/geoapi.pt/node_modules/async/dist/async.js:3674:28 at replenish (/home/waldyrious/repos/geoapi.pt/node_modules/async/dist/async.js:446:21) at iterateeCallback (/home/waldyrious/repos/geoapi.pt/node_modules/async/dist/async.js:430:21) at /home/waldyrious/repos/geoapi.pt/node_modules/async/dist/async.js:327:20 at /home/waldyrious/repos/geoapi.pt/node_modules/async/dist/async.js:3679:17 at /home/waldyrious/repos/geoapi.pt/js/routines/generatePostalCodes/generate.js:223:7 pointsArr: [] [================================================================================] 100% 4400
Boas @waldyrious
- vou tentar resolver isso apagando alguns ficheiros do histórico, mas sim, o histórico do git tem quase 1G, e quando clonas descarregas não apenas os ficheiros da repo, mas todo o histórico do git
- esqueci-me de mencionar, mas na realidade na primeira vez tens que fazer
npm run generate-postalcodes -- --onlyCP4 1900 4400 --download-zip
. A opção--download-zip
precisa de ser usada na primeira vez pois descarrega o ficheiro do OpenAddresses para o teu disco. Experimenta agora sff
@waldyrious já resolvi o ponto 1, removi do histórico vários ficheiros grandes, agora a repo ocupa metade do tamanho. Em qualquer caso já tinhas descarregado tudo para a tua máquina. Qualquer dúvida com o ponto 2, diz, obrigado
@waldyrious resumindo, agora tens que fazer apenas
npm run generate-postalcodes -- --onlyCP4 1900 4400 --download-zip
npm start
@jfoclpf, algum feedback como pedido:
-
o repositório acaba por ser bastante grande, com 3.1GB (testado a 13/Setembro). Suponho a única solução seja apagar ainda mais histórico, mas talvez só à frente e quando estiver tudo mais testado.
-
o download do ficheiro do openadresses ainda está a ir ao website deles. Não queres colocar o endpoint do meu servidor? Já que eles tem na AWS e tem de pagar o trâfego e fica lento no final.
Pode ser algum código como se der 404 no storage do meu lado, aí tenta o openaddresses. -
o output no terminal, durante o processamento dos CP4 é estranho. Arrancou nos 60% e lá ficou parado.
- passados 30 minutos ainda está nesses 60&. O meu computador é antigo, também pode ser disso e demorar mais tempo. Vou deixar estar mais um bocado a ver se progride, mas talvez seja sinal de algum problema :/
Boas @joao , pela mesma ordem
- tens razão, é muito, é porque tentei apagar histórico mas mais não fez que adicionar ao histórico da repo no Github. Tenho que mudar as configurações da repo do GitHub para deixar mesmo apagar histórico, porque por questões de segurança normalmente não o deixa fazer por padrão. Mas estive a investigar é fácil resolver, basta usar a flag
--depth=1
, ou sejagit clone --depth=1 https://github.com/jfoclpf/geoapi.pt.git
e só descarregas a última versão sem qualquer histórico. - sim, claro, recorda-me sff o URL do teu servidor onde está o ficheiro
- sim, demora algum tempo, e perdi já imenso tempo a programar para otimizar os cores da CPU para que vários CP4 possam ser processados em paralelo (multithreading), porque o JS é single-thread por padrão. Espera mais um pouco, ele vai lá :)
@joao reparei agora, mas em relação ao tamanho, não há muito que possamos fazer, pois se reparares é quase o tamanho da pasta res/
onde estão todos os recursos para a API funcionar. Fora o ficheiro do OpenAddresses
@waldyrious aqui tens o endereço para download:
https://box.wolan.net/geoapi/pt_addresses.csv.zip
Farei uma Github Action para verificar semanalmente se é a última versão do ficheiro e actualizar. O download também será consideravelmente mais rápido.
@joao, já implementei essa funcionalidade com d8721928424dc45076e10423106bf3ea01b784fe: primeiro descarrega do teu servidor e se tal não estiver disponível, então, vai ao servidor do OpenAddresses.
Sempre conseguiste gerar os JSON?
@jfoclpf existe um problema com a nova versão do código, pois está a falhar o download quer do meu servidor quer do openaddresses. Quando estava só com openaddresses funcionava. Podes verificar por favor?
Error Log:
▲ geoapi.pt: npm run generate-postalcodes -- --onlyCP4 1900 4400 --download-zip
> [email protected] generate-postalcodes
> node --max-old-space-size=16384 js/routines/generatePostalCodes/generate.js --onlyCP4 1900 4400 --download-zip
Downloading file from https://box.wolan.net/geoapi/pt_addresses.csv.zip to /Users/joao/Desktop/geoapi.pt/res/postal-codes/pt_addresses.csv.zip
This may take a while, please wait...
downloading [= ] 5401712/bps 4% 22.0sError: GotError [RequestError]: 4407582144:error:1408F119:SSL routines:ssl3_get_record:decryption failed or bad record mac:ssl/record/ssl3_record.c:677:
at ClientRequest.<anonymous> (/Users/joao/Desktop/geoapi.pt/node_modules/download/node_modules/got/index.js:182:22)
at Object.onceWrapper (node:events:628:26)
at ClientRequest.emit (node:events:513:28)
at TLSSocket.socketErrorListener (node:_http_client:494:9)
at TLSSocket.emit (node:events:513:28)
at TLSSocket._emitTLSError (node:_tls_wrap:908:10)
at TLSWrap.onerror (node:_tls_wrap:439:11) {
code: 'ERR_SSL_DECRYPTION_FAILED_OR_BAD_RECORD_MAC',
host: 'box.wolan.net',
hostname: 'box.wolan.net',
method: 'GET',
path: '/geoapi/pt_addresses.csv.zip',
protocol: 'https:',
url: 'https://box.wolan.net/geoapi/pt_addresses.csv.zip'
}
file not available, fetching directly from Open Addresses server
Fetching info from OpenAddresses PT JSON file https://raw.githubusercontent.com/openaddresses/openaddresses/master/sources/pt/countrywide.json
Error: GotError [RequestError]: 4407582144:error:1408F119:SSL routines:ssl3_get_record:decryption failed or bad record mac:ssl/record/ssl3_record.c:677:
at ClientRequest.<anonymous> (/Users/joao/Desktop/geoapi.pt/node_modules/download/node_modules/got/index.js:182:22)
at Object.onceWrapper (node:events:628:26)
at ClientRequest.emit (node:events:513:28)
at TLSSocket.socketErrorListener (node:_http_client:494:9)
at TLSSocket.emit (node:events:513:28)
at TLSSocket._emitTLSError (node:_tls_wrap:908:10)
at TLSWrap.onerror (node:_tls_wrap:439:11) {
code: 'ERR_SSL_DECRYPTION_FAILED_OR_BAD_RECORD_MAC',
host: 'box.wolan.net',
hostname: 'box.wolan.net',
method: 'GET',
path: '/geoapi/pt_addresses.csv.zip',
protocol: 'https:',
url: 'https://box.wolan.net/geoapi/pt_addresses.csv.zip'
}
file not available, fetching directly from Open Addresses server
Fetching info from OpenAddresses PT JSON file https://raw.githubusercontent.com/openaddresses/openaddresses/master/sources/pt/countrywide.json
Error: GotError [RequestError]: 4407582144:error:1408F119:SSL routines:ssl3_get_record:decryption failed or bad record mac:ssl/record/ssl3_record.c:677:
at ClientRequest.<anonymous> (/Users/joao/Desktop/geoapi.pt/node_modules/download/node_modules/got/index.js:182:22)
at Object.onceWrapper (node:events:628:26)
at ClientRequest.emit (node:events:513:28)
at TLSSocket.socketErrorListener (node:_http_client:494:9)
at TLSSocket.emit (node:events:513:28)
at TLSSocket._emitTLSError (node:_tls_wrap:908:10)
at TLSWrap.onerror (node:_tls_wrap:439:11) {
code: 'ERR_SSL_DECRYPTION_FAILED_OR_BAD_RECORD_MAC',
host: 'box.wolan.net',
hostname: 'box.wolan.net',
method: 'GET',
path: '/geoapi/pt_addresses.csv.zip',
protocol: 'https:',
url: 'https://box.wolan.net/geoapi/pt_addresses.csv.zip'
}
file not available, fetching directly from Open Addresses server
Fetching info from OpenAddresses PT JSON file https://raw.githubusercontent.com/openaddresses/openaddresses/master/sources/pt/countrywide.json
file not available, fetching directly from Open Addresses server
Fetching info from OpenAddresses PT JSON file https://raw.githubusercontent.com/openaddresses/openaddresses/master/sources/pt/countrywide.json
URL with OpenAddresses PT raw data: https://data.openaddresses.io/cache/uploads/sergiyprotsiv/fc77c5/pt_addresses.csv.zip
Downloading file from https://data.openaddresses.io/cache/uploads/sergiyprotsiv/fc77c5/pt_addresses.csv.zip to /Users/joao/Desktop/geoapi.pt/res/postal-codes/pt_addresses.csv.zip
This may take a while, please wait...
URL with OpenAddresses PT raw data: https://data.openaddresses.io/cache/uploads/sergiyprotsiv/fc77c5/pt_addresses.csv.zip
Downloading file from https://data.openaddresses.io/cache/uploads/sergiyprotsiv/fc77c5/pt_addresses.csv.zip to /Users/joao/Desktop/geoapi.pt/res/postal-codes/pt_addresses.csv.zip
This may take a while, please wait...
URL with OpenAddresses PT raw data: https://data.openaddresses.io/cache/uploads/sergiyprotsiv/fc77c5/pt_addresses.csv.zip
Downloading file from https://data.openaddresses.io/cache/uploads/sergiyprotsiv/fc77c5/pt_addresses.csv.zip to /Users/joao/Desktop/geoapi.pt/res/postal-codes/pt_addresses.csv.zip
This may take a while, please wait...
URL with OpenAddresses PT raw data: https://data.openaddresses.io/cache/uploads/sergiyprotsiv/fc77c5/pt_addresses.csv.zip
Downloading file from https://data.openaddresses.io/cache/uploads/sergiyprotsiv/fc77c5/pt_addresses.csv.zip to /Users/joao/Desktop/geoapi.pt/res/postal-codes/pt_addresses.csv.zip
This may take a while, please wait...
Error: Error: Error: HTTPError: Response code 429 (Too Many Requests)
at /Users/joao/Desktop/geoapi.pt/js/routines/generatePostalCodes/generate.js:66:16
at /Users/joao/Desktop/geoapi.pt/js/routines/generatePostalCodes/downloadZip.js:38:19
at /Users/joao/Desktop/geoapi.pt/js/routines/generatePostalCodes/downloadZip.js:114:5
at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
/Users/joao/Desktop/geoapi.pt/node_modules/async/dist/async.js:324
if (fn === null) throw new Error("Callback was already called.");
^
Error: Callback was already called.
at /Users/joao/Desktop/geoapi.pt/node_modules/async/dist/async.js:324:36
at /Users/joao/Desktop/geoapi.pt/node_modules/async/dist/async.js:3679:17
at /Users/joao/Desktop/geoapi.pt/js/routines/generatePostalCodes/generate.js:66:7
at /Users/joao/Desktop/geoapi.pt/js/routines/generatePostalCodes/downloadZip.js:38:19
at /Users/joao/Desktop/geoapi.pt/js/routines/generatePostalCodes/downloadZip.js:114:5
at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
Node.js v18.9.0
muito estranho @joao , do meu lado testei novamente e funciona, experimenta correr antes
npm set strict-ssl false
ou então atualiza o NPM npm install npm -g
@jfoclpf Consegui com essa instrução no meu computador pessoal, mas também tentei num servidor e não foi necessário. Deve ter sido algum update ao node/npm no meu computador, obrigado pela ajuda.
O servidor também funciona bem, com todos os exemplos indicados no npm start
operacionais.
Só o endereço http://localhost:8080
é que não abre, pois efectua um redirect automático para o geoapi.pt. É intencional?
Boas @joao , lamento a resposta tardia
fixe que tenhas conseguido resolver essa situação no teu computador e que o comando npm start
funciona bem
Só o endereço http://localhost:8080 é que não abre, pois efectua um redirect automático para o geoapi.pt. É intencional?
É uma pergunta relevante. A página principal (index.html
) está alojada e servida diretamente dos servidor do github (através do subdomínio www
). Talvez não seja má ideia abdicar desse serviço e transferi-la para o servidor principal.
@joao e @waldyrious chegaram a conseguir fazer alguns testes?
Caso contrário deixamos por enquanto estar assim, não está mau!
E já sabem, criem issues para novos melhoramentos que tenham em mente :) é fixe podermos avançar com este projeto open source
@jfoclpf Não efectuei mais testes além dos anteriores.
Concordo contigo e será melhor ficar assim por agora, já que a origem dos problemas é nos dados e não há uma solução perfeita para tal.
Fixe, sendo assim vou fechar o tópico
Se tiveres mais alguns melhoramentos para fazer à API, que te lembres, por favor diz, foram muito úteis as tuas dicas.
Não tenho tido disponibilidade para explorar este tema em mais pormenor. Concordo que para já faz sentido fechar e ir ajustando se encontrarmos técnicas que possam melhorar o resultado atual.