我如何開始用Python和SQL制作地圖。
我是自学成才的开发者和数据爱好者。当我第一次接触到空间数据社区时,是在LinkedIn上看到Matt Forrest的视频,他在视频中演示了如何使用DuckDB从Vida Combined Building Footprints数据集中可视化建筑物。我马上想到,如果能看到像埃及这样的国家的所有建筑物会怎么样?我决定尝试一下,并用DuckDB和Datashader做了一张这样的地图。
埃及建筑
开始于融合我在领英上发布那张图片的第二天,2024年4月,我和Fused.io的普利尼奥·古兹曼进行了会面。我告诉了他我之前做了什么,他对Fused会符合我的需求表示了热情和信心。他提到的一个关键特性是实时开发功能。在我开发那张埃及地图时,我不得不反复启动ETL过程,直到它达到我想要的效果。
所以我马上就开始了。我发现了一些Python用户自定义函数(UDFs),如Overture Maps和S2 Explorer,并环游世界寻找惊人的图片。从纽约飞往东京并看到结果立即呈现真是太刺激了。
2号哨兵
然后我开始修改这些 UDF 的组件来查看不同的 Overture 类型,但就在这个时候,我犹豫着从头开始构建自己的 UDF。
即时 UDFs (用户自定义函数)那直到 Fused 推出了它的文件浏览器。只需点击一下鼠标,我现在就可以从像 Source Cooperative 这样的提供商那里创建 UDF(用户定义函数),并用 DuckDB 或 GeoPandas 等工具进行可视化。借助这个新功能,我用同样的 Vida 数据集重新制作了我的埃及地图,这次我使用了 DuckDB 和 H3 扩展。我意识到,这些组件比我想象的要简单得多,感到非常轻松。
本地区测试我在Jupyter笔记本上使用具备H3扩展功能的DuckDB(未使用Fused)本地查询Overture Maps的数据,获取国家和洲的信息。H3扩展的好处在于,只要正确设置查询,就能轻松地从笔记本中处理比内存容量更大的数据集。
五大湖区的建筑密度
非洲公路密度
欧洲电网
我用H3制作了这张埃及建筑物分布图,你觉得这张地图和上面提到的Datashader版本相比怎么样?
埃及的建筑密集程度
融合地图和序曲地图在八月,Fused 宣布了与 Overture Maps Foundation 更紧密的合作,并带来了更多 Overture 的功能。就像与 Source Cooperative 的合作一样,我现在可以即时生成建筑物、地点、土地使用或道路等的 UDF(比如通过合并 parquet 文件)。然后我利用该 UDF 的框架来整合各种数据。
巴黎附近医院的道路网络
H3与GeoJSON的结合有一天我在查看DuckDB_H3_Example时,突然想到,如果我将这些单元格与Overture建筑物连接起来会怎么样呢?通过Fused上的所有示例UDF,我学会了如何使用DuckDB的H3扩展。因此,我在一个Overture的UDF中调用了该UDF,并使用GeoPandas将两者连接起来。结果如下所示的地图。建筑物的颜色表示相应黄色出租车的上车点数量。这个TLC的parquet文件中有数百万个数据点,H3帮助我将这些点聚合到数千个,使空间连接变得更加容易。
带有H3数据的建筑
我用 Kepler.gl 制作这张特定的地图,仅需两次点击。我也可以将数据导出到像 Felt 和 Mapbox 这样的工具中。你可以在这里找到我用来重现这张地图的代码:https://github.com/kentstephen/duckdb_h3。
新功能及社区交流我刚开始使用Fused的AppBuilder,并做了一个仪表盘,让你可以查看和互动纽约市311呼叫数据,并以3D H3热力图的形式展现。任何人都可以设置日期范围和分辨率来改变显示方式。非常快捷且容易上手。
这里有太多令人兴奋的数据科学项目在Fused上进行。请查看凯文·拉卡伊关于无需机器学习的全球植被分割的文章。还有克里斯托弗·基德的从100亿条驾驶记录中分析交通速度,这就是我喜欢的那种项目。
我在继续将H3热力图与Overture类型的数据结合起来。这是显示伦敦交叉点与道路连接情况的热力图。
伦敦的道路分布情况
更深的颜色表示交叉路口更多。我打算加入交通流量数据。
结论部分我已經研究空間資料幾個月了,現在我想找下一個探索的地方。
共同學習,寫下你的評論
評論加載中...
作者其他優質文章