ajustado mapeamento gps na operacao
This commit is contained in:
parent
dc0f811d84
commit
db9177b881
|
|
@ -0,0 +1,28 @@
|
||||||
|
from flask import Flask, request, jsonify
|
||||||
|
from flask_cors import CORS
|
||||||
|
|
||||||
|
app = Flask(__name__)
|
||||||
|
CORS(app) # Isso habilita o CORS para todas as rotas e origens
|
||||||
|
|
||||||
|
coordenadas = {}
|
||||||
|
|
||||||
|
@app.route('/receber-coordenadas', methods=['POST'])
|
||||||
|
def receber_coordenadas():
|
||||||
|
dados = request.json
|
||||||
|
id = dados.get('id')
|
||||||
|
lat = dados.get('latitude')
|
||||||
|
lon = dados.get('longitude')
|
||||||
|
|
||||||
|
coordenadas[id] = {'latitude': lat, 'longitude': lon}
|
||||||
|
|
||||||
|
return jsonify({'status': 'Coordenadas recebidas com sucesso!'})
|
||||||
|
|
||||||
|
@app.route('/servir-coordenadas/<id>', methods=['GET'])
|
||||||
|
def servir_coordenadas(id):
|
||||||
|
if id in coordenadas:
|
||||||
|
return jsonify(coordenadas[id])
|
||||||
|
else:
|
||||||
|
return jsonify({'error': 'Coordenadas não encontradas!'}), 404
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
app.run(host='0.0.0.0', port=5001, debug=True)
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
|
@ -296,6 +296,7 @@
|
||||||
<Compile Include="Models\MotorComum.cs" />
|
<Compile Include="Models\MotorComum.cs" />
|
||||||
<Compile Include="Models\Operacoes\OperacaoModel.cs" />
|
<Compile Include="Models\Operacoes\OperacaoModel.cs" />
|
||||||
<Compile Include="Models\Variaveis.cs" />
|
<Compile Include="Models\Variaveis.cs" />
|
||||||
|
<Compile Include="Services\APIService.cs" />
|
||||||
<Compile Include="Services\CameraService.cs" />
|
<Compile Include="Services\CameraService.cs" />
|
||||||
<Compile Include="Services\DispositivosService.cs" />
|
<Compile Include="Services\DispositivosService.cs" />
|
||||||
<Compile Include="Forms\frmPrincipal.cs">
|
<Compile Include="Forms\frmPrincipal.cs">
|
||||||
|
|
@ -313,6 +314,7 @@
|
||||||
<Compile Include="Services\PythonService.cs" />
|
<Compile Include="Services\PythonService.cs" />
|
||||||
<Compile Include="Services\SerialService.cs" />
|
<Compile Include="Services\SerialService.cs" />
|
||||||
<Compile Include="Services\SocketService.cs" />
|
<Compile Include="Services\SocketService.cs" />
|
||||||
|
<Content Include="Imagens\loading.gif" />
|
||||||
<Content Include="Python\Models\deeplabv3plus\backbone\hrnetv2.py">
|
<Content Include="Python\Models\deeplabv3plus\backbone\hrnetv2.py">
|
||||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||||
</Content>
|
</Content>
|
||||||
|
|
@ -340,6 +342,9 @@
|
||||||
<Content Include="Python\Models\deeplabv3plus\__init__.py">
|
<Content Include="Python\Models\deeplabv3plus\__init__.py">
|
||||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||||
</Content>
|
</Content>
|
||||||
|
<Content Include="Python\Scripts\api.py">
|
||||||
|
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||||
|
</Content>
|
||||||
<Content Include="Python\Scripts\street-detector.py">
|
<Content Include="Python\Scripts\street-detector.py">
|
||||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||||
</Content>
|
</Content>
|
||||||
|
|
@ -590,6 +595,7 @@
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Folder Include="Python\Output\" />
|
<Folder Include="Python\Output\" />
|
||||||
|
<Folder Include="Resources\" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||||
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
|
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
|
||||||
|
|
|
||||||
|
|
@ -29,14 +29,15 @@ namespace AgroBase.Forms.Operacoes
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private void InitializeComponent()
|
private void InitializeComponent()
|
||||||
{
|
{
|
||||||
System.Windows.Forms.DataVisualization.Charting.ChartArea chartArea1 = new System.Windows.Forms.DataVisualization.Charting.ChartArea();
|
System.Windows.Forms.DataVisualization.Charting.ChartArea chartArea2 = new System.Windows.Forms.DataVisualization.Charting.ChartArea();
|
||||||
System.Windows.Forms.DataVisualization.Charting.Legend legend1 = new System.Windows.Forms.DataVisualization.Charting.Legend();
|
System.Windows.Forms.DataVisualization.Charting.Legend legend2 = new System.Windows.Forms.DataVisualization.Charting.Legend();
|
||||||
System.Windows.Forms.DataVisualization.Charting.Series series1 = new System.Windows.Forms.DataVisualization.Charting.Series();
|
System.Windows.Forms.DataVisualization.Charting.Series series2 = new System.Windows.Forms.DataVisualization.Charting.Series();
|
||||||
this.pnlCameraSolo = new System.Windows.Forms.Panel();
|
this.pnlCameraSolo = new System.Windows.Forms.Panel();
|
||||||
this.pnlCameraSoloD = new System.Windows.Forms.Panel();
|
this.pnlCameraSoloD = new System.Windows.Forms.Panel();
|
||||||
this.pnlCameraSoloE = new System.Windows.Forms.Panel();
|
this.pnlCameraSoloE = new System.Windows.Forms.Panel();
|
||||||
this.pnlCameraCaminho = new System.Windows.Forms.Panel();
|
this.pnlCameraCaminho = new System.Windows.Forms.Panel();
|
||||||
this.pnlAtuadores = new System.Windows.Forms.Panel();
|
this.pnlAtuadores = new System.Windows.Forms.Panel();
|
||||||
|
this.lblPressao = new System.Windows.Forms.Label();
|
||||||
this.pnlCaminho = new System.Windows.Forms.Panel();
|
this.pnlCaminho = new System.Windows.Forms.Panel();
|
||||||
this.pnlGraficos = new System.Windows.Forms.Panel();
|
this.pnlGraficos = new System.Windows.Forms.Panel();
|
||||||
this.chartGraficos = new System.Windows.Forms.DataVisualization.Charting.Chart();
|
this.chartGraficos = new System.Windows.Forms.DataVisualization.Charting.Chart();
|
||||||
|
|
@ -48,6 +49,7 @@ namespace AgroBase.Forms.Operacoes
|
||||||
this.lblPorcentagemReservatorio = new System.Windows.Forms.Label();
|
this.lblPorcentagemReservatorio = new System.Windows.Forms.Label();
|
||||||
this.pgbReservatorio = new System.Windows.Forms.ProgressBar();
|
this.pgbReservatorio = new System.Windows.Forms.ProgressBar();
|
||||||
this.gpbOpcoes = new System.Windows.Forms.GroupBox();
|
this.gpbOpcoes = new System.Windows.Forms.GroupBox();
|
||||||
|
this.btnCarregarMapa = new System.Windows.Forms.Button();
|
||||||
this.cmbCameraSoloD = new System.Windows.Forms.ComboBox();
|
this.cmbCameraSoloD = new System.Windows.Forms.ComboBox();
|
||||||
this.lblCameraSoloD = new System.Windows.Forms.Label();
|
this.lblCameraSoloD = new System.Windows.Forms.Label();
|
||||||
this.btnIniciarOperacao = new System.Windows.Forms.Button();
|
this.btnIniciarOperacao = new System.Windows.Forms.Button();
|
||||||
|
|
@ -55,8 +57,6 @@ namespace AgroBase.Forms.Operacoes
|
||||||
this.lblCameraCaminho = new System.Windows.Forms.Label();
|
this.lblCameraCaminho = new System.Windows.Forms.Label();
|
||||||
this.cmbCameraSoloE = new System.Windows.Forms.ComboBox();
|
this.cmbCameraSoloE = new System.Windows.Forms.ComboBox();
|
||||||
this.lblCameraSoloE = new System.Windows.Forms.Label();
|
this.lblCameraSoloE = new System.Windows.Forms.Label();
|
||||||
this.btnCarregarMapa = new System.Windows.Forms.Button();
|
|
||||||
this.lblMapaCarregado = new System.Windows.Forms.Label();
|
|
||||||
this.gpbInformacoesGerais = new System.Windows.Forms.GroupBox();
|
this.gpbInformacoesGerais = new System.Windows.Forms.GroupBox();
|
||||||
this.lblBateriaConsumida = new System.Windows.Forms.Label();
|
this.lblBateriaConsumida = new System.Windows.Forms.Label();
|
||||||
this.lblHerbicidaPorErva = new System.Windows.Forms.Label();
|
this.lblHerbicidaPorErva = new System.Windows.Forms.Label();
|
||||||
|
|
@ -69,6 +69,7 @@ namespace AgroBase.Forms.Operacoes
|
||||||
this.lblDistanciaEsquerda = new System.Windows.Forms.Label();
|
this.lblDistanciaEsquerda = new System.Windows.Forms.Label();
|
||||||
this.lblDistanciaDireita = new System.Windows.Forms.Label();
|
this.lblDistanciaDireita = new System.Windows.Forms.Label();
|
||||||
this.pnlInferior = new System.Windows.Forms.Panel();
|
this.pnlInferior = new System.Windows.Forms.Panel();
|
||||||
|
this.lblMapaCarregado = new System.Windows.Forms.Label();
|
||||||
this.chbGPSativo = new System.Windows.Forms.CheckBox();
|
this.chbGPSativo = new System.Windows.Forms.CheckBox();
|
||||||
this.chbATUativo = new System.Windows.Forms.CheckBox();
|
this.chbATUativo = new System.Windows.Forms.CheckBox();
|
||||||
this.chbDIRativo = new System.Windows.Forms.CheckBox();
|
this.chbDIRativo = new System.Windows.Forms.CheckBox();
|
||||||
|
|
@ -76,7 +77,7 @@ namespace AgroBase.Forms.Operacoes
|
||||||
this.lblUltimaLeituraRua = new System.Windows.Forms.Label();
|
this.lblUltimaLeituraRua = new System.Windows.Forms.Label();
|
||||||
this.lblUltimaLeituraSolo = new System.Windows.Forms.Label();
|
this.lblUltimaLeituraSolo = new System.Windows.Forms.Label();
|
||||||
this.pnlMapa = new System.Windows.Forms.Panel();
|
this.pnlMapa = new System.Windows.Forms.Panel();
|
||||||
this.lblPressao = new System.Windows.Forms.Label();
|
this.pnlOrientacao = new System.Windows.Forms.Panel();
|
||||||
this.pnlCameraSolo.SuspendLayout();
|
this.pnlCameraSolo.SuspendLayout();
|
||||||
this.pnlAtuadores.SuspendLayout();
|
this.pnlAtuadores.SuspendLayout();
|
||||||
this.pnlGraficos.SuspendLayout();
|
this.pnlGraficos.SuspendLayout();
|
||||||
|
|
@ -135,6 +136,15 @@ namespace AgroBase.Forms.Operacoes
|
||||||
this.pnlAtuadores.TabIndex = 2;
|
this.pnlAtuadores.TabIndex = 2;
|
||||||
this.pnlAtuadores.Paint += new System.Windows.Forms.PaintEventHandler(this.pnlAtuadores_Paint);
|
this.pnlAtuadores.Paint += new System.Windows.Forms.PaintEventHandler(this.pnlAtuadores_Paint);
|
||||||
//
|
//
|
||||||
|
// lblPressao
|
||||||
|
//
|
||||||
|
this.lblPressao.AutoSize = true;
|
||||||
|
this.lblPressao.Location = new System.Drawing.Point(-2, 0);
|
||||||
|
this.lblPressao.Name = "lblPressao";
|
||||||
|
this.lblPressao.Size = new System.Drawing.Size(57, 13);
|
||||||
|
this.lblPressao.TabIndex = 0;
|
||||||
|
this.lblPressao.Text = "P: 0.00 psi";
|
||||||
|
//
|
||||||
// pnlCaminho
|
// pnlCaminho
|
||||||
//
|
//
|
||||||
this.pnlCaminho.BackColor = System.Drawing.Color.White;
|
this.pnlCaminho.BackColor = System.Drawing.Color.White;
|
||||||
|
|
@ -156,18 +166,18 @@ namespace AgroBase.Forms.Operacoes
|
||||||
//
|
//
|
||||||
// chartGraficos
|
// chartGraficos
|
||||||
//
|
//
|
||||||
chartArea1.Name = "ChartArea1";
|
chartArea2.Name = "ChartArea1";
|
||||||
this.chartGraficos.ChartAreas.Add(chartArea1);
|
this.chartGraficos.ChartAreas.Add(chartArea2);
|
||||||
this.chartGraficos.Dock = System.Windows.Forms.DockStyle.Fill;
|
this.chartGraficos.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||||
legend1.Name = "Legend1";
|
legend2.Name = "Legend1";
|
||||||
this.chartGraficos.Legends.Add(legend1);
|
this.chartGraficos.Legends.Add(legend2);
|
||||||
this.chartGraficos.Location = new System.Drawing.Point(0, 0);
|
this.chartGraficos.Location = new System.Drawing.Point(0, 0);
|
||||||
this.chartGraficos.Margin = new System.Windows.Forms.Padding(2);
|
this.chartGraficos.Margin = new System.Windows.Forms.Padding(2);
|
||||||
this.chartGraficos.Name = "chartGraficos";
|
this.chartGraficos.Name = "chartGraficos";
|
||||||
series1.ChartArea = "ChartArea1";
|
series2.ChartArea = "ChartArea1";
|
||||||
series1.Legend = "Legend1";
|
series2.Legend = "Legend1";
|
||||||
series1.Name = "Series1";
|
series2.Name = "Series1";
|
||||||
this.chartGraficos.Series.Add(series1);
|
this.chartGraficos.Series.Add(series2);
|
||||||
this.chartGraficos.Size = new System.Drawing.Size(405, 254);
|
this.chartGraficos.Size = new System.Drawing.Size(405, 254);
|
||||||
this.chartGraficos.TabIndex = 0;
|
this.chartGraficos.TabIndex = 0;
|
||||||
this.chartGraficos.Text = "chart1";
|
this.chartGraficos.Text = "chart1";
|
||||||
|
|
@ -244,6 +254,7 @@ namespace AgroBase.Forms.Operacoes
|
||||||
//
|
//
|
||||||
// gpbOpcoes
|
// gpbOpcoes
|
||||||
//
|
//
|
||||||
|
this.gpbOpcoes.Controls.Add(this.btnCarregarMapa);
|
||||||
this.gpbOpcoes.Controls.Add(this.cmbCameraSoloD);
|
this.gpbOpcoes.Controls.Add(this.cmbCameraSoloD);
|
||||||
this.gpbOpcoes.Controls.Add(this.lblCameraSoloD);
|
this.gpbOpcoes.Controls.Add(this.lblCameraSoloD);
|
||||||
this.gpbOpcoes.Controls.Add(this.btnIniciarOperacao);
|
this.gpbOpcoes.Controls.Add(this.btnIniciarOperacao);
|
||||||
|
|
@ -261,6 +272,17 @@ namespace AgroBase.Forms.Operacoes
|
||||||
this.gpbOpcoes.TabStop = false;
|
this.gpbOpcoes.TabStop = false;
|
||||||
this.gpbOpcoes.Text = "Opções";
|
this.gpbOpcoes.Text = "Opções";
|
||||||
//
|
//
|
||||||
|
// btnCarregarMapa
|
||||||
|
//
|
||||||
|
this.btnCarregarMapa.Location = new System.Drawing.Point(4, 93);
|
||||||
|
this.btnCarregarMapa.Margin = new System.Windows.Forms.Padding(2);
|
||||||
|
this.btnCarregarMapa.Name = "btnCarregarMapa";
|
||||||
|
this.btnCarregarMapa.Size = new System.Drawing.Size(74, 21);
|
||||||
|
this.btnCarregarMapa.TabIndex = 5;
|
||||||
|
this.btnCarregarMapa.Text = "Mapa";
|
||||||
|
this.btnCarregarMapa.UseVisualStyleBackColor = true;
|
||||||
|
this.btnCarregarMapa.Click += new System.EventHandler(this.btnCarregarMapa_Click);
|
||||||
|
//
|
||||||
// cmbCameraSoloD
|
// cmbCameraSoloD
|
||||||
//
|
//
|
||||||
this.cmbCameraSoloD.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
this.cmbCameraSoloD.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||||
|
|
@ -284,10 +306,10 @@ namespace AgroBase.Forms.Operacoes
|
||||||
//
|
//
|
||||||
// btnIniciarOperacao
|
// btnIniciarOperacao
|
||||||
//
|
//
|
||||||
this.btnIniciarOperacao.Location = new System.Drawing.Point(7, 93);
|
this.btnIniciarOperacao.Location = new System.Drawing.Point(83, 93);
|
||||||
this.btnIniciarOperacao.Margin = new System.Windows.Forms.Padding(2);
|
this.btnIniciarOperacao.Margin = new System.Windows.Forms.Padding(2);
|
||||||
this.btnIniciarOperacao.Name = "btnIniciarOperacao";
|
this.btnIniciarOperacao.Name = "btnIniciarOperacao";
|
||||||
this.btnIniciarOperacao.Size = new System.Drawing.Size(187, 21);
|
this.btnIniciarOperacao.Size = new System.Drawing.Size(111, 21);
|
||||||
this.btnIniciarOperacao.TabIndex = 6;
|
this.btnIniciarOperacao.TabIndex = 6;
|
||||||
this.btnIniciarOperacao.Text = "Iniciar Operação";
|
this.btnIniciarOperacao.Text = "Iniciar Operação";
|
||||||
this.btnIniciarOperacao.UseVisualStyleBackColor = true;
|
this.btnIniciarOperacao.UseVisualStyleBackColor = true;
|
||||||
|
|
@ -335,28 +357,6 @@ namespace AgroBase.Forms.Operacoes
|
||||||
this.lblCameraSoloE.TabIndex = 0;
|
this.lblCameraSoloE.TabIndex = 0;
|
||||||
this.lblCameraSoloE.Text = "Cam Solo E";
|
this.lblCameraSoloE.Text = "Cam Solo E";
|
||||||
//
|
//
|
||||||
// btnCarregarMapa
|
|
||||||
//
|
|
||||||
this.btnCarregarMapa.Location = new System.Drawing.Point(280, 5);
|
|
||||||
this.btnCarregarMapa.Margin = new System.Windows.Forms.Padding(2);
|
|
||||||
this.btnCarregarMapa.Name = "btnCarregarMapa";
|
|
||||||
this.btnCarregarMapa.Size = new System.Drawing.Size(76, 22);
|
|
||||||
this.btnCarregarMapa.TabIndex = 5;
|
|
||||||
this.btnCarregarMapa.Text = "Carregar...";
|
|
||||||
this.btnCarregarMapa.UseVisualStyleBackColor = true;
|
|
||||||
this.btnCarregarMapa.Click += new System.EventHandler(this.btnCarregarMapa_Click);
|
|
||||||
//
|
|
||||||
// lblMapaCarregado
|
|
||||||
//
|
|
||||||
this.lblMapaCarregado.AutoSize = true;
|
|
||||||
this.lblMapaCarregado.Font = new System.Drawing.Font("Mongolian Baiti", 9F, System.Drawing.FontStyle.Bold);
|
|
||||||
this.lblMapaCarregado.Location = new System.Drawing.Point(11, 11);
|
|
||||||
this.lblMapaCarregado.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
|
|
||||||
this.lblMapaCarregado.Name = "lblMapaCarregado";
|
|
||||||
this.lblMapaCarregado.Size = new System.Drawing.Size(129, 13);
|
|
||||||
this.lblMapaCarregado.TabIndex = 8;
|
|
||||||
this.lblMapaCarregado.Text = "Mapa carregado: N/A";
|
|
||||||
//
|
|
||||||
// gpbInformacoesGerais
|
// gpbInformacoesGerais
|
||||||
//
|
//
|
||||||
this.gpbInformacoesGerais.Controls.Add(this.lblBateriaConsumida);
|
this.gpbInformacoesGerais.Controls.Add(this.lblBateriaConsumida);
|
||||||
|
|
@ -480,6 +480,7 @@ namespace AgroBase.Forms.Operacoes
|
||||||
//
|
//
|
||||||
// pnlInferior
|
// pnlInferior
|
||||||
//
|
//
|
||||||
|
this.pnlInferior.Controls.Add(this.lblMapaCarregado);
|
||||||
this.pnlInferior.Controls.Add(this.chbGPSativo);
|
this.pnlInferior.Controls.Add(this.chbGPSativo);
|
||||||
this.pnlInferior.Controls.Add(this.chbATUativo);
|
this.pnlInferior.Controls.Add(this.chbATUativo);
|
||||||
this.pnlInferior.Controls.Add(this.chbDIRativo);
|
this.pnlInferior.Controls.Add(this.chbDIRativo);
|
||||||
|
|
@ -493,6 +494,17 @@ namespace AgroBase.Forms.Operacoes
|
||||||
this.pnlInferior.Size = new System.Drawing.Size(592, 41);
|
this.pnlInferior.Size = new System.Drawing.Size(592, 41);
|
||||||
this.pnlInferior.TabIndex = 13;
|
this.pnlInferior.TabIndex = 13;
|
||||||
//
|
//
|
||||||
|
// lblMapaCarregado
|
||||||
|
//
|
||||||
|
this.lblMapaCarregado.AutoSize = true;
|
||||||
|
this.lblMapaCarregado.Font = new System.Drawing.Font("Mongolian Baiti", 9F, System.Drawing.FontStyle.Bold);
|
||||||
|
this.lblMapaCarregado.Location = new System.Drawing.Point(227, 24);
|
||||||
|
this.lblMapaCarregado.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
|
||||||
|
this.lblMapaCarregado.Name = "lblMapaCarregado";
|
||||||
|
this.lblMapaCarregado.Size = new System.Drawing.Size(129, 13);
|
||||||
|
this.lblMapaCarregado.TabIndex = 8;
|
||||||
|
this.lblMapaCarregado.Text = "Mapa carregado: N/A";
|
||||||
|
//
|
||||||
// chbGPSativo
|
// chbGPSativo
|
||||||
//
|
//
|
||||||
this.chbGPSativo.AutoSize = true;
|
this.chbGPSativo.AutoSize = true;
|
||||||
|
|
@ -555,19 +567,20 @@ namespace AgroBase.Forms.Operacoes
|
||||||
//
|
//
|
||||||
// pnlMapa
|
// pnlMapa
|
||||||
//
|
//
|
||||||
this.pnlMapa.Location = new System.Drawing.Point(9, 32);
|
this.pnlMapa.Location = new System.Drawing.Point(9, 6);
|
||||||
this.pnlMapa.Name = "pnlMapa";
|
this.pnlMapa.Name = "pnlMapa";
|
||||||
this.pnlMapa.Size = new System.Drawing.Size(347, 181);
|
this.pnlMapa.Size = new System.Drawing.Size(347, 207);
|
||||||
this.pnlMapa.TabIndex = 14;
|
this.pnlMapa.TabIndex = 14;
|
||||||
//
|
//
|
||||||
// lblPressao
|
// pnlOrientacao
|
||||||
//
|
//
|
||||||
this.lblPressao.AutoSize = true;
|
this.pnlOrientacao.BackColor = System.Drawing.Color.White;
|
||||||
this.lblPressao.Location = new System.Drawing.Point(-2, 0);
|
this.pnlOrientacao.Location = new System.Drawing.Point(936, 6);
|
||||||
this.lblPressao.Name = "lblPressao";
|
this.pnlOrientacao.Margin = new System.Windows.Forms.Padding(2);
|
||||||
this.lblPressao.Size = new System.Drawing.Size(57, 13);
|
this.pnlOrientacao.Name = "pnlOrientacao";
|
||||||
this.lblPressao.TabIndex = 0;
|
this.pnlOrientacao.Size = new System.Drawing.Size(78, 84);
|
||||||
this.lblPressao.Text = "P: 0.00 psi";
|
this.pnlOrientacao.TabIndex = 11;
|
||||||
|
this.pnlOrientacao.Paint += new System.Windows.Forms.PaintEventHandler(this.pnlOrientacao_Paint);
|
||||||
//
|
//
|
||||||
// frmOperacaoSeguidorLinha
|
// frmOperacaoSeguidorLinha
|
||||||
//
|
//
|
||||||
|
|
@ -575,14 +588,13 @@ namespace AgroBase.Forms.Operacoes
|
||||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||||
this.BackColor = System.Drawing.Color.White;
|
this.BackColor = System.Drawing.Color.White;
|
||||||
this.ClientSize = new System.Drawing.Size(1020, 697);
|
this.ClientSize = new System.Drawing.Size(1020, 697);
|
||||||
|
this.Controls.Add(this.pnlOrientacao);
|
||||||
this.Controls.Add(this.lblDistanciaEsquerda);
|
this.Controls.Add(this.lblDistanciaEsquerda);
|
||||||
this.Controls.Add(this.pnlMapa);
|
this.Controls.Add(this.pnlMapa);
|
||||||
this.Controls.Add(this.pnlInferior);
|
this.Controls.Add(this.pnlInferior);
|
||||||
this.Controls.Add(this.btnCarregarMapa);
|
|
||||||
this.Controls.Add(this.lblDistanciaDireita);
|
this.Controls.Add(this.lblDistanciaDireita);
|
||||||
this.Controls.Add(this.pnlInclinacao);
|
this.Controls.Add(this.pnlInclinacao);
|
||||||
this.Controls.Add(this.gpbInformacoesGerais);
|
this.Controls.Add(this.gpbInformacoesGerais);
|
||||||
this.Controls.Add(this.lblMapaCarregado);
|
|
||||||
this.Controls.Add(this.gpbOpcoes);
|
this.Controls.Add(this.gpbOpcoes);
|
||||||
this.Controls.Add(this.pnlNiveis);
|
this.Controls.Add(this.pnlNiveis);
|
||||||
this.Controls.Add(this.pnlGraficos);
|
this.Controls.Add(this.pnlGraficos);
|
||||||
|
|
@ -636,7 +648,6 @@ namespace AgroBase.Forms.Operacoes
|
||||||
private System.Windows.Forms.Label lblCameraCaminho;
|
private System.Windows.Forms.Label lblCameraCaminho;
|
||||||
private System.Windows.Forms.ComboBox cmbCameraSoloE;
|
private System.Windows.Forms.ComboBox cmbCameraSoloE;
|
||||||
private System.Windows.Forms.Label lblCameraSoloE;
|
private System.Windows.Forms.Label lblCameraSoloE;
|
||||||
private System.Windows.Forms.Label lblMapaCarregado;
|
|
||||||
private System.Windows.Forms.GroupBox gpbInformacoesGerais;
|
private System.Windows.Forms.GroupBox gpbInformacoesGerais;
|
||||||
private System.Windows.Forms.Label lblBateriaConsumida;
|
private System.Windows.Forms.Label lblBateriaConsumida;
|
||||||
private System.Windows.Forms.Label lblHerbicidaPorErva;
|
private System.Windows.Forms.Label lblHerbicidaPorErva;
|
||||||
|
|
@ -661,5 +672,7 @@ namespace AgroBase.Forms.Operacoes
|
||||||
private System.Windows.Forms.CheckBox chbDIRativo;
|
private System.Windows.Forms.CheckBox chbDIRativo;
|
||||||
private System.Windows.Forms.CheckBox chbMOVativo;
|
private System.Windows.Forms.CheckBox chbMOVativo;
|
||||||
private System.Windows.Forms.Label lblPressao;
|
private System.Windows.Forms.Label lblPressao;
|
||||||
|
private System.Windows.Forms.Label lblMapaCarregado;
|
||||||
|
private System.Windows.Forms.Panel pnlOrientacao;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -26,8 +26,6 @@ namespace AgroBase.Forms.Operacoes
|
||||||
|
|
||||||
private CameraCaminhoModel cameraCaminho;
|
private CameraCaminhoModel cameraCaminho;
|
||||||
|
|
||||||
private ChromiumWebBrowser webMapa = null;
|
|
||||||
|
|
||||||
private Timer tmrLeituras = new Timer() { Interval = 200 };
|
private Timer tmrLeituras = new Timer() { Interval = 200 };
|
||||||
|
|
||||||
DispositivosService<MovimentacaoModel> Movimentacao;
|
DispositivosService<MovimentacaoModel> Movimentacao;
|
||||||
|
|
@ -48,6 +46,7 @@ namespace AgroBase.Forms.Operacoes
|
||||||
pnlAtuadores.GetType().GetMethod("SetStyle", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic).Invoke(pnlAtuadores, new object[] { ControlStyles.UserPaint | ControlStyles.AllPaintingInWmPaint | ControlStyles.OptimizedDoubleBuffer, true });
|
pnlAtuadores.GetType().GetMethod("SetStyle", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic).Invoke(pnlAtuadores, new object[] { ControlStyles.UserPaint | ControlStyles.AllPaintingInWmPaint | ControlStyles.OptimizedDoubleBuffer, true });
|
||||||
pnlCaminho.GetType().GetMethod("SetStyle", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic).Invoke(pnlCaminho, new object[] { ControlStyles.UserPaint | ControlStyles.AllPaintingInWmPaint | ControlStyles.OptimizedDoubleBuffer, true });
|
pnlCaminho.GetType().GetMethod("SetStyle", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic).Invoke(pnlCaminho, new object[] { ControlStyles.UserPaint | ControlStyles.AllPaintingInWmPaint | ControlStyles.OptimizedDoubleBuffer, true });
|
||||||
pnlInclinacao.GetType().GetMethod("SetStyle", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic).Invoke(pnlInclinacao, new object[] { ControlStyles.UserPaint | ControlStyles.AllPaintingInWmPaint | ControlStyles.OptimizedDoubleBuffer, true });
|
pnlInclinacao.GetType().GetMethod("SetStyle", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic).Invoke(pnlInclinacao, new object[] { ControlStyles.UserPaint | ControlStyles.AllPaintingInWmPaint | ControlStyles.OptimizedDoubleBuffer, true });
|
||||||
|
pnlOrientacao.GetType().GetMethod("SetStyle", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic).Invoke(pnlOrientacao, new object[] { ControlStyles.UserPaint | ControlStyles.AllPaintingInWmPaint | ControlStyles.OptimizedDoubleBuffer, true });
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -89,7 +88,7 @@ namespace AgroBase.Forms.Operacoes
|
||||||
{
|
{
|
||||||
var listaCameras = new CameraService<object>().AtualizaListaCameras().ToArray();
|
var listaCameras = new CameraService<object>().AtualizaListaCameras().ToArray();
|
||||||
|
|
||||||
var cameras = gpbOpcoes.Controls.OfType<ComboBox>().Where(x => x.Name.Contains("cmbCameraSolo")).ToList();
|
var cameras = gpbOpcoes.Controls.OfType<ComboBox>().Where(x => x.Name.Contains("cmbCameraSolo")).OrderBy(x => x.TabIndex).ToList();
|
||||||
foreach (ComboBox cmb in cameras)
|
foreach (ComboBox cmb in cameras)
|
||||||
{
|
{
|
||||||
string CamNome = cmb.Name.Replace("cmbCameraSolo", "");
|
string CamNome = cmb.Name.Replace("cmbCameraSolo", "");
|
||||||
|
|
@ -322,27 +321,12 @@ namespace AgroBase.Forms.Operacoes
|
||||||
|
|
||||||
private void btnCarregarMapa_Click(object sender, EventArgs e)
|
private void btnCarregarMapa_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
OpenFileDialog ofd = new OpenFileDialog();
|
Variaveis.OperacaoEmAndamento.Mapa = new MapasModel()
|
||||||
ofd.Filter = "Arquivos de Imagem|*.jpg;*.jpeg;*.png;*.gif;*.bmp";
|
|
||||||
if (ofd.ShowDialog() == DialogResult.OK)
|
|
||||||
{
|
{
|
||||||
string imagemPath = ofd.FileName;
|
pnlMapa = pnlMapa,
|
||||||
|
lblMapa = lblMapaCarregado,
|
||||||
// Cria um arquivo HTML temporário
|
};
|
||||||
string tempHtmlPath = Path.Combine(Path.GetTempPath(), "tempImage.html");
|
Variaveis.OperacaoEmAndamento.Mapa.btnCarregar_Click(sender, e);
|
||||||
string htmlContent = $"<html><body style='margin:0;'><img src='file:///{imagemPath}' style='width:100%; height:100%;'></body></html>";
|
|
||||||
File.WriteAllText(tempHtmlPath, htmlContent);
|
|
||||||
if (webMapa == null)
|
|
||||||
{
|
|
||||||
webMapa = new ChromiumWebBrowser();
|
|
||||||
webMapa.Dock = DockStyle.Fill;
|
|
||||||
pnlMapa.Controls.Add(webMapa);
|
|
||||||
}
|
|
||||||
// Carrega o arquivo HTML no ChromiumWebBrowser
|
|
||||||
webMapa.Load(tempHtmlPath);
|
|
||||||
lblMapaCarregado.Text = "Mapa carregado: " + ofd.FileName.Split('\\')[ofd.FileName.Split('\\').Length - 1];
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void btnIniciarOperacao_Click(object sender, EventArgs e)
|
private void btnIniciarOperacao_Click(object sender, EventArgs e)
|
||||||
|
|
@ -376,66 +360,6 @@ namespace AgroBase.Forms.Operacoes
|
||||||
|
|
||||||
private void TmrLeituras_Tick(object sender, EventArgs e)
|
private void TmrLeituras_Tick(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
/*
|
|
||||||
if (camSoloE.socket != null && camSoloE.socket.DadosRecebidos.Any())
|
|
||||||
{
|
|
||||||
var leitura = camSoloE.socket.DadosRecebidos.Last();
|
|
||||||
var Verdes = leitura.objetos.ToList();
|
|
||||||
int intervaloPorBico = Convert.ToInt32(camSoloE.socket.DadosRecebidos.First().x_max) / Atuador.Dados.QuantidadeBicos;
|
|
||||||
int inicioBarraPulverizadora = Convert.ToInt32(camSoloE.socket.DadosRecebidos.First().y_max * (1 - Atuador.Dados.PercentualInicioPulverizacao));
|
|
||||||
|
|
||||||
List<bool> BicosAnteriores = new List<bool>();
|
|
||||||
// Inicialize todos os bicos como inativos antes de verificar os objetos verdes
|
|
||||||
for (int i = 0; i < Atuador.Dados.QuantidadeBicos; i++)
|
|
||||||
{
|
|
||||||
BicosAnteriores.Add(Atuador.Dados.BicosPulverizadores[i].Atuado);
|
|
||||||
Atuador.Dados.BicosPulverizadores[i].Atuado = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
foreach (var verde in Verdes)
|
|
||||||
{
|
|
||||||
// Calcule a posição final (y + altura) do objeto verde
|
|
||||||
int posicaoFinalVerdeY = verde.y + verde.altura;
|
|
||||||
if (posicaoFinalVerdeY > inicioBarraPulverizadora)
|
|
||||||
{
|
|
||||||
// Calcule a posição final (x + largura) do objeto verde
|
|
||||||
int posicaoFinalVerdeX = verde.x + verde.largura;
|
|
||||||
|
|
||||||
// Para cada objeto verde, verifique se ele está dentro do intervalo de algum bico e atue-o
|
|
||||||
for (int i = 0; i < Atuador.Dados.QuantidadeBicos; i++)
|
|
||||||
{
|
|
||||||
// Determina o intervalo no eixo x para o bico atual
|
|
||||||
int limiteInferior = intervaloPorBico * i;
|
|
||||||
int limiteSuperior = limiteInferior + intervaloPorBico;
|
|
||||||
|
|
||||||
// Verifica se o objeto 'verde' está dentro do intervalo deste bico
|
|
||||||
// A condição foi ajustada para verificar se qualquer parte do objeto verde cruza com o intervalo do bico
|
|
||||||
if (verde.x < limiteSuperior && posicaoFinalVerdeX > limiteInferior)
|
|
||||||
{
|
|
||||||
Atuador.Dados.BicosPulverizadores[i].Atuado = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
for (int i = 0; i < Atuador.Dados.QuantidadeBicos; i++)
|
|
||||||
{
|
|
||||||
if (Atuador.Dados.BicosPulverizadores[i].Atuado && BicosAnteriores[i] != Atuador.Dados.BicosPulverizadores[i].Atuado)
|
|
||||||
{
|
|
||||||
Variaveis.OperacaoEmAndamento.AtuacoesPorBico[i]++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
lblUltimaLeituraSolo.Text = "Ultima Leitura Solo: " + FuncoesGlobais.TimestampToDate(leitura.timestamp);
|
|
||||||
pnlAtuadores.Invalidate();
|
|
||||||
|
|
||||||
Variaveis.OperacaoEmAndamento.Controle.BicosAtuados = Atuador.Dados.BicosPulverizadores;
|
|
||||||
Variaveis.OperacaoEmAndamento.Controle.RPM = !Verdes.Any() ?
|
|
||||||
Variaveis.OperacaoEmAndamento.Controle.RPM_Max :
|
|
||||||
Variaveis.OperacaoEmAndamento.Controle.RPM_Min;
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
CamerasSolo.ForEach(CameraSolo =>
|
CamerasSolo.ForEach(CameraSolo =>
|
||||||
{
|
{
|
||||||
AtualizaLeituraCameraSolo(CameraSolo);
|
AtualizaLeituraCameraSolo(CameraSolo);
|
||||||
|
|
@ -463,7 +387,7 @@ namespace AgroBase.Forms.Operacoes
|
||||||
for (int i = 0; i < BicosPorCamera; i++)
|
for (int i = 0; i < BicosPorCamera; i++)
|
||||||
{
|
{
|
||||||
int iBico = i + (CameraSolo.Posicao * BicosPorCamera);
|
int iBico = i + (CameraSolo.Posicao * BicosPorCamera);
|
||||||
BicosAnteriores.Add(Atuador.Dados.BicosPulverizadores[iBico].Atuado);
|
BicosAnteriores.Add(Atuador.Dados.BicosPulverizadores[iBico].Atuado ? true : false);
|
||||||
Atuador.Dados.BicosPulverizadores[iBico].Atuado = false;
|
Atuador.Dados.BicosPulverizadores[iBico].Atuado = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -558,9 +482,11 @@ namespace AgroBase.Forms.Operacoes
|
||||||
bool operacaoEmAndamento = tempo.Seconds > Variaveis.OperacaoEmAndamento.TempoIniciarOperacao;
|
bool operacaoEmAndamento = tempo.Seconds > Variaveis.OperacaoEmAndamento.TempoIniciarOperacao;
|
||||||
|
|
||||||
|
|
||||||
var BicosNaoAtuados = Atuador.Dados.BicosPulverizadores.ToList();
|
var BicosNaoAtuados = new List<AtuadorBicoModel>();
|
||||||
BicosNaoAtuados.ForEach(x => x.Atuado = false);
|
Atuador.Dados.BicosPulverizadores.ForEach(x =>
|
||||||
|
{
|
||||||
|
BicosNaoAtuados.Add(x);
|
||||||
|
});
|
||||||
|
|
||||||
Variaveis.OperacaoEmAndamento.Sensoriamento.ErvasNoRadar = CamerasSolo.Sum(x => x.ErvasNoRadar);
|
Variaveis.OperacaoEmAndamento.Sensoriamento.ErvasNoRadar = CamerasSolo.Sum(x => x.ErvasNoRadar);
|
||||||
Variaveis.OperacaoEmAndamento.Sensoriamento.ErvasIdentificadas = Variaveis.OperacaoEmAndamento.Sensoriamento.AtuacoesPorBico.Sum();
|
Variaveis.OperacaoEmAndamento.Sensoriamento.ErvasIdentificadas = Variaveis.OperacaoEmAndamento.Sensoriamento.AtuacoesPorBico.Sum();
|
||||||
|
|
@ -588,6 +514,8 @@ namespace AgroBase.Forms.Operacoes
|
||||||
cameraCaminho.Angulo;
|
cameraCaminho.Angulo;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pnlOrientacao.Invalidate();
|
||||||
|
|
||||||
Variaveis.OperacaoEmAndamento.AtualizarDadosControle();
|
Variaveis.OperacaoEmAndamento.AtualizarDadosControle();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -747,19 +675,13 @@ namespace AgroBase.Forms.Operacoes
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
DesenharInclinacao((Panel)sender, e);
|
DesenharInclinacao((Panel)sender, e, (float)cameraCaminho.Angulo);
|
||||||
}
|
}
|
||||||
catch { }
|
catch { }
|
||||||
}
|
}
|
||||||
|
|
||||||
private void DesenharInclinacao(Panel pnlBussola, PaintEventArgs e)
|
private void DesenharInclinacao(Panel pnlBussola, PaintEventArgs e, float anguloInclinacao)
|
||||||
{
|
{
|
||||||
// Ângulo de inclinação em graus.
|
|
||||||
// Suponha que você tenha uma variável que armazene essa informação.
|
|
||||||
// Por exemplo, o ângulo de 0 graus pode ser diretamente para cima,
|
|
||||||
// e os ângulos aumentam no sentido horário.
|
|
||||||
float anguloInclinacao = (float)cameraCaminho.Angulo;
|
|
||||||
|
|
||||||
Graphics g = e.Graphics;
|
Graphics g = e.Graphics;
|
||||||
// Desenha o círculo da bússola
|
// Desenha o círculo da bússola
|
||||||
int diameter = Math.Min(pnlBussola.Width - 1, pnlBussola.Height - 1);
|
int diameter = Math.Min(pnlBussola.Width - 1, pnlBussola.Height - 1);
|
||||||
|
|
@ -889,8 +811,14 @@ namespace AgroBase.Forms.Operacoes
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void pnlOrientacao_Paint(object sender, PaintEventArgs e)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
DesenharInclinacao((Panel)sender, e, (float)GPSService.UltimaLeitura.Orientacao);
|
||||||
|
}
|
||||||
|
catch { }
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -39,6 +39,7 @@
|
||||||
this.nudQtdBicos = new System.Windows.Forms.NumericUpDown();
|
this.nudQtdBicos = new System.Windows.Forms.NumericUpDown();
|
||||||
this.lblQtdBicos = new System.Windows.Forms.Label();
|
this.lblQtdBicos = new System.Windows.Forms.Label();
|
||||||
this.gpbP_Dir = new System.Windows.Forms.GroupBox();
|
this.gpbP_Dir = new System.Windows.Forms.GroupBox();
|
||||||
|
this.nudAnguloMinimo = new System.Windows.Forms.NumericUpDown();
|
||||||
this.nudVelocidadeMP = new System.Windows.Forms.NumericUpDown();
|
this.nudVelocidadeMP = new System.Windows.Forms.NumericUpDown();
|
||||||
this.lblVelocidadePercentual = new System.Windows.Forms.Label();
|
this.lblVelocidadePercentual = new System.Windows.Forms.Label();
|
||||||
this.lblVelocidadeMP = new System.Windows.Forms.Label();
|
this.lblVelocidadeMP = new System.Windows.Forms.Label();
|
||||||
|
|
@ -63,19 +64,23 @@
|
||||||
this.chbD_Dir = new System.Windows.Forms.CheckBox();
|
this.chbD_Dir = new System.Windows.Forms.CheckBox();
|
||||||
this.btnCarregar = new System.Windows.Forms.Button();
|
this.btnCarregar = new System.Windows.Forms.Button();
|
||||||
this.btnSalvar = new System.Windows.Forms.Button();
|
this.btnSalvar = new System.Windows.Forms.Button();
|
||||||
this.nudAnguloMinimo = new System.Windows.Forms.NumericUpDown();
|
|
||||||
this.chbSalvar = new System.Windows.Forms.CheckBox();
|
this.chbSalvar = new System.Windows.Forms.CheckBox();
|
||||||
|
this.nudTemposalvarlog = new System.Windows.Forms.NumericUpDown();
|
||||||
|
this.lblTemposalvarlog = new System.Windows.Forms.Label();
|
||||||
|
this.lblTemposalvarlogU = new System.Windows.Forms.Label();
|
||||||
this.gpbModulos.SuspendLayout();
|
this.gpbModulos.SuspendLayout();
|
||||||
|
this.gpbP_Sen.SuspendLayout();
|
||||||
this.gpbP_Atu.SuspendLayout();
|
this.gpbP_Atu.SuspendLayout();
|
||||||
((System.ComponentModel.ISupportInitialize)(this.nudQtdCameras)).BeginInit();
|
((System.ComponentModel.ISupportInitialize)(this.nudQtdCameras)).BeginInit();
|
||||||
((System.ComponentModel.ISupportInitialize)(this.nudQtdBicos)).BeginInit();
|
((System.ComponentModel.ISupportInitialize)(this.nudQtdBicos)).BeginInit();
|
||||||
this.gpbP_Dir.SuspendLayout();
|
this.gpbP_Dir.SuspendLayout();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.nudAnguloMinimo)).BeginInit();
|
||||||
((System.ComponentModel.ISupportInitialize)(this.nudVelocidadeMP)).BeginInit();
|
((System.ComponentModel.ISupportInitialize)(this.nudVelocidadeMP)).BeginInit();
|
||||||
((System.ComponentModel.ISupportInitialize)(this.nudAnguloMaximo)).BeginInit();
|
((System.ComponentModel.ISupportInitialize)(this.nudAnguloMaximo)).BeginInit();
|
||||||
this.gpbP_Mov.SuspendLayout();
|
this.gpbP_Mov.SuspendLayout();
|
||||||
((System.ComponentModel.ISupportInitialize)(this.nudVelocidadeComErvas)).BeginInit();
|
((System.ComponentModel.ISupportInitialize)(this.nudVelocidadeComErvas)).BeginInit();
|
||||||
((System.ComponentModel.ISupportInitialize)(this.nudVelocidadeSemErvas)).BeginInit();
|
((System.ComponentModel.ISupportInitialize)(this.nudVelocidadeSemErvas)).BeginInit();
|
||||||
((System.ComponentModel.ISupportInitialize)(this.nudAnguloMinimo)).BeginInit();
|
((System.ComponentModel.ISupportInitialize)(this.nudTemposalvarlog)).BeginInit();
|
||||||
this.SuspendLayout();
|
this.SuspendLayout();
|
||||||
//
|
//
|
||||||
// cmbOperacao
|
// cmbOperacao
|
||||||
|
|
@ -139,6 +144,9 @@
|
||||||
//
|
//
|
||||||
// gpbP_Sen
|
// gpbP_Sen
|
||||||
//
|
//
|
||||||
|
this.gpbP_Sen.Controls.Add(this.lblTemposalvarlogU);
|
||||||
|
this.gpbP_Sen.Controls.Add(this.nudTemposalvarlog);
|
||||||
|
this.gpbP_Sen.Controls.Add(this.lblTemposalvarlog);
|
||||||
this.gpbP_Sen.Location = new System.Drawing.Point(596, 105);
|
this.gpbP_Sen.Location = new System.Drawing.Point(596, 105);
|
||||||
this.gpbP_Sen.Name = "gpbP_Sen";
|
this.gpbP_Sen.Name = "gpbP_Sen";
|
||||||
this.gpbP_Sen.Size = new System.Drawing.Size(190, 168);
|
this.gpbP_Sen.Size = new System.Drawing.Size(190, 168);
|
||||||
|
|
@ -210,6 +218,24 @@
|
||||||
this.gpbP_Dir.TabStop = false;
|
this.gpbP_Dir.TabStop = false;
|
||||||
this.gpbP_Dir.Text = "Ajustes";
|
this.gpbP_Dir.Text = "Ajustes";
|
||||||
//
|
//
|
||||||
|
// nudAnguloMinimo
|
||||||
|
//
|
||||||
|
this.nudAnguloMinimo.Location = new System.Drawing.Point(102, 67);
|
||||||
|
this.nudAnguloMinimo.Maximum = new decimal(new int[] {
|
||||||
|
90,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0});
|
||||||
|
this.nudAnguloMinimo.Minimum = new decimal(new int[] {
|
||||||
|
90,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
-2147483648});
|
||||||
|
this.nudAnguloMinimo.Name = "nudAnguloMinimo";
|
||||||
|
this.nudAnguloMinimo.Size = new System.Drawing.Size(72, 29);
|
||||||
|
this.nudAnguloMinimo.TabIndex = 12;
|
||||||
|
this.nudAnguloMinimo.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
|
||||||
|
//
|
||||||
// nudVelocidadeMP
|
// nudVelocidadeMP
|
||||||
//
|
//
|
||||||
this.nudVelocidadeMP.Location = new System.Drawing.Point(10, 126);
|
this.nudVelocidadeMP.Location = new System.Drawing.Point(10, 126);
|
||||||
|
|
@ -483,24 +509,6 @@
|
||||||
this.btnSalvar.UseVisualStyleBackColor = true;
|
this.btnSalvar.UseVisualStyleBackColor = true;
|
||||||
this.btnSalvar.Click += new System.EventHandler(this.btnSalvar_Click);
|
this.btnSalvar.Click += new System.EventHandler(this.btnSalvar_Click);
|
||||||
//
|
//
|
||||||
// nudAnguloMinimo
|
|
||||||
//
|
|
||||||
this.nudAnguloMinimo.Location = new System.Drawing.Point(102, 67);
|
|
||||||
this.nudAnguloMinimo.Maximum = new decimal(new int[] {
|
|
||||||
90,
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
0});
|
|
||||||
this.nudAnguloMinimo.Minimum = new decimal(new int[] {
|
|
||||||
90,
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
-2147483648});
|
|
||||||
this.nudAnguloMinimo.Name = "nudAnguloMinimo";
|
|
||||||
this.nudAnguloMinimo.Size = new System.Drawing.Size(72, 29);
|
|
||||||
this.nudAnguloMinimo.TabIndex = 12;
|
|
||||||
this.nudAnguloMinimo.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
|
|
||||||
//
|
|
||||||
// chbSalvar
|
// chbSalvar
|
||||||
//
|
//
|
||||||
this.chbSalvar.AutoSize = true;
|
this.chbSalvar.AutoSize = true;
|
||||||
|
|
@ -512,6 +520,43 @@
|
||||||
this.chbSalvar.Text = "Personalizado";
|
this.chbSalvar.Text = "Personalizado";
|
||||||
this.chbSalvar.UseVisualStyleBackColor = true;
|
this.chbSalvar.UseVisualStyleBackColor = true;
|
||||||
//
|
//
|
||||||
|
// nudTemposalvarlog
|
||||||
|
//
|
||||||
|
this.nudTemposalvarlog.Location = new System.Drawing.Point(10, 67);
|
||||||
|
this.nudTemposalvarlog.Minimum = new decimal(new int[] {
|
||||||
|
1,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0});
|
||||||
|
this.nudTemposalvarlog.Name = "nudTemposalvarlog";
|
||||||
|
this.nudTemposalvarlog.Size = new System.Drawing.Size(120, 29);
|
||||||
|
this.nudTemposalvarlog.TabIndex = 10;
|
||||||
|
this.nudTemposalvarlog.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
|
||||||
|
this.nudTemposalvarlog.Value = new decimal(new int[] {
|
||||||
|
1,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0});
|
||||||
|
//
|
||||||
|
// lblTemposalvarlog
|
||||||
|
//
|
||||||
|
this.lblTemposalvarlog.AutoSize = true;
|
||||||
|
this.lblTemposalvarlog.Font = new System.Drawing.Font("Microsoft Sans Serif", 12.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||||
|
this.lblTemposalvarlog.Location = new System.Drawing.Point(6, 40);
|
||||||
|
this.lblTemposalvarlog.Name = "lblTemposalvarlog";
|
||||||
|
this.lblTemposalvarlog.Size = new System.Drawing.Size(145, 20);
|
||||||
|
this.lblTemposalvarlog.TabIndex = 9;
|
||||||
|
this.lblTemposalvarlog.Text = "Tempo Salvar Log";
|
||||||
|
//
|
||||||
|
// lblTemposalvarlogU
|
||||||
|
//
|
||||||
|
this.lblTemposalvarlogU.AutoSize = true;
|
||||||
|
this.lblTemposalvarlogU.Location = new System.Drawing.Point(136, 69);
|
||||||
|
this.lblTemposalvarlogU.Name = "lblTemposalvarlogU";
|
||||||
|
this.lblTemposalvarlogU.Size = new System.Drawing.Size(41, 24);
|
||||||
|
this.lblTemposalvarlogU.TabIndex = 13;
|
||||||
|
this.lblTemposalvarlogU.Text = "seg";
|
||||||
|
//
|
||||||
// frmParametrizacaoOperacao
|
// frmParametrizacaoOperacao
|
||||||
//
|
//
|
||||||
this.AutoScaleDimensions = new System.Drawing.SizeF(11F, 24F);
|
this.AutoScaleDimensions = new System.Drawing.SizeF(11F, 24F);
|
||||||
|
|
@ -531,19 +576,22 @@
|
||||||
this.Load += new System.EventHandler(this.frmParametrizacaoOperacao_Load);
|
this.Load += new System.EventHandler(this.frmParametrizacaoOperacao_Load);
|
||||||
this.gpbModulos.ResumeLayout(false);
|
this.gpbModulos.ResumeLayout(false);
|
||||||
this.gpbModulos.PerformLayout();
|
this.gpbModulos.PerformLayout();
|
||||||
|
this.gpbP_Sen.ResumeLayout(false);
|
||||||
|
this.gpbP_Sen.PerformLayout();
|
||||||
this.gpbP_Atu.ResumeLayout(false);
|
this.gpbP_Atu.ResumeLayout(false);
|
||||||
this.gpbP_Atu.PerformLayout();
|
this.gpbP_Atu.PerformLayout();
|
||||||
((System.ComponentModel.ISupportInitialize)(this.nudQtdCameras)).EndInit();
|
((System.ComponentModel.ISupportInitialize)(this.nudQtdCameras)).EndInit();
|
||||||
((System.ComponentModel.ISupportInitialize)(this.nudQtdBicos)).EndInit();
|
((System.ComponentModel.ISupportInitialize)(this.nudQtdBicos)).EndInit();
|
||||||
this.gpbP_Dir.ResumeLayout(false);
|
this.gpbP_Dir.ResumeLayout(false);
|
||||||
this.gpbP_Dir.PerformLayout();
|
this.gpbP_Dir.PerformLayout();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.nudAnguloMinimo)).EndInit();
|
||||||
((System.ComponentModel.ISupportInitialize)(this.nudVelocidadeMP)).EndInit();
|
((System.ComponentModel.ISupportInitialize)(this.nudVelocidadeMP)).EndInit();
|
||||||
((System.ComponentModel.ISupportInitialize)(this.nudAnguloMaximo)).EndInit();
|
((System.ComponentModel.ISupportInitialize)(this.nudAnguloMaximo)).EndInit();
|
||||||
this.gpbP_Mov.ResumeLayout(false);
|
this.gpbP_Mov.ResumeLayout(false);
|
||||||
this.gpbP_Mov.PerformLayout();
|
this.gpbP_Mov.PerformLayout();
|
||||||
((System.ComponentModel.ISupportInitialize)(this.nudVelocidadeComErvas)).EndInit();
|
((System.ComponentModel.ISupportInitialize)(this.nudVelocidadeComErvas)).EndInit();
|
||||||
((System.ComponentModel.ISupportInitialize)(this.nudVelocidadeSemErvas)).EndInit();
|
((System.ComponentModel.ISupportInitialize)(this.nudVelocidadeSemErvas)).EndInit();
|
||||||
((System.ComponentModel.ISupportInitialize)(this.nudAnguloMinimo)).EndInit();
|
((System.ComponentModel.ISupportInitialize)(this.nudTemposalvarlog)).EndInit();
|
||||||
this.ResumeLayout(false);
|
this.ResumeLayout(false);
|
||||||
this.PerformLayout();
|
this.PerformLayout();
|
||||||
|
|
||||||
|
|
@ -588,5 +636,8 @@
|
||||||
private System.Windows.Forms.Label lblAngulo;
|
private System.Windows.Forms.Label lblAngulo;
|
||||||
private System.Windows.Forms.NumericUpDown nudAnguloMinimo;
|
private System.Windows.Forms.NumericUpDown nudAnguloMinimo;
|
||||||
private System.Windows.Forms.CheckBox chbSalvar;
|
private System.Windows.Forms.CheckBox chbSalvar;
|
||||||
|
private System.Windows.Forms.Label lblTemposalvarlogU;
|
||||||
|
private System.Windows.Forms.NumericUpDown nudTemposalvarlog;
|
||||||
|
private System.Windows.Forms.Label lblTemposalvarlog;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -57,6 +57,7 @@ namespace AgroBase.Forms.Operacoes
|
||||||
nudAnguloMaximo.Value = Convert.ToInt32(Variaveis.OperacaoEmAndamento.Controle.Angulo_Max);
|
nudAnguloMaximo.Value = Convert.ToInt32(Variaveis.OperacaoEmAndamento.Controle.Angulo_Max);
|
||||||
nudAnguloMinimo.Value = Convert.ToInt32(Variaveis.OperacaoEmAndamento.Controle.Angulo_Min);
|
nudAnguloMinimo.Value = Convert.ToInt32(Variaveis.OperacaoEmAndamento.Controle.Angulo_Min);
|
||||||
nudVelocidadeMP.Value = Convert.ToInt32(Variaveis.OperacaoEmAndamento.Controle.VelocidadeMP);
|
nudVelocidadeMP.Value = Convert.ToInt32(Variaveis.OperacaoEmAndamento.Controle.VelocidadeMP);
|
||||||
|
nudTemposalvarlog.Value = Variaveis.OperacaoEmAndamento.tmrLogs.Interval / 1000;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void chbD_CheckedChanged(object sender, EventArgs e)
|
private void chbD_CheckedChanged(object sender, EventArgs e)
|
||||||
|
|
@ -117,6 +118,7 @@ namespace AgroBase.Forms.Operacoes
|
||||||
Variaveis.OperacaoEmAndamento.Controle.Angulo_Max = Convert.ToInt32(nudAnguloMaximo.Value);
|
Variaveis.OperacaoEmAndamento.Controle.Angulo_Max = Convert.ToInt32(nudAnguloMaximo.Value);
|
||||||
Variaveis.OperacaoEmAndamento.Controle.Angulo_Min = Convert.ToInt32(nudAnguloMinimo.Value);
|
Variaveis.OperacaoEmAndamento.Controle.Angulo_Min = Convert.ToInt32(nudAnguloMinimo.Value);
|
||||||
Variaveis.OperacaoEmAndamento.Controle.VelocidadeMP = Convert.ToInt32(nudVelocidadeMP.Value);
|
Variaveis.OperacaoEmAndamento.Controle.VelocidadeMP = Convert.ToInt32(nudVelocidadeMP.Value);
|
||||||
|
Variaveis.OperacaoEmAndamento.tmrLogs.Interval = Convert.ToInt32(nudTemposalvarlog.Value * 1000);
|
||||||
|
|
||||||
if (chbSalvar.Checked)
|
if (chbSalvar.Checked)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -65,8 +65,8 @@ namespace AgroBase.Forms
|
||||||
}
|
}
|
||||||
else if (!picLoading.Visible && GPSService.UltimaLeitura != null)
|
else if (!picLoading.Visible && GPSService.UltimaLeitura != null)
|
||||||
{
|
{
|
||||||
//mapaService.AtualizarPosicaoMapaGPS(GPSService.UltimaLeitura.Latitude, GPSService.UltimaLeitura.Longitude);
|
mapaService.AtualizarPosicaoMapaGPS(GPSService.UltimaLeitura.Latitude, GPSService.UltimaLeitura.Longitude);
|
||||||
//chromiumWebBrowser.Reload();
|
chromiumWebBrowser.Reload();
|
||||||
|
|
||||||
lblDatahora.Text = "Ultima Leitura: " + GPSService.UltimaLeitura.DataHora.ToString("dd/MM/yyyy HH:mm:ss");
|
lblDatahora.Text = "Ultima Leitura: " + GPSService.UltimaLeitura.DataHora.ToString("dd/MM/yyyy HH:mm:ss");
|
||||||
lblLatitude.Text = "Latitude: " + GPSService.UltimaLeitura.Latitude;
|
lblLatitude.Text = "Latitude: " + GPSService.UltimaLeitura.Latitude;
|
||||||
|
|
|
||||||
|
|
@ -29,14 +29,10 @@ namespace AgroBase.Forms
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private void InitializeComponent()
|
private void InitializeComponent()
|
||||||
{
|
{
|
||||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(frmMapa));
|
|
||||||
this.pnlMapa = new System.Windows.Forms.Panel();
|
this.pnlMapa = new System.Windows.Forms.Panel();
|
||||||
this.picLoading = new System.Windows.Forms.PictureBox();
|
|
||||||
this.pnlBotoes = new System.Windows.Forms.Panel();
|
this.pnlBotoes = new System.Windows.Forms.Panel();
|
||||||
this.lblMapa = new System.Windows.Forms.Label();
|
this.lblMapa = new System.Windows.Forms.Label();
|
||||||
this.btnCarregar = new System.Windows.Forms.Button();
|
this.btnCarregar = new System.Windows.Forms.Button();
|
||||||
this.pnlMapa.SuspendLayout();
|
|
||||||
((System.ComponentModel.ISupportInitialize)(this.picLoading)).BeginInit();
|
|
||||||
this.pnlBotoes.SuspendLayout();
|
this.pnlBotoes.SuspendLayout();
|
||||||
this.SuspendLayout();
|
this.SuspendLayout();
|
||||||
//
|
//
|
||||||
|
|
@ -45,36 +41,19 @@ namespace AgroBase.Forms
|
||||||
this.pnlMapa.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
this.pnlMapa.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||||
| System.Windows.Forms.AnchorStyles.Left)
|
| System.Windows.Forms.AnchorStyles.Left)
|
||||||
| System.Windows.Forms.AnchorStyles.Right)));
|
| System.Windows.Forms.AnchorStyles.Right)));
|
||||||
this.pnlMapa.Controls.Add(this.picLoading);
|
|
||||||
this.pnlMapa.Location = new System.Drawing.Point(9, 10);
|
this.pnlMapa.Location = new System.Drawing.Point(9, 10);
|
||||||
this.pnlMapa.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
this.pnlMapa.Margin = new System.Windows.Forms.Padding(2);
|
||||||
this.pnlMapa.Name = "pnlMapa";
|
this.pnlMapa.Name = "pnlMapa";
|
||||||
this.pnlMapa.Size = new System.Drawing.Size(772, 464);
|
this.pnlMapa.Size = new System.Drawing.Size(772, 464);
|
||||||
this.pnlMapa.TabIndex = 1;
|
this.pnlMapa.TabIndex = 1;
|
||||||
//
|
//
|
||||||
// picLoading
|
|
||||||
//
|
|
||||||
this.picLoading.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
|
||||||
| System.Windows.Forms.AnchorStyles.Left)
|
|
||||||
| System.Windows.Forms.AnchorStyles.Right)));
|
|
||||||
this.picLoading.BackColor = System.Drawing.Color.Transparent;
|
|
||||||
this.picLoading.Image = ((System.Drawing.Image)(resources.GetObject("picLoading.Image")));
|
|
||||||
this.picLoading.Location = new System.Drawing.Point(194, 24);
|
|
||||||
this.picLoading.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
|
||||||
this.picLoading.Name = "picLoading";
|
|
||||||
this.picLoading.Size = new System.Drawing.Size(384, 416);
|
|
||||||
this.picLoading.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;
|
|
||||||
this.picLoading.TabIndex = 2;
|
|
||||||
this.picLoading.TabStop = false;
|
|
||||||
this.picLoading.Visible = false;
|
|
||||||
//
|
|
||||||
// pnlBotoes
|
// pnlBotoes
|
||||||
//
|
//
|
||||||
this.pnlBotoes.Controls.Add(this.lblMapa);
|
this.pnlBotoes.Controls.Add(this.lblMapa);
|
||||||
this.pnlBotoes.Controls.Add(this.btnCarregar);
|
this.pnlBotoes.Controls.Add(this.btnCarregar);
|
||||||
this.pnlBotoes.Dock = System.Windows.Forms.DockStyle.Bottom;
|
this.pnlBotoes.Dock = System.Windows.Forms.DockStyle.Bottom;
|
||||||
this.pnlBotoes.Location = new System.Drawing.Point(0, 479);
|
this.pnlBotoes.Location = new System.Drawing.Point(0, 479);
|
||||||
this.pnlBotoes.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
this.pnlBotoes.Margin = new System.Windows.Forms.Padding(2);
|
||||||
this.pnlBotoes.Name = "pnlBotoes";
|
this.pnlBotoes.Name = "pnlBotoes";
|
||||||
this.pnlBotoes.Size = new System.Drawing.Size(790, 46);
|
this.pnlBotoes.Size = new System.Drawing.Size(790, 46);
|
||||||
this.pnlBotoes.TabIndex = 2;
|
this.pnlBotoes.TabIndex = 2;
|
||||||
|
|
@ -93,7 +72,7 @@ namespace AgroBase.Forms
|
||||||
//
|
//
|
||||||
this.btnCarregar.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
this.btnCarregar.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||||
this.btnCarregar.Location = new System.Drawing.Point(684, 11);
|
this.btnCarregar.Location = new System.Drawing.Point(684, 11);
|
||||||
this.btnCarregar.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
this.btnCarregar.Margin = new System.Windows.Forms.Padding(2);
|
||||||
this.btnCarregar.Name = "btnCarregar";
|
this.btnCarregar.Name = "btnCarregar";
|
||||||
this.btnCarregar.Size = new System.Drawing.Size(98, 26);
|
this.btnCarregar.Size = new System.Drawing.Size(98, 26);
|
||||||
this.btnCarregar.TabIndex = 0;
|
this.btnCarregar.TabIndex = 0;
|
||||||
|
|
@ -108,12 +87,11 @@ namespace AgroBase.Forms
|
||||||
this.ClientSize = new System.Drawing.Size(790, 525);
|
this.ClientSize = new System.Drawing.Size(790, 525);
|
||||||
this.Controls.Add(this.pnlBotoes);
|
this.Controls.Add(this.pnlBotoes);
|
||||||
this.Controls.Add(this.pnlMapa);
|
this.Controls.Add(this.pnlMapa);
|
||||||
this.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
this.Margin = new System.Windows.Forms.Padding(2);
|
||||||
this.Name = "frmMapa";
|
this.Name = "frmMapa";
|
||||||
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
|
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
|
||||||
this.Text = "Mapas";
|
this.Text = "Mapas";
|
||||||
this.pnlMapa.ResumeLayout(false);
|
this.Load += new System.EventHandler(this.frmMapa_Load);
|
||||||
((System.ComponentModel.ISupportInitialize)(this.picLoading)).EndInit();
|
|
||||||
this.pnlBotoes.ResumeLayout(false);
|
this.pnlBotoes.ResumeLayout(false);
|
||||||
this.pnlBotoes.PerformLayout();
|
this.pnlBotoes.PerformLayout();
|
||||||
this.ResumeLayout(false);
|
this.ResumeLayout(false);
|
||||||
|
|
@ -126,6 +104,5 @@ namespace AgroBase.Forms
|
||||||
private System.Windows.Forms.Panel pnlBotoes;
|
private System.Windows.Forms.Panel pnlBotoes;
|
||||||
private System.Windows.Forms.Label lblMapa;
|
private System.Windows.Forms.Label lblMapa;
|
||||||
private System.Windows.Forms.Button btnCarregar;
|
private System.Windows.Forms.Button btnCarregar;
|
||||||
private System.Windows.Forms.PictureBox picLoading;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -18,38 +18,27 @@ namespace AgroBase.Forms
|
||||||
{
|
{
|
||||||
public partial class frmMapa : Form
|
public partial class frmMapa : Form
|
||||||
{
|
{
|
||||||
private ChromiumWebBrowser chromiumWebBrowser;
|
private MapasModel Mapa;
|
||||||
private MapasService mapaService = new MapasService();
|
|
||||||
|
|
||||||
public frmMapa()
|
public frmMapa()
|
||||||
{
|
{
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void frmMapa_Load(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
Mapa = new MapasModel()
|
||||||
|
{
|
||||||
|
pnlMapa = pnlMapa,
|
||||||
|
lblMapa = lblMapa,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
private void btnCarregar_Click(object sender, EventArgs e)
|
private void btnCarregar_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
mapaService.CarregarMapa(MapasVariaveisModel.NomeArquivoMapaInterativo, MapasVariaveisModel.NomeArquivoMapaInterativoSaida);
|
Mapa.btnCarregar_Click(sender, e);
|
||||||
picLoading.Visible = true;
|
|
||||||
Timer tmr = new Timer() { Interval = 500 };
|
|
||||||
tmr.Tick += Tmr_Tick;
|
|
||||||
tmr.Start();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void Tmr_Tick(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
if (mapaService.pythonProcess.HasExited)
|
|
||||||
{
|
|
||||||
((Timer)sender).Stop();
|
|
||||||
picLoading.Visible = false;
|
|
||||||
|
|
||||||
mapaService.CarregarDadosMapa();
|
|
||||||
|
|
||||||
lblMapa.Text = "Mapa carregado: " + mapaService.NomeArquivos;
|
|
||||||
chromiumWebBrowser = new ChromiumWebBrowser(mapaService.MapaUrl);
|
|
||||||
this.pnlMapa.Controls.Add(chromiumWebBrowser);
|
|
||||||
chromiumWebBrowser.Dock = DockStyle.Fill;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
File diff suppressed because it is too large
Load Diff
|
|
@ -15,5 +15,6 @@ namespace AgroBase.Models
|
||||||
public double Velocidade { get; set; }
|
public double Velocidade { get; set; }
|
||||||
public int NumeroSatelites { get; set; }
|
public int NumeroSatelites { get; set; }
|
||||||
public double PrecisaoHorizontal { get; set; }
|
public double PrecisaoHorizontal { get; set; }
|
||||||
|
public double Orientacao { get;set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,14 +1,55 @@
|
||||||
using System;
|
using AgroBase.Properties;
|
||||||
|
using AgroBase.Services;
|
||||||
|
using CefSharp.WinForms;
|
||||||
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
using System.Windows.Forms;
|
||||||
|
|
||||||
namespace AgroBase.Models
|
namespace AgroBase.Models
|
||||||
{
|
{
|
||||||
public class MapasModel
|
public class MapasModel
|
||||||
{
|
{
|
||||||
|
public ChromiumWebBrowser chromiumWebBrowser { get; set; }
|
||||||
|
public Panel pnlMapa { get; set; }
|
||||||
|
private PictureBox picLoading { get; set; } = new PictureBox();
|
||||||
|
public Label lblMapa { get; set; } = new Label();
|
||||||
|
public MapasService mapaService { get; set; } = new MapasService();
|
||||||
|
|
||||||
|
public void btnCarregar_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
mapaService.CarregarMapa(MapasVariaveisModel.NomeArquivoMapaInterativo, MapasVariaveisModel.NomeArquivoMapaInterativoSaida);
|
||||||
|
|
||||||
|
picLoading.Dock = DockStyle.Fill;
|
||||||
|
picLoading.BackColor = System.Drawing.Color.Transparent;
|
||||||
|
picLoading.Image = Resources.loading;
|
||||||
|
picLoading.Name = "picLoading";
|
||||||
|
picLoading.SizeMode = PictureBoxSizeMode.Zoom;
|
||||||
|
picLoading.Visible = true;
|
||||||
|
pnlMapa.Controls.Add(picLoading);
|
||||||
|
|
||||||
|
Timer tmr = new Timer() { Interval = 500 };
|
||||||
|
tmr.Tick += Tmr_Tick;
|
||||||
|
tmr.Start();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void Tmr_Tick(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
if (mapaService.pythonProcess.HasExited)
|
||||||
|
{
|
||||||
|
((Timer)sender).Stop();
|
||||||
|
picLoading.Visible = false;
|
||||||
|
|
||||||
|
mapaService.CarregarDadosMapa();
|
||||||
|
|
||||||
|
lblMapa.Text = "Mapa carregado: " + mapaService.NomeArquivos;
|
||||||
|
chromiumWebBrowser = new ChromiumWebBrowser(mapaService.MapaUrl);
|
||||||
|
pnlMapa.Controls.Add(chromiumWebBrowser);
|
||||||
|
chromiumWebBrowser.Dock = DockStyle.Fill;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public class MapaFeatureCollectionModel
|
public class MapaFeatureCollectionModel
|
||||||
|
|
|
||||||
|
|
@ -66,6 +66,7 @@ namespace AgroBase.Models
|
||||||
public DispositivosService<MovimentacaoModel> DispMov { get; set; }
|
public DispositivosService<MovimentacaoModel> DispMov { get; set; }
|
||||||
public DispositivosService<DirecionalModel> DispDir { get; set; }
|
public DispositivosService<DirecionalModel> DispDir { get; set; }
|
||||||
public DispositivosService<AtuadorModel> DispAtu { get; set; }
|
public DispositivosService<AtuadorModel> DispAtu { get; set; }
|
||||||
|
public MapasModel Mapa { get;set; }
|
||||||
public Form frmOperacao { get; set; }
|
public Form frmOperacao { get; set; }
|
||||||
public string frmOperacaoNome { get; set; }
|
public string frmOperacaoNome { get; set; }
|
||||||
public bool Iniciado { get; set; }
|
public bool Iniciado { get; set; }
|
||||||
|
|
@ -75,7 +76,12 @@ namespace AgroBase.Models
|
||||||
public OperacaoControleModel ControleAnterior { get; set; }
|
public OperacaoControleModel ControleAnterior { get; set; }
|
||||||
public List<OperacaoModulosMandatoriosModel> ModulosMandatorios { get; set; }
|
public List<OperacaoModulosMandatoriosModel> ModulosMandatorios { get; set; }
|
||||||
public OperacaoSensoriamentoModel Sensoriamento { get; set; } = new OperacaoSensoriamentoModel();
|
public OperacaoSensoriamentoModel Sensoriamento { get; set; } = new OperacaoSensoriamentoModel();
|
||||||
|
public List<OperacaoSensoriamentoModel> Logs { get; set; } = new List<OperacaoSensoriamentoModel>();
|
||||||
|
public List<GPSModel> GPSTrajetoria { get; set; } = new List<GPSModel>();
|
||||||
public int TempoIniciarOperacao { get; set; } = 10;
|
public int TempoIniciarOperacao { get; set; } = 10;
|
||||||
|
public string PastaSaida { get; set; } = "Operacoes/";
|
||||||
|
public string ID { get; set; }
|
||||||
|
public Timer tmrLogs = new Timer() { Interval = 5000 };
|
||||||
|
|
||||||
|
|
||||||
public static OperacaoModel CarregarParametrosOperacaoPadrao(ModoOperacao Modo)
|
public static OperacaoModel CarregarParametrosOperacaoPadrao(ModoOperacao Modo)
|
||||||
|
|
@ -107,8 +113,16 @@ namespace AgroBase.Models
|
||||||
VelocidadeMedia = 0,
|
VelocidadeMedia = 0,
|
||||||
DistanciaDireita = 0,
|
DistanciaDireita = 0,
|
||||||
DistanciaEsquerda = 0,
|
DistanciaEsquerda = 0,
|
||||||
}
|
},
|
||||||
|
Logs = new List<OperacaoSensoriamentoModel>(),
|
||||||
};
|
};
|
||||||
|
if (OperacaoCarregar.DispAtu != null)
|
||||||
|
{
|
||||||
|
for (int i = 0; i < OperacaoCarregar.DispAtu.Dados.QuantidadeBicos; i++)
|
||||||
|
{
|
||||||
|
OperacaoCarregar.Sensoriamento.AtuacoesPorBico.Add(0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
switch (Modo)
|
switch (Modo)
|
||||||
{
|
{
|
||||||
|
|
@ -254,7 +268,26 @@ namespace AgroBase.Models
|
||||||
Iniciado = true;
|
Iniciado = true;
|
||||||
TimestampInicio = DateTime.Now.Ticks;
|
TimestampInicio = DateTime.Now.Ticks;
|
||||||
TimestampFim = 0;
|
TimestampFim = 0;
|
||||||
|
if (DispMov != null)
|
||||||
|
{
|
||||||
DispMov.Dados.DistanciaPercorridaOperacao = 0;
|
DispMov.Dados.DistanciaPercorridaOperacao = 0;
|
||||||
|
}
|
||||||
|
Sensoriamento = new OperacaoSensoriamentoModel();
|
||||||
|
if (DispAtu != null)
|
||||||
|
{
|
||||||
|
for (int i = 0; i < DispAtu.Dados.QuantidadeBicos; i++)
|
||||||
|
{
|
||||||
|
Sensoriamento.AtuacoesPorBico.Add(0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Logs = new List<OperacaoSensoriamentoModel>();
|
||||||
|
GPSTrajetoria = new List<GPSModel>();
|
||||||
|
ID = (new DateTime(TimestampInicio)).ToString("dd_MM_yyyy_HH_mm_ss");
|
||||||
|
|
||||||
|
Directory.CreateDirectory(PastaSaida + ID + "/");
|
||||||
|
|
||||||
|
APIService.Inicializar();
|
||||||
|
GPSService.IniciarRecepcaoDados();
|
||||||
|
|
||||||
if (controle != null)
|
if (controle != null)
|
||||||
{
|
{
|
||||||
|
|
@ -264,6 +297,15 @@ namespace AgroBase.Models
|
||||||
{
|
{
|
||||||
frmOperacao.Show();
|
frmOperacao.Show();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
tmrLogs.Tick -= TmrLogs_Tick;
|
||||||
|
tmrLogs.Tick += TmrLogs_Tick;
|
||||||
|
tmrLogs.Start();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void TmrLogs_Tick(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
SalvarLog();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void FinalizarOperacao()
|
public void FinalizarOperacao()
|
||||||
|
|
@ -274,6 +316,11 @@ namespace AgroBase.Models
|
||||||
|
|
||||||
Iniciado = false;
|
Iniciado = false;
|
||||||
TimestampFim = DateTime.Now.Ticks;
|
TimestampFim = DateTime.Now.Ticks;
|
||||||
|
|
||||||
|
tmrLogs.Stop();
|
||||||
|
|
||||||
|
GPSService.PararRecepcaoDados();
|
||||||
|
APIService.Parar();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void AtualizarDadosControle()
|
public void AtualizarDadosControle()
|
||||||
|
|
@ -379,6 +426,38 @@ namespace AgroBase.Models
|
||||||
return Protocolos.ToList();
|
return Protocolos.ToList();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void SalvarLog()
|
||||||
|
{
|
||||||
|
Logs.Add(new OperacaoSensoriamentoModel()
|
||||||
|
{
|
||||||
|
Momento = DateTime.Now,
|
||||||
|
AtuacoesPorBico = Sensoriamento.AtuacoesPorBico,
|
||||||
|
BateriaConsumida = Sensoriamento.BateriaConsumida,
|
||||||
|
DistanciaDireita = Sensoriamento.DistanciaDireita,
|
||||||
|
DistanciaEsquerda = Sensoriamento.DistanciaEsquerda,
|
||||||
|
DistanciaPercorrida = Sensoriamento.DistanciaPercorrida,
|
||||||
|
ErvasIdentificadas = Sensoriamento.ErvasIdentificadas,
|
||||||
|
ErvasNoRadar = Sensoriamento.ErvasNoRadar,
|
||||||
|
HerbicidaConsumido = Sensoriamento.HerbicidaConsumido,
|
||||||
|
HerbicidaPorErva = Sensoriamento.HerbicidaPorErva,
|
||||||
|
ProgressoPercurso = Sensoriamento.ProgressoPercurso,
|
||||||
|
VelocidadeMedia = Sensoriamento.VelocidadeMedia
|
||||||
|
});
|
||||||
|
File.WriteAllText(PastaSaida + ID + "/logs.json", JsonConvert.SerializeObject(Logs, Formatting.None));
|
||||||
|
|
||||||
|
|
||||||
|
GPSTrajetoria.Add(new GPSModel()
|
||||||
|
{
|
||||||
|
NumeroSatelites = GPSService.UltimaLeitura.NumeroSatelites,
|
||||||
|
Altitude = GPSService.UltimaLeitura.Altitude,
|
||||||
|
DataHora = GPSService.UltimaLeitura.DataHora,
|
||||||
|
Latitude = GPSService.UltimaLeitura.Latitude,
|
||||||
|
Longitude = GPSService.UltimaLeitura.Longitude,
|
||||||
|
PrecisaoHorizontal = GPSService.UltimaLeitura.PrecisaoHorizontal
|
||||||
|
});
|
||||||
|
File.WriteAllText(PastaSaida + ID + "/trajetoria.json", JsonConvert.SerializeObject(GPSTrajetoria, Formatting.None));
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public class OperacaoControleModel
|
public class OperacaoControleModel
|
||||||
|
|
@ -421,6 +500,7 @@ namespace AgroBase.Models
|
||||||
|
|
||||||
public class OperacaoSensoriamentoModel
|
public class OperacaoSensoriamentoModel
|
||||||
{
|
{
|
||||||
|
public DateTime Momento { get; set; }
|
||||||
public int ErvasNoRadar { get; set; } = 0;
|
public int ErvasNoRadar { get; set; } = 0;
|
||||||
public double VelocidadeMedia { get; set; } = 0;
|
public double VelocidadeMedia { get; set; } = 0;
|
||||||
public double HerbicidaConsumido { get; set; } = 0;
|
public double HerbicidaConsumido { get; set; } = 0;
|
||||||
|
|
@ -434,4 +514,5 @@ namespace AgroBase.Models
|
||||||
public double DistanciaDireita { get; set; } = 0;
|
public double DistanciaDireita { get; set; } = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -79,5 +79,15 @@ namespace AgroBase.Properties {
|
||||||
return ((System.Drawing.Bitmap)(obj));
|
return ((System.Drawing.Bitmap)(obj));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||||
|
/// </summary>
|
||||||
|
internal static System.Drawing.Bitmap loading {
|
||||||
|
get {
|
||||||
|
object obj = ResourceManager.GetObject("loading", resourceCulture);
|
||||||
|
return ((System.Drawing.Bitmap)(obj));
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -124,4 +124,7 @@
|
||||||
<data name="esp32-wrover" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
<data name="esp32-wrover" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
<value>..\Imagens\esp32-wrover.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
<value>..\Imagens\esp32-wrover.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="loading" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
|
<value>..\Imagens\loading.gif;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
||||||
|
|
@ -0,0 +1,33 @@
|
||||||
|
from flask import Flask, request, jsonify
|
||||||
|
from flask_cors import CORS
|
||||||
|
import sys
|
||||||
|
|
||||||
|
apiPort = sys.argv[1]
|
||||||
|
getCordenadasEndpoint = sys.argv[2]
|
||||||
|
setCordenadasEndpoint = sys.argv[3]
|
||||||
|
|
||||||
|
app = Flask(__name__)
|
||||||
|
CORS(app) # Isso habilita o CORS para todas as rotas e origens
|
||||||
|
|
||||||
|
coordenadas = {}
|
||||||
|
|
||||||
|
@app.route(setCordenadasEndpoint, methods=['POST'])
|
||||||
|
def receber_coordenadas():
|
||||||
|
dados = request.json
|
||||||
|
id = dados.get('id')
|
||||||
|
lat = dados.get('latitude')
|
||||||
|
lon = dados.get('longitude')
|
||||||
|
|
||||||
|
coordenadas[id] = {'latitude': lat, 'longitude': lon}
|
||||||
|
|
||||||
|
return jsonify({'status': 'Coordenadas recebidas com sucesso!'})
|
||||||
|
|
||||||
|
@app.route(getCordenadasEndpoint, methods=['GET'])
|
||||||
|
def servir_coordenadas(id):
|
||||||
|
if id in coordenadas:
|
||||||
|
return jsonify(coordenadas[id])
|
||||||
|
else:
|
||||||
|
return jsonify({'error': 'Coordenadas não encontradas!'}), 404
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
app.run(host='0.0.0.0', port=apiPort, debug=True)
|
||||||
|
|
@ -2,67 +2,40 @@ import geopandas as gpd
|
||||||
import json
|
import json
|
||||||
import sys
|
import sys
|
||||||
import folium
|
import folium
|
||||||
|
import requests
|
||||||
|
import re
|
||||||
|
|
||||||
|
def internet_disponivel():
|
||||||
|
"""Verifica se há conexão com a internet."""
|
||||||
|
url = 'http://www.google.com/'
|
||||||
|
timeout = 5
|
||||||
|
try:
|
||||||
|
_ = requests.get(url, timeout=timeout)
|
||||||
|
return True
|
||||||
|
except requests.ConnectionError:
|
||||||
|
return False
|
||||||
|
|
||||||
|
# Argumentos e configurações iniciais
|
||||||
pathFiles = sys.argv[1]
|
pathFiles = sys.argv[1]
|
||||||
fileName = sys.argv[2]
|
fileName = sys.argv[2]
|
||||||
outputName = sys.argv[3]
|
outputName = sys.argv[3]
|
||||||
outputMapName = sys.argv[4]
|
outputMapName = sys.argv[4]
|
||||||
|
apiEndpoit = sys.argv[5]
|
||||||
pastaSaida = 'Python/Output/'
|
pastaSaida = 'Python/Output/'
|
||||||
|
|
||||||
# Carregar o arquivo shapefile contendo a geometria
|
# Carregar o arquivo shapefile contendo a geometria
|
||||||
input_shapefile = pathFiles + fileName + '.shp'
|
input_shapefile = pathFiles + fileName + '.shp'
|
||||||
data_geometry = gpd.read_file(input_shapefile)
|
data_geometry = gpd.read_file(input_shapefile)
|
||||||
|
|
||||||
# Carregar o arquivo DBF com informações adicionais
|
|
||||||
input_dbf = pathFiles + fileName + '.dbf'
|
|
||||||
data_dbf = gpd.read_file(input_dbf)
|
|
||||||
|
|
||||||
# Mesclar as informações do arquivo DBF com o dataframe de geometria
|
|
||||||
data_merged = data_geometry.merge(data_dbf, left_index=True, right_index=True)
|
|
||||||
|
|
||||||
# Escolher uma coluna de geometria
|
|
||||||
geometry_column = 'geometry_y'
|
|
||||||
|
|
||||||
# Criar um novo GeoDataFrame com uma única coluna de geometria
|
|
||||||
data_geodataframe = gpd.GeoDataFrame(data_merged[[geometry_column]], geometry=geometry_column)
|
|
||||||
|
|
||||||
# Criar o campo 'properties' e preencher com as colunas do DataFrame original
|
|
||||||
data_geodataframe['properties'] = data_merged.apply(lambda row: {
|
|
||||||
'Id': row['Id_x'],
|
|
||||||
'Name': row['Name_x'],
|
|
||||||
'Length': row['Length_x'],
|
|
||||||
'Dist1': row['Dist1_x'],
|
|
||||||
'Dist2': row['Dist2_x']
|
|
||||||
}, axis=1)
|
|
||||||
|
|
||||||
# Caminho para salvar o arquivo GEOJson com as informações adicionais
|
|
||||||
output_geojson = pastaSaida + outputName
|
|
||||||
|
|
||||||
# Salvar os dados no formato GEOJson
|
|
||||||
data_geodataframe.to_file(output_geojson, driver='GeoJSON')
|
|
||||||
|
|
||||||
# Abrir o arquivo GeoJSON
|
|
||||||
with open(output_geojson, 'r') as file:
|
|
||||||
data = json.load(file)
|
|
||||||
|
|
||||||
# Iterar sobre as features no arquivo GeoJSON
|
|
||||||
for feature in data['features']:
|
|
||||||
# Obter o dicionário 'properties' dentro de 'properties'
|
|
||||||
properties = feature['properties']['properties']
|
|
||||||
# Remover a camada extra de 'properties'
|
|
||||||
feature['properties'] = properties
|
|
||||||
|
|
||||||
# Salvar o arquivo GeoJSON atualizado
|
|
||||||
with open(output_geojson, 'w') as file:
|
|
||||||
json.dump(data, file)
|
|
||||||
|
|
||||||
# Calcular os limites (bounds) da geometria
|
# Calcular os limites (bounds) da geometria
|
||||||
minx, miny, maxx, maxy = data_geometry.total_bounds
|
minx, miny, maxx, maxy = data_geometry.total_bounds
|
||||||
center = [(miny + maxy) / 2, (minx + maxx) / 2]
|
center = [(miny + maxy) / 2, (minx + maxx) / 2]
|
||||||
|
|
||||||
# Criar um mapa centrado no centro das coordenadas das geometrias
|
# Verificar se há conexão com a internet
|
||||||
m = folium.Map(location=center, zoom_start=12)
|
if internet_disponivel():
|
||||||
|
m = folium.Map(location=center, zoom_start=12)
|
||||||
|
else:
|
||||||
|
m = folium.Map(location=center, zoom_start=12, tiles=None)
|
||||||
|
|
||||||
# Converter o GeoDataFrame para GeoJSON e adicionar ao mapa
|
# Converter o GeoDataFrame para GeoJSON e adicionar ao mapa
|
||||||
geojson_data = data_geometry.to_json()
|
geojson_data = data_geometry.to_json()
|
||||||
|
|
@ -70,3 +43,120 @@ folium.GeoJson(geojson_data).add_to(m)
|
||||||
|
|
||||||
# Salvar o mapa interativo em um arquivo HTML
|
# Salvar o mapa interativo em um arquivo HTML
|
||||||
m.save(pastaSaida + outputMapName)
|
m.save(pastaSaida + outputMapName)
|
||||||
|
|
||||||
|
|
||||||
|
# Caminho completo para o arquivo HTML gerado
|
||||||
|
caminho_completo_html = pastaSaida + outputMapName
|
||||||
|
|
||||||
|
# Abrir o arquivo HTML para leitura e escrita
|
||||||
|
with open(caminho_completo_html, 'r+') as arquivo_html:
|
||||||
|
# Ler o conteúdo do arquivo
|
||||||
|
conteudo_html = arquivo_html.read()
|
||||||
|
|
||||||
|
# Usar expressão regular para encontrar o ID do mapa
|
||||||
|
padrao_id_mapa = re.compile(r'id="map_(.*?)"')
|
||||||
|
resultado_busca = padrao_id_mapa.search(conteudo_html)
|
||||||
|
|
||||||
|
# Verificar se encontrou um ID de mapa
|
||||||
|
if resultado_busca:
|
||||||
|
id_mapa = 'map_' + resultado_busca.group(1)
|
||||||
|
else:
|
||||||
|
raise ValueError("Não foi possível encontrar o ID do mapa no arquivo HTML.")
|
||||||
|
|
||||||
|
# Script JavaScript para adicionar ao HTML, com o ID do mapa substituído
|
||||||
|
script_atualizacao_marcador = f"""
|
||||||
|
<script>
|
||||||
|
function trajeto_json_onEachFeature(feature, layer) {{
|
||||||
|
layer.on({{
|
||||||
|
}});
|
||||||
|
}};
|
||||||
|
var trajeto_json = L.geoJson(null, {{
|
||||||
|
onEachFeature: trajeto_json_onEachFeature,
|
||||||
|
style: function(feature) {{
|
||||||
|
return {{color: 'red'}};
|
||||||
|
}}
|
||||||
|
}}
|
||||||
|
);
|
||||||
|
function trajeto_json_add (data) {{
|
||||||
|
trajeto_json.addData(data);
|
||||||
|
}}
|
||||||
|
trajeto_json_add({{"features": []}});
|
||||||
|
|
||||||
|
trajeto_json.addTo({id_mapa});
|
||||||
|
|
||||||
|
function adicionarGeometria(novaGeometria) {{
|
||||||
|
trajeto_json.addData(novaGeometria);
|
||||||
|
}}
|
||||||
|
|
||||||
|
function saoCoordenadasIguais(coord1, coord2, tolerancia) {{
|
||||||
|
return Math.abs(coord1[0] - coord2[0]) < tolerancia && Math.abs(coord1[1] - coord2[1]) < tolerancia;
|
||||||
|
}}
|
||||||
|
|
||||||
|
function adicionarCoordenada(idGeometria, novaCoordenada) {{
|
||||||
|
var feature = trajeto_json.toGeoJSON().features.find(f => f.id === idGeometria);
|
||||||
|
if (feature) {{
|
||||||
|
var ultima = [0.0,0.0];
|
||||||
|
if (feature.geometry.coordinates.length > 0) {{
|
||||||
|
ultima = feature.geometry.coordinates[feature.geometry.coordinates.length - 1];
|
||||||
|
}}
|
||||||
|
if (!saoCoordenadasIguais(ultima, novaCoordenada, 0.000001)) {{
|
||||||
|
feature.geometry.coordinates.push(novaCoordenada);
|
||||||
|
var ft = feature;
|
||||||
|
trajeto_json.clearLayers();
|
||||||
|
trajeto_json.addData(ft);
|
||||||
|
}}
|
||||||
|
|
||||||
|
}} else {{
|
||||||
|
console.log("Feature com ID " + idGeometria + " não encontrada.");
|
||||||
|
}}
|
||||||
|
}}
|
||||||
|
|
||||||
|
adicionarGeometria({{
|
||||||
|
"type": "Feature",
|
||||||
|
"geometry": {{
|
||||||
|
"type": "LineString",
|
||||||
|
"coordinates": []
|
||||||
|
}},
|
||||||
|
"properties": {{"Dist1": 0.0, "Dist2": 0.0, "Id": 1517, "Length": 21.724783283, "Name": "Projeto"}},
|
||||||
|
"id": "Tj"
|
||||||
|
}});
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
var marcadorDinamico = L.marker([0, 0], {{
|
||||||
|
icon: L.AwesomeMarkers.icon({{
|
||||||
|
icon: 'info-sign',
|
||||||
|
markerColor: 'red',
|
||||||
|
prefix: 'glyphicon'
|
||||||
|
}})
|
||||||
|
}}).addTo({id_mapa});
|
||||||
|
|
||||||
|
function atualizarMarcador() {{
|
||||||
|
fetch('{apiEndpoit}')
|
||||||
|
.then(function(response) {{
|
||||||
|
return response.json();
|
||||||
|
}})
|
||||||
|
.then(function(dados) {{
|
||||||
|
var novaLatitude = dados.latitude;
|
||||||
|
var novaLongitude = dados.longitude;
|
||||||
|
var novaPosicao = [novaLatitude, novaLongitude];
|
||||||
|
marcadorDinamico.setLatLng(novaPosicao);
|
||||||
|
adicionarCoordenada("Tj", [novaLongitude, novaLatitude]);
|
||||||
|
}})
|
||||||
|
.catch(function(error) {{
|
||||||
|
console.error('Erro ao atualizar o marcador:', error);
|
||||||
|
}});
|
||||||
|
}}
|
||||||
|
|
||||||
|
// Atualiza o marcador a cada 2 segundos
|
||||||
|
setInterval(atualizarMarcador, 2000);
|
||||||
|
</script>
|
||||||
|
"""
|
||||||
|
|
||||||
|
# Inserir o script no conteúdo HTML
|
||||||
|
conteudo_atualizado = conteudo_html.replace('</html>', script_atualizacao_marcador + '</html>')
|
||||||
|
|
||||||
|
# Agora, reabrir o arquivo para escrita e sobrescrever o conteúdo com a versão atualizada
|
||||||
|
with open(caminho_completo_html, 'w') as arquivo_html:
|
||||||
|
arquivo_html.write(conteudo_atualizado)
|
||||||
|
|
@ -0,0 +1,62 @@
|
||||||
|
using AgroBase.Models;
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
using System;
|
||||||
|
using System.Diagnostics;
|
||||||
|
using System.Net.Http;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
namespace AgroBase.Services
|
||||||
|
{
|
||||||
|
public static class APIService
|
||||||
|
{
|
||||||
|
public static Process pythonProcess = null;
|
||||||
|
public static string API_Base { get; set; } = "http://localhost";
|
||||||
|
public static string API_Porta { get; set; } = "5001";
|
||||||
|
public static string GPS_setCoordenadasEndpoint { get; set; } = "/receber-coordenadas";
|
||||||
|
public static string GPS_getCoordenadasEndpoint { get; set; } = "/servir-coordenadas/<id>";
|
||||||
|
public static int GPS_IDcoordenadasRobo { get; set; } = 1;
|
||||||
|
|
||||||
|
public static string ApiBase()
|
||||||
|
{
|
||||||
|
return API_Base + ":" + API_Porta.ToString();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void Inicializar()
|
||||||
|
{
|
||||||
|
if (pythonProcess == null)
|
||||||
|
{
|
||||||
|
pythonProcess = PythonService.RunScript(PythonService.ScriptAPI, new string[] { API_Porta.ToString(), GPS_getCoordenadasEndpoint, GPS_setCoordenadasEndpoint });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void Parar()
|
||||||
|
{
|
||||||
|
if (pythonProcess != null)
|
||||||
|
{
|
||||||
|
pythonProcess.Kill();
|
||||||
|
pythonProcess = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static async void AtualizarCoordenadasGPS(GPSModel Leitura, int ID)
|
||||||
|
{
|
||||||
|
var url = ApiBase() + GPS_setCoordenadasEndpoint;
|
||||||
|
var localizacao = new
|
||||||
|
{
|
||||||
|
id = ID.ToString(),
|
||||||
|
latitude = Leitura.Latitude,
|
||||||
|
longitude = Leitura.Longitude
|
||||||
|
};
|
||||||
|
|
||||||
|
var json = JsonConvert.SerializeObject(localizacao);
|
||||||
|
var data = new StringContent(json, Encoding.UTF8, "application/json");
|
||||||
|
|
||||||
|
using (var client = new HttpClient())
|
||||||
|
{
|
||||||
|
var response = await client.PostAsync(url, data);
|
||||||
|
|
||||||
|
string result = await response.Content.ReadAsStringAsync();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -3,6 +3,7 @@ using Newtonsoft.Json;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Globalization;
|
using System.Globalization;
|
||||||
|
using System.IO;
|
||||||
using System.IO.Ports;
|
using System.IO.Ports;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Net.Http;
|
using System.Net.Http;
|
||||||
|
|
@ -19,6 +20,7 @@ namespace AgroBase.Services
|
||||||
public static bool Iniciado = false;
|
public static bool Iniciado = false;
|
||||||
public static SerialPort PortaGPS = null;
|
public static SerialPort PortaGPS = null;
|
||||||
public static GPSModel UltimaLeitura = new GPSModel();
|
public static GPSModel UltimaLeitura = new GPSModel();
|
||||||
|
public static GPSModel PenultimaLeitura = new GPSModel();
|
||||||
|
|
||||||
public static void AtualizarPortaGPS(SerialPort _porta)
|
public static void AtualizarPortaGPS(SerialPort _porta)
|
||||||
{
|
{
|
||||||
|
|
@ -35,7 +37,7 @@ namespace AgroBase.Services
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
if (PortaGPS != null)
|
if (PortaGPS != null && !PortaGPS.IsOpen)
|
||||||
{
|
{
|
||||||
PortaGPS.Open();
|
PortaGPS.Open();
|
||||||
|
|
||||||
|
|
@ -89,6 +91,15 @@ namespace AgroBase.Services
|
||||||
{
|
{
|
||||||
// Global Positioning System Fix Data
|
// Global Positioning System Fix Data
|
||||||
case "$GPGGA":
|
case "$GPGGA":
|
||||||
|
PenultimaLeitura.Latitude = UltimaLeitura.Latitude;
|
||||||
|
PenultimaLeitura.Longitude = UltimaLeitura.Longitude;
|
||||||
|
PenultimaLeitura.Altitude = UltimaLeitura.Altitude;
|
||||||
|
PenultimaLeitura.PrecisaoHorizontal = UltimaLeitura.PrecisaoHorizontal;
|
||||||
|
PenultimaLeitura.DataHora = UltimaLeitura.DataHora;
|
||||||
|
PenultimaLeitura.NumeroSatelites = UltimaLeitura.NumeroSatelites;
|
||||||
|
PenultimaLeitura.Velocidade = UltimaLeitura.Velocidade;
|
||||||
|
PenultimaLeitura.Orientacao = UltimaLeitura.Orientacao;
|
||||||
|
|
||||||
if (parts[2] != "" && parts[3] != "")
|
if (parts[2] != "" && parts[3] != "")
|
||||||
{
|
{
|
||||||
UltimaLeitura.Latitude = ConvertToDecimalDegrees(parts[2], parts[3], 2); // ConvertToDouble(parts[2]);
|
UltimaLeitura.Latitude = ConvertToDecimalDegrees(parts[2], parts[3], 2); // ConvertToDouble(parts[2]);
|
||||||
|
|
@ -100,8 +111,9 @@ namespace AgroBase.Services
|
||||||
UltimaLeitura.NumeroSatelites = int.TryParse(parts[7], out int numSat) ? numSat : 0;
|
UltimaLeitura.NumeroSatelites = int.TryParse(parts[7], out int numSat) ? numSat : 0;
|
||||||
UltimaLeitura.PrecisaoHorizontal = double.TryParse(parts[8], NumberStyles.Float, CultureInfo.InvariantCulture, out double hdop) ? hdop : 0;
|
UltimaLeitura.PrecisaoHorizontal = double.TryParse(parts[8], NumberStyles.Float, CultureInfo.InvariantCulture, out double hdop) ? hdop : 0;
|
||||||
UltimaLeitura.Altitude = ConvertToDouble(parts[9]);
|
UltimaLeitura.Altitude = ConvertToDouble(parts[9]);
|
||||||
|
UltimaLeitura.Orientacao = AtualizaOrientacao();
|
||||||
|
|
||||||
Console.WriteLine(UltimaLeitura.Latitude + "," + UltimaLeitura.Longitude);
|
APIService.AtualizarCoordenadasGPS(UltimaLeitura, APIService.GPS_IDcoordenadasRobo);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
// Recommended minimum specific GPS/Transit data
|
// Recommended minimum specific GPS/Transit data
|
||||||
|
|
@ -112,6 +124,7 @@ namespace AgroBase.Services
|
||||||
|
|
||||||
// Você pode adicionar mais cases aqui para outros tipos de sentenças NMEA que você deseja processar
|
// Você pode adicionar mais cases aqui para outros tipos de sentenças NMEA que você deseja processar
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private static double ConvertToDecimalDegrees(string nmeaCoordinate, string direction, int digits)
|
private static double ConvertToDecimalDegrees(string nmeaCoordinate, string direction, int digits)
|
||||||
|
|
@ -164,6 +177,30 @@ namespace AgroBase.Services
|
||||||
return knots * 1.852;
|
return knots * 1.852;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static double AtualizaOrientacao()
|
||||||
|
{
|
||||||
|
// Converter latitudes e longitudes de graus para radianos
|
||||||
|
double latA = UltimaLeitura.Latitude * (Math.PI / 180.0);
|
||||||
|
double lonA = UltimaLeitura.Longitude * (Math.PI / 180.0);
|
||||||
|
double latB = PenultimaLeitura.Latitude * (Math.PI / 180.0);
|
||||||
|
double lonB = PenultimaLeitura.Longitude * (Math.PI / 180.0);
|
||||||
|
|
||||||
|
// Calcular a diferença de longitude
|
||||||
|
double deltaLon = lonB - lonA;
|
||||||
|
|
||||||
|
// Calcular a direção
|
||||||
|
double y = Math.Sin(deltaLon) * Math.Cos(latB);
|
||||||
|
double x = Math.Cos(latA) * Math.Sin(latB) - Math.Sin(latA) * Math.Cos(latB) * Math.Cos(deltaLon);
|
||||||
|
double direcaoRadianos = Math.Atan2(y, x);
|
||||||
|
|
||||||
|
// Converter a direção de radianos para graus
|
||||||
|
double direcaoGraus = direcaoRadianos * (180.0 / Math.PI);
|
||||||
|
|
||||||
|
// Normalizar a direção para que esteja no intervalo de 0 a 360 graus
|
||||||
|
direcaoGraus = (direcaoGraus + 360) % 360;
|
||||||
|
|
||||||
|
return direcaoGraus;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -48,7 +48,7 @@ namespace AgroBase.Services
|
||||||
NomeArquivos = opfMapa.FileName.Split('\\')[opfMapa.FileName.Split('\\').Length - 1].Split('.')[0];
|
NomeArquivos = opfMapa.FileName.Split('\\')[opfMapa.FileName.Split('\\').Length - 1].Split('.')[0];
|
||||||
CaminhoMapa = opfMapa.FileName.Substring(0, opfMapa.FileName.Length - NomeArquivos.Length - 4).Replace("\\", "/");
|
CaminhoMapa = opfMapa.FileName.Substring(0, opfMapa.FileName.Length - NomeArquivos.Length - 4).Replace("\\", "/");
|
||||||
|
|
||||||
pythonProcess = PythonService.RunScript(PythonService.ScriptMapConverter, new string[] { CaminhoMapa, NomeArquivos, ArquivoSaida, NomeArquivoMapa });
|
pythonProcess = PythonService.RunScript(PythonService.ScriptMapConverter, new string[] { CaminhoMapa, NomeArquivos, ArquivoSaida, NomeArquivoMapa, APIService.ApiBase() + APIService.GPS_getCoordenadasEndpoint.Replace("<id>", APIService.GPS_IDcoordenadasRobo.ToString()) });
|
||||||
|
|
||||||
MapaUrl = new Uri(CaminhoSaida + NomeArquivoMapa).AbsoluteUri;
|
MapaUrl = new Uri(CaminhoSaida + NomeArquivoMapa).AbsoluteUri;
|
||||||
CaminhoDadosMapa = CaminhoSaida + ArquivoSaida;
|
CaminhoDadosMapa = CaminhoSaida + ArquivoSaida;
|
||||||
|
|
@ -65,11 +65,11 @@ namespace AgroBase.Services
|
||||||
{
|
{
|
||||||
NomeArquivoMapa = nomeArquivoMapa;
|
NomeArquivoMapa = nomeArquivoMapa;
|
||||||
|
|
||||||
//pythonProcess = PythonService.RunScript(PythonService.ScriptMapGPS, new string[] { VariaveisPortas.GPS.ToString(), PathUpdateMarker });
|
pythonProcess = PythonService.RunScript(PythonService.ScriptMapGPS, new string[] { VariaveisPortas.GPS.ToString(), PathUpdateMarker });
|
||||||
|
|
||||||
//MapaUrl = new Uri("http://localhost:" + VariaveisPortas.GPS + "/").AbsoluteUri;
|
MapaUrl = new Uri("http://localhost:" + VariaveisPortas.GPS + "/").AbsoluteUri;
|
||||||
|
|
||||||
MapaUrl = new Uri(Variaveis.CaminhoSistema + "Utils\\offline_maps\\index.html").AbsoluteUri;
|
//MapaUrl = new Uri(Variaveis.CaminhoSistema + "Utils\\offline_maps\\index.html").AbsoluteUri;
|
||||||
}
|
}
|
||||||
|
|
||||||
public async void AtualizarPosicaoMapaGPS(double lat, double lon)
|
public async void AtualizarPosicaoMapaGPS(double lat, double lon)
|
||||||
|
|
|
||||||
|
|
@ -13,6 +13,7 @@ namespace AgroBase.Services
|
||||||
public static string CaminhoScripts = "Scripts\\";
|
public static string CaminhoScripts = "Scripts\\";
|
||||||
public static string CaminhoLeitura = "Output\\";
|
public static string CaminhoLeitura = "Output\\";
|
||||||
|
|
||||||
|
public static string ScriptAPI = "api.py";
|
||||||
public static string ScriptWeedDetector = "weed-detector.py";
|
public static string ScriptWeedDetector = "weed-detector.py";
|
||||||
public static string ScriptStreetDetector = "street-detector.py";
|
public static string ScriptStreetDetector = "street-detector.py";
|
||||||
public static string ScriptMapConverter = "map-load.py";
|
public static string ScriptMapConverter = "map-load.py";
|
||||||
|
|
@ -28,7 +29,7 @@ namespace AgroBase.Services
|
||||||
Args += ' '.ToString() + '"'.ToString() + arg + '"'.ToString();
|
Args += ' '.ToString() + '"'.ToString() + arg + '"'.ToString();
|
||||||
}
|
}
|
||||||
Process pythonProcess = new Process();
|
Process pythonProcess = new Process();
|
||||||
pythonProcess.StartInfo.FileName = "python";
|
pythonProcess.StartInfo.FileName = "C:\\Users\\USER\\AppData\\Local\\Programs\\Python\\Python311\\python";
|
||||||
pythonProcess.StartInfo.Arguments = ScriptPath + Args;
|
pythonProcess.StartInfo.Arguments = ScriptPath + Args;
|
||||||
pythonProcess.StartInfo.UseShellExecute = false;
|
pythonProcess.StartInfo.UseShellExecute = false;
|
||||||
pythonProcess.StartInfo.RedirectStandardOutput = true;
|
pythonProcess.StartInfo.RedirectStandardOutput = true;
|
||||||
|
|
|
||||||
|
|
@ -75,7 +75,7 @@ namespace AgroBase.Services
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
Console.WriteLine(dado + " - " + ex.Message);
|
//Console.WriteLine(dado + " - " + ex.Message);
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
stream.BeginRead(buffer, 0, buffer.Length, OnRead, null);
|
stream.BeginRead(buffer, 0, buffer.Length, OnRead, null);
|
||||||
|
|
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -0,0 +1 @@
|
||||||
|
[{"Latitude":0.0,"Longitude":0.0,"DataHora":"2024-02-23T08:49:20","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":0,"PrecisaoHorizontal":99.99},{"Latitude":0.0,"Longitude":0.0,"DataHora":"2024-02-23T08:49:25","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":0,"PrecisaoHorizontal":99.99},{"Latitude":0.0,"Longitude":0.0,"DataHora":"2024-02-23T08:49:30","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":0,"PrecisaoHorizontal":99.99},{"Latitude":0.0,"Longitude":0.0,"DataHora":"2024-02-23T08:49:35","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":0,"PrecisaoHorizontal":99.99},{"Latitude":0.0,"Longitude":0.0,"DataHora":"2024-02-23T08:49:39","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":0,"PrecisaoHorizontal":99.99},{"Latitude":0.0,"Longitude":0.0,"DataHora":"2024-02-23T08:49:44","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":0,"PrecisaoHorizontal":99.99},{"Latitude":0.0,"Longitude":0.0,"DataHora":"2024-02-23T08:49:49","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":0,"PrecisaoHorizontal":99.99},{"Latitude":0.0,"Longitude":0.0,"DataHora":"2024-02-23T08:49:54","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":0,"PrecisaoHorizontal":99.99},{"Latitude":0.0,"Longitude":0.0,"DataHora":"2024-02-23T08:49:59","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":0,"PrecisaoHorizontal":99.99},{"Latitude":0.0,"Longitude":0.0,"DataHora":"2024-02-23T08:50:04","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":0,"PrecisaoHorizontal":99.99},{"Latitude":0.0,"Longitude":0.0,"DataHora":"2024-02-23T08:50:09","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":0,"PrecisaoHorizontal":99.99},{"Latitude":0.0,"Longitude":0.0,"DataHora":"2024-02-23T08:50:13","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":0,"PrecisaoHorizontal":99.99},{"Latitude":0.0,"Longitude":0.0,"DataHora":"2024-02-23T08:50:18","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":0,"PrecisaoHorizontal":99.99},{"Latitude":0.0,"Longitude":0.0,"DataHora":"2024-02-23T08:50:21","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":0,"PrecisaoHorizontal":99.99},{"Latitude":0.0,"Longitude":0.0,"DataHora":"2024-02-23T08:50:25","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":0,"PrecisaoHorizontal":99.99},{"Latitude":0.0,"Longitude":0.0,"DataHora":"2024-02-23T08:50:30","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":0,"PrecisaoHorizontal":99.99},{"Latitude":0.0,"Longitude":0.0,"DataHora":"2024-02-23T08:50:35","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":0,"PrecisaoHorizontal":99.99},{"Latitude":0.0,"Longitude":0.0,"DataHora":"2024-02-23T08:50:40","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":0,"PrecisaoHorizontal":99.99},{"Latitude":0.0,"Longitude":0.0,"DataHora":"2024-02-23T08:50:44","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":0,"PrecisaoHorizontal":99.99},{"Latitude":0.0,"Longitude":0.0,"DataHora":"2024-02-23T08:50:49","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":0,"PrecisaoHorizontal":99.99},{"Latitude":0.0,"Longitude":0.0,"DataHora":"2024-02-23T08:50:54","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":0,"PrecisaoHorizontal":99.99},{"Latitude":0.0,"Longitude":0.0,"DataHora":"2024-02-23T08:50:58","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":0,"PrecisaoHorizontal":99.99},{"Latitude":0.0,"Longitude":0.0,"DataHora":"2024-02-23T08:51:04","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":0,"PrecisaoHorizontal":99.99},{"Latitude":0.0,"Longitude":0.0,"DataHora":"2024-02-23T08:51:09","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":0,"PrecisaoHorizontal":99.99}]
|
||||||
File diff suppressed because one or more lines are too long
|
|
@ -0,0 +1 @@
|
||||||
|
[{"Latitude":0.0,"Longitude":0.0,"DataHora":"2024-02-23T09:26:44","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":0,"PrecisaoHorizontal":99.99},{"Latitude":0.0,"Longitude":0.0,"DataHora":"2024-02-23T09:26:46","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":0,"PrecisaoHorizontal":99.99},{"Latitude":0.0,"Longitude":0.0,"DataHora":"2024-02-23T09:26:49","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":0,"PrecisaoHorizontal":99.99},{"Latitude":0.0,"Longitude":0.0,"DataHora":"2024-02-23T09:26:51","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":0,"PrecisaoHorizontal":99.99},{"Latitude":0.0,"Longitude":0.0,"DataHora":"2024-02-23T09:26:54","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":0,"PrecisaoHorizontal":99.99},{"Latitude":0.0,"Longitude":0.0,"DataHora":"2024-02-23T09:26:55","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":0,"PrecisaoHorizontal":99.99},{"Latitude":0.0,"Longitude":0.0,"DataHora":"2024-02-23T09:26:59","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":0,"PrecisaoHorizontal":99.99},{"Latitude":0.0,"Longitude":0.0,"DataHora":"2024-02-23T09:27:01","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":0,"PrecisaoHorizontal":99.99},{"Latitude":0.0,"Longitude":0.0,"DataHora":"2024-02-23T09:27:05","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":0,"PrecisaoHorizontal":99.99},{"Latitude":0.0,"Longitude":0.0,"DataHora":"2024-02-23T09:27:06","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":0,"PrecisaoHorizontal":99.99},{"Latitude":0.0,"Longitude":0.0,"DataHora":"2024-02-23T09:27:09","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":0,"PrecisaoHorizontal":99.99},{"Latitude":0.0,"Longitude":0.0,"DataHora":"2024-02-23T09:27:11","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":0,"PrecisaoHorizontal":99.99},{"Latitude":0.0,"Longitude":0.0,"DataHora":"2024-02-23T09:27:13","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":0,"PrecisaoHorizontal":99.99},{"Latitude":0.0,"Longitude":0.0,"DataHora":"2024-02-23T09:27:16","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":0,"PrecisaoHorizontal":99.99},{"Latitude":0.0,"Longitude":0.0,"DataHora":"2024-02-23T09:27:20","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":0,"PrecisaoHorizontal":99.99},{"Latitude":0.0,"Longitude":0.0,"DataHora":"2024-02-23T09:27:23","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":0,"PrecisaoHorizontal":99.99},{"Latitude":0.0,"Longitude":0.0,"DataHora":"2024-02-23T09:27:25","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":0,"PrecisaoHorizontal":99.99},{"Latitude":0.0,"Longitude":0.0,"DataHora":"2024-02-23T09:27:27","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":0,"PrecisaoHorizontal":99.99},{"Latitude":0.0,"Longitude":0.0,"DataHora":"2024-02-23T09:27:29","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":0,"PrecisaoHorizontal":99.99},{"Latitude":0.0,"Longitude":0.0,"DataHora":"2024-02-23T09:27:32","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":0,"PrecisaoHorizontal":99.99},{"Latitude":0.0,"Longitude":0.0,"DataHora":"2024-02-23T09:27:35","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":0,"PrecisaoHorizontal":99.99},{"Latitude":0.0,"Longitude":0.0,"DataHora":"2024-02-23T09:27:37","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":0,"PrecisaoHorizontal":99.99},{"Latitude":0.0,"Longitude":0.0,"DataHora":"2024-02-23T09:27:39","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":0,"PrecisaoHorizontal":99.99},{"Latitude":0.0,"Longitude":0.0,"DataHora":"2024-02-23T09:27:42","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":0,"PrecisaoHorizontal":99.99},{"Latitude":0.0,"Longitude":0.0,"DataHora":"2024-02-23T09:27:44","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":0,"PrecisaoHorizontal":99.99},{"Latitude":0.0,"Longitude":0.0,"DataHora":"2024-02-23T09:27:46","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":0,"PrecisaoHorizontal":99.99},{"Latitude":0.0,"Longitude":0.0,"DataHora":"2024-02-23T09:27:48","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":0,"PrecisaoHorizontal":99.99},{"Latitude":0.0,"Longitude":0.0,"DataHora":"2024-02-23T09:27:50","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":0,"PrecisaoHorizontal":99.99}]
|
||||||
File diff suppressed because one or more lines are too long
|
|
@ -0,0 +1 @@
|
||||||
|
[{"Latitude":0.0,"Longitude":0.0,"DataHora":"2024-02-23T09:35:23","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":0,"PrecisaoHorizontal":99.99},{"Latitude":0.0,"Longitude":0.0,"DataHora":"2024-02-23T09:35:28","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":0,"PrecisaoHorizontal":99.99},{"Latitude":0.0,"Longitude":0.0,"DataHora":"2024-02-23T09:35:30","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":0,"PrecisaoHorizontal":99.99},{"Latitude":0.0,"Longitude":0.0,"DataHora":"2024-02-23T09:35:32","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":0,"PrecisaoHorizontal":99.99},{"Latitude":0.0,"Longitude":0.0,"DataHora":"2024-02-23T09:35:37","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":0,"PrecisaoHorizontal":99.99},{"Latitude":0.0,"Longitude":0.0,"DataHora":"2024-02-23T09:35:42","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":0,"PrecisaoHorizontal":99.99},{"Latitude":0.0,"Longitude":0.0,"DataHora":"2024-02-23T09:35:45","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":0,"PrecisaoHorizontal":99.99},{"Latitude":0.0,"Longitude":0.0,"DataHora":"2024-02-23T09:35:46","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":0,"PrecisaoHorizontal":99.99},{"Latitude":0.0,"Longitude":0.0,"DataHora":"2024-02-23T09:35:51","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":0,"PrecisaoHorizontal":99.99},{"Latitude":0.0,"Longitude":0.0,"DataHora":"2024-02-23T09:35:56","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":0,"PrecisaoHorizontal":99.99},{"Latitude":0.0,"Longitude":0.0,"DataHora":"2024-02-23T09:35:57","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":0,"PrecisaoHorizontal":99.99},{"Latitude":0.0,"Longitude":0.0,"DataHora":"2024-02-23T09:35:58","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":0,"PrecisaoHorizontal":99.99},{"Latitude":0.0,"Longitude":0.0,"DataHora":"2024-02-23T09:36:03","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":0,"PrecisaoHorizontal":99.99},{"Latitude":0.0,"Longitude":0.0,"DataHora":"2024-02-23T09:36:13","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":0,"PrecisaoHorizontal":99.99},{"Latitude":0.0,"Longitude":0.0,"DataHora":"2024-02-23T09:36:15","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":0,"PrecisaoHorizontal":99.99},{"Latitude":0.0,"Longitude":0.0,"DataHora":"2024-02-23T09:36:20","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":0,"PrecisaoHorizontal":99.99},{"Latitude":0.0,"Longitude":0.0,"DataHora":"2024-02-23T09:36:25","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":0,"PrecisaoHorizontal":99.99},{"Latitude":0.0,"Longitude":0.0,"DataHora":"2024-02-23T09:41:14","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":0,"PrecisaoHorizontal":99.99},{"Latitude":0.0,"Longitude":0.0,"DataHora":"2024-02-23T09:41:18","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":0,"PrecisaoHorizontal":99.99},{"Latitude":0.0,"Longitude":0.0,"DataHora":"2024-02-23T09:41:23","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":0,"PrecisaoHorizontal":99.99},{"Latitude":0.0,"Longitude":0.0,"DataHora":"2024-02-23T09:41:28","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":0,"PrecisaoHorizontal":99.99},{"Latitude":0.0,"Longitude":0.0,"DataHora":"2024-02-23T09:41:33","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":0,"PrecisaoHorizontal":99.99},{"Latitude":0.0,"Longitude":0.0,"DataHora":"2024-02-23T09:41:37","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":0,"PrecisaoHorizontal":99.99}]
|
||||||
File diff suppressed because one or more lines are too long
|
|
@ -0,0 +1 @@
|
||||||
|
[{"Latitude":0.0,"Longitude":0.0,"DataHora":"2024-02-23T09:41:39","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":0,"PrecisaoHorizontal":99.99},{"Latitude":0.0,"Longitude":0.0,"DataHora":"2024-02-23T09:41:39","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":0,"PrecisaoHorizontal":99.99},{"Latitude":0.0,"Longitude":0.0,"DataHora":"2024-02-23T09:41:39","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":0,"PrecisaoHorizontal":99.99},{"Latitude":0.0,"Longitude":0.0,"DataHora":"2024-02-23T09:41:39","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":0,"PrecisaoHorizontal":99.99},{"Latitude":0.0,"Longitude":0.0,"DataHora":"2024-02-23T09:41:39","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":0,"PrecisaoHorizontal":99.99},{"Latitude":0.0,"Longitude":0.0,"DataHora":"2024-02-23T09:41:39","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":0,"PrecisaoHorizontal":99.99},{"Latitude":0.0,"Longitude":0.0,"DataHora":"2024-02-23T09:41:39","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":0,"PrecisaoHorizontal":99.99},{"Latitude":0.0,"Longitude":0.0,"DataHora":"2024-02-23T09:41:39","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":0,"PrecisaoHorizontal":99.99},{"Latitude":0.0,"Longitude":0.0,"DataHora":"2024-02-23T09:41:39","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":0,"PrecisaoHorizontal":99.99},{"Latitude":0.0,"Longitude":0.0,"DataHora":"2024-02-23T09:41:39","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":0,"PrecisaoHorizontal":99.99},{"Latitude":0.0,"Longitude":0.0,"DataHora":"2024-02-23T09:41:39","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":0,"PrecisaoHorizontal":99.99},{"Latitude":0.0,"Longitude":0.0,"DataHora":"2024-02-23T09:41:39","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":0,"PrecisaoHorizontal":99.99},{"Latitude":0.0,"Longitude":0.0,"DataHora":"2024-02-23T09:41:39","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":0,"PrecisaoHorizontal":99.99},{"Latitude":0.0,"Longitude":0.0,"DataHora":"2024-02-23T09:41:39","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":0,"PrecisaoHorizontal":99.99},{"Latitude":0.0,"Longitude":0.0,"DataHora":"2024-02-23T09:41:39","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":0,"PrecisaoHorizontal":99.99},{"Latitude":0.0,"Longitude":0.0,"DataHora":"2024-02-23T09:41:39","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":0,"PrecisaoHorizontal":99.99},{"Latitude":0.0,"Longitude":0.0,"DataHora":"2024-02-23T09:41:39","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":0,"PrecisaoHorizontal":99.99}]
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
[{"Momento":"2024-02-23T09:51:15.5202079-03:00","ErvasNoRadar":0,"VelocidadeMedia":0.0,"HerbicidaConsumido":0.0,"HerbicidaPorErva":0.0,"BateriaConsumida":0.0,"ErvasIdentificadas":26,"AtuacoesPorBico":[16,16,11,1],"DistanciaPercorrida":0.0,"ProgressoPercurso":0.0,"DistanciaEsquerda":0.0,"DistanciaDireita":0.0},{"Momento":"2024-02-23T09:51:20.5124691-03:00","ErvasNoRadar":0,"VelocidadeMedia":0.0,"HerbicidaConsumido":0.0,"HerbicidaPorErva":0.0,"BateriaConsumida":0.0,"ErvasIdentificadas":44,"AtuacoesPorBico":[16,16,11,1],"DistanciaPercorrida":0.0,"ProgressoPercurso":0.0,"DistanciaEsquerda":0.0,"DistanciaDireita":0.0}]
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
[{"Latitude":0.0,"Longitude":0.0,"DataHora":"2024-02-23T09:41:39","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":0,"PrecisaoHorizontal":99.99},{"Latitude":0.0,"Longitude":0.0,"DataHora":"2024-02-23T09:41:39","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":0,"PrecisaoHorizontal":99.99}]
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
[{"Momento":"2024-02-23T09:52:38.6983052-03:00","ErvasNoRadar":0,"VelocidadeMedia":0.0,"HerbicidaConsumido":0.0,"HerbicidaPorErva":0.0,"BateriaConsumida":0.0,"ErvasIdentificadas":15,"AtuacoesPorBico":[0,0,10,28],"DistanciaPercorrida":0.0,"ProgressoPercurso":0.0,"DistanciaEsquerda":0.0,"DistanciaDireita":0.0},{"Momento":"2024-02-23T09:52:44.1262795-03:00","ErvasNoRadar":0,"VelocidadeMedia":0.0,"HerbicidaConsumido":0.0,"HerbicidaPorErva":0.0,"BateriaConsumida":0.0,"ErvasIdentificadas":15,"AtuacoesPorBico":[0,0,10,28],"DistanciaPercorrida":0.0,"ProgressoPercurso":0.0,"DistanciaEsquerda":0.0,"DistanciaDireita":0.0},{"Momento":"2024-02-23T09:52:48.9190819-03:00","ErvasNoRadar":3,"VelocidadeMedia":0.0,"HerbicidaConsumido":0.0,"HerbicidaPorErva":0.0,"BateriaConsumida":0.0,"ErvasIdentificadas":26,"AtuacoesPorBico":[0,0,10,28],"DistanciaPercorrida":0.0,"ProgressoPercurso":0.0,"DistanciaEsquerda":0.0,"DistanciaDireita":0.0},{"Momento":"2024-02-23T09:52:54.0118225-03:00","ErvasNoRadar":0,"VelocidadeMedia":0.0,"HerbicidaConsumido":0.0,"HerbicidaPorErva":0.0,"BateriaConsumida":0.0,"ErvasIdentificadas":38,"AtuacoesPorBico":[0,0,10,28],"DistanciaPercorrida":0.0,"ProgressoPercurso":0.0,"DistanciaEsquerda":0.0,"DistanciaDireita":0.0}]
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
[{"Latitude":0.0,"Longitude":0.0,"DataHora":"2024-02-23T09:41:39","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":0,"PrecisaoHorizontal":99.99},{"Latitude":0.0,"Longitude":0.0,"DataHora":"2024-02-23T09:41:39","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":0,"PrecisaoHorizontal":99.99},{"Latitude":0.0,"Longitude":0.0,"DataHora":"2024-02-23T09:41:39","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":0,"PrecisaoHorizontal":99.99},{"Latitude":0.0,"Longitude":0.0,"DataHora":"2024-02-23T09:41:39","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":0,"PrecisaoHorizontal":99.99}]
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
[{"Momento":"2024-02-23T09:55:52.6545239-03:00","ErvasNoRadar":2,"VelocidadeMedia":0.0,"HerbicidaConsumido":0.0,"HerbicidaPorErva":0.0,"BateriaConsumida":0.0,"ErvasIdentificadas":2,"AtuacoesPorBico":[6,6,14,16],"DistanciaPercorrida":0.0,"ProgressoPercurso":0.0,"DistanciaEsquerda":0.0,"DistanciaDireita":0.0},{"Momento":"2024-02-23T09:55:57.6521686-03:00","ErvasNoRadar":2,"VelocidadeMedia":0.0,"HerbicidaConsumido":0.0,"HerbicidaPorErva":0.0,"BateriaConsumida":0.0,"ErvasIdentificadas":30,"AtuacoesPorBico":[6,6,14,16],"DistanciaPercorrida":0.0,"ProgressoPercurso":0.0,"DistanciaEsquerda":0.0,"DistanciaDireita":0.0},{"Momento":"2024-02-23T09:56:02.6550606-03:00","ErvasNoRadar":2,"VelocidadeMedia":0.0,"HerbicidaConsumido":0.0,"HerbicidaPorErva":0.0,"BateriaConsumida":0.0,"ErvasIdentificadas":42,"AtuacoesPorBico":[6,6,14,16],"DistanciaPercorrida":0.0,"ProgressoPercurso":0.0,"DistanciaEsquerda":0.0,"DistanciaDireita":0.0},{"Momento":"2024-02-23T09:56:07.6524607-03:00","ErvasNoRadar":0,"VelocidadeMedia":0.0,"HerbicidaConsumido":0.0,"HerbicidaPorErva":0.0,"BateriaConsumida":0.0,"ErvasIdentificadas":42,"AtuacoesPorBico":[6,6,14,16],"DistanciaPercorrida":0.0,"ProgressoPercurso":0.0,"DistanciaEsquerda":0.0,"DistanciaDireita":0.0}]
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
[{"Latitude":0.0,"Longitude":0.0,"DataHora":"2024-02-23T09:56:35","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":0,"PrecisaoHorizontal":99.99},{"Latitude":0.0,"Longitude":0.0,"DataHora":"2024-02-23T09:56:40","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":0,"PrecisaoHorizontal":99.99},{"Latitude":0.0,"Longitude":0.0,"DataHora":"2024-02-23T09:56:45","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":0,"PrecisaoHorizontal":99.99},{"Latitude":0.0,"Longitude":0.0,"DataHora":"2024-02-23T09:56:50","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":0,"PrecisaoHorizontal":99.99}]
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
[{"Momento":"2024-02-23T10:01:56.3270449-03:00","ErvasNoRadar":3,"VelocidadeMedia":0.0,"HerbicidaConsumido":0.0,"HerbicidaPorErva":0.0,"BateriaConsumida":0.0,"ErvasIdentificadas":14,"AtuacoesPorBico":[9,11,3,3],"DistanciaPercorrida":0.0,"ProgressoPercurso":0.0,"DistanciaEsquerda":0.0,"DistanciaDireita":0.0},{"Momento":"2024-02-23T10:02:01.3266499-03:00","ErvasNoRadar":0,"VelocidadeMedia":0.0,"HerbicidaConsumido":0.0,"HerbicidaPorErva":0.0,"BateriaConsumida":0.0,"ErvasIdentificadas":26,"AtuacoesPorBico":[9,11,3,3],"DistanciaPercorrida":0.0,"ProgressoPercurso":0.0,"DistanciaEsquerda":0.0,"DistanciaDireita":0.0}]
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
[{"Latitude":0.0,"Longitude":0.0,"DataHora":"2024-02-23T10:02:38","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":0,"PrecisaoHorizontal":99.99},{"Latitude":0.0,"Longitude":0.0,"DataHora":"2024-02-23T10:02:43","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":0,"PrecisaoHorizontal":99.99}]
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
[{"Momento":"2024-02-23T10:04:02.7200581-03:00","ErvasNoRadar":0,"VelocidadeMedia":0.0,"HerbicidaConsumido":0.0,"HerbicidaPorErva":0.0,"BateriaConsumida":0.0,"ErvasIdentificadas":4,"AtuacoesPorBico":[11,12,0,0],"DistanciaPercorrida":0.0,"ProgressoPercurso":0.0,"DistanciaEsquerda":0.0,"DistanciaDireita":0.0},{"Momento":"2024-02-23T10:04:07.7175609-03:00","ErvasNoRadar":0,"VelocidadeMedia":0.0,"HerbicidaConsumido":0.0,"HerbicidaPorErva":0.0,"BateriaConsumida":0.0,"ErvasIdentificadas":23,"AtuacoesPorBico":[11,12,0,0],"DistanciaPercorrida":0.0,"ProgressoPercurso":0.0,"DistanciaEsquerda":0.0,"DistanciaDireita":0.0}]
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
[{"Latitude":0.0,"Longitude":0.0,"DataHora":"2024-02-23T10:04:45","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":0,"PrecisaoHorizontal":99.99},{"Latitude":0.0,"Longitude":0.0,"DataHora":"2024-02-23T10:04:50","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":0,"PrecisaoHorizontal":99.99}]
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
[{"Momento":"2024-02-23T10:08:47.9366872-03:00","ErvasNoRadar":0,"VelocidadeMedia":0.0,"HerbicidaConsumido":0.0,"HerbicidaPorErva":0.0,"BateriaConsumida":0.0,"ErvasIdentificadas":4,"AtuacoesPorBico":[56,74,0,0],"DistanciaPercorrida":0.0,"ProgressoPercurso":0.0,"DistanciaEsquerda":0.0,"DistanciaDireita":0.0},{"Momento":"2024-02-23T10:08:52.9344416-03:00","ErvasNoRadar":2,"VelocidadeMedia":0.0,"HerbicidaConsumido":0.0,"HerbicidaPorErva":0.0,"BateriaConsumida":0.0,"ErvasIdentificadas":48,"AtuacoesPorBico":[56,74,0,0],"DistanciaPercorrida":0.0,"ProgressoPercurso":0.0,"DistanciaEsquerda":0.0,"DistanciaDireita":0.0},{"Momento":"2024-02-23T10:09:56.6115142-03:00","ErvasNoRadar":0,"VelocidadeMedia":0.0,"HerbicidaConsumido":0.0,"HerbicidaPorErva":0.0,"BateriaConsumida":0.0,"ErvasIdentificadas":60,"AtuacoesPorBico":[56,74,0,0],"DistanciaPercorrida":0.0,"ProgressoPercurso":0.0,"DistanciaEsquerda":0.0,"DistanciaDireita":0.0},{"Momento":"2024-02-23T10:09:57.9322241-03:00","ErvasNoRadar":0,"VelocidadeMedia":0.0,"HerbicidaConsumido":0.0,"HerbicidaPorErva":0.0,"BateriaConsumida":0.0,"ErvasIdentificadas":60,"AtuacoesPorBico":[56,74,0,0],"DistanciaPercorrida":0.0,"ProgressoPercurso":0.0,"DistanciaEsquerda":0.0,"DistanciaDireita":0.0},{"Momento":"2024-02-23T10:10:02.9344679-03:00","ErvasNoRadar":0,"VelocidadeMedia":0.0,"HerbicidaConsumido":0.0,"HerbicidaPorErva":0.0,"BateriaConsumida":0.0,"ErvasIdentificadas":64,"AtuacoesPorBico":[56,74,0,0],"DistanciaPercorrida":0.0,"ProgressoPercurso":0.0,"DistanciaEsquerda":0.0,"DistanciaDireita":0.0},{"Momento":"2024-02-23T10:10:07.9322464-03:00","ErvasNoRadar":0,"VelocidadeMedia":0.0,"HerbicidaConsumido":0.0,"HerbicidaPorErva":0.0,"BateriaConsumida":0.0,"ErvasIdentificadas":98,"AtuacoesPorBico":[56,74,0,0],"DistanciaPercorrida":0.0,"ProgressoPercurso":0.0,"DistanciaEsquerda":0.0,"DistanciaDireita":0.0},{"Momento":"2024-02-23T10:10:12.953966-03:00","ErvasNoRadar":0,"VelocidadeMedia":0.0,"HerbicidaConsumido":0.0,"HerbicidaPorErva":0.0,"BateriaConsumida":0.0,"ErvasIdentificadas":104,"AtuacoesPorBico":[56,74,0,0],"DistanciaPercorrida":0.0,"ProgressoPercurso":0.0,"DistanciaEsquerda":0.0,"DistanciaDireita":0.0},{"Momento":"2024-02-23T10:10:17.9351455-03:00","ErvasNoRadar":0,"VelocidadeMedia":0.0,"HerbicidaConsumido":0.0,"HerbicidaPorErva":0.0,"BateriaConsumida":0.0,"ErvasIdentificadas":110,"AtuacoesPorBico":[56,74,0,0],"DistanciaPercorrida":0.0,"ProgressoPercurso":0.0,"DistanciaEsquerda":0.0,"DistanciaDireita":0.0},{"Momento":"2024-02-23T10:10:22.9338668-03:00","ErvasNoRadar":2,"VelocidadeMedia":0.0,"HerbicidaConsumido":0.0,"HerbicidaPorErva":0.0,"BateriaConsumida":0.0,"ErvasIdentificadas":130,"AtuacoesPorBico":[56,74,0,0],"DistanciaPercorrida":0.0,"ProgressoPercurso":0.0,"DistanciaEsquerda":0.0,"DistanciaDireita":0.0}]
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
[{"Latitude":0.0,"Longitude":0.0,"DataHora":"2024-02-23T10:09:30","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":0,"PrecisaoHorizontal":99.99},{"Latitude":0.0,"Longitude":0.0,"DataHora":"2024-02-23T10:09:35","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":0,"PrecisaoHorizontal":99.99},{"Latitude":0.0,"Longitude":0.0,"DataHora":"2024-02-23T10:09:38","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":0,"PrecisaoHorizontal":99.99},{"Latitude":0.0,"Longitude":0.0,"DataHora":"2024-02-23T10:09:40","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":0,"PrecisaoHorizontal":99.99},{"Latitude":0.0,"Longitude":0.0,"DataHora":"2024-02-23T10:09:45","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":0,"PrecisaoHorizontal":99.99},{"Latitude":0.0,"Longitude":0.0,"DataHora":"2024-02-23T10:09:50","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":0,"PrecisaoHorizontal":99.99},{"Latitude":0.0,"Longitude":0.0,"DataHora":"2024-02-23T10:09:55","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":0,"PrecisaoHorizontal":99.99},{"Latitude":0.0,"Longitude":0.0,"DataHora":"2024-02-23T10:09:57","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":0,"PrecisaoHorizontal":99.99},{"Latitude":0.0,"Longitude":0.0,"DataHora":"2024-02-23T10:10:01","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":0,"PrecisaoHorizontal":99.99}]
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
[{"Momento":"2024-02-23T10:13:18.7476503-03:00","ErvasNoRadar":0,"VelocidadeMedia":0.0,"HerbicidaConsumido":0.0,"HerbicidaPorErva":0.0,"BateriaConsumida":0.0,"ErvasIdentificadas":2,"AtuacoesPorBico":[7,11,0,0],"DistanciaPercorrida":0.0,"ProgressoPercurso":0.0,"DistanciaEsquerda":0.0,"DistanciaDireita":0.0},{"Momento":"2024-02-23T10:13:23.7529131-03:00","ErvasNoRadar":0,"VelocidadeMedia":0.0,"HerbicidaConsumido":0.0,"HerbicidaPorErva":0.0,"BateriaConsumida":0.0,"ErvasIdentificadas":4,"AtuacoesPorBico":[7,11,0,0],"DistanciaPercorrida":0.0,"ProgressoPercurso":0.0,"DistanciaEsquerda":0.0,"DistanciaDireita":0.0},{"Momento":"2024-02-23T10:13:28.7477574-03:00","ErvasNoRadar":0,"VelocidadeMedia":0.0,"HerbicidaConsumido":0.0,"HerbicidaPorErva":0.0,"BateriaConsumida":0.0,"ErvasIdentificadas":4,"AtuacoesPorBico":[7,11,0,0],"DistanciaPercorrida":0.0,"ProgressoPercurso":0.0,"DistanciaEsquerda":0.0,"DistanciaDireita":0.0},{"Momento":"2024-02-23T10:13:33.7463022-03:00","ErvasNoRadar":0,"VelocidadeMedia":0.0,"HerbicidaConsumido":0.0,"HerbicidaPorErva":0.0,"BateriaConsumida":0.0,"ErvasIdentificadas":10,"AtuacoesPorBico":[7,11,0,0],"DistanciaPercorrida":0.0,"ProgressoPercurso":0.0,"DistanciaEsquerda":0.0,"DistanciaDireita":0.0},{"Momento":"2024-02-23T10:13:38.7758701-03:00","ErvasNoRadar":2,"VelocidadeMedia":0.0,"HerbicidaConsumido":0.0,"HerbicidaPorErva":0.0,"BateriaConsumida":0.0,"ErvasIdentificadas":14,"AtuacoesPorBico":[7,11,0,0],"DistanciaPercorrida":0.0,"ProgressoPercurso":0.0,"DistanciaEsquerda":0.0,"DistanciaDireita":0.0},{"Momento":"2024-02-23T10:13:43.7484282-03:00","ErvasNoRadar":0,"VelocidadeMedia":0.0,"HerbicidaConsumido":0.0,"HerbicidaPorErva":0.0,"BateriaConsumida":0.0,"ErvasIdentificadas":18,"AtuacoesPorBico":[7,11,0,0],"DistanciaPercorrida":0.0,"ProgressoPercurso":0.0,"DistanciaEsquerda":0.0,"DistanciaDireita":0.0},{"Momento":"2024-02-23T10:13:48.7525133-03:00","ErvasNoRadar":0,"VelocidadeMedia":0.0,"HerbicidaConsumido":0.0,"HerbicidaPorErva":0.0,"BateriaConsumida":0.0,"ErvasIdentificadas":18,"AtuacoesPorBico":[7,11,0,0],"DistanciaPercorrida":0.0,"ProgressoPercurso":0.0,"DistanciaEsquerda":0.0,"DistanciaDireita":0.0}]
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
[{"Latitude":0.0,"Longitude":0.0,"DataHora":"2024-02-23T10:14:01","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":3,"PrecisaoHorizontal":2.79},{"Latitude":0.0,"Longitude":0.0,"DataHora":"2024-02-23T10:14:06","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":3,"PrecisaoHorizontal":2.79},{"Latitude":0.0,"Longitude":0.0,"DataHora":"2024-02-23T10:14:11","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":3,"PrecisaoHorizontal":2.79},{"Latitude":0.0,"Longitude":0.0,"DataHora":"2024-02-23T10:14:16","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":3,"PrecisaoHorizontal":2.79},{"Latitude":0.0,"Longitude":0.0,"DataHora":"2024-02-23T10:14:21","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":0,"PrecisaoHorizontal":99.99},{"Latitude":0.0,"Longitude":0.0,"DataHora":"2024-02-23T10:14:26","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":0,"PrecisaoHorizontal":99.99},{"Latitude":0.0,"Longitude":0.0,"DataHora":"2024-02-23T10:14:31","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":0,"PrecisaoHorizontal":99.99}]
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
[{"Momento":"2024-02-23T14:47:12.0297377-03:00","ErvasNoRadar":0,"VelocidadeMedia":0.0,"HerbicidaConsumido":0.0,"HerbicidaPorErva":0.0,"BateriaConsumida":0.0,"ErvasIdentificadas":0,"AtuacoesPorBico":[0,0,0,0],"DistanciaPercorrida":0.0,"ProgressoPercurso":0.0,"DistanciaEsquerda":0.0,"DistanciaDireita":0.0},{"Momento":"2024-02-23T14:47:17.0270216-03:00","ErvasNoRadar":0,"VelocidadeMedia":0.0,"HerbicidaConsumido":0.0,"HerbicidaPorErva":0.0,"BateriaConsumida":0.0,"ErvasIdentificadas":0,"AtuacoesPorBico":[0,0,0,0],"DistanciaPercorrida":0.0,"ProgressoPercurso":0.0,"DistanciaEsquerda":0.0,"DistanciaDireita":0.0},{"Momento":"2024-02-23T14:47:22.0304465-03:00","ErvasNoRadar":0,"VelocidadeMedia":0.0,"HerbicidaConsumido":0.0,"HerbicidaPorErva":0.0,"BateriaConsumida":0.0,"ErvasIdentificadas":0,"AtuacoesPorBico":[0,0,0,0],"DistanciaPercorrida":0.0,"ProgressoPercurso":0.0,"DistanciaEsquerda":0.0,"DistanciaDireita":0.0},{"Momento":"2024-02-23T14:47:27.027427-03:00","ErvasNoRadar":0,"VelocidadeMedia":0.0,"HerbicidaConsumido":0.0,"HerbicidaPorErva":0.0,"BateriaConsumida":0.0,"ErvasIdentificadas":0,"AtuacoesPorBico":[0,0,0,0],"DistanciaPercorrida":0.0,"ProgressoPercurso":0.0,"DistanciaEsquerda":0.0,"DistanciaDireita":0.0}]
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
[{"Latitude":0.0,"Longitude":0.0,"DataHora":"2024-02-23T14:47:53","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":0,"PrecisaoHorizontal":99.99,"Orientacao":0.0},{"Latitude":0.0,"Longitude":0.0,"DataHora":"2024-02-23T14:47:58","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":0,"PrecisaoHorizontal":99.99,"Orientacao":0.0},{"Latitude":0.0,"Longitude":0.0,"DataHora":"2024-02-23T14:48:03","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":0,"PrecisaoHorizontal":99.99,"Orientacao":0.0},{"Latitude":0.0,"Longitude":0.0,"DataHora":"2024-02-23T14:48:07","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":0,"PrecisaoHorizontal":99.99,"Orientacao":0.0}]
|
||||||
File diff suppressed because one or more lines are too long
|
|
@ -0,0 +1 @@
|
||||||
|
[{"Latitude":-22.1841845,"Longitude":-47.382335833333336,"DataHora":"2024-02-23T14:49:45","Altitude":647.1,"Velocidade":0.0,"NumeroSatelites":8,"PrecisaoHorizontal":0.94,"Orientacao":0.0},{"Latitude":-22.184177833333333,"Longitude":-47.382340666666664,"DataHora":"2024-02-23T14:49:50","Altitude":644.1,"Velocidade":0.0,"NumeroSatelites":8,"PrecisaoHorizontal":0.94,"Orientacao":0.0},{"Latitude":-22.184174166666665,"Longitude":-47.382347,"DataHora":"2024-02-23T14:49:55","Altitude":642.5,"Velocidade":0.0,"NumeroSatelites":8,"PrecisaoHorizontal":0.94,"Orientacao":0.0},{"Latitude":-22.184170166666668,"Longitude":-47.382350333333335,"DataHora":"2024-02-23T14:50:00","Altitude":641.3,"Velocidade":0.0,"NumeroSatelites":7,"PrecisaoHorizontal":1.03,"Orientacao":0.0},{"Latitude":-22.184167833333333,"Longitude":-47.382349833333336,"DataHora":"2024-02-23T14:50:05","Altitude":641.7,"Velocidade":0.0,"NumeroSatelites":8,"PrecisaoHorizontal":0.94,"Orientacao":0.0},{"Latitude":-22.184165166666666,"Longitude":-47.38235,"DataHora":"2024-02-23T14:50:10","Altitude":642.1,"Velocidade":0.0,"NumeroSatelites":8,"PrecisaoHorizontal":0.94,"Orientacao":0.0},{"Latitude":-22.184162333333333,"Longitude":-47.382348666666665,"DataHora":"2024-02-23T14:50:15","Altitude":642.6,"Velocidade":0.0,"NumeroSatelites":8,"PrecisaoHorizontal":0.94,"Orientacao":0.0},{"Latitude":-22.1841605,"Longitude":-47.382344833333335,"DataHora":"2024-02-23T14:50:20","Altitude":643.9,"Velocidade":0.0,"NumeroSatelites":8,"PrecisaoHorizontal":0.94,"Orientacao":0.0},{"Latitude":-22.184175166666666,"Longitude":-47.382336333333335,"DataHora":"2024-02-23T14:50:25","Altitude":644.0,"Velocidade":0.0,"NumeroSatelites":8,"PrecisaoHorizontal":0.94,"Orientacao":0.0},{"Latitude":-22.184169333333333,"Longitude":-47.3823345,"DataHora":"2024-02-23T14:50:30","Altitude":645.2,"Velocidade":0.0,"NumeroSatelites":8,"PrecisaoHorizontal":0.94,"Orientacao":0.0},{"Latitude":-22.1841645,"Longitude":-47.3823315,"DataHora":"2024-02-23T14:50:35","Altitude":647.1,"Velocidade":0.0,"NumeroSatelites":8,"PrecisaoHorizontal":0.94,"Orientacao":0.0},{"Latitude":-22.184157666666668,"Longitude":-47.382335,"DataHora":"2024-02-23T14:50:40","Altitude":648.0,"Velocidade":0.0,"NumeroSatelites":8,"PrecisaoHorizontal":0.94,"Orientacao":0.0},{"Latitude":-22.184144666666668,"Longitude":-47.382339166666668,"DataHora":"2024-02-23T14:50:45","Altitude":647.4,"Velocidade":0.0,"NumeroSatelites":8,"PrecisaoHorizontal":0.94,"Orientacao":0.0},{"Latitude":-22.184144666666668,"Longitude":-47.382331333333333,"DataHora":"2024-02-23T14:50:50","Altitude":647.6,"Velocidade":0.0,"NumeroSatelites":7,"PrecisaoHorizontal":0.99,"Orientacao":0.0},{"Latitude":-22.184146833333333,"Longitude":-47.382330333333336,"DataHora":"2024-02-23T14:50:55","Altitude":646.4,"Velocidade":0.0,"NumeroSatelites":7,"PrecisaoHorizontal":0.99,"Orientacao":0.0},{"Latitude":-22.184150333333335,"Longitude":-47.38234116666667,"DataHora":"2024-02-23T14:51:00","Altitude":643.1,"Velocidade":0.0,"NumeroSatelites":7,"PrecisaoHorizontal":0.99,"Orientacao":0.0},{"Latitude":-22.184156333333334,"Longitude":-47.382357999999996,"DataHora":"2024-02-23T14:51:05","Altitude":638.8,"Velocidade":0.0,"NumeroSatelites":8,"PrecisaoHorizontal":0.89,"Orientacao":0.0},{"Latitude":-22.184162666666666,"Longitude":-47.382376333333333,"DataHora":"2024-02-23T14:51:11","Altitude":634.5,"Velocidade":0.0,"NumeroSatelites":8,"PrecisaoHorizontal":0.89,"Orientacao":0.0},{"Latitude":-22.184165833333335,"Longitude":-47.382385166666666,"DataHora":"2024-02-23T14:51:15","Altitude":632.8,"Velocidade":0.0,"NumeroSatelites":8,"PrecisaoHorizontal":0.89,"Orientacao":0.0},{"Latitude":-22.184166666666666,"Longitude":-47.382384666666667,"DataHora":"2024-02-23T14:51:20","Altitude":633.1,"Velocidade":0.0,"NumeroSatelites":8,"PrecisaoHorizontal":0.89,"Orientacao":0.0},{"Latitude":-22.184165666666665,"Longitude":-47.382381166666669,"DataHora":"2024-02-23T14:51:25","Altitude":633.7,"Velocidade":0.0,"NumeroSatelites":8,"PrecisaoHorizontal":0.89,"Orientacao":0.0},{"Latitude":-22.1841645,"Longitude":-47.382377333333331,"DataHora":"2024-02-23T14:51:30","Altitude":634.4,"Velocidade":0.0,"NumeroSatelites":8,"PrecisaoHorizontal":0.89,"Orientacao":0.0},{"Latitude":-22.184163166666668,"Longitude":-47.3823745,"DataHora":"2024-02-23T14:51:36","Altitude":634.4,"Velocidade":0.0,"NumeroSatelites":8,"PrecisaoHorizontal":0.89,"Orientacao":0.0},{"Latitude":-22.184161833333334,"Longitude":-47.3823725,"DataHora":"2024-02-23T14:51:40","Altitude":634.7,"Velocidade":0.0,"NumeroSatelites":8,"PrecisaoHorizontal":0.89,"Orientacao":0.0},{"Latitude":-22.184161833333334,"Longitude":-47.38237,"DataHora":"2024-02-23T14:51:45","Altitude":633.5,"Velocidade":0.0,"NumeroSatelites":8,"PrecisaoHorizontal":0.89,"Orientacao":0.0},{"Latitude":-22.184164833333334,"Longitude":-47.382366,"DataHora":"2024-02-23T14:51:50","Altitude":633.7,"Velocidade":0.0,"NumeroSatelites":8,"PrecisaoHorizontal":0.89,"Orientacao":0.0}]
|
||||||
File diff suppressed because it is too large
Load Diff
|
|
@ -1,6 +1,6 @@
|
||||||
[
|
[
|
||||||
{
|
{
|
||||||
"timestamp": 1708432010.9172282,
|
"timestamp": 1708691160.7234466,
|
||||||
"Classes": [
|
"Classes": [
|
||||||
{
|
{
|
||||||
"Classe": "background",
|
"Classe": "background",
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,153 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
|
||||||
|
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
|
||||||
|
|
||||||
|
<script>
|
||||||
|
L_NO_TOUCH = false;
|
||||||
|
L_DISABLE_3D = false;
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style>html, body {width: 100%;height: 100%;margin: 0;padding: 0;}</style>
|
||||||
|
<style>#map {position:absolute;top:0;bottom:0;right:0;left:0;}</style>
|
||||||
|
<script src="https://cdn.jsdelivr.net/npm/leaflet@1.9.3/dist/leaflet.js"></script>
|
||||||
|
<script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
|
||||||
|
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.2/dist/js/bootstrap.bundle.min.js"></script>
|
||||||
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/Leaflet.awesome-markers/2.0.2/leaflet.awesome-markers.js"></script>
|
||||||
|
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/leaflet@1.9.3/dist/leaflet.css"/>
|
||||||
|
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.2/dist/css/bootstrap.min.css"/>
|
||||||
|
<link rel="stylesheet" href="https://netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css"/>
|
||||||
|
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@6.2.0/css/all.min.css"/>
|
||||||
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/Leaflet.awesome-markers/2.0.2/leaflet.awesome-markers.css"/>
|
||||||
|
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/python-visualization/folium/folium/templates/leaflet.awesome.rotate.min.css"/>
|
||||||
|
|
||||||
|
<meta name="viewport" content="width=device-width,
|
||||||
|
initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
|
||||||
|
<style>
|
||||||
|
#map_6cd088daec204ef6f5b11de0f7d88ab2 {
|
||||||
|
position: relative;
|
||||||
|
width: 100.0%;
|
||||||
|
height: 100.0%;
|
||||||
|
left: 0.0%;
|
||||||
|
top: 0.0%;
|
||||||
|
}
|
||||||
|
.leaflet-container { font-size: 1rem; }
|
||||||
|
</style>
|
||||||
|
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="folium-map" id="map_6cd088daec204ef6f5b11de0f7d88ab2" ></div>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
<script>
|
||||||
|
|
||||||
|
|
||||||
|
var map_6cd088daec204ef6f5b11de0f7d88ab2 = L.map(
|
||||||
|
"map_6cd088daec204ef6f5b11de0f7d88ab2",
|
||||||
|
{
|
||||||
|
center: [-22.339514335994334, -47.26402713810977],
|
||||||
|
crs: L.CRS.EPSG3857,
|
||||||
|
zoom: 18,
|
||||||
|
zoomControl: true,
|
||||||
|
preferCanvas: false,
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
var tile_layer_e7b9bb6cf32dda15f2ce88cd450a21ca = L.tileLayer(
|
||||||
|
"https://tile.openstreetmap.org/{z}/{x}/{y}.png",
|
||||||
|
{"attribution": "\u0026copy; \u003ca href=\"https://www.openstreetmap.org/copyright\"\u003eOpenStreetMap\u003c/a\u003e contributors", "detectRetina": false, "maxNativeZoom": 19, "maxZoom": 19, "minZoom": 0, "noWrap": false, "opacity": 1, "subdomains": "abc", "tms": false}
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
tile_layer_e7b9bb6cf32dda15f2ce88cd450a21ca.addTo(map_6cd088daec204ef6f5b11de0f7d88ab2);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
function geo_json_940573d5dcca3e5fe22061f09acef5e3_onEachFeature(feature, layer) {
|
||||||
|
layer.on({
|
||||||
|
});
|
||||||
|
};
|
||||||
|
var geo_json_940573d5dcca3e5fe22061f09acef5e3 = L.geoJson(null, {
|
||||||
|
onEachFeature: geo_json_940573d5dcca3e5fe22061f09acef5e3_onEachFeature,
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
function geo_json_940573d5dcca3e5fe22061f09acef5e3_add (data) {
|
||||||
|
geo_json_940573d5dcca3e5fe22061f09acef5e3
|
||||||
|
.addData(data);
|
||||||
|
}
|
||||||
|
geo_json_940573d5dcca3e5fe22061f09acef5e3_add({"features": [{"geometry": {"coordinates": [[-47.264037338109766, -22.339524535994332], [-47.26401766184665, -22.339560540751183], [-47.26400872414079, -22.339576970425245], [-47.26399979993972, -22.339593449992105], [-47.263990889109174, -22.339609979349202], [-47.26398199151551, -22.33962655838882], [-47.26397310702327, -22.33964318700223], [-47.26396423549601, -22.33965986507852], [-47.26394301077209, -22.339699942622605]], "type": "LineString"}, "id": "0", "properties": {"Dist1": 0.0, "Dist2": 0.0, "Id": 1517, "Length": 21.724783283, "Name": "Projeto"}, "type": "Feature"}, {"geometry": {"coordinates": [[-47.26401505555521, -22.339505666408137], [-47.26400067261975, -22.339531864331477], [-47.26399169682811, -22.339548288742588], [-47.26398273497559, -22.339564762798126], [-47.26397378692751, -22.339581286395244], [-47.263964852547424, -22.339597859430143], [-47.263955931699435, -22.339614481793877], [-47.2639470242459, -22.339631153376615], [-47.263938130048174, -22.339647874066152], [-47.26392924896685, -22.339664643747486], [-47.26392038086145, -22.33968146230347], [-47.263911525590025, -22.339698329615363], [-47.263902683009505, -22.339715245562264], [-47.26389385297623, -22.339732210019946], [-47.26388503534517, -22.33974922286274], [-47.26387622996941, -22.339766283963925], [-47.263867436701474, -22.33978339319349], [-47.26385865539275, -22.339800550419387], [-47.26384988589236, -22.339817755509237], [-47.26384112804865, -22.339835008327928], [-47.26383238170916, -22.339852308737367], [-47.26382364672, -22.339869656597674], [-47.263814922781556, -22.33988705205511], [-47.263806203316406, -22.33990450781026], [-47.26379747315636, -22.339922053442546], [-47.2637887225622, -22.339939707172757], [-47.26377244144222, -22.339972674804095]], "type": "LineString"}, "id": "1", "properties": {"Dist1": 0.0, "Dist2": 0.0, "Id": 1517, "Length": 57.457315127, "Name": "Projeto"}, "type": "Feature"}]});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
geo_json_940573d5dcca3e5fe22061f09acef5e3.addTo(map_6cd088daec204ef6f5b11de0f7d88ab2);
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
var trajeto_json_940573d5dcca3e5fe22061f09acef5e3 = L.geoJson(null, {
|
||||||
|
onEachFeature: geo_json_940573d5dcca3e5fe22061f09acef5e3_onEachFeature,
|
||||||
|
style: function(feature) {
|
||||||
|
return {color: 'red'};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
);
|
||||||
|
function trajeto_json_940573d5dcca3e5fe22061f09acef5e3_add (data) {
|
||||||
|
trajeto_json_940573d5dcca3e5fe22061f09acef5e3.addData(data);
|
||||||
|
}
|
||||||
|
trajeto_json_940573d5dcca3e5fe22061f09acef5e3_add({"features": []});
|
||||||
|
|
||||||
|
trajeto_json_940573d5dcca3e5fe22061f09acef5e3.addTo(map_6cd088daec204ef6f5b11de0f7d88ab2);
|
||||||
|
|
||||||
|
function adicionarGeometria(novaGeometria) {
|
||||||
|
trajeto_json_940573d5dcca3e5fe22061f09acef5e3.addData(novaGeometria);
|
||||||
|
}
|
||||||
|
|
||||||
|
function adicionarCoordenada(idGeometria, novaCoordenada) {
|
||||||
|
// Encontra a feature com o ID correspondente
|
||||||
|
var feature = trajeto_json_940573d5dcca3e5fe22061f09acef5e3.toGeoJSON().features.find(f => f.id === idGeometria);
|
||||||
|
if (feature) {
|
||||||
|
// Adiciona a nova coordenada
|
||||||
|
feature.geometry.coordinates.push(novaCoordenada);
|
||||||
|
var ft = feature;
|
||||||
|
trajeto_json_940573d5dcca3e5fe22061f09acef5e3.clearLayers();
|
||||||
|
trajeto_json_940573d5dcca3e5fe22061f09acef5e3.addData(ft);
|
||||||
|
} else {
|
||||||
|
console.log("Feature com ID " + idGeometria + " não encontrada.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var lat = -47.264100;
|
||||||
|
var lon = -22.339500;
|
||||||
|
function loop() {
|
||||||
|
lat -= 0.0001;
|
||||||
|
lon -= 0.0001;
|
||||||
|
setTimeout(() => {
|
||||||
|
console.log(lat, lon);
|
||||||
|
adicionarCoordenada("2", [lat, lon]);
|
||||||
|
loop();
|
||||||
|
}, 1000);
|
||||||
|
}
|
||||||
|
|
||||||
|
adicionarGeometria({
|
||||||
|
"type": "Feature",
|
||||||
|
"geometry": {
|
||||||
|
"type": "LineString",
|
||||||
|
"coordinates": []
|
||||||
|
},
|
||||||
|
"properties": {"Dist1": 0.0, "Dist2": 0.0, "Id": 1517, "Length": 21.724783283, "Name": "Projeto"},
|
||||||
|
"id": "2"
|
||||||
|
});
|
||||||
|
|
||||||
|
//loop();
|
||||||
|
|
||||||
|
|
||||||
|
</script>
|
||||||
|
</html>
|
||||||
File diff suppressed because one or more lines are too long
|
|
@ -1,60 +1,60 @@
|
||||||
[
|
[
|
||||||
{
|
{
|
||||||
"timestamp": 1706880237.6169794,
|
"timestamp": 1708693386.7077937,
|
||||||
"x_max": 640.0,
|
"x_max": 640.0,
|
||||||
"y_max": 480.0,
|
"y_max": 480.0,
|
||||||
"objetos": []
|
"objetos": []
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"timestamp": 1706880237.6494894,
|
"timestamp": 1708693386.9383512,
|
||||||
"x_max": 640.0,
|
"x_max": 640.0,
|
||||||
"y_max": 480.0,
|
"y_max": 480.0,
|
||||||
"objetos": []
|
"objetos": []
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"timestamp": 1706880237.680491,
|
"timestamp": 1708693387.175393,
|
||||||
"x_max": 640.0,
|
"x_max": 640.0,
|
||||||
"y_max": 480.0,
|
"y_max": 480.0,
|
||||||
"objetos": []
|
"objetos": []
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"timestamp": 1706880237.712496,
|
"timestamp": 1708693387.3979495,
|
||||||
"x_max": 640.0,
|
"x_max": 640.0,
|
||||||
"y_max": 480.0,
|
"y_max": 480.0,
|
||||||
"objetos": []
|
"objetos": []
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"timestamp": 1706880237.744011,
|
"timestamp": 1708693387.6335027,
|
||||||
"x_max": 640.0,
|
"x_max": 640.0,
|
||||||
"y_max": 480.0,
|
"y_max": 480.0,
|
||||||
"objetos": []
|
"objetos": []
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"timestamp": 1706880237.7760315,
|
"timestamp": 1708693387.8615437,
|
||||||
"x_max": 640.0,
|
"x_max": 640.0,
|
||||||
"y_max": 480.0,
|
"y_max": 480.0,
|
||||||
"objetos": []
|
"objetos": []
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"timestamp": 1706880237.8090327,
|
"timestamp": 1708693388.051577,
|
||||||
"x_max": 640.0,
|
"x_max": 640.0,
|
||||||
"y_max": 480.0,
|
"y_max": 480.0,
|
||||||
"objetos": []
|
"objetos": []
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"timestamp": 1706880237.8405545,
|
"timestamp": 1708693388.2460964,
|
||||||
"x_max": 640.0,
|
"x_max": 640.0,
|
||||||
"y_max": 480.0,
|
"y_max": 480.0,
|
||||||
"objetos": []
|
"objetos": []
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"timestamp": 1706880237.8715544,
|
"timestamp": 1708693388.44614,
|
||||||
"x_max": 640.0,
|
"x_max": 640.0,
|
||||||
"y_max": 480.0,
|
"y_max": 480.0,
|
||||||
"objetos": []
|
"objetos": []
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"timestamp": 1706880237.9045656,
|
"timestamp": 1708693388.6351478,
|
||||||
"x_max": 640.0,
|
"x_max": 640.0,
|
||||||
"y_max": 480.0,
|
"y_max": 480.0,
|
||||||
"objetos": []
|
"objetos": []
|
||||||
|
|
|
||||||
|
|
@ -1,60 +1,60 @@
|
||||||
[
|
[
|
||||||
{
|
{
|
||||||
"timestamp": 1708432207.1039248,
|
"timestamp": 1708694028.6505086,
|
||||||
"x_max": 640.0,
|
"x_max": 640.0,
|
||||||
"y_max": 480.0,
|
"y_max": 480.0,
|
||||||
"objetos": []
|
"objetos": []
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"timestamp": 1708432207.3070076,
|
"timestamp": 1708694028.850025,
|
||||||
"x_max": 640.0,
|
"x_max": 640.0,
|
||||||
"y_max": 480.0,
|
"y_max": 480.0,
|
||||||
"objetos": []
|
"objetos": []
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"timestamp": 1708432207.497069,
|
"timestamp": 1708694029.0445433,
|
||||||
"x_max": 640.0,
|
"x_max": 640.0,
|
||||||
"y_max": 480.0,
|
"y_max": 480.0,
|
||||||
"objetos": []
|
"objetos": []
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"timestamp": 1708432207.6906283,
|
"timestamp": 1708694029.2320585,
|
||||||
"x_max": 640.0,
|
"x_max": 640.0,
|
||||||
"y_max": 480.0,
|
"y_max": 480.0,
|
||||||
"objetos": []
|
"objetos": []
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"timestamp": 1708432207.8836892,
|
"timestamp": 1708694029.422578,
|
||||||
"x_max": 640.0,
|
"x_max": 640.0,
|
||||||
"y_max": 480.0,
|
"y_max": 480.0,
|
||||||
"objetos": []
|
"objetos": []
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"timestamp": 1708432208.0787556,
|
"timestamp": 1708694029.6116276,
|
||||||
"x_max": 640.0,
|
"x_max": 640.0,
|
||||||
"y_max": 480.0,
|
"y_max": 480.0,
|
||||||
"objetos": []
|
"objetos": []
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"timestamp": 1708432208.2768304,
|
"timestamp": 1708694029.8051448,
|
||||||
"x_max": 640.0,
|
"x_max": 640.0,
|
||||||
"y_max": 480.0,
|
"y_max": 480.0,
|
||||||
"objetos": []
|
"objetos": []
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"timestamp": 1708432208.4708998,
|
"timestamp": 1708694029.9976623,
|
||||||
"x_max": 640.0,
|
"x_max": 640.0,
|
||||||
"y_max": 480.0,
|
"y_max": 480.0,
|
||||||
"objetos": []
|
"objetos": []
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"timestamp": 1708432208.6789746,
|
"timestamp": 1708694030.199181,
|
||||||
"x_max": 640.0,
|
"x_max": 640.0,
|
||||||
"y_max": 480.0,
|
"y_max": 480.0,
|
||||||
"objetos": []
|
"objetos": []
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"timestamp": 1708432208.8730547,
|
"timestamp": 1708694030.3906984,
|
||||||
"x_max": 640.0,
|
"x_max": 640.0,
|
||||||
"y_max": 480.0,
|
"y_max": 480.0,
|
||||||
"objetos": []
|
"objetos": []
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,33 @@
|
||||||
|
from flask import Flask, request, jsonify
|
||||||
|
from flask_cors import CORS
|
||||||
|
import sys
|
||||||
|
|
||||||
|
apiPort = sys.argv[1]
|
||||||
|
getCordenadasEndpoint = sys.argv[2]
|
||||||
|
setCordenadasEndpoint = sys.argv[3]
|
||||||
|
|
||||||
|
app = Flask(__name__)
|
||||||
|
CORS(app) # Isso habilita o CORS para todas as rotas e origens
|
||||||
|
|
||||||
|
coordenadas = {}
|
||||||
|
|
||||||
|
@app.route(setCordenadasEndpoint, methods=['POST'])
|
||||||
|
def receber_coordenadas():
|
||||||
|
dados = request.json
|
||||||
|
id = dados.get('id')
|
||||||
|
lat = dados.get('latitude')
|
||||||
|
lon = dados.get('longitude')
|
||||||
|
|
||||||
|
coordenadas[id] = {'latitude': lat, 'longitude': lon}
|
||||||
|
|
||||||
|
return jsonify({'status': 'Coordenadas recebidas com sucesso!'})
|
||||||
|
|
||||||
|
@app.route(getCordenadasEndpoint, methods=['GET'])
|
||||||
|
def servir_coordenadas(id):
|
||||||
|
if id in coordenadas:
|
||||||
|
return jsonify(coordenadas[id])
|
||||||
|
else:
|
||||||
|
return jsonify({'error': 'Coordenadas não encontradas!'}), 404
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
app.run(host='0.0.0.0', port=apiPort, debug=True)
|
||||||
|
|
@ -2,67 +2,40 @@ import geopandas as gpd
|
||||||
import json
|
import json
|
||||||
import sys
|
import sys
|
||||||
import folium
|
import folium
|
||||||
|
import requests
|
||||||
|
import re
|
||||||
|
|
||||||
|
def internet_disponivel():
|
||||||
|
"""Verifica se há conexão com a internet."""
|
||||||
|
url = 'http://www.google.com/'
|
||||||
|
timeout = 5
|
||||||
|
try:
|
||||||
|
_ = requests.get(url, timeout=timeout)
|
||||||
|
return True
|
||||||
|
except requests.ConnectionError:
|
||||||
|
return False
|
||||||
|
|
||||||
|
# Argumentos e configurações iniciais
|
||||||
pathFiles = sys.argv[1]
|
pathFiles = sys.argv[1]
|
||||||
fileName = sys.argv[2]
|
fileName = sys.argv[2]
|
||||||
outputName = sys.argv[3]
|
outputName = sys.argv[3]
|
||||||
outputMapName = sys.argv[4]
|
outputMapName = sys.argv[4]
|
||||||
|
apiEndpoit = sys.argv[5]
|
||||||
pastaSaida = 'Python/Output/'
|
pastaSaida = 'Python/Output/'
|
||||||
|
|
||||||
# Carregar o arquivo shapefile contendo a geometria
|
# Carregar o arquivo shapefile contendo a geometria
|
||||||
input_shapefile = pathFiles + fileName + '.shp'
|
input_shapefile = pathFiles + fileName + '.shp'
|
||||||
data_geometry = gpd.read_file(input_shapefile)
|
data_geometry = gpd.read_file(input_shapefile)
|
||||||
|
|
||||||
# Carregar o arquivo DBF com informações adicionais
|
|
||||||
input_dbf = pathFiles + fileName + '.dbf'
|
|
||||||
data_dbf = gpd.read_file(input_dbf)
|
|
||||||
|
|
||||||
# Mesclar as informações do arquivo DBF com o dataframe de geometria
|
|
||||||
data_merged = data_geometry.merge(data_dbf, left_index=True, right_index=True)
|
|
||||||
|
|
||||||
# Escolher uma coluna de geometria
|
|
||||||
geometry_column = 'geometry_y'
|
|
||||||
|
|
||||||
# Criar um novo GeoDataFrame com uma única coluna de geometria
|
|
||||||
data_geodataframe = gpd.GeoDataFrame(data_merged[[geometry_column]], geometry=geometry_column)
|
|
||||||
|
|
||||||
# Criar o campo 'properties' e preencher com as colunas do DataFrame original
|
|
||||||
data_geodataframe['properties'] = data_merged.apply(lambda row: {
|
|
||||||
'Id': row['Id_x'],
|
|
||||||
'Name': row['Name_x'],
|
|
||||||
'Length': row['Length_x'],
|
|
||||||
'Dist1': row['Dist1_x'],
|
|
||||||
'Dist2': row['Dist2_x']
|
|
||||||
}, axis=1)
|
|
||||||
|
|
||||||
# Caminho para salvar o arquivo GEOJson com as informações adicionais
|
|
||||||
output_geojson = pastaSaida + outputName
|
|
||||||
|
|
||||||
# Salvar os dados no formato GEOJson
|
|
||||||
data_geodataframe.to_file(output_geojson, driver='GeoJSON')
|
|
||||||
|
|
||||||
# Abrir o arquivo GeoJSON
|
|
||||||
with open(output_geojson, 'r') as file:
|
|
||||||
data = json.load(file)
|
|
||||||
|
|
||||||
# Iterar sobre as features no arquivo GeoJSON
|
|
||||||
for feature in data['features']:
|
|
||||||
# Obter o dicionário 'properties' dentro de 'properties'
|
|
||||||
properties = feature['properties']['properties']
|
|
||||||
# Remover a camada extra de 'properties'
|
|
||||||
feature['properties'] = properties
|
|
||||||
|
|
||||||
# Salvar o arquivo GeoJSON atualizado
|
|
||||||
with open(output_geojson, 'w') as file:
|
|
||||||
json.dump(data, file)
|
|
||||||
|
|
||||||
# Calcular os limites (bounds) da geometria
|
# Calcular os limites (bounds) da geometria
|
||||||
minx, miny, maxx, maxy = data_geometry.total_bounds
|
minx, miny, maxx, maxy = data_geometry.total_bounds
|
||||||
center = [(miny + maxy) / 2, (minx + maxx) / 2]
|
center = [(miny + maxy) / 2, (minx + maxx) / 2]
|
||||||
|
|
||||||
# Criar um mapa centrado no centro das coordenadas das geometrias
|
# Verificar se há conexão com a internet
|
||||||
m = folium.Map(location=center, zoom_start=12)
|
if internet_disponivel():
|
||||||
|
m = folium.Map(location=center, zoom_start=12)
|
||||||
|
else:
|
||||||
|
m = folium.Map(location=center, zoom_start=12, tiles=None)
|
||||||
|
|
||||||
# Converter o GeoDataFrame para GeoJSON e adicionar ao mapa
|
# Converter o GeoDataFrame para GeoJSON e adicionar ao mapa
|
||||||
geojson_data = data_geometry.to_json()
|
geojson_data = data_geometry.to_json()
|
||||||
|
|
@ -70,3 +43,120 @@ folium.GeoJson(geojson_data).add_to(m)
|
||||||
|
|
||||||
# Salvar o mapa interativo em um arquivo HTML
|
# Salvar o mapa interativo em um arquivo HTML
|
||||||
m.save(pastaSaida + outputMapName)
|
m.save(pastaSaida + outputMapName)
|
||||||
|
|
||||||
|
|
||||||
|
# Caminho completo para o arquivo HTML gerado
|
||||||
|
caminho_completo_html = pastaSaida + outputMapName
|
||||||
|
|
||||||
|
# Abrir o arquivo HTML para leitura e escrita
|
||||||
|
with open(caminho_completo_html, 'r+') as arquivo_html:
|
||||||
|
# Ler o conteúdo do arquivo
|
||||||
|
conteudo_html = arquivo_html.read()
|
||||||
|
|
||||||
|
# Usar expressão regular para encontrar o ID do mapa
|
||||||
|
padrao_id_mapa = re.compile(r'id="map_(.*?)"')
|
||||||
|
resultado_busca = padrao_id_mapa.search(conteudo_html)
|
||||||
|
|
||||||
|
# Verificar se encontrou um ID de mapa
|
||||||
|
if resultado_busca:
|
||||||
|
id_mapa = 'map_' + resultado_busca.group(1)
|
||||||
|
else:
|
||||||
|
raise ValueError("Não foi possível encontrar o ID do mapa no arquivo HTML.")
|
||||||
|
|
||||||
|
# Script JavaScript para adicionar ao HTML, com o ID do mapa substituído
|
||||||
|
script_atualizacao_marcador = f"""
|
||||||
|
<script>
|
||||||
|
function trajeto_json_onEachFeature(feature, layer) {{
|
||||||
|
layer.on({{
|
||||||
|
}});
|
||||||
|
}};
|
||||||
|
var trajeto_json = L.geoJson(null, {{
|
||||||
|
onEachFeature: trajeto_json_onEachFeature,
|
||||||
|
style: function(feature) {{
|
||||||
|
return {{color: 'red'}};
|
||||||
|
}}
|
||||||
|
}}
|
||||||
|
);
|
||||||
|
function trajeto_json_add (data) {{
|
||||||
|
trajeto_json.addData(data);
|
||||||
|
}}
|
||||||
|
trajeto_json_add({{"features": []}});
|
||||||
|
|
||||||
|
trajeto_json.addTo({id_mapa});
|
||||||
|
|
||||||
|
function adicionarGeometria(novaGeometria) {{
|
||||||
|
trajeto_json.addData(novaGeometria);
|
||||||
|
}}
|
||||||
|
|
||||||
|
function saoCoordenadasIguais(coord1, coord2, tolerancia) {{
|
||||||
|
return Math.abs(coord1[0] - coord2[0]) < tolerancia && Math.abs(coord1[1] - coord2[1]) < tolerancia;
|
||||||
|
}}
|
||||||
|
|
||||||
|
function adicionarCoordenada(idGeometria, novaCoordenada) {{
|
||||||
|
var feature = trajeto_json.toGeoJSON().features.find(f => f.id === idGeometria);
|
||||||
|
if (feature) {{
|
||||||
|
var ultima = [0.0,0.0];
|
||||||
|
if (feature.geometry.coordinates.length > 0) {{
|
||||||
|
ultima = feature.geometry.coordinates[feature.geometry.coordinates.length - 1];
|
||||||
|
}}
|
||||||
|
if (!saoCoordenadasIguais(ultima, novaCoordenada, 0.000001)) {{
|
||||||
|
feature.geometry.coordinates.push(novaCoordenada);
|
||||||
|
var ft = feature;
|
||||||
|
trajeto_json.clearLayers();
|
||||||
|
trajeto_json.addData(ft);
|
||||||
|
}}
|
||||||
|
|
||||||
|
}} else {{
|
||||||
|
console.log("Feature com ID " + idGeometria + " não encontrada.");
|
||||||
|
}}
|
||||||
|
}}
|
||||||
|
|
||||||
|
adicionarGeometria({{
|
||||||
|
"type": "Feature",
|
||||||
|
"geometry": {{
|
||||||
|
"type": "LineString",
|
||||||
|
"coordinates": []
|
||||||
|
}},
|
||||||
|
"properties": {{"Dist1": 0.0, "Dist2": 0.0, "Id": 1517, "Length": 21.724783283, "Name": "Projeto"}},
|
||||||
|
"id": "Tj"
|
||||||
|
}});
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
var marcadorDinamico = L.marker([0, 0], {{
|
||||||
|
icon: L.AwesomeMarkers.icon({{
|
||||||
|
icon: 'info-sign',
|
||||||
|
markerColor: 'red',
|
||||||
|
prefix: 'glyphicon'
|
||||||
|
}})
|
||||||
|
}}).addTo({id_mapa});
|
||||||
|
|
||||||
|
function atualizarMarcador() {{
|
||||||
|
fetch('{apiEndpoit}')
|
||||||
|
.then(function(response) {{
|
||||||
|
return response.json();
|
||||||
|
}})
|
||||||
|
.then(function(dados) {{
|
||||||
|
var novaLatitude = dados.latitude;
|
||||||
|
var novaLongitude = dados.longitude;
|
||||||
|
var novaPosicao = [novaLatitude, novaLongitude];
|
||||||
|
marcadorDinamico.setLatLng(novaPosicao);
|
||||||
|
adicionarCoordenada("Tj", [novaLongitude, novaLatitude]);
|
||||||
|
}})
|
||||||
|
.catch(function(error) {{
|
||||||
|
console.error('Erro ao atualizar o marcador:', error);
|
||||||
|
}});
|
||||||
|
}}
|
||||||
|
|
||||||
|
// Atualiza o marcador a cada 2 segundos
|
||||||
|
setInterval(atualizarMarcador, 2000);
|
||||||
|
</script>
|
||||||
|
"""
|
||||||
|
|
||||||
|
# Inserir o script no conteúdo HTML
|
||||||
|
conteudo_atualizado = conteudo_html.replace('</html>', script_atualizacao_marcador + '</html>')
|
||||||
|
|
||||||
|
# Agora, reabrir o arquivo para escrita e sobrescrever o conteúdo com a versão atualizada
|
||||||
|
with open(caminho_completo_html, 'w') as arquivo_html:
|
||||||
|
arquivo_html.write(conteudo_atualizado)
|
||||||
|
|
@ -1 +1 @@
|
||||||
{"Conectado":false,"QuantidadeBicos":4,"AtuacaoNivelAlto":false,"BicosPulverizadores":[{"ID":"B01","Posicao":1,"Atuado":false,"Comandar":false,"Inicializado":false,"Testando":false,"Funcoes":[21],"StatusBico":false,"MediaNivelFluxo":0.0},{"ID":"B02","Posicao":2,"Atuado":false,"Comandar":false,"Inicializado":false,"Testando":false,"Funcoes":[21],"StatusBico":false,"MediaNivelFluxo":0.0},{"ID":"B03","Posicao":3,"Atuado":false,"Comandar":false,"Inicializado":false,"Testando":false,"Funcoes":[21],"StatusBico":false,"MediaNivelFluxo":0.0},{"ID":"B04","Posicao":4,"Atuado":false,"Comandar":false,"Inicializado":false,"Testando":false,"Funcoes":[21],"StatusBico":false,"MediaNivelFluxo":0.0},{"ID":"B05","Posicao":5,"Atuado":false,"Comandar":false,"Inicializado":false,"Testando":false,"Funcoes":[21],"StatusBico":false,"MediaNivelFluxo":0.0},{"ID":"B06","Posicao":6,"Atuado":false,"Comandar":false,"Inicializado":false,"Testando":false,"Funcoes":[21],"StatusBico":false,"MediaNivelFluxo":0.0},{"ID":"B07","Posicao":7,"Atuado":false,"Comandar":false,"Inicializado":false,"Testando":false,"Funcoes":[21],"StatusBico":false,"MediaNivelFluxo":0.0},{"ID":"B08","Posicao":8,"Atuado":false,"Comandar":false,"Inicializado":false,"Testando":false,"Funcoes":[21],"StatusBico":false,"MediaNivelFluxo":0.0},{"ID":"B09","Posicao":9,"Atuado":false,"Comandar":false,"Inicializado":false,"Testando":false,"Funcoes":[21],"StatusBico":false,"MediaNivelFluxo":0.0},{"ID":"B10","Posicao":10,"Atuado":false,"Comandar":false,"Inicializado":false,"Testando":false,"Funcoes":[21],"StatusBico":false,"MediaNivelFluxo":0.0}],"Sensores":[{"LogGrafico":[],"ID":"FLXLN","Prioridade":10,"Descricao":"Fluxo na linha principal","Componente":198,"Aferir":false,"DelayAmostragem":200,"Inicializado":false,"Testando":false,"Funcoes":[25],"Parametros":[["Calibragem","00450"]],"UnidadeMedida":"L/m","Leituras":[0.0,0.0],"ValorMinimo":0.0,"ValorMaximo":26.67,"LimiteMaximo":0.0,"LimiteMinimo":0.0},{"LogGrafico":[],"ID":"MASRS","Prioridade":3,"Descricao":"Massa do reservatório de herbicida","Componente":532,"Aferir":false,"DelayAmostragem":1000,"Inicializado":false,"Testando":false,"Funcoes":[22,23],"Parametros":[],"UnidadeMedida":"Kg","Leituras":null,"ValorMinimo":0.0,"ValorMaximo":0.0,"LimiteMaximo":25.0,"LimiteMinimo":3.0},{"LogGrafico":[],"ID":"PRSLN","Prioridade":3,"Descricao":"Pressão na linha principal","Componente":333,"Aferir":true,"DelayAmostragem":1000,"Inicializado":false,"Testando":false,"Funcoes":[24],"Parametros":[],"UnidadeMedida":"psi","Leituras":[0.4,337.0],"ValorMinimo":0.0,"ValorMaximo":0.77,"LimiteMaximo":0.0,"LimiteMinimo":0.0}],"PercentualInicioPulverizacao":0.3,"MassaReservatorio":0.0,"PercentualReservatorio":0.0,"MediaNivelFluxo":0.0,"PressaoLinha":0.4}
|
{"Conectado":false,"QuantidadeBicos":4,"DensidadeHerbicida":0.0,"CapacidadeReservatorio":30.0,"AtuacaoNivelAlto":false,"BicosPulverizadores":[{"ID":"B01","Posicao":1,"Atuado":false,"Comandar":false,"Inicializado":false,"Testando":false,"Funcoes":[21],"StatusBico":false,"MediaNivelFluxo":0.0},{"ID":"B02","Posicao":2,"Atuado":false,"Comandar":false,"Inicializado":false,"Testando":false,"Funcoes":[21],"StatusBico":false,"MediaNivelFluxo":0.0},{"ID":"B03","Posicao":3,"Atuado":false,"Comandar":false,"Inicializado":false,"Testando":false,"Funcoes":[21],"StatusBico":false,"MediaNivelFluxo":0.0},{"ID":"B04","Posicao":4,"Atuado":false,"Comandar":false,"Inicializado":false,"Testando":false,"Funcoes":[21],"StatusBico":false,"MediaNivelFluxo":0.0},{"ID":"B05","Posicao":5,"Atuado":false,"Comandar":false,"Inicializado":false,"Testando":false,"Funcoes":[21],"StatusBico":false,"MediaNivelFluxo":0.0},{"ID":"B06","Posicao":6,"Atuado":false,"Comandar":false,"Inicializado":false,"Testando":false,"Funcoes":[21],"StatusBico":false,"MediaNivelFluxo":0.0},{"ID":"B07","Posicao":7,"Atuado":false,"Comandar":false,"Inicializado":false,"Testando":false,"Funcoes":[21],"StatusBico":false,"MediaNivelFluxo":0.0},{"ID":"B08","Posicao":8,"Atuado":false,"Comandar":false,"Inicializado":false,"Testando":false,"Funcoes":[21],"StatusBico":false,"MediaNivelFluxo":0.0},{"ID":"B09","Posicao":9,"Atuado":false,"Comandar":false,"Inicializado":false,"Testando":false,"Funcoes":[21],"StatusBico":false,"MediaNivelFluxo":0.0},{"ID":"B10","Posicao":10,"Atuado":false,"Comandar":false,"Inicializado":false,"Testando":false,"Funcoes":[21],"StatusBico":false,"MediaNivelFluxo":0.0}],"Sensores":[{"LogGrafico":[],"ID":"FLXLN","Prioridade":10,"Descricao":"Fluxo na linha principal","Componente":198,"Aferir":false,"DelayAmostragem":200,"Inicializado":false,"Testando":false,"Funcoes":[25],"Parametros":[["Calibragem","00450"]],"UnidadeMedida":"L/m","Leituras":[0.0,0.0],"ValorMinimo":0.0,"ValorMaximo":26.67,"LimiteMaximo":0.0,"LimiteMinimo":0.0},{"LogGrafico":[],"ID":"MASRS","Prioridade":3,"Descricao":"Massa do reservatório de herbicida","Componente":532,"Aferir":false,"DelayAmostragem":1000,"Inicializado":false,"Testando":false,"Funcoes":[22,23],"Parametros":[],"UnidadeMedida":"Kg","Leituras":null,"ValorMinimo":0.0,"ValorMaximo":0.0,"LimiteMaximo":25.0,"LimiteMinimo":3.0},{"LogGrafico":[],"ID":"PRSLN","Prioridade":3,"Descricao":"Pressão na linha principal","Componente":333,"Aferir":true,"DelayAmostragem":1000,"Inicializado":false,"Testando":false,"Funcoes":[24],"Parametros":[],"UnidadeMedida":"psi","Leituras":[0.4,337.0],"ValorMinimo":0.0,"ValorMaximo":0.77,"LimiteMaximo":0.0,"LimiteMinimo":0.0}],"PercentualInicioPulverizacao":0.3,"MassaReservatorio":0.0,"VolumeReservatorio":0.0,"PercentualReservatorio":0.0,"MediaNivelFluxo":0.0,"PressaoLinha":0.4}
|
||||||
Binary file not shown.
Binary file not shown.
|
|
@ -1 +1 @@
|
||||||
9afcf39e89a0c933d00d28453c0540cd2a653d67fc4cba20e1c1f33dc48d9754
|
34d3ac2f5f9f7d9ebbd9347a15a7e200bdba0f7644c8b3c44ce75579b5cf120b
|
||||||
|
|
|
||||||
|
|
@ -417,3 +417,4 @@ C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\Utils\offline_maps\script
|
||||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\Utils\offline_maps\style.css
|
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\Utils\offline_maps\style.css
|
||||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\Utils\offline_maps\webStorage.js
|
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\Utils\offline_maps\webStorage.js
|
||||||
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\Utils\offline_maps\appcache.manifest
|
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\Utils\offline_maps\appcache.manifest
|
||||||
|
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\Python\Scripts\api.py
|
||||||
|
|
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
|
@ -0,0 +1,19 @@
|
||||||
|
import json
|
||||||
|
|
||||||
|
# Substitua isso pelo seu JSON original
|
||||||
|
trajeto_json = {"features": [{"geometry": {"coordinates": [[-47.264037338109766, -22.339524535994332], [-47.26401766184665, -22.339560540751183], [-47.26400872414079, -22.339576970425245], [-47.26399979993972, -22.339593449992105], [-47.263990889109174, -22.339609979349202], [-47.26398199151551, -22.33962655838882], [-47.26397310702327, -22.33964318700223], [-47.26396423549601, -22.33965986507852], [-47.26394301077209, -22.339699942622605]], "type": "LineString"}, "id": "0", "properties": {"Dist1": 0.0, "Dist2": 0.0, "Id": 1517, "Length": 21.724783283, "Name": "Projeto"}, "type": "Feature"}, {"geometry": {"coordinates": [[-47.26401505555521, -22.339505666408137], [-47.26400067261975, -22.339531864331477], [-47.26399169682811, -22.339548288742588], [-47.26398273497559, -22.339564762798126], [-47.26397378692751, -22.339581286395244], [-47.263964852547424, -22.339597859430143], [-47.263955931699435, -22.339614481793877], [-47.2639470242459, -22.339631153376615], [-47.263938130048174, -22.339647874066152], [-47.26392924896685, -22.339664643747486], [-47.26392038086145, -22.33968146230347], [-47.263911525590025, -22.339698329615363], [-47.263902683009505, -22.339715245562264], [-47.26389385297623, -22.339732210019946], [-47.26388503534517, -22.33974922286274], [-47.26387622996941, -22.339766283963925], [-47.263867436701474, -22.33978339319349], [-47.26385865539275, -22.339800550419387], [-47.26384988589236, -22.339817755509237], [-47.26384112804865, -22.339835008327928], [-47.26383238170916, -22.339852308737367], [-47.26382364672, -22.339869656597674], [-47.263814922781556, -22.33988705205511], [-47.263806203316406, -22.33990450781026], [-47.26379747315636, -22.339922053442546], [-47.2637887225622, -22.339939707172757], [-47.26377244144222, -22.339972674804095]], "type": "LineString"}, "id": "1", "properties": {"Dist1": 0.0, "Dist2": 0.0, "Id": 1517, "Length": 57.457315127, "Name": "Projeto"}, "type": "Feature"}]}
|
||||||
|
|
||||||
|
offset_latitude = 0.0000102 # Aproximadamente 75cm em latitude
|
||||||
|
offset_longitude = 0.0000102 # Aproximadamente 75cm em longitude, simplificação
|
||||||
|
|
||||||
|
# Aplicar offset a cada coordenada
|
||||||
|
for feature in trajeto_json['features']:
|
||||||
|
for i, coord in enumerate(feature['geometry']['coordinates']):
|
||||||
|
# Aplicando o offset
|
||||||
|
coord[0] += offset_longitude # Longitude
|
||||||
|
coord[1] += offset_latitude # Latitude
|
||||||
|
|
||||||
|
# Convertendo o objeto modificado de volta para JSON
|
||||||
|
trajeto_json_modificado = json.dumps(trajeto_json)
|
||||||
|
|
||||||
|
print(trajeto_json_modificado)
|
||||||
Loading…
Reference in New Issue