当前位置:首页 » 《休闲阅读》 » 正文

Python+GeoDjango+PostGIS搭建开源webgis后端框架,进行gis后端开发

10 人参与  2024年11月22日 14:01  分类 : 《休闲阅读》  评论

点击全文阅读


随着全球定位系统(gps)和卫星影像技术的飞速发展,地理信息系统(gis)已经成为了一个重要的应用领域。gis不仅限于地图制作和分析,也被广泛应用于环境管理、土地管理、城市规划等领域。而web gis应用程序的开发,可以使得用户在任何地点、任何时间、通过任何设备进行gis数据的查询、分析和管理,具有极大的应用前景。

Django是一个基于Python语言的Web开发框架,它提供了一系列的开发工具和技术,可以帮助我们快速建立高效的Web应用程序。本文将介绍如何使用GeoDjango建立一个简单的Web GIS应用程序。

一,环境准备(本例为非虚拟环境,也可选择先安装Django创建虚拟环境后安装以下依赖库)

在开始前,我们需要确保已经安装好以下必备环境。GDAL,PROJ,GEOS为GeoDjango的依赖库

1.Python 3.x

2.Django(因为 GeoDjango 包含在 Django 中,所以请参考 Django 来了解详细信息 如何安装。)

        国外源:pip install Django==x.x.x(版本号) 

        或

        清华源:pip install -i  https://pypi.tuna.tsinghua.edu.cn/simple Django==x.x.x

3.GDAL

        国外源:pip install GDAL==x.x.x(版本号) 

        或

        清华源:pip install -i  https://pypi.tuna.tsinghua.edu.cn/simple GDAL==x.x.x

4.proj

        国外源:pip install PROJ==x.x.x(版本号) 

        或

        清华源:pip install -i  https://pypi.tuna.tsinghua.edu.cn/simple PROJ==x.x.x

5.geos

        国外源:pip install geos==x.x.x(版本号) 

        或

        清华源:pip install -i  https://pypi.tuna.tsinghua.edu.cn/simple geos==x.x.x

验证是否安装成功命令:pip list 会展示安装的所有库列表 如下

                                 

二,创建Django项目

创建命令:django-admin startproject  项目名

例如 django-admin startproject project3 则创建出project3项目

cd 项目名进入该主目录并启动:python manage.py runserver(测试阶段的启动命令)

注:python manage.py  命令可查询出左右命令的列表

打开网址:http://127.0.0.1:8000界面如下,django启动成功(注意端口占用),后续操作在pycharm中进行

pycharm打开项目,打开终端执行以下命令新建一个应用程序app01如下:

python manage.py startapp app01

                                               

想要app01生效需要在settings.py中配置一下:

展开目录如下:

                                               

项目同名文件夹- project3/project3

· __init__.py:Python包的初始化文件夹

·wsgi.py:WEB服务网管的配置文件-Django正式启动时,需要用到

·urls.py:项目的主路由配置-HTTP请求进入Django时,优先调用该文件

·settings.py:项目的配置文件-包含项目启动时需要的配置

二,路由配置urls.py

1.把urls.py里暂时不需要的注掉,如下第一个参数为路由地址,第二个为路由函数(在此处我们使用了路由分发函数将函数放在了app01的urls.py里)(app01里没有urls.py文件需要新建)

                             

prth:路由函数

include:路由分发函数

2.假设:我们已经拥有配置好的postgresql数据库且有扩展postgis,此时需要分配路由且编写数据路操作逻辑:

        首先:配置geoDjango,在settings.py中加入配置激活geoDjango

                                

        加入下列配置激活GDAL,proj,geos:

        安装restframework并加入settings.py配置文件如下(引入APIView等):

                                  

        配置数据库在setting中写入:

        

3.假设数据库中有一个名为RoadsTuopuFinsh的地理数据表。在app01/urls.py中编写路由如下:

注:路由参数由正则表达式精准指定,views为存放执行函数的文件

访问地址:http://127.0.0.1:8000/dj/lw/ 即可执行RoadsTuopuFinsh函数

http://127.0.0.1:8000/dj/lw/ls/126 即可执行RoadsTuopuFinsh2函数

4.在app01的views中编写操作函数逻辑如下

在此views中,

①我们采用了cursor原生数据库操作,完全跨过模型类进行操作,进行增删该查(也可自行选择模型层的orm进行操作),在进行复杂的查询时,orm可能无法满足我们的要求

②我们采用了面向对象的开发模式开开发接口

③在浏览器中输入启动的地址http://127.0.0.1:8000/dj/lw/ls/126即可获取我们想要的数据(此为get请求,也是前端所需要的数据),其他类型的请求在相应的位置,编写逻辑即可。(访问前请启动Django和postgis数据库)

三,数据库安装

        postgresql数据库安装,空间扩展postGIS安装,请自行安装(注意postGIS的版本)

        使用pgAdmin4登录,并使用以下语句激活postGIS,:

                create extension postgis;

        使用以下语句查询当前的postgis版本信息:

                select postgis_full_version();

四,将shp数据导入数据库

        方式一:使用软件自带工具-PostGIS PostGIS Bundle 3 for PostgreSQL x64 12 Shapefile and DBF Loader Exporter

        方式二:使用QGIS链接postGIS数据库,在QGIS中打开需要导入的地图数据,将图层拖入指定数据库即可

        方式三:此方法需要用到Django的模型类创建一个相同字段和字段类型的数据表,如下:

通过以下命令将数据导入到数据库中:

该命令将world_borders.shp文件中的数据导入到名为“worldborder”的表中

解决跨域问题:安装并配置 django-cors-headers

总结

本文介绍了如何使用Django和GDAL建立一个简单的Web GIS应用程序。通过使用这些工具和技术,我们可以轻松地开发高效的Web应用程序,并在其中展示和分析地理数据。此外,我们还可以使用其他地图库和GIS数据源来进一步扩展和优化我们的应用程序。

以上就是基于Django建立Web GIS应用程序的详细内容,更多请关注作者获取其它相关文章!


点击全文阅读


本文链接:http://zhangshiyu.com/post/190301.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1