Model-R / Front-end

Interface web do Model-R
Other
0 stars 0 forks source link

Método no webservice para informar resultados de modelagem #5

Open gmgall opened 7 years ago

gmgall commented 7 years ago

Assim como temos um método no webservice para mudarmos o status de um experimento (de Liberado para Em processamento por exemplo), sugiro criarmos um para informarmos os resultados de um experimento.

Ele pode receber as informaçes via HTTP POST:

idexperiment: a684eceee76fc522773286a895bc8436
kappa: 0.09080909
algoritmo: BioClim
partition: 3
raster_path: http://buriti.lncc.br/modelr_demo/a684eceee76fc522773286a895bc8436/Zygia%20latifolia%20(L.)%20Fawc.%20&%20Rendle/BioClim_cont_Zygia%20latifolia%20(L.)%20Fawc.%20&%20Rendle_3.tif

Processar os dados de uma requisição POST não é complicado no PHP se me recordo corretamente. Só não saberia exatamente se é o melhor método HTTP para fazermos isso (semanticamente falando).

Estão faltando vários campos acima e raster_path poderia ser relativo. Estou passando um exemplo absoluto só para expor a ideia.

rafaeloliveiralima commented 7 years ago

Sugestão

CREATE TABLE modelr.experiment_result ( idexperiment_result serial NOT NULL, idexperiment integer, idresulttype integer, file_tiff character varying(255), file_png character varying(255), partition integer, algorithm character varying(100), "TSS" numeric(10,5), "AUC" numeric(10,5), sensitivity numeric(10,5), equal_sens_spec numeric(10,5), prevalence numeric(10,5), no_omission integer, spec_sens numeric(10,5), CONSTRAINT experiment_result_pkey PRIMARY KEY (idexperiment_result), CONSTRAINT fk_experimento_result FOREIGN KEY (idexperiment) REFERENCES modelr.experiment (idexperiment) MATCH SIMPLE ON UPDATE CASCADE ON DELETE RESTRICT, CONSTRAINT fk_resulttype2 FOREIGN KEY (idresulttype) REFERENCES modelr.resulttype (idresulttype) MATCH SIMPLE ON UPDATE CASCADE ON DELETE RESTRICT )

gmgall commented 7 years ago

Vamos discutir os argumentos necessários nesse método a seguir.

gmgall commented 7 years ago

Listando com calma todos os campos que julgo necessário para esse método:

1) Dados em ensemble

2) Path para os arquivos gerados

Esqueci alguma coisa?


Um método para informar o resultado gerado por finalModel() e outro o gerado por ensemble() também será necessário.

rafaeloliveiralima commented 7 years ago

atualização do ws com os novos campos para armazenar os raster. @gmgall para informar os modelos gerados pelo finalModel() e pelo ensemble() basta criar um novo registro e alterar o idresulttype para 2 ou 3;

segue a descrição do serviço.

Pode ser enviado por GET ou POST https://model-r.jbrj.gov.br/ws/setresult.php?op=E&id=15&idresulttype=2

Parâmetros obrigatórios:

id -> ID do experimento; op -> operação {I - Incluir e A - Alterar) idresulttype -> O que está sendo armazenado (1;"Partições" 2;"Modelos Finais" 3;"Essembles" 4;"Outros" )

demais parâmetros:

partition -> numero da partição para idresulttype =1 algorithm-> algoritmo; tss -> tss; auc -> auc; sensitivit -> equal_sens_spec -> prevalence -> no_omission -> spec_sens -> kappa ->, raster_cut_path -> png_bin_path ->, png_cont_path -> png_cut_path ->

gmgall commented 7 years ago

Eu fiz um teste via POST e não sei se ele foi bem sucedido.

Em Python fiz o seguinte:

>>> import urllib
>>> params = {'id': '68', 'op': 'I', 'idresulttype': '1', 'partition': '1', 'algorithm': 'BioClim', 'kappa': '0.07884737', 'spec_sens': '0.07884737', 'no_omission': '-1e-04', 'prevalence': '0.42095263', 'equal_sens_spec': '0.03498772', 'sensitivity': '0.01744386', 'auc': '0.847095283117975', 'tss': '0.573221977098435', 'raster_cut_path': 'teste', 'png_bin_path': 'teste', 'png_cont_path': 'teste', 'png_cut_path': 'teste'}
>>> query = urllib.urlencode(params)
>>> url = 'https://model-r.jbrj.gov.br/ws/setresult.php'
>>> f = urllib.urlopen(url, query)
>>> f.close()
>>> print contents
{"experiment":[{"id":"68","op": "1","msg": ""}]}

Funcionou? Pela resposta parece que não.

rafaeloliveiralima commented 7 years ago
    os valores numericos no banco estao com 5 casas decimais. vou alterar 

    Obter o Outlook para iOS

On Thu, Sep 14, 2017 at 1:54 PM -0300, "Guilherme Gall" notifications@github.com wrote:

Eu fiz um teste e não sei se ele foi bem sucedido.

Em Python fiz o seguinte:

import urllib params = {'id': '68', 'op': 'I', 'idresulttype': '1', 'partition': '1', 'algorithm': 'BioClim', 'kappa': '0.07884737', 'spec_sens': '0.07884737', 'no_omission': '-1e-04', 'prevalence': '0.42095263', 'equal_sens_spec': '0.03498772', 'sensitivity': '0.01744386', 'auc': '0.847095283117975', 'tss': '0.573221977098435', 'raster_cut_path': 'teste', 'png_bin_path': 'teste', 'png_cont_path': 'teste', 'png_cut_path': 'teste'} query = urllib.urlencode(params) url = 'https://model-r.jbrj.gov.br/ws/setresult.php' f = urllib.urlopen(url, query) f.close() print contents {"experiment":[{"id":"68","op": "1","msg": ""}]}

Funcionou? Pela resposta parece que não.

— You are receiving this because you commented. Reply to this email directly, view it on GitHub, or mute the thread.

rafaeloliveiralima commented 7 years ago
    nao sei como k banco trata a entrada de valores com notação científica -1e-04. os demais campos alterei. faca mais um teste para verificar

    Obter o Outlook para iOS

On Thu, Sep 14, 2017 at 1:57 PM -0300, rafaeloliveiralima@ibest.com.br wrote:

    os valores numericos no banco estao com 5 casas decimais. vou alterar 

    Obter o Outlook para iOS

On Thu, Sep 14, 2017 at 1:54 PM -0300, "Guilherme Gall" notifications@github.com wrote:

Eu fiz um teste e não sei se ele foi bem sucedido.

Em Python fiz o seguinte:

import urllib params = {'id': '68', 'op': 'I', 'idresulttype': '1', 'partition': '1', 'algorithm': 'BioClim', 'kappa': '0.07884737', 'spec_sens': '0.07884737', 'no_omission': '-1e-04', 'prevalence': '0.42095263', 'equal_sens_spec': '0.03498772', 'sensitivity': '0.01744386', 'auc': '0.847095283117975', 'tss': '0.573221977098435', 'raster_cut_path': 'teste', 'png_bin_path': 'teste', 'png_cont_path': 'teste', 'png_cut_path': 'teste'} query = urllib.urlencode(params) url = 'https://model-r.jbrj.gov.br/ws/setresult.php' f = urllib.urlopen(url, query) f.close() print contents {"experiment":[{"id":"68","op": "1","msg": ""}]}

Funcionou? Pela resposta parece que não.

— You are receiving this because you commented. Reply to this email directly, view it on GitHub, or mute the thread.

rafaeloliveiralima commented 7 years ago

Fiz os ajustes no banco para aceitar os valores numéricos passados e funcionou. @gmgall rode novamente que deverá aparecer a mensagem

{"experiment":[{"id":"68","op": "I","msg": "Adicionado com sucesso"}]}

gmgall commented 7 years ago

Agora recebi uma resposta de sucesso:

>>> params = {'id': '68', 'op': 'I', 'idresulttype': '1', 'partition': '1', 'algorithm': 'BioClim', 'kappa': '0.07884737', 'spec_sens': '0.07884737', 'no_omission': '-1e-04', 'prevalence': '0.42095263', 'equal_sens_spec': '0.03498772', 'sensitivity': '0.01744386', 'auc': '0.847095283117975', 'tss': '0.573221977098435', 'raster_cut_path': 'teste', 'png_bin_path': 'teste', 'png_cont_path': 'teste', 'png_cut_path': 'teste'}
>>> query = urllib.urlencode(params)
>>> f = urllib.urlopen(url, query)
>>> contents = f.read()
>>> print contents
{"experiment":[{"id":"68","op": "I","msg": "Adicionado com sucesso"}]}
>>> f.close()

Confirma a escrita no banco?

rafaeloliveiralima commented 7 years ago

@gmgall Confirmado! Sucesso!!!!

gmgall commented 7 years ago

Ok, confirmando se entendi como usar o método.

Para uma modelagem como o resultado abaixo (arquivos .txt omitidos por brevidade)

