我正在寻找一种方法来自动将城市中的社区定义为图形上的多边形。
我对邻里的定义有两个部分:
有关示例,请参见此插图:
例如,B4是由 7 个节点和连接它们的 6 个边定义的块。正如此处的大多数示例一样,其他块由 4 个节点和连接它们的 4 条边定义。此外,附近的B1包括B2(反之亦然),而B2还包括B3。
我正在使用osmnx从 OSM 获取街道数据。
我正在努力编写一段代码,该代码以图形和一对坐标(纬度、经度)作为输入,识别相关块并返回该块的多边形以及上述定义的邻域。
这是用于制作地图的代码:
import osmnx as ox
import networkx as nx
import matplotlib.pyplot as plt
G = ox.graph_from_address('Nørrebrogade 20, Copenhagen Municipality',
network_type='all',
distance=500)
Run Code Online (Sandbox Code Playgroud)
以及我试图找到具有不同节点数和度数的派系。
def plot_cliques(graph, number_of_nodes, degree):
ug = ox.save_load.get_undirected(graph)
cliques = nx.find_cliques(ug)
cliques_nodes = [clq for clq in cliques if len(clq) …Run Code Online (Sandbox Code Playgroud) 目前我已经根据网络中的节点到特定目标的距离创建了一个颜色图。我不能做的一件事是色条。我希望颜色条显示颜色指示的时间。
时间数据在data['time'].
每种颜色将指示从节点到目标需要多长时间。我已经定义了汽车的速度。
例如,范围从 0 到 60 分钟的颜色条。但在这种情况下,它将达到 的最大值data['time']。
这是我尝试过的:
import networkx as nx
import matplotlib.pyplot as plt
import osmnx as ox
import pandas as pd
from shapely.wkt import loads as load_wkt
import numpy as np
import matplotlib.cm as cm
ox.config(log_console=True, use_cache=True)
place = {'city': 'Lisbon', 'country': 'Portugal'}
G = ox.graph_from_place(place, network_type='drive')
hospitals = ox.pois_from_place(place, amenities=['hospital'])
hosp_1 = hospitals.iloc[21]['geometry'] # Hospital Santa Maria
coord_1 = (38.74817825481225, -9.160815118526642) # Coordinate Hospital Santa Maria
target_1 = ox.get_nearest_node(G, coord_1) …Run Code Online (Sandbox Code Playgroud) 我有一个很大的osmnx(networkx)图,并且nx.all_pairs_dijkstra_path_length需要很长时间才能计算。
有哪些可能性可以加快计算速度?
我正在尝试在 Jupyter 笔记本中的现有 OSMnx 图中添加一个点,如下所示
import osmnx as ox
import matplotlib.pyplot as plt
G = ox.graph_from_address('1600 Pennsylvania Ave NW, Washington, DC 20500',
distance=500)
fig, ax = ox.plot_graph(G)
ax.scatter(-77.036498, 38.897270, c='red')
plt.show()
Run Code Online (Sandbox Code Playgroud)
但我的观点(-77.036498, 38.897270)没有出现。有任何想法吗?
print (type(fig), type(ax))
<class 'matplotlib.figure.Figure'> <class 'matplotlib.axes._subplots.AxesSubplot'>
Run Code Online (Sandbox Code Playgroud)
我一直在和这个问题斗争好几个小时,这是一种复杂的问题.我在Windows 7上,Python 2.7版,Spyder的3.2.6我试图安装OSMNX通过cygwin,但是我遇到了许多问题.最后设法通过windows cmd安装它.通过anaconda prompt,我可以导入osmnx没有错误.
但是,我正在尝试在spyder中导入它,但我一直在接收:
Traceback(最近一次调用最后一次):
File "<ipython-input-2-2b99ab66aebb>", line 1, in <module>
import osmnx
ImportError: No module named osmnx
Run Code Online (Sandbox Code Playgroud)
这里究竟是什么错?我该如何解决?
希望有人能帮助我吗?
总之,我试图根据一组给定的坐标检索附近的兴趣点。
经过一些研究后,我发现了一个简洁的功能
osmnx.pois.pois_from_point(point, distance=None, amenities=None, custom_settings=None)
Run Code Online (Sandbox Code Playgroud)
这适用于酒吧、餐馆等。
然而,酒店不属于分类设施,任何其他旅游相关场所也不属于分类设施。
我发现这些与旅游业:酒店键/值对有关。
有谁知道如何检索这些?我似乎没有找到接受旅游作为参数传入的函数,也找不到任何方法来传入客户属性值进行过滤。
提前致谢!
我正在尝试按照此处概述的步骤在我的计算机上安装 Python 3 中的 osmnx 包https://geoffboeing.com/2017/02/python-getting-started/。步骤是:
C:\Anaconda。由于我使用的是大学计算机,因此我无法执行此操作。但是,Anaconda 已安装在这些计算机上,路径为C:\Program Files \Anaconda3.conda update -n base conda。然而,这并没有成功,因为我没有“对目标环境的写权限”( C:\Program Files \Anaconda3)。conda config --prepend channels conda-forge跑得很好。conda create -n ox -c conda-forge osmnx jupyterlab并conda activate ox运行良好。OSMnx 和 jupyterlab 在 Anaconda Navigator>Environments>ox>installed 中列出。jupyter lab,但这给出了以下错误。我对这个巨大的引用感到抱歉,但我不知道如何解释其中的任何一个:(ox) C:\Users\bm17652>jupyter lab
[I 15:47:48.265 LabApp] Writing notebook server cookie secret to C:\Users\bm17652\AppData\Roaming\jupyter\runtime\notebook_cookie_secret
Traceback (most recent call …Run Code Online (Sandbox Code Playgroud) 编辑:我在下面的示例中遇到的问题我也可以用这个重新创建:
import matplotlib.patches as mpatches
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
plt.ylabel('Y-label');
plt.figtext(0.4, 1.1,'Title:',fontsize=40, color='black',ha ='left', backgroundcolor='white')
patch_example=mpatches.Patch(color='green', label='label')
plt.legend(fontsize=16, loc='upper center',bbox_to_anchor=(0.5, 1.2), handles=[patch_example])
Run Code Online (Sandbox Code Playgroud)
如果从 Jupyter Notebook 复制并粘贴图像,则标题、图例和 y 标签具有透明背景。我希望创建的图像的整个区域都具有纯白色背景。就像 matplotlib 示例中的示例一样:
import matplotlib.pyplot as plt
import numpy as np
# Fixing random state for reproducibility
np.random.seed(19680801)
plt.rcdefaults()
fig, ax = plt.subplots()
# Example data
people = ('Tom', 'Dick', 'Harry', 'Slim', 'Jim')
y_pos = np.arange(len(people))
performance = 3 + 10 * np.random.rand(len(people))
error = np.random.rand(len(people))
ax.barh(y_pos, performance, xerr=error, …Run Code Online (Sandbox Code Playgroud) 如何从 OpenStreetMap 中提取街道图或网络?
以下代码的输出
import osmnx as ox
import networkx as nx
import folium
G = ox.graph_from_place('Wuppertal, Germany', network_type='drive')
G = ox.speed.add_edge_speeds(G)
G = ox.speed.add_edge_travel_times(G)
orig = ox.get_nearest_node(G, (51.262336765,7.143472955))
print(orig)
dest = ox.get_nearest_node(G, (51.2521799,7.1491453))
print(dest)
orig = ox.nearest_nodes(G, X=51.262336765, Y=7.143472955)
print(orig)
dest = ox.nearest_nodes(G, X=51.2521799, Y=7.1491453)
print(dest)
Run Code Online (Sandbox Code Playgroud)
是
279086833
269525495
317558105
317558105
为什么nearest_node返回的结果与 不同get_nearest_node?特别是,我对此有一个问题,因为当我使用以下代码绘制orig和destusing之间的最短路线时get_nearest_node
route_map = ox.plot_route_folium(G, route)
route_map.save('test_1.html')
Run Code Online (Sandbox Code Playgroud)
一切正常。当我尝试使用相同的方法时,nearest_nodes我收到错误
Traceback (most recent call last):
File "/Users/danielagaul/sciebo/PycharmProjects/distances/test_osm.py", line 20, in <module>
route_map …Run Code Online (Sandbox Code Playgroud) osmnx ×10
python ×9
matplotlib ×3
networkx ×3
anaconda ×2
algorithm ×1
conda ×1
dijkstra ×1
graph ×1
graph-theory ×1
import ×1
jupyter ×1
legend ×1
networking ×1
overpass-api ×1
spyder ×1
title ×1