▻★★★ Blog sobre el lenguaje de programación delphi, incluye software, tutoriales, aplicaciones, videos, código fuente, trucos (about delphi, tips, tutorials, applications, source code, advanced programs, code snippets )
Software para espeleología y topografía
Está diseñado en torno al concepto Toporobot (un estándar en espeleología) y es compatible con él.
El software está desarrollado con Lázarus. Se requiere un paquete rxfpc.
Aparte de la naturaleza altamente especializada de GHTopo, uno puede encontrar módulos interesantes:
- Cálculo de matrices
- Conversor de las coordenadas geográficas
- Evaluador de expresiones
- Diagrama de viento Rose
- Uso Tachard
- Visualización OpenGL
- Exportación de software de mapas (Google Maps ...)
Código fuente
App para Android finalista del premio Datatón 2018
Les comunico que la app que he realizado llamada "GPS TOTAL RUN" (para Android) ha quedado finalista en los premios DATATÓN 2018 organizados por el Instituto Geográfico Nacional y la Escuela Técnica Superior en Topografía, Geodesia y Cartografía de Madrid.
Creo que es un magnífico ejemplo de lo que se puede llegar a hacer cuando se combina Google Maps, Google StreetView, MAPS javascript API, Android API, OpenStreetMap, PHP, Webservice, HTML5 y la utilización de los sensores del dispositivo (GPS, Inclinómetro, acelerómetro, hall).
Después de haber realizado esta app me he dado cuenta de la potencia, agilidad y facilidad de uso del lenguaje Delphi al programar aplicaciones móviles y animo a los lectores de este blog a que lo prueben y lo comparen con otros lenguajes y sistemas.
Esta app sirve para registrar las rutas que se hacen cuando se está en un vehículo, se hace senderismo o cuando se hace running, también puede cargar rutas en formato KML, GPX y mostrarlas en un visor junto a nuestra posición actual.
Además incorpora más de 30 utilidades que hacen exprimir al máximo el GPS del dispositivo.
DESCRIPCIÓN DE SUS FUNCIONES
- RUTAS: Si haces running, bicicleta o algún otro deporte puedes almacenar la ruta que has realizado, para luego verla en un mapa. Se graba la hora de inicio, hora de fin, duración, distancia, velocidad media, velocidad máxima, desnivel, minutos por Km, altitud máxima y mínima, tiempo en reposo y tiempo en movimiento, etc.
Exporta la ruta al formato GPX, KML y CSV.
Importa rutas del GPS Garmin.
Importa rutas desde la web de Wikiloc en formato GPX, KML.
El usuario puede enviar un link de la ruta para que otros usuarios si lo desean puedan seguirle.
Permite ajustar la ruta a la carretera (evitando los típicos zigzags de los gps)
Colorea la ruta indicando en qué tramos has ido más rápido o más lento.
Muestra gráficos de altitud y velocidad de la ruta.
Graba la ruta en segundo plano.
- ESTADÍSTICAS: Por día, semana y mes y por tipo de actividad.
Informando de los Km. recorridos, tiempo, ritmo y calorías.
- TIEMPOS: Después de hacer varias rutas te informa del tiempo que has tardado en hacer 500 m, 1000 m., 1500 m. etc. en cada una de ellas y lo muestra en un gráfico.
UTILIDADES RELACIONADAS CON EL GPS
- NAVEGACIÓN POR VOZ (selecciona la mejor ruta en coche, a pie o en transporte público)
- CALCULA RUTA ENTRE DOS PUNTOS y muestra indicaciones en texto.
- ELEVACIÓN: Muestra la elevación del terreno a lo largo de una ruta.
- PANEL DE NAVEGACIÓN: Muestra latitud, longitud, velocidad, distancia, aceleración, rumbo, altitud y presión del aire.
- SATÉLITES: Informa del número de satélites que usa el sensor GPS (con indicación de la potencia de la señal, azimut, elevación y país de origen del satélite)
Permite ver en un gráfico cómo varía con el tiempo la potencia de la señal de cada satélite.
- PUNTOS DE INTERÉS: Permite almacenar todos los puntos de interés que necesites (coordenadas, descripción, altitud, tipo de marcador, etc.
- ALTÍMETRO: Obtiene la altitud de 3 maneras: consultando Google Maps, según el dato de la altitud del GPS y midiendo la variación de la presión atmosférica.
- BRÚJULA: Informa del rumbo y del campo magnético.
- PARÁMETROS SOLARES: Muestra la hora del amanecer, el mediodía, minutos de luz, el zenit, azimut, elevación y declinación solar para cada minuto del día con calendario perpetuo.
- TRÁFICO: Visualiza la información del tráfico de tu ciudad en tiempo real.
- METRO: Muestra en el mapa el plano del metro.
- MAPAS OFFLINE: Descarga en tu móvil mapas offline.
- CALCULADORA GEOGRÁFICA. Convierte coordenadas en grados, minutos y segundos a grados / UTM y viceversa.
- SENSORES: Muestra todos los sensores que tiene el dispositivo y los valores que capturan cada uno de ellos.
- EXPORTA rutas y puntos de interés.
- IMPORTA RUTAS desde Wikiloc o desde el GPS Garmin.
- INFORMA DEL ESTADO DEL GPS. Indica coordenadas en Grados, minutos, segundos y UTM, bearing, precisión, first fix, zona UTM, meridiano central de la zona, hora GPS, zona GMT.
- PARKING: Sitúa en el mapa el lugar de estacionamiento del vehículo, permite hacer fotos y añadir una descripción.
- CUADRÍCULA: Muestra el mapa con indicación de la latitud y longitud a intervalos y se actualiza según el zoom del mapa.
- ACTUALIZA DATOS AGPS del dispositivo y si el dispositivo está rooteado añade nuevas utilidades.
- MIDE LONGITUDES / ÁREAS dibujando la ruta sobre el mapa.
- OBTIENE LAS COORDENADAS haciendo clic sobre el mapa.
En la mayoría de los módulos hay paneles de ayuda que te describen con detalle sus características.
Para personas con visión reducida, incorpora la opción de leer en voz alta los parámetros de las pantallas.
Si quieren más información pueden descargarse el siguiente manual
Si desean contactarme para la realización de apps similares pueden enviarme un email a blogdelphimagic@gmail.com.
Nueva versión de la app GPS TOTAL RUN
Ya pueden descargar la nueva versión de la app gratuita y sin publicidad GPS TOTAL RUN (Android).
Para los que aún no la conozcan es una app que he programado con RAD Studio 10.3.3 que sirve para grabar las rutas que realizamos cuando hacemos deporte, vamos en bici, hacemos un viaje,etc.
Permite utilizar dispositivos Bluetooth LE, para obtener las pulsaciones por minuto, o la cadencia de pedaleo cuando hacemos rutas en bicicleta.
Se pueden hacer estadísticas por dias, semanas, meses y también hace cálculo de tiempos por tramos en 27 actividades distintas.
Tiene más de 30 utilidades:
Actualiza datos AGPS, información de 15 parámetros del GPS, cálculo de UTM, brújula, hora en la que amanece, anochece en un calendario perpetuo, altímetro, mapas del Instituto Geográfico Nacional de España, creación de puntos de interés, mapas offline, información de los sensores del dispositivo, etc...
En la última versión incorporo varias novedades:
- Permite compartir la ruta en tiempo real a tus contactos, por email, por whastapp, etc...
lo que te da seguridad en caso de que ocurra algún problema.
- Se puede enviar la ruta en formato kml, para que se pueda abrir desde Google Earth directamente.
- Cientos de rutas realizadas en varios países (Brasil, Argentina, Chile, México, Perú, Colombia, Francia, Italia, Portugal, etc...) con mapas interactivos de openstreetmap y opentopomap.
- Permite medir distancias y calcular áreas sobre mapas.
- Se mejora el módulo que calcula el sobrepeso, mostrando cuántos kilos nos sobran para llegar a un peso normal.
- Medida del riesgo cardiovascular: indica el tanto por ciento de
posibilidades de sufrir un accidente cardio-vascular, en función de
varios parámetros (sexo, edad, diabetes, presión arterial,
etc...).
Si les gusta la app y creen que puede ser de utilidad les agradecería que la difundan en sus redes sociales.
Pantallas de la app:
Mostrar marcadores en un mapa desde un fichero de coordenadas
Esta utilidad lo que hace es leer las coordenadas almacenadas en un fichero para mostrarlas en un mapa utilizando nuestro lenguaje de programación de confianza Delphi 10.4.1
El archivo de origen se llamará "datos.csv" y tendrá 4 campos separados por un punto y coma.
El formato será el siguiente :
<población>;<latitud>;<longitud>;<fecha>
Se puede utilizar la api de google maps, pero he preferido utilizar leaflet (que es gratuito), para ello creo una plantilla del archivo html que mostrará el mapa y voy sustituyendo dentro de los tokens marcados como "#1#", "#2#", etc... los valores que corresponda según el fichero de coordenadas "datos.csv"
Leaflet es una biblioteca javascript open-source que permite hacer mapas interactivos de una forma muy sencilla. La utilizan miles de sitios web debido a su gran simplicidad, rendimiento y usabilidad, además tiene una gran cantidad de plugins y permite escribir código que es legible y bien documentado.
A continuación pasaremos a explicar por encima el código:
Inicialmente cargamos el fichero "datos.csv" y lo guardamos en un tMemo.
Memo2.Lines.Clear;
fich := tstringlist.Create;
TRY
fich.LoadFromFile('datos.csv', tencoding.ANSI);
Memo2.Text := fich.Text;
FINALLY
fich.Free;
END;
----
Después procedo a leer línea a línea el fichero, almaceno los campos de cada línea en las variables t1,t2,t3 y sustituimos dichos valores en la línea :
html := html + 'L.marker([' + t2 + ',' + t3 + ']).addTo(map).bindPopup(''' + t1 + ''');' + chr(13) + chr(10);
---
"L.marker" es una función javascript de la librería leaflet que lo que hacer es poner un marcador en el mapa.
Ej. L.marker([lat,long]).addTo(map).bindPopup(<texto>)
Con todos los marcadores creados según la instrucción anterior, los guardo en la variable html y procedo a sustituir el token #1# por todo lo que haya en html
Memo1.Text := stringreplace(Memo1.Text, '#1#', html, [rfreplaceAll]);
Y para finalizar enviamos el Memo1.text al componente WebBrowser1 que será el encargado de mostrar el mapa con los marcadores
WebBrowser1.Navigate('about:blank');
WebBrowser1.Loadfromstrings(Memo1.Text, '');
----
Como siempre les dejo el código fuente y el ejecutable:
Este programa está realizado por Javier Pareja con Delphi 10.4.1
Google Static Map con Delphi
El servicio Google Static Map permite obtener una imagen estática de una localización sin requerir Javascript y sin cargar ninguna página web. Este servicio crea un mapa basado en los parámetros de la URL enviados desde una petición HTTP estándar.
Lo único que necesitamos es un componente TidHttp y un Timage.
Primeramente necesitamos poner la propiedad UserAgent de TidHttp p.ej: Mozilla/3.0, después se necesita construir la url con los parámetros correctos como puede ser lo siguiente:
http://maps.google.com/maps/api/staticmap?center=40.714728,-73.998672&zoom=12&size=400x400&sensor=falseAhora utilizando el componente TidHttp enviamos la Url anterior y obtenemos la imagen del mapa.
var
StreamData :TMemoryStream;
JPEGImage : TJPEGImage;
begin
EditURL.Text:=buildUrl; //Construye la url con los parámetros
StreamData := TMemoryStream.Create;
JPEGImage := TJPEGImage.Create;
try
try
idhttp1.Get(EditURL.Text, StreamData); /Envía la petición y obtiene la imagen
StreamData.Seek(0,soFromBeginning);
JPEGImage.LoadFromStream(StreamData);//carga la imagen en el stream
ImageMap.Picture.Assign(JPEGImage);//Asigna la imagen al objeto ImageMap
Except On E : Exception Do
MessageDlg('Exception: '+E.Message,mtError, [mbOK], 0);
End;
finally
StreamData.free;
JPEGImage.Free;
end;
end;
Código fuente
Guía para desarrolladores de Google Static Map
http://code.google.com/intl/es-US/apis/maps/documentation/staticmaps/
Integrar GoogleEarth en una aplicación Delphi
En esta web indican cómo integrar GoogleEarth en una aplicación realizada con Delphi. De antemano advierto que no es sencillo, es necesario seguir paso a paso cada uno de los 5 apartados en que se divide la explicación, lo bueno que tiene es que dan el código fuente.
Para que funcione hay que instalar el plugin de GoogleEarth, en caso de que no tenerlo, al iniciar la aplicación te muestra una pantalla desde la que se puede descargar.
Probado en Delphi 7.
Explicación (en inglés):
http://www.delphidabbler.com/articles?article=26&part=1
Código fuente:
http://www.delphidabbler.com/download?id=art-26
Ver mapa de Google Maps dando coordenadas
Con este código veremos el mapa de Google Maps, tecleando las coordenadas de un punto de la Tierra (latitud y longitud) tanto si son en el sistema decimal o sexagesimal.
Lo interesante de esto es que uno mismo puede combinar los datos de su GPS portátil con GMaps.
Se necesita obtener una Key (la da Google gratuitamente) desde aquí:http://code.google.com/apis/maps/signup.html
Se necesita naturalmente tener una cuenta de Google.
Link de descarga
Autor: Amine (Argelia)
Google Maps - API Codificación Geográfica
El link es:
http://neftali.clubdelphi.com/?p=335
Integración con Google Maps:
http://neftali.clubdelphi.com/?p=380
Obtener las modificaciones que un usuario realiza sobre el Mapa y trasladarlas a nuestro programa en delphi:
http://neftali.clubdelphi.com/?p=413
Utilizar Google Maps en Delphi
1) Inicia una nueva aplicación VCL
2) Pon un botón en tu form, y en el evento asociado “OnClick” pon el siguiente código:
procedure TForm1.Button1Click(Sender: TObject);
var
Doc2: IHTMLDocument2;
begin
with WebBrowser1.Document as IHTMLDocument2 do
with parentWindow do
execScript('createMapMarker("31.05173494","-122.03160858", "Marcador de prueba")', 'JavaScript');
end;
En el uses hay que añadir la unit MSHTML en Delphi 2007
3) Pon un control TWebBrowser
4) En el evento OnCreate del Form pon el siguiente código
WebBrowser1.Navigate('http://www.stevetrefethen.com/files/googlemap.htm');
Al ejecutar este programa lo que hace es generar un marcador en la posición indicada con el texto “Marcador de prueba”
REQUISITOS PREVIOS
Tienes que solicitar a Google una “Google Maps Api Key”, te pedirá además un dominio para asociarlo a la clave.
Una vez que la recibas, tienes que incluirla en la página web donde quieras mostrar un mapa.
Además tienes que saber que la Api Key va asociada directamente al dominio, de tal forma que si la pones en una página web con otro dominio distinto Google Maps no funcionará.
Para hacer pruebas, circula por Internet una Api Key para el dominio localhost.
Simulación del movimiento de los electrones en un campo electrico
Espectacular simulación realizada con OpenGL del movimiento de los electrones cuando atraviesan un campo eléctrico. Como muestra la image...
-
Seguidamente os dejo una lista bastante amplia de funciones escritas en Delphi que se utilizan cuando estamos programando una aplicación q...
-
Para trabajar con archivos pdf dentro de tu aplicación Delphi tienen que seguir los siguientes pasos: 1) Asegurarte que tienes la última ver...
-
A continuación os presento el software que os permitirá manejar vuestra Webcam con Delphi. Primeramente tenéis que instalar en vuestro sis...





