MapnStreets 面板 Web 应用程序

Andrew Huang

您是否曾经走在街上,心想:“嗯……又一条名为‘Main’的街道?多么有创意……我想知道美国有多少条‘Main Street’?🤔”

如果您像我一样有过这样的想法,那就不用再疑惑了!MapnStreets 允许您探索美国街道名称的流行程度和位置。在 HuggingFace 上试用,或从 GitHub 克隆并在本地运行!

好奇 MapnStreets 是如何工作的?请继续阅读!

站在巨人的肩膀上构建:OSS 软件包 🚀

MapnStreets 是各种开源软件包的组合,这些软件包共同实现了神奇的功能

  • Fugue:这个简洁的 Python 库处理可扩展的数据处理和分析。它就像幕后大脑,可以高效地查询和处理大型数据集。
  • Panel:这个软件包负责创建 MapnStreets 的交互式 Web 界面!借助 Panel,您无需了解 JavaScript;只需在 Python 中定义小部件、布局和交互性,然后提供服务即可!
  • GeoPandas:GeoPandas 通过添加地理空间功能将 pandas 提升到一个新的水平。它专注于处理地理空间数据结构和操作。换句话说,在处理地理数据集(如 shapefile)时,它是一个救命稻草。
  • GeoViews:GeoViews 提供地理空间数据的交互式可视化。借助 GeoViews,您可以创建可以放大和缩小的动态地图和绘图。您还可以左右平移。
  • Parquet:您是否听说过一种既高效又可扩展的文件格式?那就是 Parquet!在 MapnStreets 中,Parquet 确保地理空间数据的快速高效存储和检索。
  • DuckDB:DuckDB 是一个闪电般快速的内存分析数据库。在 MapnStreets 中,DuckDB(与 Fugue 一起)负责执行您的查询。
  • Ray:Ray 在分布式执行方面是超级明星。它是一个灵活且高性能的框架,允许您跨集群并行化和分发计算。借助 Ray,MapnStreets 能够在瞬间下载和处理 3,000 多个文件!

这些出色的软件包及其支持的依赖项共同构成了 MapnStreets 背后的强大动力,以提供高效的数据处理和有趣的可视化效果。

预处理:数据准备的魔力

在我们讨论 MapnStreets 的前端方面之前,让我们先了解一下幕后迷人的数据预处理世界。以下是魔法发生的方式

  1. 获取数据:
    我们首先向美国人口普查局提供的可用 TIGER/Line® Edges 分区列表发送 GET 请求。然后,我们借助 BeautifulSoup 解析响应的内容,以收集所有文件 URL。
  1. 下载和处理 shapefile:
    有了文件 URL,我们就开始疯狂下载,下载所有压缩的 shapefile!为了确保幂等下载并避免冗余处理,我们使用了一个巧妙的技巧。在下载每个 shapefile 之前,我们使用 done_path 变量检查是否存在相应的“.done”文件。如果该文件已存在,我们会优雅地跳到下一个文件,从而节省宝贵的时间和资源。文件下载完成后,我们将其加载到 GeoPandas 中,但由于 Parquet 本身不支持几何类型,因此我们使用了另一个技巧——我们将几何列转换为众所周知的文本 (WKT) 格式,以便可以将其导出为 Parquet!
  1. 使用 Fugue 和 Ray 实现并行化
    借助 Fugue,您可以使用任何您喜欢的分布式计算后端,无论是 Dask、Ray 还是 Spark!在这里,之所以选择 Ray 是因为它具有自动进度条。

完成这些步骤后,我们已经为 MapnStreets 的闪耀登场做好了准备。街道名称的世界触手可及,等待着您用 MapnStreets 来探索!

Web 应用程序:所有街道的地图

现在您了解了其背后的技术,让我们看看 MapnStreets 在前端是如何工作的。

  1. 满足好奇心 🧐
    当您打开 MapnStreets 时,您会看到一个输入框。您可以在其中输入您感兴趣的街道名称。假设您输入“Main St.”,那么乐趣就开始了!
  1. 魔法发生了 ✨
    MapnStreets 立即行动!它使用 Fugue 并行化基于您输入的名称查找街道数据,并且它可以惊人地扩展,无论您有 2 个 CPU(HuggingFace 免费层)、4 个 CPU 还是 n 个 CPU!它使用参数化的 SQL 查询进行过滤,瞧!它输出一个 DataFrame,其中包含有关美国各地“Main Street”的所有重要详细信息。DataFrame 的几何列使用 `wkt.loads` 反序列化,然后转换为 GeoPandas GeoDataFrame!
  1. 可视化、探索、重复 🗺️
    现在是时候可视化这些 Main Street 了!MapnStreets 使用 GeoViews 创建交互式地图。该地图向您显示该国所有 Main Street 的位置。您可以放大、缩小和探索不同的区域。这就像进行一次虚拟的街道名称冒险!MapnStreets 还提供了一个表格,突出显示每个 Main Street 的确切位置。它就像一张藏宝图,引导您前往每个 Main Street 的所在地。是不是很酷?

最棒的是什么?一切都在 Python 中完成,这要归功于 Panel 的魔力。用户界面流畅、响应迅速且非常吸引人。这就像拥有您自己的个人街道名称探索器,触手可及。

用 MapnStreets 满足您的好奇心!

MapnStreets 是街道名称爱好者的终极应用程序。它结合了 Fugue、Panel、GeoPandas、GeoViews、Parquet、DuckDB 和 Ray,为您带来互动且视觉效果惊艳的体验。因此,下次当您遇到一条名称有趣的街道时,请使用 MapnStreets 满足您的好奇心。这是探索美国各地街道名称的流行程度和位置的完美方式。祝您街道名称搜索愉快!🚗🗺️

与专家交谈

与我们的专家之一交谈,为您的 AI 之旅寻找解决方案。

与专家交谈