$ tree -I '*txt' Eugenia\ florida\ DC./
Eugenia florida DC./
├── BioClim_bin_Eugenia florida DC._1.tif
├── BioClim_bin_Eugenia florida DC._2.tif
├── BioClim_bin_Eugenia florida DC._3.tif
├── BioClim_cont_Eugenia florida DC._1.tif
├── BioClim_cont_Eugenia florida DC._2.tif
├── BioClim_cont_Eugenia florida DC._3.tif
├── BioClim_cut_Eugenia florida DC._1.tif
├── BioClim_cut_Eugenia florida DC._2.tif
├── BioClim_cut_Eugenia florida DC._3.tif
├── BioclimEugenia florida DC._1001.png
├── BioclimEugenia florida DC._1002.png
├── BioclimEugenia florida DC._1003.png
├── BioclimEugenia florida DC._2001.png
├── BioclimEugenia florida DC._2002.png
├── BioclimEugenia florida DC._2003.png
├── BioclimEugenia florida DC._3001.png
├── BioclimEugenia florida DC._3002.png
├── BioclimEugenia florida DC._3003.png
├── Domain_bin_Eugenia florida DC._1.tif
├── Domain_bin_Eugenia florida DC._2.tif
├── Domain_bin_Eugenia florida DC._3.tif
├── Domain_cont_Eugenia florida DC._1.tif
├── Domain_cont_Eugenia florida DC._2.tif
├── Domain_cont_Eugenia florida DC._3.tif
├── Domain_cut_Eugenia florida DC._1.tif
├── Domain_cut_Eugenia florida DC._2.tif
├── Domain_cut_Eugenia florida DC._3.tif
├── DomainEugenia florida DC._1001.png
├── DomainEugenia florida DC._1002.png
├── DomainEugenia florida DC._1003.png
├── DomainEugenia florida DC._2001.png
├── DomainEugenia florida DC._2002.png
├── DomainEugenia florida DC._2003.png
├── DomainEugenia florida DC._3001.png
├── DomainEugenia florida DC._3002.png
├── DomainEugenia florida DC._3003.png
├── ensemble
│   ├── Eugenia florida DC._Final.bin.mean3_ensemble.png
│   ├── Eugenia florida DC._Final.bin.mean3_ensemble.tif
│   ├── Eugenia florida DC._Final.mean.bin7_ensemble.png
│   └── Eugenia florida DC._Final.mean.bin7_ensemble.tif
├── glm_bin_Eugenia florida DC._1.tif
├── glm_bin_Eugenia florida DC._2.tif
├── glm_bin_Eugenia florida DC._3.tif
├── glm_cont_Eugenia florida DC._1.tif
├── glm_cont_Eugenia florida DC._2.tif
├── glm_cont_Eugenia florida DC._3.tif
├── glm_cut_Eugenia florida DC._1.tif
├── glm_cut_Eugenia florida DC._2.tif
├── glm_cut_Eugenia florida DC._3.tif
├── glmEugenia florida DC._1001.png
├── glmEugenia florida DC._1002.png
├── glmEugenia florida DC._1003.png
├── glmEugenia florida DC._2001.png
├── glmEugenia florida DC._2002.png
├── glmEugenia florida DC._2003.png
├── glmEugenia florida DC._3001.png
├── glmEugenia florida DC._3002.png
├── glmEugenia florida DC._3003.png
├── Mahal_bin_Eugenia florida DC._1.tif
├── Mahal_bin_Eugenia florida DC._2.tif
├── Mahal_bin_Eugenia florida DC._3.tif
├── Mahal_cont_Eugenia florida DC._1.tif
├── Mahal_cont_Eugenia florida DC._2.tif
├── Mahal_cont_Eugenia florida DC._3.tif
├── Mahal_cut_Eugenia florida DC._1.tif
├── Mahal_cut_Eugenia florida DC._2.tif
├── Mahal_cut_Eugenia florida DC._3.tif
├── MahalEugenia florida DC._1001.png
├── MahalEugenia florida DC._1002.png
├── MahalEugenia florida DC._1003.png
├── MahalEugenia florida DC._2001.png
├── MahalEugenia florida DC._2002.png
├── MahalEugenia florida DC._2003.png
├── MahalEugenia florida DC._3001.png
├── MahalEugenia florida DC._3002.png
├── MahalEugenia florida DC._3003.png
├── maxent_bin_Eugenia florida DC._1.tif
├── maxent_bin_Eugenia florida DC._2.tif
├── maxent_bin_Eugenia florida DC._3.tif
├── maxent_cont_Eugenia florida DC._1.tif
├── maxent_cont_Eugenia florida DC._2.tif
├── maxent_cont_Eugenia florida DC._3.tif
├── maxent_cut_Eugenia florida DC._1.tif
├── maxent_cut_Eugenia florida DC._2.tif
├── maxent_cut_Eugenia florida DC._3.tif
├── maxentEugenia florida DC._1001.png
├── maxentEugenia florida DC._1002.png
├── maxentEugenia florida DC._1003.png
├── maxentEugenia florida DC._2001.png
├── maxentEugenia florida DC._2002.png
├── maxentEugenia florida DC._2003.png
├── maxentEugenia florida DC._3001.png
├── maxentEugenia florida DC._3002.png
├── maxentEugenia florida DC._3003.png
├── presfinal
│   ├── Final.bin.mean3Eugenia florida DC.BioClim.png
│   ├── Final.bin.mean3Eugenia florida DC.BioClim.tif
│   ├── Final.bin.mean3Eugenia florida DC.Domain.png
│   ├── Final.bin.mean3Eugenia florida DC.Domain.tif
│   ├── Final.bin.mean3Eugenia florida DC.glm.png
│   ├── Final.bin.mean3Eugenia florida DC.glm.tif
│   ├── Final.bin.mean3Eugenia florida DC.Mahal.png
│   ├── Final.bin.mean3Eugenia florida DC.Mahal.tif
│   ├── Final.bin.mean3Eugenia florida DC.maxent.png
│   ├── Final.bin.mean3Eugenia florida DC.maxent.tif
│   ├── Final.bin.mean3Eugenia florida DC.rf.png
│   ├── Final.bin.mean3Eugenia florida DC.rf.tif
│   ├── Final.bin.mean3Eugenia florida DC.svm2.png
│   ├── Final.bin.mean3Eugenia florida DC.svm2.tif
│   ├── Final.bin.mean3Eugenia florida DC.svm.png
│   ├── Final.bin.mean3Eugenia florida DC.svm.tif
│   ├── Final.mean.bin7Eugenia florida DC.BioClim.png
│   ├── Final.mean.bin7Eugenia florida DC.BioClim.tif
│   ├── Final.mean.bin7Eugenia florida DC.Domain.png
│   ├── Final.mean.bin7Eugenia florida DC.Domain.tif
│   ├── Final.mean.bin7Eugenia florida DC.glm.png
│   ├── Final.mean.bin7Eugenia florida DC.glm.tif
│   ├── Final.mean.bin7Eugenia florida DC.Mahal.png
│   ├── Final.mean.bin7Eugenia florida DC.Mahal.tif
│   ├── Final.mean.bin7Eugenia florida DC.maxent.png
│   ├── Final.mean.bin7Eugenia florida DC.maxent.tif
│   ├── Final.mean.bin7Eugenia florida DC.rf.png
│   ├── Final.mean.bin7Eugenia florida DC.rf.tif
│   ├── Final.mean.bin7Eugenia florida DC.svm2.png
│   ├── Final.mean.bin7Eugenia florida DC.svm2.tif
│   ├── Final.mean.bin7Eugenia florida DC.svm.png
│   └── Final.mean.bin7Eugenia florida DC.svm.tif
├── rf_bin_Eugenia florida DC._1.tif
├── rf_bin_Eugenia florida DC._2.tif
├── rf_bin_Eugenia florida DC._3.tif
├── rf_cont_Eugenia florida DC._1.tif
├── rf_cont_Eugenia florida DC._2.tif
├── rf_cont_Eugenia florida DC._3.tif
├── rf_cut_Eugenia florida DC._1.tif
├── rf_cut_Eugenia florida DC._2.tif
├── rf_cut_Eugenia florida DC._3.tif
├── rfEugenia florida DC._1001.png
├── rfEugenia florida DC._1002.png
├── rfEugenia florida DC._1003.png
├── rfEugenia florida DC._2001.png
├── rfEugenia florida DC._2002.png
├── rfEugenia florida DC._2003.png
├── rfEugenia florida DC._3001.png
├── rfEugenia florida DC._3002.png
├── rfEugenia florida DC._3003.png
├── svm2_bin_Eugenia florida DC._1.tif
├── svm2_bin_Eugenia florida DC._2.tif
├── svm2_bin_Eugenia florida DC._3.tif
├── svm2_cont_Eugenia florida DC._1.tif
├── svm2_cont_Eugenia florida DC._2.tif
├── svm2_cont_Eugenia florida DC._3.tif
├── svm2_cut_Eugenia florida DC._1.tif
├── svm2_cut_Eugenia florida DC._2.tif
├── svm2_cut_Eugenia florida DC._3.tif
├── svm2Eugenia florida DC._1001.png
├── svm2Eugenia florida DC._1002.png
├── svm2Eugenia florida DC._1003.png
├── svm2Eugenia florida DC._2001.png
├── svm2Eugenia florida DC._2002.png
├── svm2Eugenia florida DC._2003.png
├── svm2Eugenia florida DC._3001.png
├── svm2Eugenia florida DC._3002.png
├── svm2Eugenia florida DC._3003.png
├── svm_bin_Eugenia florida DC._1.tif
├── svm_bin_Eugenia florida DC._2.tif
├── svm_bin_Eugenia florida DC._3.tif
├── svm_cont_Eugenia florida DC._1.tif
├── svm_cont_Eugenia florida DC._2.tif
├── svm_cont_Eugenia florida DC._3.tif
├── svm_cut_Eugenia florida DC._1.tif
├── svm_cut_Eugenia florida DC._2.tif
├── svm_cut_Eugenia florida DC._3.tif
├── svmEugenia florida DC._1001.png
├── svmEugenia florida DC._1002.png
├── svmEugenia florida DC._1003.png
├── svmEugenia florida DC._2001.png
├── svmEugenia florida DC._2002.png
├── svmEugenia florida DC._2003.png
├── svmEugenia florida DC._3001.png
├── svmEugenia florida DC._3002.png
└── svmEugenia florida DC._3003.png

