Closed waldyrious closed 2 years ago
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:
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
1) Não sei se há algo que se possa fazer sobre isso, mas o repositório é enorme e demora imenso tempo a clonar
2) $ npm run generate-postalcodes -- --onlyCP4 1900 4400
dá erro:
> geoapi.pt@1.0.3 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
3) Depois de fazer cp res/postal-codes/CodigosPostais.zip res/postal-codes/pt_addresses.csv.zip
, o comando acima dá um erro diferente:
> geoapi.pt@1.0.3 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
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.
Boas @joao , pela mesma ordem
--depth=1
, ou seja git clone --depth=1 https://github.com/jfoclpf/geoapi.pt.git
e só descarregas a última versão sem qualquer histórico.@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
> geoapi.pt@1.0.3 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.
@joao apenas uma questão, lembras-te do ficheiro pt_addresses.csv.zip
?
Tens actualizado esse ficheiro do openaddresses para o teu servidor?
@joao reparei que são iguais
@jfoclpf Não tenho actualizado. A última versão no servidor da OpenAddresses parece ser de 2022-11-11 e vejo que o website foi alterado, restringindo os downloads em CSV.
Precisas que actualize? Vou ver se coloco um script a actualizar mensalmente.
@joao sim por favor actualiza mensalmente, pelo menos agora
@jfoclpf Pelo o que estou a ver, tem agora um género de 'paywall'.
CSVs só disponíveis a quem efectuar donativos, embora tenha-se acesso a um GeoJSON.
Vou experimentar esta semana converter o GeoJSON para CSV, a ver se é possível, ou arranjar uma alternativa de ir buscar directamente ao INE, estando assim mais actualizados.
muito obrigado @joao
se for preciso fazer algum donativo diz, deve dar por exemplo 10 euros, certo?
Em alguns casos o polígono à volta dos pontos de um código postal tem um ajuste bastante bom:
Há casos em que alguns pontos ficam fora do polígono, mas não de forma preocupante para uma aproximação:
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:
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?