带有 Django⁹⁹:GeoDjango、SpatiaLite 与 Leaflet 的地图

这是一份使用基于 Python 的 Web 框架 Django 及其模块 GeoDjango、带有空间扩展 SpatiaLite 的 SQLite 数据库和用于交互式地图的 JavaScript 库 Leaflet 创建 Web 地图的快速入门指南,包含以下主要内容:

  • 抽象:遵循“简单优于复杂”的 Python 原则,使用 Django 的 GeoDjango 模块、存储在 SQLite 数据库中的地理数据和 SpatiaLite 进行地理空间查询来创建 Web 地图。
  • 介绍:网站中的地图是让用户轻松访问地理数据的最佳方式,很多人采用使用外部服务的策略,但这可能导致数据和成本管理问题,本指南将展示如何使用 Django、GeoDjango、SpatiaLite 和 Leaflet 创建 Web 地图。
  • 需求:需要 Python 3(测试版本 3.8 - 3.13)、虚拟环境、最新版本的blackdjango(测试版本 Django 3.1 - 5.2)。
  • 创建mymap项目:使用startproject命令创建mymap项目,在mymap目录下生成基本文件。
  • 创建markers应用:使用startapp命令创建markers应用,在markers目录下生成必要文件,并在mymap的设置文件中激活该应用。
  • 添加空 Web 地图:添加map模板、markersURL、更新mymapURL,然后运行runserver命令测试空白地图页面,在浏览器中访问可看到空白地图。
  • Leaflet:介绍 Leaflet 是最常用的 Web 地图 JavaScript 库之一,具有轻量、文档良好等特点,通过添加 Leaflet 的 JavaScript 和 CSS 模块、创建自定义 JavaScript 文件来显示地图。
  • GeoDjango:介绍 GeoDjango 是 Django 的地理模块,添加了地理功能,如特定字段、多种数据库后端、空间查询和管理集成等,使用前需要安装 GDAL。
  • SpatiaLite:SpatiaLite 是 SQLite 的扩展,是 GeoDjango 的数据库后端之一,需要安装其加载模块,修改项目数据库设置以使用 SpatiaLite 引擎。
  • 添加一些标记:定义Marker模型,使用 Django 管理界面添加新标记,生成数据库迁移并应用到数据库,创建管理员用户并测试管理页面。
  • 在地图上显示标记:创建MapView类,添加路径到地图视图,在模板中插入 GeoJSON,使用 Leaflet 渲染地图上的所有标记。
  • 测试填充地图:运行runserver命令测试填充地图,在浏览器中访问可看到带有标记的地图。
  • 有趣的事实:如果想了解最新的徒步旅行到 Monte Amaro 峰的信息,可以在 Wikiloc 账户上查看。
  • 结论:展示了一个功能齐全的地图示例,未来将使用 Django Rest Framework、PostGIS 等使地图更先进。
    资源包括 GeoDjango 文档、Leaflet API 参考、SpatiaLite 函数参考列表和在 Django 模板中安全包含数据的方法等,还列出了更新历史。
阅读 12
0 条评论