Как нанести данные GPS (CSV) на карту с помощью OpenStreetMap - PullRequest
0 голосов
/ 26 марта 2019

Прежде всего извините за мой английский. Я работаю над финальным проектом моей университетской карьеры. У меня есть данные GPS (широта и долгота) сотен учеников, когда они идут в школу, и я должен представить эти точки на карте, чтобы иметь возможность видеть траектории и иметь представление о точности GPS и очистить некоторые данные .

Мой преподаватель сказал мне, чтобы вытащить эти данные на карты с помощью OpenStreetMap.

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

Я покажу вам код, который я использовал:


import osmnx as ox
import networkx as nx
import geopandas as gpd
import matplotlib.pyplot as plt
import pandas as pd
from shapely.geometry import Point, Polygon
from time import time

%matplotlib inline


place_name='Sants-Montjuïc, Barcelona, Spain' #district of school
graph=ox.graph_from_place(place_name)  
type(graph)


nodes, edges = ox.graph_to_gdfs(graph)   
nodes.head()
edges.head()
type(edges)


fig, ax = plt.subplots(figsize=(15,15)) 
edges.plot(ax=ax, linewidth=1, edgecolor='#BC8F8F')  


df=pd.read_csv('C:\\Users\\1-MON.csv')  #csv file with the data
crs={'init': 'epsg:4326'}
df.head()

geometry=[Point(xy) for xy in zip( df["longitude"], df["latitude"])]

geo_df=gpd.GeoDataFrame(df, crs=crs, geometry=geometry)   
geo_df.head()
geo_df.plot(ax=ax, marker='o',markersize=2, color="blue")

введите описание изображения здесь

Как я уже сказал, мне нужна карта с четким и расширенным видом улиц в районе, где расположена школа, а не на весь район. И нанесите на карту данные GPS.

Как мне этого добиться? Спасибо !!

1 Ответ

0 голосов
/ 26 марта 2019

Если вы хотите иметь карту меньшего размера, вы должны указать нужную область с помощью ограничительной рамки. С помощью координат вашей ограничительной рамки вы можете запросить данные из osm. Запрашивая все данные в вашем bbox, вам нужно только построить геометрию объектов и затем добавить свои собственные точки данных

...