Para informar cada partição, faço um post como o abaixo:

>>> params = {'id': '68',
'op': 'I',
'idresulttype': '1',
'partition': '1',
'algorithm': 'BioClim',
'kappa': '0.07884737',
'spec_sens': '0.07884737',
'no_omission': '-1e-04',
'prevalence': '0.42095263',
'equal_sens_spec': '0.03498772',
'sensitivity': '0.01744386',
'auc': '0.847095283117975',
'tss': '0.573221977098435',
'raster_cut_path': '/path/para/BioClim_cut_Eugenia florida DC._1.tif',
'png_bin_path': '/path/para/BioclimEugenia florida DC._1001.png',
'png_cont_path': '/path/para/BioclimEugenia florida DC._1002.png',
'png_cut_path': '/path/para/BioclimEugenia florida DC._1003.png'}

Isso já foi confirmado que está funcionando. :white_check_mark:

:one: Mas os arquivos BioClim_bin_Eugenia florida DC._1.tif e BioClim_cont_Eugenia florida DC._1.tif serão ignorados? Apenas o raster_cut_path foi documentado como parâmetro.

:two: Como informar os resultados de finalModel()? Pelo que entendi, é usando 'idresulttype': '2'. Mas qual parâmetro usar para informar os arquivos Final.bin.mean3* e Final.mean.bin7*?

:three: Mesma dúvida para os arquivos gerados por ensemble(): pelo que entendi, é usando 'idresulttype': '3', mas qual parâmetro uso para informar os arquivos *_Final.mean.bin7_ensemble.tif e *_Final.bin.mean3_ensemble.tif?

Forneça um exemplo dado os resultados de modelagem acima, iria ficar mais claro.

rafaeloliveiralima commented 7 years ago

@gmgall Para cada modelo gerado (raster) a estrutura criada para armazenar é a seguinte: idexperiment , idresulttype , partition , algorithm , tss, auc , sensitivity , equal_sens_spec , prevalence , no_omission , spec_sens, raster_bin_path, raster_cont_path, raster_cut_path, png_bin_path, png_cont_path, png_cut_path , kappa

BioClim_bin_Eugenia florida DC._1.tif ├── BioClim_bin_Eugenia florida DC._2.tif ├── BioClim_bin_Eugenia florida DC._3.tif ├── BioClim_cont_Eugenia florida DC._1.tif ├── BioClim_cont_Eugenia florida DC._2.tif ├── BioClim_cont_Eugenia florida DC._3.tif ├── BioClim_cut_Eugenia florida DC._1.tif ├── BioClim_cut_Eugenia florida DC._2.tif ├── BioClim_cut_Eugenia florida DC._3.tif

Para esses arquivos a estrutura atende bem. O idresulttype = 1 (partições). Isso também irá funcionar bem para o essemble. Já para os demais eu não havia definido um idresulttype por não saber todos os tipos que seriam gerados. Criei o código idreusltype = 4 (outros) a idresulttype = 10 (outros 7) para você utilizar como achar melhor. Depois me diga qual código você usou para cada tipo e eu renomeio o registro na tabela.

gmgall commented 7 years ago

Isso responde :one: da minha mensagem anterior: raster_bin_path e raster_cont_path não haviam sido documentadas a princípio nem aqui na issue nem no markdown com documentação no repositório.

:two: e :three: continuam sem resposta, ou não entendi o que você quis dizer.

Estou considerando que informo os resultados das funções do_algortimo() via idresulttype = 1, os resultados de finalModel() via idresulttype = 2 e os resultados de ensemble() via idresulttype = 3.

Entendi corretamente?

E se entendi, que parâmetros uso para informar o path dos arquivos Final.bin.mean3* e Final.mean.bin7* (gerados por finalModel()) e dos arquivos *_Final.mean.bin7_ensemble.tif e *_Final.bin.mean3_ensemble.tif (gerados por ensemble())?

Repito o que eu disse na mensagem anterior: forneça um exemplo de como informar os resultados da modelagem que apresentei, isso vai facilitar bastante.

Idealmente, documente todas as funções e seus parâmetros possíveis, com exemplos.

rafaeloliveiralima commented 7 years ago

@gmgall faz o seguinte; o que você não souber onde colocar por falta de documentação, escolha aleatoriamente um número entre o número 4 e 10 (outros) para o IDResulttype e preencha os campos para os rasters (tiff) e png. O mais importante nesse momento é conseguirmos buscar esses arquivos para montar uma página de resultado. Att Rafael Lima

diogosbr commented 7 years ago

Bom dia! @gmgall , se entendi, para informar os demais resultados (ensemble e presfinal), utilizando seu exemplo acima, acho que ficaria assim:

Para cada partição:

>>> params = {'id': '68',
'op': 'I',
'idresulttype': '1',
'partition': '1',
'algorithm': 'BioClim',
'kappa': '0.07884737',
'spec_sens': '0.07884737',
'no_omission': '-1e-04',
'prevalence': '0.42095263',
'equal_sens_spec': '0.03498772',
'sensitivity': '0.01744386',
'auc': '0.847095283117975',
'tss': '0.573221977098435',
'raster_cut_path': '/path/para/BioClim_cut_Eugenia florida DC._1.tif',
'png_bin_path': '/path/para/BioclimEugenia florida DC._1001.png',
'png_cont_path': '/path/para/BioclimEugenia florida DC._1002.png',
'png_cut_path': '/path/para/BioclimEugenia florida DC._1003.png'}

para cada Ensemble

>>> params = {'id': '68',
'op': 'I',
'idresulttype': '3',
'partition': '',
'algorithm': '',
'kappa': '',
'spec_sens': '',
'no_omission': '',
'prevalence': '',
'equal_sens_spec': '',
'sensitivity': '',
'auc': '',
'tss': '',
'raster_cut_path': '/path/para/Eugenia florida DC._Final.bin.mean3_ensemble.tif',
'png_bin_path': '',
'png_cont_path': '/path/para/Eugenia florida DC._Final.bin.mean3_ensemble.png',
'png_cut_path': 'AQUI VAI SER UM PNG, SEM BORDAS, GERADO A PARTIR DO TIF'}

Para cada Presfinal

>>> params = {'id': '68',
'op': 'I',
'idresulttype': '2',
'partition': '',
'algorithm': '',
'kappa': '',
'spec_sens': '',
'no_omission': '',
'prevalence': '',
'equal_sens_spec': '',
'sensitivity': '',
'auc': '',
'tss': '',
'raster_cut_path': '/path/para/Final.bin.mean3Eugenia florida DC.BioClim.tif',
'png_bin_path': '',
'png_cont_path': '/path/para/Final.bin.mean3Eugenia florida DC.BioClim.png',
'png_cut_path': 'AQUI VAI SER UM PNG, SEM BORDAS, GERADO A PARTIR DO TIF'}
gmgall commented 7 years ago

Ao tentar usar os parâmetros sugeridos para informar os resultados de finalModel() e ensemble(), recebo como resposta o seguinte erro:

{"experiment":[{"id":"68","op": "I","msg": "N�o foi poss�vel adicionar"}]}

Continuo só tendo sucesso ao informar as partições.

Fico no aguardo de instruções ou documentação para prosseguir.

rafaeloliveiralima commented 7 years ago

Acho o problema. Não era o numero da partição e sim o Kappa. Anteriormente o kappa estava com string e passou ser um valor numeric. O tratamento não estava sendo realizado por conta disso. @gmgall teste agora para ver se funciona.

diogosbr commented 7 years ago

@gmgall , Funcionou?

gmgall commented 7 years ago

Ao que parece, funcionou. O commit Model-R/Middleware@408b3546d1272b59452c264e915dfddd2892d025 implementa as funções em Python que usarei para informar os resultados dos experimentos.


Apenas uma observação: o webservice está aceitando vários campos como opcionais, até alguns que teoricamente são obrigatórios. Exemplo:

>>> import urllib
>>> params = {'idresulttype': '2', 'id': '68', 'op': 'I'}
>>> url = 'https://model-r.jbrj.gov.br/ws/setresult.php'
>>> query = urllib.urlencode(params)
>>> f = urllib.urlopen(url, query)
>>> contents = f.read()
>>> print contents
{"experiment":[{"id":"68","op": "I","msg": "Adicionado com sucesso"}]}

As funções que escrevi tem os parâmetros como obrigatórios:

