agrobot_base/AgroBase/AgroBase/Services/MapasService.cs

100 lines
3.5 KiB
C#

using AgroBase.Models;
using Newtonsoft.Json;
using System;
using System.Diagnostics;
using System.IO;
using System.Net.Http;
using System.Text;
using System.Windows.Forms;
namespace AgroBase.Services
{
public static class MapasVariaveisModel
{
public static string NomeArquivoMapaInterativo = "mapa_interativo.html";
public static string NomeArquivoMapaInterativoSaida = "GeoJson.json";
public static string NomeArquivoMapaGPS = "mapa_gps.html";
public static string TopicoCoordenadasGPS = "coordenadas_gps";
public static string TopicoSelecaoRuasMapa = "selecao_ruas_mapa";
public static string TopicoTrajetoriaDinamica = "trajetoria_dinamica";
}
public class MapasService
{
OpenFileDialog opfMapa;
public Process pythonProcess;
private string CaminhoSaida = Variaveis.CaminhoSistema + PythonService.CaminhoGeral + PythonService.CaminhoLeitura;
public string NomeArquivoMapa = "";
public string NomeArquivos = "";
public string CaminhoMapa = "";
public string ArquivoSaida = "";
public string MapaUrl = "";
public string CaminhoDadosMapa = "";
public MapaFeatureCollectionModel DadosMapa;
public bool Carregado = false;
public void CarregarMapa(string nomeArquivoMapa, string nomeArquivoSaida)
{
NomeArquivoMapa = nomeArquivoMapa;
ArquivoSaida = nomeArquivoSaida;
opfMapa = new OpenFileDialog
{
DefaultExt = ".shp",
Filter = "Shapefile (*.shp)|*.shp",
Title = "Selecionar arquivo de mapa"
};
if (opfMapa.ShowDialog() == DialogResult.OK)
{
NomeArquivos = opfMapa.FileName.Split('\\')[opfMapa.FileName.Split('\\').Length - 1].Split('.')[0];
CaminhoMapa = opfMapa.FileName.Substring(0, opfMapa.FileName.Length - NomeArquivos.Length - 4).Replace("\\", "/");
pythonProcess = PythonService.RunScript(PythonService.ScriptMapConverter, new string[] {
CaminhoMapa,
NomeArquivos,
ArquivoSaida,
NomeArquivoMapa,
MapasVariaveisModel.TopicoCoordenadasGPS,
MapasVariaveisModel.TopicoSelecaoRuasMapa,
MapasVariaveisModel.TopicoTrajetoriaDinamica,
});
MapaUrl = new Uri(CaminhoSaida + NomeArquivoMapa).AbsoluteUri;
CaminhoDadosMapa = CaminhoSaida + ArquivoSaida;
}
}
public void CarregarMapaGPS(string nomeArquivoMapa)
{
NomeArquivoMapa = nomeArquivoMapa;
pythonProcess = PythonService.RunScript(PythonService.ScriptMapGPS, new string[] {
CaminhoMapa,
NomeArquivos,
ArquivoSaida,
NomeArquivoMapa,
MapasVariaveisModel.TopicoCoordenadasGPS
});
MapaUrl = new Uri(CaminhoSaida + NomeArquivoMapa).AbsoluteUri;
CaminhoDadosMapa = CaminhoSaida + ArquivoSaida;
}
public void CarregarDadosMapa()
{
var dados = File.ReadAllText(CaminhoDadosMapa);
DadosMapa = JsonConvert.DeserializeObject<MapaFeatureCollectionModel>(dados);
int i = 0;
DadosMapa.features.ForEach(feature =>
{
feature.geometry.id = i.ToString();
i++;
});
}
}
}