Django后台显示离线地图(openlayer)

2024-02-18 22:40

本文主要是介绍Django后台显示离线地图(openlayer),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Django后台显示离线地图

最近做项目,第一次接触遥感系统相关项目,要使用Django后台发布离线地图,记录下做的过程中遇到的问题。

地图数据来源

地图数据来源:Bigemap http://www.bigemap.com/.下载的高德地图8-15级数据。这个软件下载的数据质量还是比较好的。

地图发布服务

使用geoserver发布离线地图服务,安装不过多介绍。这里推荐一篇教程https://blog.csdn.net/aLoudVoice_/article/details/105459531.
使用geoserver发布离线地图跟网上介绍的差不多。
首先新建一个工作区
在这里插入图片描述

其次在数据存储模块选择新建数据源,进入如下页面,选择栅格数据源中的geotiff
在这里插入图片描述
选择工作区,数据源名称,连接到tif影像所在的位置,点击保存.影像上传的时候需要注意,有些影像需要在Arcgis中进行栅格投影,才能上传成功,否则会报错。在下载的地图影像数据大多是WGS_1984_Web_Mercator_Auxiliary_Sphere(EPSG:3857)投影坐标系,需转换成WGS_1984_World_Mercator(EPSG:3395)才能上传成功否则会报错。坐标系是EPSG:4326不用重投影。
在这里插入图片描述
点击发布按钮。

在这里插入图片描述
填写命名,标题,坐标参考系统要保持一致,
在这里插入图片描述
在这里插入图片描述
修改Gridset多少级数据就写多少级。

在这里插入图片描述
点击保存后,在Layer Preview中就可以预览数据了。
在这里插入图片描述

接下来需要将地图数据生成瓦片,在Tile Layers模块选择Seed/Truncate
在这里插入图片描述
编辑Grid set,Zoom start以及Zom stop内容,Grid set要与导入的影像保持一致否则分辨率会有变化,Zoom start以及Zom stop要与地图层级保持一致,要不分辨率也会变化。(EPSG:3395的需要选择EPSG:3857,EPSG:3395预览不显示,不晓得为啥,使用3857效果是一样的)
在这里插入图片描述
点击提交进入如下模式。生成瓦片数据,数据保存到geoserver安装目录的data_dir\gwc文件夹下
在这里插入图片描述
选择预览格式:
在这里插入图片描述

预览效果如下:
在这里插入图片描述

其它层级数据同上处理,处理完毕后将其它层级生成的瓦片数据文件夹(EPSG_xxxx_xx)复制到最低级的目录下。离线地图生成完毕,通过geoserver发布WMS服务,预览如上图所示。

Django后台发布离线地图

常用的Django地图服务有两种leaflet和openlayer。
leaflet尝试过修改,由于技术太菜,尝试一天后以失败告终,后尝试open layer成功。
OSMGeoAdmin模块转到定义修改options.py文件
在这里插入图片描述
修改默认参数
open layers_url:网址内容均要下载到本地,通过本地加载,需要放在static(D:\Python36\Lib\site-packages\Django-2.1.11-py3.6.egg\django\contrib\gis\static)文件夹下,wms服务:使用gwc发布的wms服务,加载本地瓦片。我使用http://localhost:8080/geoserver/map/wms?这种模式发布只能显示一级数据。
在这里插入图片描述
这里面的内容也需要修改,修改模板以及参数。
在这里插入图片描述
osm.html中的内容也需要修改,修改D:\Python36\Lib\site-packages\Django-2.1.11-py3.6.egg\django\contrib\gis\templates\gis\admin目录下的osm.js文件
内容如下

{% extends "gis/admin/openlayers.js" %}
{% block extra_layers %}topo_layer = new OpenLayers.Layer.WMS("影像地图","http://localhost:8080/geoserver/gwc/service/wms?", {layers: 'xjmap:xj8',format:'image/png'} );{{ module }}.map.addLayer(topo_layer);{% endblock extra_layers %}

至此修改完毕,参数中的小细节需要自己根据需要进行调整。

效果预览:
地图是离线显示的。
在这里插入图片描述
文章内容比较粗糙,但大致思路说清楚了,最近比较忙有时间再来修改,有问题的小伙伴可以来沟通。