>>> # Passando 4 argumentos, como esperado
>>> import modelr
>>> modelr.inform_ensembles('68', '/path/para/Eugenia florida DC._Final.bin.mean3_ensemble.tif', '/path/para/Eugenia florida DC._Final.bin.mean3_ensemble.png', 'AQUI VAI SER UM PNG, SEM BORDAS, GERADO A PARTIR DO TIF')
{"experiment":[{"id":"68","op": "I","msg": "Adicionado com sucesso"}]}
>>> # Passando apenas 3 argumentos
>>> modelr.inform_ensembles('68', '/path/para/Eugenia florida DC._Final.bin.mean3_ensemble.tif', '/path/para/Eugenia florida DC._Final.bin.mean3_ensemble.png')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: inform_ensembles() takes exactly 4 arguments (3 given)

Pode ser relevante validar os parâmetros no webservice, especialmente se algum outro código além do meu no futuro for cliente dele.

diogosbr commented 7 years ago

Beleza @gmgall !

Já é possível fazer algum teste? Gerar alguns modelos?

diogosbr commented 7 years ago

Em relação a tabela 'idresulttype', pensamos em acrescentar outros tipos de resultados, como o exemplo abaixo. A ideia é criar a possibilidade de exibição de das 11 saídas possíveis dos modelos. Atualmente está sendo gerada a 3 e a 7 .

Tabela idresulttype atualmente:

idresulttype resulttype
1 Partições
2 Modelos Finais
3 Essembles
4 Outros
5 Outros 2
6 Outros 3
7 Outros 4
8 Outros 5
9 Outros 6
10 Outros 7

Tabela idresulttype nova:

idresulttype resulttype model
101 Partição Contínua PARTITION
102 Partição Binária PARTITION
103 Partição Cortada PARTITION
201 Pres Final 1 PRES FINAL
202 Pres Final 2 PRES FINAL
203 Pres Final 3 PRES FINAL
204 Pres Final 4 PRES FINAL
205 Pres Final 5 PRES FINAL
206 Pres Final 6 PRES FINAL
207 Pres Final 7 PRES FINAL
208 Pres Final 8 PRES FINAL
209 Pres Final 9 PRES FINAL
210 Pres Final 10 PRES FINAL
211 Pres Final 11 PRES FINAL
301 Ensemble 1 ENSEMBLE
302 Ensemble 2 ENSEMBLE
303 Ensemble 3 ENSEMBLE
304 Ensemble 4 ENSEMBLE
305 Ensemble 5 ENSEMBLE
306 Ensemble 6 ENSEMBLE
307 Ensemble 7 ENSEMBLE
308 Ensemble 8 ENSEMBLE
309 Ensemble 9 ENSEMBLE
310 Ensemble 10 ENSEMBLE
311 Ensemble 11 ENSEMBLE
400 Processado PROCESS

Além disso, mudaria o nome de alguns campos do webservice. Substitui:

'raster_cut_path' 'png_bin_path' 'png_cont_path' 'png_cut_path'

Por:

"tiff_path"(obrigatório) - será o raster do modelo "png_path" (obrigatório) - será aquele PNG com 'bordas' que já é gerado. "raster_png_path" (opcional) - será um PNG do raster do modelo sem bordas, mas que só será criado para os modelos do tipo "ENSEMBLE" (201 a 211).

gmgall commented 7 years ago

Podemos fazer essas mudanças facilmente, só precisamos concordar com um padrão primeiro.

Em Model-R/Middleware@408b3546d1272b59452c264e915dfddd2892d0 criei funções que assumem a 1ª tabela para idresulttype e campos nomeados conforme o padrão anterior (raster_cut_path, png_bin_path, png_cont_path e png_cut_path).

Faço novas funções quando tivermos definido tudo. Além do listado na mensagem anterior, mais alguma coisa será modificada?

diogosbr commented 7 years ago

Acho dese jeito está ok, já podemos implementar.

diogosbr commented 7 years ago

@gmgall , acho que já seria interessante implementar o retorno levando em consideração o exemplo que citei nessa mensagem.

gmgall commented 7 years ago

Teremos mais alguma modificação no web service ou posso considerar o discutido até aqui como final?

diogosbr commented 7 years ago

Talvez, precise informar o 'extent' do modelo final (informado como "tiff_path" no ws). A princípio, o 'extent' do modelo é igual ao do raster informado como variáveis ambientais. Porém, dependendo do 'mask' o 'extent' pode mudar e esse novo deve ser informado para exibição no mapa web na interface.

AndreaSanchezTapia commented 7 years ago

@diogosbr se tem mask o modelo final já tem o extent do mask, se não me engano. O raster anterior não é o modelo final. Informar sempre o extent do modelo final resolveria isso. De outra forma seria informar o extent das variáveis ou o do mask, caso tenha mask. Você chegou a testar os png na interface?

diogosbr commented 7 years ago

SIm, poderia informar o extent do raster ou do mask, se houver. Os pngs estão funcionando sim. Daí informei o extent pra ele poder exibir.

diogosbr commented 7 years ago

@AndreaSanchezTapia , vc acha que seria interessante disponibilizar também a tabela "sdm.txt" para o usuário da interface?

AndreaSanchezTapia commented 7 years ago

Pro taxo não. Pro not-taxo pode ser uma boa ter um botão. Mas eu preciso de usar mais para saber.

diogosbr commented 7 years ago

Bom, então por enquanto acho que dá pra fechar assim. Informando o raster, os pngs e o extent do mask, se houver. Além dos outro parâmetros (tss, auc, ...).

AndreaSanchezTapia commented 7 years ago

Mas não fica melhor informar um extent só, o do modelo final? Se ele estiver cropado vai ser o do mask, se ele não estiver vai ser o das variáveis

diogosbr commented 7 years ago

Isso.

gmgall commented 6 years ago

O formato combinado não parece ter sido implementado.

Favor ler https://github.com/Model-R/Front-end/issues/16#issuecomment-376981699

gmgall commented 6 years ago

Então, voltando a essa discussão. Considerando a saída abaixo (coloquei só o Bioclim por brevidade):

.
├── ensemble
│   ├── Eugenia florida DC._Final.bin.mean3_ensemble.png
│   ├── Eugenia florida DC._Final.bin.mean3_ensemble.tif
│   ├── Eugenia florida DC._Final.bin.mean3_ensemble_without_margins.png
│   ├── Eugenia florida DC._Final.mean.bin7_ensemble.png
│   ├── Eugenia florida DC._Final.mean.bin7_ensemble.tif
│   └── Eugenia florida DC._Final.mean.bin7_ensemble_without_margins.png
├── final_models
│   ├── Final.bin.mean3Eugenia florida DC.BioClim.tif
│   ├── Final.bin.mean3Eugenia florida DC.Domain.tif
│   ├── Final.bin.mean3Eugenia florida DC.glm.tif
│   ├── Final.bin.mean3Eugenia florida DC.Mahal.tif
│   ├── Final.bin.mean3Eugenia florida DC.maxent.tif
│   ├── Final.bin.mean3Eugenia florida DC.rf.tif
│   ├── Final.bin.mean3Eugenia florida DC.svm2.tif
│   ├── Final.bin.mean3Eugenia florida DC.svm.tif
│   ├── Final.mean.bin7Eugenia florida DC.BioClim.tif
│   ├── Final.mean.bin7Eugenia florida DC.Domain.tif
│   ├── Final.mean.bin7Eugenia florida DC.glm.tif
│   ├── Final.mean.bin7Eugenia florida DC.Mahal.tif
│   ├── Final.mean.bin7Eugenia florida DC.maxent.tif
│   ├── Final.mean.bin7Eugenia florida DC.rf.tif
│   ├── Final.mean.bin7Eugenia florida DC.svm2.tif
│   └── Final.mean.bin7Eugenia florida DC.svm.tif
└── partitions
    ├── BioClim_bin_Eugenia florida DC._1.tif
    ├── BioClim_bin_Eugenia florida DC._2.tif
    ├── BioClim_bin_Eugenia florida DC._3.tif
    ├── BioClim_cont_Eugenia florida DC._1.tif
    ├── BioClim_cont_Eugenia florida DC._2.tif
    ├── BioClim_cont_Eugenia florida DC._3.tif
    ├── BioClim_cut_Eugenia florida DC._1.tif
    ├── BioClim_cut_Eugenia florida DC._2.tif
    ├── BioClim_cut_Eugenia florida DC._3.tif
    ├── BioclimEugenia florida DC._1001.png
    ├── BioclimEugenia florida DC._1002.png
    ├── BioclimEugenia florida DC._1003.png
    ├── BioclimEugenia florida DC._2001.png
    ├── BioclimEugenia florida DC._2002.png
    ├── BioclimEugenia florida DC._2003.png
    ├── BioclimEugenia florida DC._3001.png
    ├── BioclimEugenia florida DC._3002.png
    ├── BioclimEugenia florida DC._3003.png

Vou fazer chamadas como as abaixo para as partições contínuas, certo?

:one:

