随着全球定位系统(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应用程序的详细内容,更多请关注作者获取其它相关文章!