这篇关于Django后台显示离线地图(openlayer)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/722681

相关文章

Django序列化中SerializerMethodField的使用详解

《Django序列化中SerializerMethodField的使用详解》:本文主要介绍Django序列化中SerializerMethodField的使用,具有很好的参考价值,希望对大家有所帮... 目录SerializerMethodField的基本概念使用SerializerMethodField的

使用Folium在Python中进行地图可视化的操作指南

《使用Folium在Python中进行地图可视化的操作指南》在数据分析和可视化领域,地图可视化是一项非常重要的技能,它能够帮助我们更直观地理解和展示地理空间数据,Folium是一个基于Python的地... 目录引言一、Folium简介与安装1. Folium简介2. 安装Folium二、基础使用1. 创建

Linux虚拟机不显示IP地址的解决方法(亲测有效)

《Linux虚拟机不显示IP地址的解决方法(亲测有效)》本文主要介绍了通过VMware新装的Linux系统没有IP地址的解决方法,主要步骤包括:关闭虚拟机、打开VM虚拟网络编辑器、还原VMnet8或修... 目录前言步骤0.问题情况1.关闭虚拟机2.China编程打开VM虚拟网络编辑器3.1 方法一:点击还原VM

CSS模拟 html 的 title 属性(鼠标悬浮显示提示文字效果)

《CSS模拟html的title属性(鼠标悬浮显示提示文字效果)》:本文主要介绍了如何使用CSS模拟HTML的title属性,通过鼠标悬浮显示提示文字效果,通过设置`.tipBox`和`.tipBox.tipContent`的样式,实现了提示内容的隐藏和显示,详细内容请阅读本文,希望能对你有所帮助... 效

Python依赖库的几种离线安装方法总结

《Python依赖库的几种离线安装方法总结》:本文主要介绍如何在Python中使用pip工具进行依赖库的安装和管理,包括如何导出和导入依赖包列表、如何下载和安装单个或多个库包及其依赖,以及如何指定... 目录前言一、如何copy一个python环境二、如何下载一个包及其依赖并安装三、如何导出requirem

如何设置vim永久显示行号

《如何设置vim永久显示行号》在Linux环境下,vim默认不显示行号,这在程序编译出错时定位错误语句非常不便,通过修改vim配置文件vimrc,可以在每次打开vim时永久显示行号... 目录设置vim永久显示行号1.临时显示行号2.永www.chinasem.cn久显示行号总结设置vim永久显示行号在li

如何使用celery进行异步处理和定时任务(django)

《如何使用celery进行异步处理和定时任务(django)》文章介绍了Celery的基本概念、安装方法、如何使用Celery进行异步任务处理以及如何设置定时任务,通过Celery,可以在Web应用中... 目录一、celery的作用二、安装celery三、使用celery 异步执行任务四、使用celery

Linux使用nohup命令在后台运行脚本

《Linux使用nohup命令在后台运行脚本》在Linux或类Unix系统中,后台运行脚本是一项非常实用的技能,尤其适用于需要长时间运行的任务或服务,本文我们来看看如何使用nohup命令在后台... 目录nohup 命令简介基本用法输出重定向& 符号的作用后台进程的特点注意事项实际应用场景长时间运行的任务服

电脑显示hdmi无信号怎么办? 电脑显示器无信号的终极解决指南

《电脑显示hdmi无信号怎么办?电脑显示器无信号的终极解决指南》HDMI无信号的问题却让人头疼不已,遇到这种情况该怎么办?针对这种情况,我们可以采取一系列步骤来逐一排查并解决问题,以下是详细的方法... 无论你是试图为笔记本电脑设置多个显示器还是使用外部显示器,都可能会弹出“无HDMI信号”错误。此消息可能

Django中使用SMTP实现邮件发送功能

《Django中使用SMTP实现邮件发送功能》在Django中使用SMTP发送邮件是一个常见的需求,通常用于发送用户注册确认邮件、密码重置邮件等,下面我们来看看如何在Django中配置S... 目录1. 配置 Django 项目以使用 SMTP2. 创建 Django 应用3. 添加应用到项目设置4. 创建