【问题标题】:Getting started with django-restframework-gis on Windows 10Windows 10 上的 django-rest framework-gis 入门
【发布时间】:2017-11-29 21:46:32
【问题描述】:

我有一些使用 Python-Django 的经验,包括它的 REST 框架、对地理信息(以及 GIS 是什么)和数据库的合理理解,我想在我的 Windows 上开发一个“地理感知”REST 服务基于 Django 的机器。应用程序应仅限于 REST 服务;视觉探索等东西自主开发。附注:一旦我的应用程序运行,它将被移植到 Linux 机器上,然后将使用 PostGIS 代替 SpatialLite。

经过几个小时的网络搜索,我仍然没有想出一个好的“快速入门”指南。有很多关于与我的任务相关的各个方面的教程和文档,但它们要么是指 Linux,要么它们的安装说明已经过时。这是我到目前为止所做的:

1) 我使用 miniconda 和 Pycharm

2) 我像这样创建了一个新的虚拟环境:

conda create -n locations pip numpy requests
activate locations
conda install -c conda-forge django djangorestframework djangorestframework-gis

3) 我设置了新的 Django 项目和我的应用程序并执行了数据库迁移:

python [path-to..]\django-admin.py startproject locations
cd locations
python [path-to..]\django-admin.py startapp myapp
cd ..
python manage.py migrate

4) 我在 settings.py 中的 APPLICATIONS 中添加了“rest_framework”和“myapp.apps.MyAppConfig”

5) 我停止阅读一般的 django-restframework 教程并开始搜索 django-restframework-gis 的具体信息。我从中了解到的是,我需要增强我的 SQLite 数据库以成为 SpatialLite 数据库。 SpatialLite 的 Windows 二进制文件可在 gaia-sins 获得——但我真正需要哪些?我下载了 mod_spatialite-4.3.0a-win-x86.7z 文件并解压,并在我的 settings.py 中添加了SPATIALITE_LIBRARY_PATH= '[path-to..]\mod_spatialite-4.3.0a-win-x86\mod_spatialite.dll'

接下来会发生什么?

具体问题:

1) 如果我不打算存储地理空间信息而只是构建一个 REST 服务来提供来自其他来源的 GeoJSON 信息(例如 netcdf 数据格式的天气模型输出),我真的需要升级我的 SQLite 数据库吗? )?或者在这种情况下描述我的 Django 模型并忽略任何与数据库相关的问题就足够了吗?

2) 完成基本“接线”的最少代码是多少?这可能是一个非常简单的服务,它将接受纬度/经度坐标作为 URL 中的参数,并以 GeoJSON 格式返回此位置。此类代码应突出显示使用 gis 版本中的“普通”django-restframework 之间的差异。一旦我有了这个,我可能会在现有文档中找到自己的方式(例如Miguel Grinberg TutorialGitHub description)。

【问题讨论】:

    标签: python django windows django-rest-framework geospatial


    【解决方案1】:

    好的,经过一天的搜索和实验,我承认这是一个错误的问题 - 因此我回答自己并关闭此问题。

    显然,我一直很天真地想建立一个“地理感知”服务,以为我可以用一两个特殊的数据类型来处理坐标,以及一种特殊的 GeoJSON 序列化器——如果真的有必要的话, 具有地理功能的数据库。

    事实证明,我最终想要做的是一个 GeoDjango 应用程序(即使我只会使用 GeoDjango 可以做的一小部分),所以GeoDjango docs 是开始的地方,尤其是他们的安装指南。

    故事还没有结束,因为我仍然无法从 Django 加载所需的库,但现在方向更清晰了。

    更具体地说,我遇到的问题主要不是 SpatiaLite 问题。我能够通过运行SELECT load_extension('mod_spatialite'); SELECT InitSpatialMetaData(); 安装 SpatiaLite 并增强现有的 sqlite 数据库(另请参阅this post。Django(python manage.py check)抱怨找不到 gdal 库,一旦找到它,那就错了版本。GeoDjango docs 报告说,这确实是安装 GeoDjango 时最常见的问题。如果来自 ctypes 的错误消息更详细一点,以便更容易搜索解决方案,这将是有帮助的。它在各种网络上花费了几个跃点站点和 ctypes init.py 文件中的额外打印语句,然后我发现需要匹配 gdal 的版本、python 的版本和编译器(DLL 地狱,这是由某人)。

    混淆的另一部分来自于各种所需的“地理包”之间的多种依赖关系。比如 SpatiaLite 已经自带了一个 gdal 库,那为什么还要单独安装 gdal 呢?事实上,GeoDjango docs 建议与OSGEO4W 一起使用,因为该程序套件将所有内容捆绑在一起。然而,如果从一个独立安装了 OSGEO4W 和 Python/Django 的系统开始,这并不是微不足道的。这是我开始的情况。我安装 OSGEO4W 主要是为了与 QGIS 一起工作,我安装了 Python 和 Django 来完成其他任务。后来才意识到必须为 GeoDjango 应用程序链接这两者。我可能需要从头开始,但很高兴知道人们最近是否在 Python >= 3.4 的 Windows 10、x64 环境中取得了成功。

    【讨论】:

      猜你喜欢
      • 2015-03-24
      • 1970-01-01
      • 1970-01-01
      • 2016-11-23
      • 2014-04-27
      • 2014-04-22
      • 2017-12-05
      • 2016-09-14
      • 2018-01-15
      相关资源
      最近更新 更多