Мне нужна помощь в написании кода для рабочего проекта. Я написал скрипт, который использует pandas для чтения файла excel. У меня есть цикл while, написанный для повторения каждой строки и добавления данных широты/долготы из файла excel на карту (Folium, Open Street Map)Нужна помощь при написании кода, который автоматически напишет больше кода?
Проблема, с которой я столкнулся, связана с данными GPS , Я загружаю файл CVS с координатами автомобиля. На некоторых транспортных средствах, которые я отслеживаю, GPS теряет сигнал по любой причине и не возвращается в сети на сотни миль. Это вызывает проблемы, когда я использую линейные графики для отслеживания движения транспортного средства на карте. В конечном итоге я получаю длинные прямые линии, проходящие по городам, так как Folium пытается подключить последнюю координату GPS до того, как автомобиль перейдет в автономный режим, со следующей координатой GPS, доступной после того, как автомобиль снова подключен к сети, который может находиться на расстоянии в сотни миль от shown here. Я думаю, что если каждый раз, когда скрипт находит пробел в GPS-координатах, я могу создать новый цикл, который в основном запустит совершенно новый сюжет линии и добавит его к существующей карте. Таким образом, я все еще должен видеть весь маршрут транспортного средства на карте, но без длинных линий, пытающихся соединить сломанные точки вместе.
Моя идея заключается в том, чтобы мой скрипт вычислил абсолютную разницу значений между каждой итерацией данных долготы. Если разница между каждой точкой больше 0,01, я хочу, чтобы моя программа закончила цикл и запустила новый цикл. Этот новый цикл должен был бы иметь новые переменные init. Я не буду знать, сколько новых петель нужно будет создать, потому что нет способа предсказать, сколько раз GPS будет отключен/онлайн в каждом автомобиле.
https://gist.github.com/tapanojum/81460dd89cb079296fee0c48a3d625a7
import folium
import pandas as pd
# Pulls CSV file from this location and adds headers to the columns
df = pd.read_csv('Example.CSV',names=['Longitude', 'Latitude',])
lat = (df.Latitude/10 ** 7) # Converting Lat/Lon into decimal degrees
lon = (df.Longitude/10 ** 7)
zoom_start = 17 # Zoom level and starting location when map is opened
mapa = folium.Map(location=[lat[1], lon[1]], zoom_start=zoom_start)
i = 0
j = (lat[i] - lat[i - 1])
location = []
while i < len(lat):
if abs(j) < 0.01:
location.append((lat[i], lon[i]))
i += 1
else:
break
# This section is where additional loops would ideally be generated
# Line plot settings
c1 = folium.MultiPolyLine(locations=[location], color='blue', weight=1.5, opacity=0.5)
c1.add_to(mapa)
mapa.save(outfile="Example.html")
Вот псевдокод, как я хочу, чтобы достичь этого.
1) Python читает CSV
2) Преобразование Длинные/Lat в десятичных градусах
3) Иниц LOCATION1
4) проходит в то время как петля для добавления Coords
5) Если абс (j)> = 0,01, петля разрыва
6) Место начала (2,3, ...)
7) Создает новый, пока я < Len (лат): цикл с использованием местоположения (2,3, ...)
9) Повтор шаг 5-7, а я < Len (лат) (Повторить столько раз, сколько есть экземпляры abs (j)> = 0,01))
10) Creats (c1, c2, c3, ...) = folium.MultiPolyLine (location = [location], color = 'blue', weight = 1,5, непрозрачность = 0,5) для каждой переменной местоположения
11) Создает c1.add_to (MAPA) для каждого c1, c2, c3, ..., перечисленных выше
12) mapa.save
Любая помощь будет чрезвычайно оценена!
UPDATE: Рабочий раствор
import folium
import pandas as pd
# Pulls CSV file from this location and adds headers to the columns
df = pd.read_csv(EXAMPLE.CSV',names=['Longitude', 'Latitude'])
lat = (df.Latitude/10 ** 7) # Converting Lat/Lon into decimal degrees
lon = (df.Longitude/10 ** 7)
zoom_start = 17 # Zoom level and starting location when map is opened
mapa = folium.Map(location=[lat[1], lon[1]], zoom_start=zoom_start)
i = 1
location = []
while i < (len(lat)-1):
location.append((lat[i], lon[i]))
i += 1
j = (lat[i] - lat[i - 1])
if abs(j) > 0.01:
c1 = folium.MultiPolyLine(locations=[location], color='blue', weight=1.5, opacity=0.5)
c1.add_to(mapa)
location = []
mapa.save(outfile="Example.html")
Вы должны переместить свой код на вопрос. А также фрагменты кода предпочтительно хранятся в [Gist Github] (https://gist.github.com/) –
Пожалуйста, разместите код в вопросе. В противном случае, когда вы удаляете код из Github, этот вопрос становится бесполезным для всех остальных. – CAB
Это кажется невозможным, как указано. Если GPS отключен, у вас нет промежуточных точек, с помощью которых можно объединить маршрут? Ваш второй цикл будет слеп к любым реальным данным. Если вы используете OSM, используйте graphhopper или что-то подобное, чтобы заполнить пробелы? Вы останетесь с предположением, что водитель прошел через все узлы маршрута графического купега – roganjosh