Extraer coordenadas de My Google Maps / Extract coordinates from My Google Maps
Podras leer este tutorial sobre como pasar coordeandas de My google Maps a listas en Excel o Similares en Español y en Ingles
You can read this tutorial on how to pass coordinates from My Google Maps to lists in Excel or Similar in Spanish and English
Usualmente se necesita saber la localización de una serie de lugares, estos lugares quizás hagan parte de una matriz de orígenes y destinos, donde conocemos en que país esta ubicados, sus nombres y poco mas. La forma mas fácil y conveniente de ubicar puntos es pasar los nombres a una lista excel o similar y usar la pagina web de Google https://www.google.com/intl/es_ES/maps/about/mymaps/ para ubicar los puntos, el problema llega a la hora de querer exportar todas las coordeandas geoespaciales de cada uno de estos puntos, no existe una forma de hacerlo desde la app de google, mas allá de copiar uno por uno cada par de coordenadas, lo cual tendría tiempos demasiado extensos. La solución a esto es simple, solo debemos dar contra clic (clic derecho) en el menú donde tenemos los puntos, luego se da clic en código fuente de la web y se copia la linea de código en archivo ( puedes copiarlo todo con ctrl + A) example.txt ( bloc de notas, es importante que el archivo lo guarden como example.txt o que modifiquen el nombre del archivo en el codigo) luego se ejecuta el código en Matlab que que les doy a continuación y obtienen un archivo con todas las coordenadas en el mismo orden en el que generaron su archivo para ubicaras en my google maps
Usually, it is necessary to know the location of a series of places, these places may be part of a matrix of origins and destinations, where we know in which country they are located, their names and little else. The easiest and most convenient way to locate points is to pass the names to an excel or similar list and use the Google website https://www.google.com/maps/about/mymaps/ to locate the points. The problem comes when you want to export all the geospatial coordinates of each of these points, there is no way to do it from the Google app, beyond copying each pair of coordinates one by one, which would take too long. The solution to this is simple, we just have to right-click on the menu where we have the points, then click on the web page source code and copy the line of code into a file (you can copy everything with ctrl + A) example.txt (notepad, it is important that you save the file as example.txt or modify the file name in the code) then run the code in Matlab that I give you below and obtain a file with all the coordinates in the same order as you generated your file to locate them in my Google maps.
%Español
clc % Limpia la ventana de comandos.
clear % Borra todas las variables del espacio de trabajo.
% Abre el archivo de texto y lo asocia con el identificador de archivo de nombre archivo.
archivo = fopen('example.txt'); %fopen es una función de MATLAB que se utiliza para abrir un archivo. ver documentacion
% Lee todo el archivo de texto y lo guarda en la variable data como una cadena de caracteres.
data = fscanf(archivo, '%c'); %La función fscanf en MATLAB se utiliza para leer datos de un archivo.
%La cadena de formato '%c' se utiliza para especificar que se leerán caracteres del archivo
% Cierra el archivo de texto.
fclose(archivo);
%fclose es una función en MATLAB que se utiliza para cerrar un archivo que ha sido abierto previamente con fopen.
% Es importante cerrar el archivo después de haber terminado de usarlo para asegurarse de que los recursos del sistema se liberen adecuadamente y que cualquier escritura pendiente se complete
% Busca todas las ocurrencias de coordenadas en el archivo de texto mediante una expresión regular.
% La expresión regular busca cualquier cadena que comience con '[[' y contenga dos números decimales
% separados por una coma y encerrados entre corchetes. Las coordenadas pueden tener dos o tres columnas,
% y pueden tener un tercer número después de la coma en el caso de que sean coordenadas de tres columnas.
matches = regexp(data, '\[\[-?\d+\.\d+,-?\d+\.\d+(?:,\d+)?\]\]', 'match');
%regexp es una función en MATLAB que se utiliza para buscar y encontrar patrones de expresiones regulares en una cadena de texto.
% La función devuelve una matriz de coincidencias, que son subcadenas de la cadena de entrada que coinciden con el patrón de expresión regular especificado.
% regexp(data, '\[\[-?\d+\.\d+,-?\d+\.\d+\]\]', 'match') se utiliza para buscar y encontrar todas las coincidencias de un patrón específico en la variable data.
% El patrón de expresión regular especificado es '\[\[-?\d+\.\d+,-?\d+\.\d+\]\]', que busca una cadena que tenga el formato de una coordenada bidimensional en notación de lista, es decir, "[x,y]".
%La función regexp devuelve una matriz de coincidencias, que en este caso son todas las cadenas que coinciden con el patrón de expresión regular especificado.
% Estas coincidencias se almacenan en la variable matches
% Inicializa una matriz de ceros con el mismo número de filas que matches y tres columnas.
%\[\[ y \]\] : Son caracteres literales que representan los corchetes iniciales y finales alrededor de las coordenadas.
%-? : Es un modificador que indica que el signo negativo (-) es opcional para el número entero que sigue.
%\d+ : Es una expresión regular que coincide con uno o más dígitos.
% \. : Es un carácter literal que coincide con un punto decimal.
%(?:,\d+)? : Es un grupo de expresiones regulares no capturadoras que coinciden con una coma (,) seguida de uno o más dígitos.
% El signo ? indica que este grupo es opcional, lo que significa que algunas coordenadas pueden tener una columna adicional con datos adicionales separados por comas.
coordenadas = zeros(length(matches), 3); %matriz de tamaño igual a las coincidencias obvio
% Extrae las coordenadas de matches, las convierte a números y las guarda en la matriz coordenadas.
% Si las coordenadas tienen dos columnas, se almacenan en las dos primeras columnas de coordenadas.
% Si las coordenadas tienen tres columnas, se almacenan en las tres columnas de coordenadas.
for i = 1:length(matches)%cuenta obvio hasta el tamaño de matches
coordenada = str2num(matches{i}(3:end-2)); %str2num es una función en MATLAB que convierte una cadena de texto en un número. Si la cadena de texto contiene caracteres que no son números, la función los ignorará y devolverá el número que se encuentra al principio de la cadena
if length(coordenada) == 2 % coordenadas de dos columnas
coordenadas(i,1:2) = coordenada;%La expresión matches{i} se refiere a una de las coincidencias encontradas por regexp, y la expresión (3:end-2) se utiliza para eliminar los corchetes alrededor de la coordenada en formato de lista.
%puedo evalular cada coordeanda de 2 digitos en el comando por ejemplo coordenadas(i,1:2)
elseif length(coordenada) == 3 % coordenadas de tres columnas
coordenadas(i,:) = coordenada;
end
end
% Muestra la matriz coordenadas en la ventana de comandos.
disp(coordenadas);
% Escribe la matriz coordenadas en un archivo de Excel llamado coordenadas.xlsx.
writematrix(coordenadas, 'example.xlsx');
%English
clc % Clears the command window.
clear % Clears all variables from the workspace.
% Opens the text file and associates it with the file identifier named 'archivo'.
archivo = fopen('example.txt'); % fopen is a MATLAB function used to open a file. See documentation.
% Reads the entire text file and saves it in the variable 'data' as a character string.
data = fscanf(archivo, '%c'); % The function fscanf in MATLAB is used to read data from a file.
% The format string '%c' is used to specify that characters will be read from the file.
% Closes the text file.
fclose(archivo); % fclose is a MATLAB function used to close a file that has been previously opened with fopen.
% It is important to close the file after finishing using it to ensure that system resources are properly released and any pending writes are completed.
% Searches for all occurrences of coordinates in the text file using a regular expression.
% The regular expression searches for any string that begins with '[[' and contains two decimal numbers
% separated by a comma and enclosed in square brackets. The coordinates can have two or three columns,
% and may have a third number after the comma in the case of three-column coordinates.
matches = regexp(data, '\[\[-?\d+\.\d+,-?\d+\.\d+(?:,\d+)?\]\]', 'match');
% regexp is a MATLAB function used to search for and find regular expression patterns in a text string.
% The function returns an array of matches, which are substrings of the input string that match the specified regular expression pattern.
% regexp(data, '\[\[-?\d+\.\d+,-?\d+\.\d+\]\]', 'match') is used to search for and find all matches of a specific pattern in the variable data.
% The specified regular expression pattern is '\[\[-?\d+\.\d+,-?\d+\.\d+\]\]', which searches for a string that has the format of a two-dimensional coordinate in list notation, i.e., "[x,y]".
% The regexp function returns an array of matches, which in this case are all strings that match the specified regular expression pattern.
% These matches are stored in the variable 'matches'.
% Initializes a matrix of zeros with the same number of rows as 'matches' and three columns.
% '\[\[' and '\]\]' are literal characters that represent the opening and closing brackets around the coordinates.
% '-?' is a modifier that indicates that the negative sign (-) is optional for the integer that follows.
% '\d+' is a regular expression that matches one or more digits.
% '\.' is a literal character that matches a decimal point.
% '(?:,\d+)?' is a non-capturing regular expression group that matches a comma (,) followed by one or more digits.
% The ? sign indicates that this group is optional, meaning that some coordinates may have an additional column with additional data separated by commas.
coordinates = zeros(length(matches), 3); % A matrix of size equal to the number of matches is created.
% Extracts the coordinates from 'matches', converts them to numbers, and stores them in the 'coordinates' matrix.
% If the coordinates have two columns, they are stored in the first two columns of 'coordinates'.
% If the coordinates have three columns, they are stored in all three columns of 'coordinates'.
for i = 1:length(matches) % Counts up to the size of 'matches'.
coordinate = str2num(matches{i}(3:end-2)); % str2num is a MATLAB function that converts a text