我使用Python库OSMNx在城市旅行的几个步骤之间绘制最佳路线.最后一个变量是OSM ID列表.
现在,我正在尝试将此路由保存为shp或json文件.问题是我需要每个节点的纬度/经度,但我没有找到OSMNx函数来做到这一点.
我尝试了get_route_edge_attributes(但坐标不是此函数的有效属性).有没有办法用这个id获取OSM节点的坐标?
提前致谢.
我正在测试 geopandas 来做一些非常简单的事情:使用差异方法删除位于圆内的 GeoDataFrame 的一些点。
这是我的脚本的开头:
%matplotlib inline
# previous line is because I used ipynb
import pandas as pd
import geopandas as gp
from shapely.geometry import Point
[...]
points_df = gp.GeoDataFrame(csv_file, crs=None, geometry=geometry)
Run Code Online (Sandbox Code Playgroud)
这是 points_df 的第一行:
Name Adress geometry
0 place1 street1 POINT (6.182674 48.694416)
1 place2 street2 POINT (6.177306 48.689889)
2 place3 street3 POINT (6.18 48.69600000000001)
3 place4 street4 POINT (6.1819 48.6938)
4 place5 street5 POINT (6.175694 48.690833)
Run Code Online (Sandbox Code Playgroud)
然后,我添加一个点,该点将包含第一个 GeoDF 的几个点:
base = points_df.plot(marker='o', color='red', markersize=5) …Run Code Online (Sandbox Code Playgroud) 我正在处理一个充满选举数据的csv文件.我的原始样本可以表示为:
city party1 party2 party3
0 city1 50 107 114
1 city2 181 323 326
2 city3 26 28 75
3 city4 32 47 59
4 ciy5 8 21 21
Run Code Online (Sandbox Code Playgroud)
我使用pandas的idxmax()函数来创建一个名为"winner"的新列,如下所示:
mydf['winner'] = mydf[['party1','party2','party3']].idxmax(axis=1)
Run Code Online (Sandbox Code Playgroud)
我的目标是确定哪个政党在每个城市中处于第一位.结果如下:
city party1 party2 party3 winner
0 city1 50 107 114 party3
1 city2 181 323 326 party3
2 city3 26 28 75 party3
3 city4 32 47 59 party3
4 ciy5 8 21 21 party2
Run Code Online (Sandbox Code Playgroud)
获胜者的最后一个原始值是假的,因为party2和party3具有相同的分数.
是否可以在函数中包含一个异常,idxmax考虑两个值的相等性并给出"等式"?
我正在尝试制作一个与 D3 创建者本人提供的示例非常相似的折线图。
为了处理空值,他使用了 Defined() 函数,如下所示:
var line = d3.line()
.defined(function(d) { return d; })
.x(function(d) { return x(d.x); })
.y(function(d) { return y(d.y); });
Run Code Online (Sandbox Code Playgroud)
然后,如果找到空值而不是对象,它将被忽略,并且图表中将出现一个洞,如下所示:
在此示例中,数据格式如下:
data = [null, {"x":x1, "y":y1}, {"x":x2, "y":y2}, null]
Run Code Online (Sandbox Code Playgroud)
但我正在研究一个更棘手的 cas,因为它是一个时间系列,格式如下:
data = [{"date":1980,"value":80},,{"date":1985,"value":82},{"date":1990,"valye":74},{"date":1995,"value":83},{"date":2000,"value":83},{"date":2005,"value":81},{"date":2010,"value":null},{"date":2015,"value":null}]
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,空值位于多个对象内。因此,之前描述的 Defined() 函数不能正常工作,我的图形线如下所示:
最后的值被视为 0,而不是数据集中的“空白”。所以我的问题是:我可以修改定义的函数来忽略空值吗,就像 Mike Bostock 的示例一样?
这是我的折线图的完整代码:
<!DOCTYPE html>
<meta charset="utf-8">
<style> /* set the CSS */
.line {
stroke-width: 2px;
fill:none;
}
.line:hover{
stroke:#c2c2c2;
}
</style>
<body>
<script src="https://d3js.org/d3.v4.min.js"></script>
<script>
var margin = {top: 20, …Run Code Online (Sandbox Code Playgroud) python ×3
pandas ×2
d3.js ×1
dataframe ×1
difference ×1
geopandas ×1
javascript ×1
linegraph ×1
networkx ×1
object ×1