params = {'id': 'bd4c9ab730f5513206b999ec0d90d1fb',
'idresulttype': '101',
'op': 'I',
'partition': 1,
'algorithm': 'BioClim',
'kappa': 1111,
'spec_sens': 2222,
'no_omission': 3333,
'prevalence': 4444,
'equal_sens_spec': 5555,
'sensitivity': 6666,
'auc': 7777,
'tss': 8888,
'tiff_path': 'BioClim_cont_Eugenia florida DC._1.tif'
'png_path': 'BioclimEugenia florida DC._1001.png'
'raster_png_path': ''
}

:two: (omitindo os parâmetros numéricos por brevidade)

params = {'id': 'bd4c9ab730f5513206b999ec0d90d1fb',
'idresulttype': '101',
'op': 'I',
'partition': 2,
'algorithm': 'BioClim',
'tiff_path': 'BioClim_cont_Eugenia florida DC._2.tif'
'png_path': 'BioclimEugenia florida DC._1002.png'
'raster_png_path': ''
}

:three: (omitindo os parâmetros numéricos por brevidade)

params = {'id': 'bd4c9ab730f5513206b999ec0d90d1fb',
'idresulttype': '101',
'op': 'I',
'partition': 3,
'algorithm': 'BioClim',
'tiff_path': 'BioClim_cont_Eugenia florida DC._3.tif'
'png_path': 'BioclimEugenia florida DC._1003.png'
'raster_png_path': ''
}

Vou fazer chamadas como as abaixo para as partições binárias, certo?

:one:

params = {'id': 'bd4c9ab730f5513206b999ec0d90d1fb',
'idresulttype': '102',
'op': 'I',
'partition': 1,
'algorithm': 'BioClim',
'kappa': 1111,
'spec_sens': 2222,
'no_omission': 3333,
'prevalence': 4444,
'equal_sens_spec': 5555,
'sensitivity': 6666,
'auc': 7777,
'tss': 8888,
'tiff_path': 'BioClim_bin_Eugenia florida DC._1.tif'
'png_path': 'BioclimEugenia florida DC._2001.png'
'raster_png_path': ''
}

:two: (omitindo os parâmetros numéricos por brevidade)

params = {'id': 'bd4c9ab730f5513206b999ec0d90d1fb',
'idresulttype': '102',
'op': 'I',
'partition': 2,
'algorithm': 'BioClim',
'tiff_path': 'BioClim_bin_Eugenia florida DC._2.tif'
'png_path': 'BioclimEugenia florida DC._2002.png'
'raster_png_path': ''
}

:three: (omitindo os parâmetros numéricos por brevidade)

params = {'id': 'bd4c9ab730f5513206b999ec0d90d1fb',
'idresulttype': '102',
'op': 'I',
'partition': 3,
'algorithm': 'BioClim',
'tiff_path': 'BioClim_bin_Eugenia florida DC._3.tif'
'png_path': 'BioclimEugenia florida DC._2003.png'
'raster_png_path': ''
}

Vou fazer chamadas como as abaixo para as partições cortadas, certo?

:one:

params = {'id': 'bd4c9ab730f5513206b999ec0d90d1fb',
'idresulttype': '103',
'op': 'I',
'partition': 1,
'algorithm': 'BioClim',
'kappa': 1111,
'spec_sens': 2222,
'no_omission': 3333,
'prevalence': 4444,
'equal_sens_spec': 5555,
'sensitivity': 6666,
'auc': 7777,
'tss': 8888,
'tiff_path': 'BioClim_cut_Eugenia florida DC._1.tif'
'png_path': 'BioclimEugenia florida DC._3001.png'
'raster_png_path': ''
}

:two: (omitindo os parâmetros numéricos por brevidade)

params = {'id': 'bd4c9ab730f5513206b999ec0d90d1fb',
'idresulttype': '103',
'op': 'I',
'partition': 2,
'algorithm': 'BioClim',
'tiff_path': 'BioClim_bin_Eugenia florida DC._2.tif'
'png_path': 'BioclimEugenia florida DC._3002.png'
'raster_png_path': ''
}

:three: (omitindo os parâmetros numéricos por brevidade)

params = {'id': 'bd4c9ab730f5513206b999ec0d90d1fb',
'idresulttype': '103',
'op': 'I',
'partition': 3,
'algorithm': 'BioClim',
'tiff_path': 'BioClim_bin_Eugenia florida DC._3.tif'
'png_path': 'BioclimEugenia florida DC._3003.png'
'raster_png_path': ''
}

É isso mesmo? Acho o nome dos PNGs especialmente confusos. Fiz a correspondência corretamente?

Por favor confirmem se entendi como fazer as chamadas.

antunesmg commented 6 years ago

Isso mesmo Guilherme. Só uma coisa. No idresulttype = 303. O campo 'raster_png_path' precisa estar preenchido com o png sem bordas que será exibido no mapa

AndreaSanchezTapia commented 6 years ago

"Acho o nome dos PNGs especialmente confusos" -- vou tentar arranjar isso de algum modo, @gmgall @antunesmg passar para cont, bin e cut.

AndreaSanchezTapia commented 6 years ago

vocês querem que eu faça isso agora @gmgall ? posso editar diretamente aqui e comitar. Para cada tif BioClim_bin_Eugenia florida DC._3.tif teria um png exatamente igual BioClim_bin_Eugenia florida DC._3.png

gmgall commented 6 years ago

Por mim, tudo bem @AndreaSanchezTapia. É uma alteração muito complicada?

AndreaSanchezTapia commented 6 years ago

Não @gmgall, é super simples. Eu vou fazer esta mudança e mais outro par durante a semana e escrevo para vocês.

AndreaSanchezTapia commented 6 years ago

@gmgall aquela mudança do nome dos png ficou implementada no branch andrea do pacote. [Agora me liguei que deveria ser no master mas acho que vai ter um PR até semana que vem]

diogosbr commented 6 years ago

Como ficou essa issue? A modelagem está sendo feita no SD e o retorno dos resutados está sendo enviado para o JB? (@gmgall @antunesmg )

@AndreaSanchezTapia e o PR foi feito?

antunesmg commented 6 years ago

Acho que não está chegando nada aqui no JB

gmgall commented 6 years ago

Não estou conseguindo mais usar esse método. Alguma coisa mudou?

Avisem-me caso eu esteja usando incorretamente, por favor.

Segue uma tentativa:

>>> params = {'id': 'bd4c9ab730f5513206b999ec0d90d1fb',
'idresulttype': '103',
'op': 'I',
'partition': 1,
'algorithm': 'BioClim',
'kappa': 1111,
'spec_sens': 2222,
'no_omission': 3333,
'prevalence': 4444,
'equal_sens_spec': 5555,
'sensitivity': 6666,
'auc': 7777,
'tss': 8888,
'tiff_path': 'BioClim_cut_Eugenia florida DC._1.tif',
'png_path': 'BioclimEugenia florida DC._3001.png',
'raster_png_path': ''}
>>> modelr.inform_experiment_results(params)                                                           
b'Array\n(\n    [spec_sens] => 2222\n    [op] => I\n    [partition] => 1\n    [png_path] => BioclimEugenia florida DC._3001.png\n    [tss] => 8888\n    [sensitivity] => 6666\n    [raster_png_path] => \n    [equal_sens_spec] => 5555\n    [idresulttype] => 103\n    [tiff_path] => BioClim_cut_Eugenia florida DC._1.tif\n    [prevalence] => 4444\n    [id] => bd4c9ab730f5513206b999ec0d90d1fb\n    [kappa] => 1111\n    [no_omission] => 3333\n    [auc] => 7777\n    [algorithm] => BioClim\n)\n<br />\n<b>Notice</b>:  Trying to get property of non-object in <b>/var/www/html/rafael/modelr/ws/setresult.php</b> on line <b>27</b><br />\n<br />\n<b>Notice</b>:  Trying to get property of non-object in <b>/var/www/html/rafael/modelr/ws/setresult.php</b> on line <b>27</b><br />\n<br />\n<b>Warning</b>:  pg_exec(): Query failed: ERRO:  erro de sintaxe em ou pr\xc3\xb3ximo a &quot;,&quot;\nLINE 7:   (,103,1,\n           ^ in <b>/var/www/html/rafael/modelr/ws/setresult.php</b> on line <b>106</b><br />\n{"experiment":[{"id":"bd4c9ab730f5513206b999ec0d90d1fb","op": "I","msg": "N\xe3o foi poss\xedvel adicionar"}]}'
antunesmg commented 6 years ago

Resolvi o erro aqui. Pode testar de novo

antunesmg commented 6 years ago

Guilherme, conseguiu testar ?

gmgall commented 6 years ago

Fiz novo teste e o erro parece ser o mesmo.

b'Array\n(\n    [id] => bd4c9ab730f5513206b999ec0d90d1fb\n    [no_omission] => 3333\n    [sensitivity] => 6666\n    [png_path] => BioclimEugenia florida DC._2001.png\n    [prevalence] => 4444\n    [op] => I\n    [tss] => 8888\n    [partition] => 1\n    [idresulttype] => 103\n    [spec_sens] => 2222\n    [equal_sens_spec] => 5555\n    [kappa] => 1111\n    [raster_png_path] => \n    [tiff_path] => BioClim_cut_Eugenia florida DC._1.tif\n    [auc] => 7777\n    [algorithm] => BioClim\n)\n<br />\n<b>Notice</b>:  Trying to get property of non-object in <b>/var/www/html/rafael/modelr/ws/setresult.php</b> on line <b>27</b><br />\n<br />\n<b>Notice</b>:  Trying to get property of non-object in <b>/var/www/html/rafael/modelr/ws/setresult.php</b> on line <b>27</b><br />\n<br />\n<b>Warning</b>:  pg_exec(): Query failed: ERRO:  erro de sintaxe em ou pr\xc3\xb3ximo a &quot;,&quot;\nLINE 7:   (,103,1,\n           ^ in <b>/var/www/html/rafael/modelr/ws/setresult.php</b> on line <b>106</b><br />\n{"experiment":[{"id":"bd4c9ab730f5513206b999ec0d90d1fb","op": "I","msg": "N\xe3o foi poss\xedvel adicionar"}]}'

