python - 在地图上绘制经度和纬度并为每个子集创建线(DataFarame 中的每一行)
问题描述
我在我的数据集上做了很多工作,使它像下面这样。我知道如何在 folium 中绘制每个纬度和经度,如下所示。我不知道如何在每行中我的数据集的每对纬度和经度之间绘制线(多边形)。正如我们所见,每一行都是纬度和经度的组合。
该代码用于显示地图上的每个点(纬度和经度)。
注意:我没有为提供的 DataFrame 编写此代码。它用于具有名为“start_station_latitude”的列和其他列 start_station_longitude 的数据框。
import matplotlib.pyplot as plt
#installation
# Create a world map to show distributions of users
import folium
from folium.plugins import MarkerCluster
#empty map
world_map= folium.Map(tiles="CartoDB dark_matter")
marker_cluster = MarkerCluster().add_to(world_map)
#for each coordinate, create circlemarker of user percent
for i in range(len(trip_counts_10)):
lat = trip_counts_10.iloc[i]['start_station_latitude']
long = trip_counts_10.iloc[i]['start_station_longitude']
radius=5
popup_text = """Users : {}<br>"""
popup_text = popup_text.format(trip_counts_10.iloc[i]['start_station_name'])
folium.CircleMarker(location = [lat, long], radius=radius, popup= popup_text, fill =True).add_to(marker_cluster)
plt.savefig('x', dpi=300)
#show the map
world_map
#tiles="CartoDB dark_matter"
#cartodbpositron
lan0 lan1 lan2 long0 long1 long2
59.915667 59.913796 59.922539 10.777567 10.735802 10.704541
59.929853 59.919463 59.910356 10.711515 10.743829 10.705106
....
我还编写了下面的代码来获取每一行的列表,但我不知道接下来我应该做什么。
import geopandas as gpd
from shapely.geometry import Polygon
Row_list = []
for index, rows in indices_df.iterrows():
my_list =[rows.lan0, rows.lan1, rows.lan2,rows.long0, rows.long1, rows.long2]
Row_list.append(my_list)
print(Row_list)
#polygon_geom = Polygon(zip(lon_point_list, lat_point_list))
解决方案
我不确定我是否完全理解你的问题。我的理解是,你有一个每行有三个纬度和三个经度的df,你想通过这三个点画一条线。如果这就是你的意思,你可以试试这个:
folium.PolyLine(points).add_to(world_map)
这points
是具有纬度和经度的元组列表。你可以像这样制作这个列表:
mid_i = int(len(my_list)/2)
points = [(my_list[i], my_list(mid_i + i]) for i in range(mid_i)]
如果您希望关闭该行,只需将第一个点添加到此列表的末尾即可。
points.append(points[0])
有关更多信息,请参阅此页面。
另外,我认为你做了一些有问题的设计选择。讨论这些并不是这个答案的真正重点,但我建议你永远不要使用lan
纬度的名称,这是没有意义的。
推荐阅读
- reactjs - 无法从 spring-boot 响应中获取 json 数据
- python - 比较 2 个 Json 文件并显示第二个文件的差异
- azure - 在 Azure 数据块中创建外部表
- elasticsearch - 如果 Elasticsearch 管道的条件与确切的字符串不匹配,则字符串比较
- excel - Vlookup 函数上的运行时错误“1004”应用程序定义或对象定义错误
- c# - iMobileDevice-Net event trigger when photo added or deleted
- java - Ask for length of a file read from Classpath in java
- node.js - MERN stack authentication and authorization
- javascript - 我的 svg 从中间滚动,我想从顶部开始
- bash - BASH - variable assignment via subshell and grep