前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >(无聊的教程)可视化微软发布的2022年度道路数据

(无聊的教程)可视化微软发布的2022年度道路数据

作者头像
陈南GISer
发布2023-08-19 08:52:22
发布2023-08-19 08:52:22
24900
代码可运行
举报
文章被收录于专栏:点点GIS点点GIS
运行总次数:0
代码可运行

2022年底,微软宣布将发布超过4780万公里的道路数据。浅浅用python可视化一下。

数据介绍

Microsoft Maps AI 团队已从 Open Street Maps (OSM) 中检测到4780 万公里的所有道路和116 万公里的缺失道路。这些新道路是使用 Bing 地图在 2020 年至 2022 年期间收集的图像检测到的,包括来自 Maxar 和空中客车公司的来源。

完整的数据可以从下列地址下载,当然没有中国的数据,所以看看就好

代码语言:javascript
代码运行次数:0
复制
https://github.com/microsoft/RoadDetections

数据年份

道路的年份取决于基础图像的年份。因为 Bing Imagery 是多个来源的组合,所以很难知道单个数据的确切日期。

数据有多好?

OSM缺失数据经过最终分类器以确保精度至少为 95%(美国现在为 90% - 将在 2022 年更新为 95%)。分类器过滤掉潜在的坏路后,我们重新测量精度并确保在发布结果之前它是 95%

由于是神经网络AI提取,所以基本没有什么数据属性可言。个人认为有各种属性,例如普通道路、高速公路、单行道和行驶方向的数据才被称之为数据。如果没有这些,作为可视化背景看看就行。

可视化

githup好像都被无语住了,说好的发布 GeoJson 格式,结果发布个tsv格式,真的逼得人骂娘

还好有大佬出手写了一下代码,可以将tsv格式数据转为GeoJson 格式

代码语言:javascript
代码运行次数:0
复制
https://github.com/rabenojha/microsoft-road-data/blob/main/road_data_processing.ipynb

这里又遇见一个问题,因为我是在ArcGIS Pro写的代码,安装gdal还有geopandas就浪费了好多时间我感觉我又可以水一篇教程了

转换格式代码如下

代码语言:javascript
代码运行次数:0
复制
#将tsv格式数据转为GeoJson 格式
import json
import geopandas as gpd
import pandas as pd
from osgeo import gdal

df = pd.read_csv('F:\chrome_download\AsiaSouthEast-Full\AsiaSouthEast-Full.tsv', sep='\t',header=None)
df

# adding column name as the dataframe has no column names
df.columns =['Country', 'Feature']

# selecting one specific country for faster processing (NPL for Nepal)
df2 = df [df['Country'] == 'MYS']
df2

# creates 'output.geojson' in your pwd 

features = []

for _, row in df2.iterrows():
    feature = json.loads(row['Feature'])
    features.append(feature)
    
geojson = {
    'type': 'FeatureCollection',
    'features': features
}

with open('output.geojson', 'w') as f:
    json.dump(geojson, f)
    
# converts above created geojson file to 'output.gpkg'

geojson_ds = gdal.OpenEx('output.geojson', gdal.OF_VECTOR)

driver = gdal.GetDriverByName('GPKG')

output_ds = driver.Create('output.gpkg', 0, 0, 0, gdal.GDT_Unknown)

gdal.VectorTranslate(output_ds, geojson_ds, format='GPKG')

output_ds = None    

需要注意的是第一列为所在地区国家简称

所以我真的有在用ArcGIS Pro写代码(3.0界面真TM丑,谁用谁知道)

可视化代码

代码语言:javascript
代码运行次数:0
复制
import geopandas as gpd
import matplotlib.pyplot as plt

# 读取 GeoJSON 文件
gdf = gpd.read_file(r"C:\Users\zheyu\Desktop\output.geojson")

# 绘制地图
gdf.plot()

# 添加图注
plt.title("Malaysia road visualization")
plt.xlabel("Longitude")
plt.ylabel("Latitude")

# 显示地图
plt.show()

结果如下,下为马来西亚的全国道路

放大效果如下

所以这真的是一篇很无聊的教程。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-01-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 点点GIS 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 数据介绍
  • 数据年份
  • 数据有多好?
  • 可视化
  • 转换格式代码如下
  • 可视化代码
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档