Tem como verificar se estou fazendo as chamadas corretamente por aí?

antunesmg commented 6 years ago

@gmgall era um bug meu aqui. Já resolvi. Pode fazer do mesmo jeito que você fez antes.

gmgall commented 6 years ago

Certo, parece que avançamos.

Testando daqui com a biblioteca requests do Python:

:one: O método de obter os experimentos por status parece ok:

>>> import requests
>>> payload = {'status': 2}
>>> r = requests.get('http://model-r.jbrj.gov.br/ws/', params=payload)
>>> x = r.json()
>>> type(x)
<class 'list'>

:two: O método que muda o status de um experimento também:

>>> import requests
>>> payload = {'id': 'bd4c9ab730f5513206b999ec0d90d1fb', 'status': 3}
>>> r = requests.get('https://model-r.jbrj.gov.br/ws/setstatus.php', params=payload)
>>> r.json()
{'experiment': [{'idexperiment': 'bd4c9ab730f5513206b999ec0d90d1fb', 'msg': '', 'update': 'true'}]}

:three: O método de informar o resultado de uma modelagem não dá mais erro, mas retorna mais do que o JSON experado:

>>> import requests
>>> payload = {'id': 'bd4c9ab730f5513206b999ec0d90d1fb', 'idresulttype': '102', 'op': 'I', 'partition': 3, 'algorithm': 'BioClim', 'kappa': 1111, 'spec_sens': 2222, 'no_omission': 3333, 'prevalence': 4444, 'equal_sens_spec': 5555, 'sensitivity': 6666, 'auc': 7777, 'tss': 8888, 'tiff_path': 'BioClim_bin_Eugenia florida DC._1.tif', 'png_path': 'BioclimEugenia florida DC._2001.png', 'raster_png_path': ''}
>>> r = requests.post('https://model-r.jbrj.gov.br/ws/setresult.php', data=payload)
>>> r.status_code
200
>>> r.text
'Array\n(\n    [0] => stdClass Object\n        (\n            [idexperiment] => bd4c9ab730f5513206b999ec0d90d1fb\n            [id] => 161\n            [name] => teste issue 16\n            [description] => teste issue 16\n            [num_repetitions] => \n            [num_partition] => \n            [trainpercent] => \n            [extent_model] => \n            [buffer] => \n            [num_points] => \n            [tss] => \n            [statusexperiment] => Em processamento\n            [partitiontype] => \n            [resolution] => \n            [occurrences] => Array\n                (\n                    [0] => stdClass Object\n                        (\n                            [taxon] => Leandra carassana (DC.) Cogn.\n                            [lat] => -22.7\n                            [lon] => -45.3833333\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [1] => stdClass Object\n                        (\n                            [taxon] => Leandra carassana (DC.) Cogn.\n                            [lat] => -22.7\n                            [lon] => -45.3833333\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [2] => stdClass Object\n                        (\n                            [taxon] => Leandra carassana (DC.) Cogn.\n                            [lat] => -22.7\n                            [lon] => -45.3833333\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [3] => stdClass Object\n                        (\n                            [taxon] => Leandra carassana (DC.) Cogn.\n                            [lat] => -22.7166667\n                            [lon] => -45.45\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [4] => stdClass Object\n                        (\n                            [taxon] => Leandra carassana (DC.) Cogn.\n                            [lat] => -22.7166667\n                            [lon] => -45.45\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [5] => stdClass Object\n                        (\n                            [taxon] => Leandra carassana (DC.) Cogn.\n                            [lat] => -22.1741667\n                            [lon] => -44.6502778\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [6] => stdClass Object\n                        (\n                            [taxon] => Leandra carassana (DC.) Cogn.\n                            [lat] => -22.4616667\n                            [lon] => -43.0241667\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [7] => stdClass Object\n                        (\n                            [taxon] => Leandra carassana (DC.) Cogn.\n                            [lat] => -22.4280556\n                            [lon] => -44.6261111\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [8] => stdClass Object\n                        (\n                            [taxon] => Leandra carassana (DC.) Cogn.\n                            [lat] => -20.5161111\n                            [lon] => -41.0836111\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [9] => stdClass Object\n                        (\n                            [taxon] => Leandra carassana (DC.) Cogn.\n                            [lat] => -13.2644444\n                            [lon] => -41.9197223\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [10] => stdClass Object\n                        (\n                            [taxon] => Leandra carassana (DC.) Cogn.\n                            [lat] => -22.4080556\n                            [lon] => -44.8463889\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [11] => stdClass Object\n                        (\n                            [taxon] => Leandra carassana (DC.) Cogn.\n                            [lat] => -22.3833333\n                            [lon] => -42.4833333\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [12] => stdClass Object\n                        (\n                            [taxon] => Leandra carassana (DC.) Cogn.\n                            [lat] => -22.4875\n                            [lon] => -43.2961111\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [13] => stdClass Object\n                        (\n                            [taxon] => Leandra carassana (DC.) Cogn.\n                            [lat] => -22.3519444\n                            [lon] => -42.5855555\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [14] => stdClass Object\n                        (\n                            [taxon] => Leandra carassana (DC.) Cogn.\n                            [lat] => -22.4375\n                            [lon] => -44.6341667\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [15] => stdClass Object\n                        (\n                            [taxon] => Leandra carassana (DC.) Cogn.\n                            [lat] => -22.3138889\n                            [lon] => -44.7222223\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [16] => stdClass Object\n                        (\n                            [taxon] => Leandra carassana (DC.) Cogn.\n                            [lat] => -22.6197222\n                            [lon] => -45.0030555\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [17] => stdClass Object\n                        (\n                            [taxon] => Leandra carassana (DC.) Cogn.\n                            [lat] => -22.4322223\n                            [lon] => -42.5263889\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [18] => stdClass Object\n                        (\n                            [taxon] => Leandra carassana (DC.) Cogn.\n                            [lat] => -22.6225\n                            [lon] => -45.2588889\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [19] => stdClass Object\n                        (\n                            [taxon] => Leandra carassana (DC.) Cogn.\n                            [lat] => -22.6075\n                            [lon] => -45.2230556\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [20] => stdClass Object\n                        (\n                            [taxon] => Leandra carassana (DC.) Cogn.\n                            [lat] => -20.0905555\n                            [lon] => -43.4719445\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [21] => stdClass Object\n                        (\n                            [taxon] => Leandra carassana (DC.) Cogn.\n                            [lat] => -27.1788889\n                            [lon] => -49.4122222\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [22] => stdClass Object\n                        (\n                            [taxon] => Leandra carassana (DC.) Cogn.\n                            [lat] => -25.8688889\n                            [lon] => -48.9666667\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [23] => stdClass Object\n                        (\n                            [taxon] => Leandra carassana (DC.) Cogn.\n                            [lat] => -22.7433333\n                            [lon] => -44.6388889\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [24] => stdClass Object\n                        (\n                            [taxon] => Leandra carassana (DC.) Cogn.\n                            [lat] => -22.7630556\n                            [lon] => -44.6580556\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [25] => stdClass Object\n                        (\n                            [taxon] => Leandra carassana (DC.) Cogn.\n                            [lat] => -22.7461111\n                            [lon] => -44.6394444\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [26] => stdClass Object\n                        (\n                            [taxon] => Leandra carassana (DC.) Cogn.\n                            [lat] => -22.74\n                            [lon] => -44.6169445\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [27] => stdClass Object\n                        (\n                            [taxon] => Leandra carassana (DC.) Cogn.\n                            [lat] => -22.3775\n                            [lon] => -44.8177778\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [28] => stdClass Object\n                        (\n                            [taxon] => Leandra carassana (DC.) Cogn.\n                            [lat] => -22.3788889\n                            [lon] => -44.8261111\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [29] => stdClass Object\n                        (\n                            [taxon] => Leandra carassana (DC.) Cogn.\n                            [lat] => -22.3775\n                            [lon] => -44.8177778\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [30] => stdClass Object\n                        (\n                            [taxon] => Leandra carassana (DC.) Cogn.\n                            [lat] => -20.4372223\n                            [lon] => -43.48\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [31] => stdClass Object\n                        (\n                            [taxon] => Leandra carassana (DC.) Cogn.\n                            [lat] => -22.5011111\n                            [lon] => -45.15\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [32] => stdClass Object\n                        (\n                            [taxon] => Leandra carassana (DC.) Cogn.\n                            [lat] => -24.2666667\n                            [lon] => -49.15\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [33] => stdClass Object\n                        (\n                            [taxon] => Leandra carassana (DC.) Cogn.\n                            [lat] => -24.3166667\n                            [lon] => -49.2166667\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [34] => stdClass Object\n                        (\n                            [taxon] => Leandra carassana (DC.) Cogn.\n                            [lat] => -22.7463889\n                            [lon] => -44.6163889\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [35] => stdClass Object\n                        (\n                            [taxon] => Leandra carassana (DC.) Cogn.\n                            [lat] => -22.7497222\n                            [lon] => -44.6191667\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [36] => stdClass Object\n                        (\n                            [taxon] => Leandra carassana (DC.) Cogn.\n                            [lat] => -27.8097222\n                            [lon] => -49.9497222\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [37] => stdClass Object\n                        (\n                            [taxon] => Leandra carassana (DC.) Cogn.\n                            [lat] => -22.365\n                            [lon] => -44.7205556\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [38] => stdClass Object\n                        (\n                            [taxon] => Leandra carassana (DC.) Cogn.\n                            [lat] => -22.9566667\n                            [lon] => -44.5552778\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [39] => stdClass Object\n                        (\n                            [taxon] => Leandra carassana (DC.) Cogn.\n                            [lat] => -26.3666667\n                            [lon] => -49.4\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [40] => stdClass Object\n                        (\n                            [taxon] => Leandra carassana (DC.) Cogn.\n                            [lat] => -22.34\n                            [lon] => -42.7188889\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [41] => stdClass Object\n                        (\n                            [taxon] => Leandra carassana (DC.) Cogn.\n                            [lat] => -22.3319445\n                            [lon] => -42.7194445\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [42] => stdClass Object\n                        (\n                            [taxon] => Leandra carassana (DC.) Cogn.\n                            [lat] => -22.3358333\n                            [lon] => -42.7166667\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [43] => stdClass Object\n                        (\n                            [taxon] => Leandra carassana (DC.) Cogn.\n                            [lat] => -22.3361111\n                            [lon] => -42.7169445\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [44] => stdClass Object\n                        (\n                            [taxon] => Leandra carassana (DC.) Cogn.\n                            [lat] => -22.3236111\n                            [lon] => -42.7202778\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [45] => stdClass Object\n                        (\n                            [taxon] => Eugenia florida DC.\n                            [lat] => -47.66\n                            [lon] => -14.0705556\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [46] => stdClass Object\n                        (\n                            [taxon] => Eugenia florida DC.\n                            [lat] => -14.2772223\n                            [lon] => -47.9166667\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [47] => stdClass Object\n                        (\n                            [taxon] => Eugenia florida DC.\n                            [lat] => -15.75\n                            [lon] => -51.55\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [48] => stdClass Object\n                        (\n                            [taxon] => Eugenia florida DC.\n                            [lat] => 6.0833333\n                            [lon] => -60.1166667\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [49] => stdClass Object\n                        (\n                            [taxon] => Eugenia florida DC.\n                            [lat] => -10\n                            [lon] => -67.8333333\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [50] => stdClass Object\n                        (\n                            [taxon] => Eugenia florida DC.\n                            [lat] => -22.5872222\n                            [lon] => -42.9111111\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [51] => stdClass Object\n                        (\n                            [taxon] => Eugenia florida DC.\n                            [lat] => -22.675\n                            [lon] => -43.0694445\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [52] => stdClass Object\n                        (\n                            [taxon] => Eugenia florida DC.\n                            [lat] => -12.2366666\n                            [lon] => -47.2686111\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [53] => stdClass Object\n                        (\n                            [taxon] => Eugenia florida DC.\n                            [lat] => -14.3666667\n                            [lon] => -48.2\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [54] => stdClass Object\n                        (\n                            [taxon] => Eugenia florida DC.\n                            [lat] => -17.8166667\n                            [lon] => -48.4833333\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [55] => stdClass Object\n                        (\n                            [taxon] => Eugenia florida DC.\n                            [lat] => -1.4166667\n                            [lon] => -69.4166667\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [56] => stdClass Object\n                        (\n                            [taxon] => Eugenia florida DC.\n                            [lat] => -12.8166667\n                            [lon] => -51.7666667\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [57] => stdClass Object\n                        (\n                            [taxon] => Eugenia florida DC.\n                            [lat] => -13.4\n                            [lon] => -44.5833333\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [58] => stdClass Object\n                        (\n                            [taxon] => Eugenia florida DC.\n                            [lat] => -10\n                            [lon] => -67.95\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [59] => stdClass Object\n                        (\n                            [taxon] => Eugenia florida DC.\n                            [lat] => -12.2366666\n                            [lon] => -47.2686111\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [60] => stdClass Object\n                        (\n                            [taxon] => Eugenia florida DC.\n                            [lat] => -12.3166667\n                            [lon] => -51.7666667\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [61] => stdClass Object\n                        (\n                            [taxon] => Eugenia florida DC.\n                            [lat] => -15.4886111\n                            [lon] => -44.7605556\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [62] => stdClass Object\n                        (\n                            [taxon] => Eugenia florida DC.\n                            [lat] => -1.25\n                            [lon] => -69.4166667\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [63] => stdClass Object\n                        (\n                            [taxon] => Eugenia florida DC.\n                            [lat] => -13.75\n                            [lon] => -48.3166667\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [64] => stdClass Object\n                        (\n                            [taxon] => Eugenia florida DC.\n                            [lat] => -1.0286111\n                            [lon] => -62.0891666\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [65] => stdClass Object\n                        (\n                            [taxon] => Eugenia florida DC.\n                            [lat] => -22.5833333\n                            [lon] => -43.0333333\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [66] => stdClass Object\n                        (\n                            [taxon] => Eugenia florida DC.\n                            [lat] => -12.25\n                            [lon] => -38.9666667\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [67] => stdClass Object\n                        (\n                            [taxon] => Eugenia florida DC.\n                            [lat] => -22.5177778\n                            [lon] => -53.0430555\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [68] => stdClass Object\n                        (\n                            [taxon] => Eugenia florida DC.\n                            [lat] => 2.8333333\n                            [lon] => -59.5166667\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [69] => stdClass Object\n                        (\n                            [taxon] => Eugenia florida DC.\n                            [lat] => -7.5166667\n                            [lon] => -63.1666667\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [70] => stdClass Object\n                        (\n                            [taxon] => Eugenia florida DC.\n                            [lat] => -24.8333333\n                            [lon] => -49.1666667\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [71] => stdClass Object\n                        (\n                            [taxon] => Eugenia florida DC.\n                            [lat] => -1.0027778\n                            [lon] => -62.5152778\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [72] => stdClass Object\n                        (\n                            [taxon] => Eugenia florida DC.\n                            [lat] => -17.7166667\n                            [lon] => -48.5\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [73] => stdClass Object\n                        (\n                            [taxon] => Eugenia florida DC.\n                            [lat] => -0.4166667\n                            [lon] => -66.4166667\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [74] => stdClass Object\n                        (\n                            [taxon] => Eugenia florida DC.\n                            [lat] => -0.5\n                            [lon] => -65\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [75] => stdClass Object\n                        (\n                            [taxon] => Eugenia florida DC.\n                            [lat] => 13.3\n                            [lon] => -41.8\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [76] => stdClass Object\n                        (\n                            [taxon] => Eugenia florida DC.\n                            [lat] => 13.2333333\n                            [lon] => -41.6666667\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [77] => stdClass Object\n                        (\n                            [taxon] => Eugenia florida DC.\n                            [lat] => 13.2333333\n                            [lon] => -41.6666667\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [78] => stdClass Object\n                        (\n                            [taxon] => Eugenia florida DC.\n                            [lat] => -21.2083333\n                            [lon] => -43.9155556\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [79] => stdClass Object\n                        (\n                            [taxon] => Eugenia florida DC.\n                            [lat] => -22.5\n                            [lon] => -42.25\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [80] => stdClass Object\n                        (\n                            [taxon] => Eugenia florida DC.\n                            [lat] => -22.5\n                            [lon] => -42.25\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [81] => stdClass Object\n                        (\n                            [taxon] => Eugenia florida DC.\n                            [lat] => -22.5\n                            [lon] => -42.25\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [82] => stdClass Object\n                        (\n                            [taxon] => Eugenia florida DC.\n                            [lat] => -22.5\n                            [lon] => -42.25\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [83] => stdClass Object\n                        (\n                            [taxon] => Eugenia florida DC.\n                            [lat] => -22.5\n                            [lon] => -42.25\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [84] => stdClass Object\n                        (\n                            [taxon] => Eugenia florida DC.\n                            [lat] => -22.5\n                            [lon] => -42.25\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [85] => stdClass Object\n                        (\n                            [taxon] => Eugenia florida DC.\n                            [lat] => -22.5\n                            [lon] => -42.25\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [86] => stdClass Object\n                        (\n                            [taxon] => Eugenia florida DC.\n                            [lat] => -22.5\n                            [lon] => -42.25\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [87] => stdClass Object\n                        (\n                            [taxon] => Eugenia florida DC.\n                            [lat] => -22.5\n                            [lon] => -42.25\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [88] => stdClass Object\n                        (\n                            [taxon] => Eugenia florida DC.\n                            [lat] => -22.5\n                            [lon] => -42.25\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [89] => stdClass Object\n                        (\n                            [taxon] => Eugenia florida DC.\n                            [lat] => -22.5\n                            [lon] => -42.25\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [90] => stdClass Object\n                        (\n                            [taxon] => Eugenia florida DC.\n                            [lat] => -22.5\n                            [lon] => -42.25\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [91] => stdClass Object\n                        (\n                            [taxon] => Eugenia florida DC.\n                            [lat] => -15.8241667\n                            [lon] => -48.9983333\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [92] => stdClass Object\n                        (\n                            [taxon] => Eugenia florida DC.\n                            [lat] => -22.35\n                            [lon] => -44.4786111\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [93] => stdClass Object\n                        (\n                            [taxon] => Eugenia florida DC.\n                            [lat] => -22.1\n                            [lon] => -43.0666667\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [94] => stdClass Object\n                        (\n                            [taxon] => Eugenia florida DC.\n                            [lat] => -22.9497222\n                            [lon] => -43.0213889\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [95] => stdClass Object\n                        (\n                            [taxon] => Leandra carassana (DC.) Cogn.\n                            [lat] => -22.465\n                            [lon] => -43.0322223\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [96] => stdClass Object\n                        (\n                            [taxon] => Leandra carassana (DC.) Cogn.\n                            [lat] => -24.11\n                            [lon] => -52.3208334\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [97] => stdClass Object\n                        (\n                            [taxon] => Eugenia florida DC.\n                            [lat] => -14.7094444\n                            [lon] => -48.4238889\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [98] => stdClass Object\n                        (\n                            [taxon] => Eugenia florida DC.\n                            [lat] => -7.5166667\n                            [lon] => -63.1666667\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [99] => stdClass Object\n                        (\n                            [taxon] => Eugenia florida DC.\n                            [lat] => -15.1602778\n                            [lon] => -39.5361111\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [100] => stdClass Object\n                        (\n                            [taxon] => Eugenia florida DC.\n                            [lat] => -22.4897222\n                            [lon] => -43.0111111\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [101] => stdClass Object\n                        (\n                            [taxon] => Eugenia florida DC.\n                            [lat] => -18.7769445\n                            [lon] => -40.4438889\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [102] => stdClass Object\n                        (\n                            [taxon] => Eugenia florida DC.\n                            [lat] => -22.5\n                            [lon] => -42.25\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [103] => stdClass Object\n                        (\n                            [taxon] => Eugenia florida DC.\n                            [lat] => -22.7916666\n                            [lon] => -47.0736111\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [104] => stdClass Object\n                        (\n                            [taxon] => Eugenia florida DC.\n                            [lat] => -22.7916666\n                            [lon] => -47.0736111\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [105] => stdClass Object\n                        (\n                            [taxon] => Eugenia florida DC.\n                            [lat] => -22.4333333\n                            [lon] => -42.8333333\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [106] => stdClass Object\n                        (\n                            [taxon] => Eugenia florida DC.\n                            [lat] => -10.0366666\n                            [lon] => -67.7952777\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [107] => stdClass Object\n                        (\n                            [taxon] => Eugenia florida DC.\n                            [lat] => -22.5258334\n                            [lon] => -42.3477777\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [108] => stdClass Object\n                        (\n                            [taxon] => Eugenia florida DC.\n                            [lat] => -9.7102778\n                            [lon] => -52.3583333\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [109] => stdClass Object\n                        (\n                            [taxon] => Eugenia florida DC.\n                            [lat] => -9.8225\n                            [lon] => -52.7444444\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [110] => stdClass Object\n                        (\n                            [taxon] => Eugenia florida DC.\n                            [lat] => -6.8205556\n                            [lon] => -71.1219445\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [111] => stdClass Object\n                        (\n                            [taxon] => Eugenia florida DC.\n                            [lat] => -21.1002778\n                            [lon] => -44.8680556\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [112] => stdClass Object\n                        (\n                            [taxon] => Eugenia florida DC.\n                            [lat] => -22.6555556\n                            [lon] => -42.8275\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [113] => stdClass Object\n                        (\n                            [taxon] => Eugenia florida DC.\n                            [lat] => -20.6294445\n                            [lon] => -41.5975\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [114] => stdClass Object\n                        (\n                            [taxon] => Eugenia florida DC.\n                            [lat] => -22.85\n                            [lon] => -67.2\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [115] => stdClass Object\n                        (\n                            [taxon] => Eugenia florida DC.\n                            [lat] => -21.55\n                            [lon] => -44.2666667\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [116] => stdClass Object\n                        (\n                            [taxon] => Eugenia florida DC.\n                            [lat] => -22.9225\n                            [lon] => -42.9994444\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [117] => stdClass Object\n                        (\n                            [taxon] => Eugenia florida DC.\n                            [lat] => -22.5166667\n                            [lon] => -43.2333333\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [118] => stdClass Object\n                        (\n                            [taxon] => Eugenia florida DC.\n                            [lat] => -22.4766667\n                            [lon] => -43.5713889\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [119] => stdClass Object\n                        (\n                            [taxon] => Eugenia florida DC.\n                            [lat] => -18.6675\n                            [lon] => -55.1677778\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [120] => stdClass Object\n                        (\n                            [taxon] => Eugenia florida DC.\n                            [lat] => -22.4997222\n                            [lon] => -42.7952777\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [121] => stdClass Object\n                        (\n                            [taxon] => Eugenia florida DC.\n                            [lat] => -7.6\n                            [lon] => -34.8205556\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [122] => stdClass Object\n                        (\n                            [taxon] => Eugenia florida DC.\n                            [lat] => -22.85\n                            [lon] => -43.1166667\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [123] => stdClass Object\n                        (\n                            [taxon] => Eugenia florida DC.\n                            [lat] => -9.5980555\n                            [lon] => -65.3672223\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [124] => stdClass Object\n                        (\n                            [taxon] => Eugenia florida DC.\n                            [lat] => -9.7166667\n                            [lon] => -68.1166667\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [125] => stdClass Object\n                        (\n                            [taxon] => Eugenia florida DC.\n                            [lat] => -1.3544444\n                            [lon] => -62.0591667\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [126] => stdClass Object\n                        (\n                            [taxon] => Eugenia florida DC.\n                            [lat] => -9.7166667\n                            [lon] => -68.1166667\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [127] => stdClass Object\n                        (\n                            [taxon] => Eugenia florida DC.\n                            [lat] => -3.3369444\n                            [lon] => -51.9913889\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [128] => stdClass Object\n                        (\n                            [taxon] => Eugenia florida DC.\n                            [lat] => -22.3091667\n                            [lon] => -47.5458333\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [129] => stdClass Object\n                        (\n                            [taxon] => Eugenia florida DC.\n                            [lat] => -14.1983333\n                            [lon] => -49.2922222\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [130] => stdClass Object\n                        (\n                            [taxon] => Eugenia florida DC.\n                            [lat] => -14.1983333\n                            [lon] => -49.2919444\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [131] => stdClass Object\n                        (\n                            [taxon] => Eugenia florida DC.\n                            [lat] => -11.9280556\n                            [lon] => -55.1583333\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [132] => stdClass Object\n                        (\n                            [taxon] => Eugenia florida DC.\n                            [lat] => -22.5938889\n                            [lon] => -43.0338889\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [133] => stdClass Object\n                        (\n                            [taxon] => Eugenia florida DC.\n                            [lat] => -7.9602778\n                            [lon] => -34.9447222\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [134] => stdClass Object\n                        (\n                            [taxon] => Eugenia florida DC.\n                            [lat] => -18.5713889\n                            [lon] => -43.3441666\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [135] => stdClass Object\n                        (\n                            [taxon] => Eugenia florida DC.\n                            [lat] => -20.7\n                            [lon] => -42.0666667\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [136] => stdClass Object\n                        (\n                            [taxon] => Eugenia florida DC.\n                            [lat] => -11.52\n                            [lon] => -57.2\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [137] => stdClass Object\n                        (\n                            [taxon] => Eugenia florida DC.\n                            [lat] => -4.9902777\n                            [lon] => -7.9041667\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [138] => stdClass Object\n                        (\n                            [taxon] => Eugenia florida DC.\n                            [lat] => -20.7\n                            [lon] => -42.0666667\n                            [idstatusoccurrence] => 17\n                        )\n\n                    [139] => stdClass Object\n                        (\n                            [taxon] => Eugenia florida DC.\n                            [lat] => -14.6833333\n                            [lon] => -67.3333333\n                            [idstatusoccurrence] => 17\n                        )\n\n                )\n\n            [raster] => Array\n                (\n                )\n\n            [algorithm] => Array\n                (\n                    [0] => stdClass Object\n                        (\n                            [algorithm] => Maxent\n                            [idalgorithm] => 2\n                        )\n\n                    [1] => stdClass Object\n                        (\n                            [algorithm] => Bioclim\n                            [idalgorithm] => 5\n                        )\n\n                )\n\n        )\n\n)\n{"experiment":[{"id":"bd4c9ab730f5513206b999ec0d90d1fb","op": "I","msg": "Adicionado com sucesso"}]}'

Pela interface web, vejo que os dados aparecem inseridos em "Dados Resultados". Parece que é só tirar essas informações extras que estão vindo na resposta mesmo.

antunesmg commented 6 years ago

Guilherme,

Fiz uns ajustes aqui. Pode confirmar se está tudo certo, por favor ?