Как сделать тепловую карту с помощью строкиPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как сделать тепловую карту с помощью строки

Сообщение Anonymous »

У меня есть шейп-файл и файлы csv
Шейп-файл содержит такие элементы:



edgeUID
osmId
геометрия




325297217
305009381
LINESTRING (-46.80244 -23.91205, -46.80294 -23...


< /table>
В CSV-файле



edge_uid
тип_активности
час
total_trip_count




325624632
Бег, прогулка, поход
2019-01-31T07
5
< /tr>


Я хотел построить карту листа, где я бы прочитал все строки из шейп-файла и покажите их цветом, меняющимся от самого слабого к самому сильному в зависимости от количества поездок, образуя таким образом своего рода тепловую карту.
Мне удалось построить ее, но линии выглядят неправильно:

Код: Выделить всё

import folium
import pandas as pd
import geopandas as gpd
from folium.plugins import HeatMap
from shapely.geometry import LineString
import branca.colormap as cm

# Function to read and plot shapefile and CSV data
def plot_map(shapefile_path, csv_path, output_html='map.html'):
# Load shapefile data
gdf = gpd.read_file(shapefile_path)

# Load CSV data
df = pd.read_csv(csv_path)

# Determine the center of the map
center = [gdf.geometry.centroid.y.mean(), gdf.geometry.centroid.x.mean()]

# Create the map
m = folium.Map(location=center, zoom_start=12)

# Add shapefile layer to the map using polylines with a color gradient
colormap = cm.LinearColormap(colors=['blue', 'red'], vmin=0, vmax=gdf.shape[0], caption='Number of trips')
for i, geom in enumerate(gdf.geometry):
if isinstance(geom, LineString):
folium.PolyLine(
locations=[(coord[1], coord[0]) for coord in geom.coords],
color=colormap(i),
weight=3,
opacity=0.7
).add_to(m)
colormap.add_to(m)

# Add points from the CSV as a heatmap layer
if {'latitude', 'longitude'}.issubset(df.columns):
heat_data = df[['latitude', 'longitude']].dropna().values.tolist()
HeatMap(heat_data).add_to(m)
else:
print("The CSV file must contain 'latitude' and 'longitude' columns.")

# Save the map as an HTML file
m.save(output_html)
print(f"Map saved as {output_html}")

# File paths
shapefile_path = '804387637e9638887b3bb625354623c5c83526532fac778ce885584328e169e4-1719798137525.shp'
csv_path = '804387637e9638887b3bb625354623c5c83526532fac778ce885584328e169e4-1719798137525.csv'

# Call the function to plot the map
plot_map(shapefile_path, csv_path)

Изображение карты, сгенерированной с помощью кода.
Проблема в том, что кажется, что линии неправильно рисуются.
Объяснение. лучше было бы, чтобы линии казались слишком большими, как бы поверх друг друга, и цвет казался неправильным. Есть часть прямой улицы с красным цветом, который затем меняется на синий. А еще код очень медленный.

Подробнее здесь: https://stackoverflow.com/questions/790 ... linestring
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как объединить тепловую карту и контурный график с помощью Plotly Python
    Anonymous » » в форуме Python
    0 Ответы
    24 Просмотры
    Последнее сообщение Anonymous
  • Лучший способ нарисовать тепловую карту с помощью SFML
    Anonymous » » в форуме C++
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous
  • Как я могу изменить тепловую карту Seaborn в Python?
    Гость » » в форуме Python
    0 Ответы
    50 Просмотры
    Последнее сообщение Гость
  • Как я могу изменить тепловую карту Seaborn?
    Гость » » в форуме Python
    0 Ответы
    32 Просмотры
    Последнее сообщение Гость
  • Как я могу создать тепловую карту в заданных точках x и y со значениями z?
    Anonymous » » в форуме Python
    0 Ответы
    30 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»