标签: osmnx

在街道数据(图表)中查找社区(集团)

我正在寻找一种方法来自动将城市中的社区定义为图形上的多边形。

我对邻里的定义有两个部分:

  1. 街区:在多条街道之间封闭的区域,其中街道(边)和交叉点(节点)的数量最少为三个(三角形)。
  2. 邻域:对于任何给定的街区,与该街区直接相邻的所有街区以及街区本身。

有关示例,请参见此插图:

在此处输入图片说明

例如,B4是由 7 个节点和连接它们的 6 个边定义的块。正如此处的大多数示例一样,其他块由 4 个节点和连接它们的 4 条边定义。此外,附近B1包括B2(反之亦然),而B2还包括B3

我正在使用osmnx从 OSM 获取街道数据。

  1. 使用 osmnx 和 networkx,我如何遍历图来找到定义每个块的节点和边?
  2. 对于每个块,我如何找到相邻的块?

我正在努力编写一段代码,该代码以图形和一对坐标(纬度、经度)作为输入,识别相关块并返回该块的多边形以及上述定义的邻域。

这是用于制作地图的代码:

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)

python algorithm graph-theory networkx osmnx

12
推荐指数
1
解决办法
1249
查看次数

如何在 osmnx 图中创建颜色条

目前我已经根据网络中的节点到特定目标的距离创建了一个颜色图。我不能做的一件事是色条。我希望颜色条显示颜色指示的时间。

时间数据在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)

python matplotlib networkx osmnx

10
推荐指数
1
解决办法
654
查看次数

如何加快 all_pairs_dijkstra_path_length 的速度

我有一个很大的osmnx(networkx)图,并且nx.all_pairs_dijkstra_path_length需要很长时间才能计算。

有哪些可能性可以加快计算速度?

python dijkstra shortest-path networkx osmnx

8
推荐指数
1
解决办法
787
查看次数

向 OSMnx 图中添加一个点

我正在尝试在 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)

在此处输入图片说明

python matplotlib osmnx

6
推荐指数
1
解决办法
2950
查看次数

一个模块在Anaconda提示符下工作,但在Spyder中没有

我一直在和这个问题斗争好几个小时,这是一种复杂的问题.我在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)

这里究竟是什么错?我该如何解决?

python import spyder anaconda osmnx

6
推荐指数
1
解决办法
4247
查看次数

使用 OSMNX 检索附近的兴趣点

希望有人能帮助我吗?

总之,我试图根据一组给定的坐标检索附近的兴趣点。

经过一些研究后,我发现了一个简洁的功能

osmnx.pois.pois_from_point(point, distance=None, amenities=None, custom_settings=None)
Run Code Online (Sandbox Code Playgroud)

这适用于酒吧、餐馆等。

然而,酒店不属于分类设施,任何其他旅游相关场所也不属于分类设施。

我发现这些与旅游业:酒店键/值对有关。

有谁知道如何检索这些?我似乎没有找到接受旅游作为参数传入的函数,也找不到任何方法来传入客户属性值进行过滤。

提前致谢!

python openstreetmap osmnx

6
推荐指数
1
解决办法
3542
查看次数

使用 Anaconda 安装 OSMnx

我正在尝试按照此处概述的步骤在我的计算机上安装 Python 3 中的 osmnx 包https://geoffboeing.com/2017/02/python-getting-started/。步骤是:

  1. 下载 miniconda,路径为C:\Anaconda。由于我使用的是大学计算机,因此我无法执行此操作。但是,Anaconda 已安装在这些计算机上,路径为C:\Program Files \Anaconda3.
  2. 在 Anaconda Prompt 中,我尝试了conda update -n base conda。然而,这并没有成功,因为我没有“对目标环境的写权限”( C:\Program Files \Anaconda3)。
  3. 我忽略了这个错误,假设 conda 是最新的。conda config --prepend channels conda-forge跑得很好。
  4. conda create -n ox -c conda-forge osmnx jupyterlabconda activate ox运行良好。OSMnx 和 jupyterlab 在 Anaconda Navigator>Environments>ox>installed 中列出。
  5. 在ox环境下,我运行了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)

python anaconda conda jupyter osmnx

5
推荐指数
1
解决办法
9913
查看次数

如何使 matplotlib 图中的标题和图例区域不透明?

编辑:我在下面的示例中遇到的问题我也可以用这个重新创建:

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)

python matplotlib legend title osmnx

5
推荐指数
1
解决办法
2831
查看次数

5
推荐指数
1
解决办法
2730
查看次数

为什么新 osmnx 'nearest_nodes' 函数返回与旧函数 'get_nearest_node' 不同的结果?

以下代码的输出

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?特别是,我对此有一个问题,因为当我使用以下代码绘制origdestusing之间的最短路线时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)

python osmnx

5
推荐指数
1
解决办法
4980
查看次数