Ver Mensaje Individual
  #5  
Antiguo 09-01-2018
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.271
Reputación: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por lago Ver Mensaje
Hola Neftalí, gracias por responder tan rápido y por tu ejemplo! más o menos es lo que he hecho. Mi problema es que necesito un DBGrid con tooooodos los puntos independientemente del track que sea.
Directamente no.
Pero se solventa realizando iun recorrido de todos los segmentos y a su vez un recorrido de todos los puntos de cada segmente.
Puedes usar un TClientDataset, pore ejemplo, para almacenarlos todos.

Algo así:

Código Delphi [-]
procedure TForm2.Button1Click(Sender: TObject);
begin
  cdsAllPoints.CreateDataSet;
  cdsAllPoints.OPen;

  cdsSegment.First;
  while (not cdsSegment.Eof) do begin
    cdsPuntos.First;
    Memo1.Lines.Add('Segmento: ' + cdsSegment.FieldByName('name').AsString);
    Memo1.Lines.Add('   ->' + IntToStr(cdsPuntos.RecordCount) + ' puntos');
    while (not cdsPuntos.Eof) do begin
      // Añadirlo ---------------------------
      cdsAllPoints.Append;
      cdsAllPoints.FieldByName('lat').AsString := cdsPuntos.FieldByName('lat').AsString;
      cdsAllPoints.FieldByName('lon').AsString := cdsPuntos.FieldByName('lon').AsString;
      cdsAllPoints.FieldByName('ele').AsString := cdsPuntos.FieldByName('ele').AsString;
      cdsAllPoints.FieldByName('time').AsString := cdsPuntos.FieldByName('time').AsString;
      cdsAllPoints.Post;
      //-------------------------------------
      cdsPuntos.Next;
    end;
    cdsSegment.Next;
  end;
  Memo1.Lines.Add('TOTAL DE PUNTOS: ' + IntToStr(cdsAllPoints.RecordCount));
end;

cdsAllPoints es un TClientDataset con 4 campos (lat, lon, ele y time).

Por lo que he visto no es que sea al perder señal, sino cada 500 puntos.
Muchos dispositivos antiguos (sobre todo Garmin que se consideran estandard) almacenaban como máximo 500 puntos por track. Sea uno de estos o sea uno nuevo que lo haga por compatibilidad, el tuyo está generando diferentes segmentos cuando llega a ese límite.

Crea un nuevo dataset como te he dicho y con ese procedimiento puedes hacer el recorrido.
El resultado es el siguiente:

-------------------------------
Segmento: T6758644-0
->500 puntos
Segmento: T6758644-1
->500 puntos
Segmento: T6758644-2
->500 puntos
Segmento: T6758644-3
->500 puntos
Segmento: T6758644-4
->500 puntos
Segmento: T6758644-5
->500 puntos
Segmento: T6758644-6
->500 puntos
Segmento: T6758644-7
->357 puntos

TOTAL DE PUNTOS: 3857


-------------------------------
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita