首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Windows 10上的django-restframework-gis入门

Windows 10上的django-restframework-gis入门
EN

Stack Overflow用户
提问于 2017-11-30 05:46:33
回答 1查看 203关注 0票数 0

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

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

1)我使用miniconda和Pycharm

2)创建了一个新的虚拟环境,如下所示:

代码语言:javascript
复制
conda create -n locations pip numpy requests
activate locations
conda install -c conda-forge django djangorestframework djangorestframework-gis

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

代码语言:javascript
复制
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的应用程序中添加了"rest_framework“和"myapp.apps.MyAppConfig”

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

接下来会发生什么?

具体问题:

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

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

EN

回答 1

Stack Overflow用户

发布于 2017-12-01 16:48:36

好吧,在又一天的搜索和实验之后,我承认这是一个错误的问题-因此我回答了自己,并结束了这个问题。

显然,我太天真地建立了一个“地理感知”服务,认为我可以使用一两种特殊的坐标数据类型和一种特殊的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时最常见的问题。如果来自ctype的错误消息更详细一点,这将有助于更容易地搜索解决方案。在我发现需要匹配gdal的版本、的版本和编译器(DLL地狱这是有人调用的)之前,我在不同的网站上进行了几次跳转,并在ctypes init.py文件中添加了额外的打印语句。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47562387

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档