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

相关文章

无人叉车3d激光slam多房间建图定位异常处理方案-墙体画线地图切分方案

墙体画线地图切分方案 针对问题:墙体两侧特征混淆误匹配,导致建图和定位偏差,表现为过门跳变、外月台走歪等 ·解决思路:预期的根治方案IGICP需要较长时间完成上线,先使用切分地图的工程化方案,即墙体两侧切分为不同地图,在某一侧只使用该侧地图进行定位 方案思路 切分原理:切分地图基于关键帧位置,而非点云。 理论基础:光照是直线的,一帧点云必定只能照射到墙的一侧,无法同时照到两侧实践考虑:关

如何用Docker运行Django项目

本章教程,介绍如何用Docker创建一个Django,并运行能够访问。 一、拉取镜像 这里我们使用python3.11版本的docker镜像 docker pull python:3.11 二、运行容器 这里我们将容器内部的8080端口,映射到宿主机的80端口上。 docker run -itd --name python311 -p

第10章 中断和动态时钟显示

第10章 中断和动态时钟显示 从本章开始,按照书籍的划分,第10章开始就进入保护模式(Protected Mode)部分了,感觉从这里开始难度突然就增加了。 书中介绍了为什么有中断(Interrupt)的设计,中断的几种方式:外部硬件中断、内部中断和软中断。通过中断做了一个会走的时钟和屏幕上输入字符的程序。 我自己理解中断的一些作用: 为了更好的利用处理器的性能。协同快速和慢速设备一起工作

安卓链接正常显示,ios#符被转义%23导致链接访问404

原因分析: url中含有特殊字符 中文未编码 都有可能导致URL转换失败,所以需要对url编码处理  如下: guard let allowUrl = webUrl.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) else {return} 后面发现当url中有#号时,会被误伤转义为%23,导致链接无法访问

C#实战|大乐透选号器[6]:实现实时显示已选择的红蓝球数量

哈喽,你好啊,我是雷工。 关于大乐透选号器在前面已经记录了5篇笔记,这是第6篇; 接下来实现实时显示当前选中红球数量,蓝球数量; 以下为练习笔记。 01 效果演示 当选择和取消选择红球或蓝球时,在对应的位置显示实时已选择的红球、蓝球的数量; 02 标签名称 分别设置Label标签名称为:lblRedCount、lblBlueCount

lvgl8.3.6 控件垂直布局 label控件在image控件的下方显示

在使用 LVGL 8.3.6 创建一个垂直布局,其中 label 控件位于 image 控件下方,你可以使用 lv_obj_set_flex_flow 来设置布局为垂直,并确保 label 控件在 image 控件后添加。这里是如何步骤性地实现它的一个基本示例: 创建父容器:首先创建一个容器对象,该对象将作为布局的基础。设置容器为垂直布局:使用 lv_obj_set_flex_flow 设置容器

利用Django框架快速构建Web应用:从零到上线

随着互联网的发展,Web应用的需求日益增长,而Django作为一个高级的Python Web框架,以其强大的功能和灵活的架构,成为了众多开发者的选择。本文将指导你如何从零开始使用Django框架构建一个简单的Web应用,并将其部署到线上,让世界看到你的作品。 Django简介 Django是由Adrian Holovaty和Simon Willison于2005年开发的一个开源框架,旨在简

C# dateTimePicker 显示年月日,时分秒

dateTimePicker默认只显示日期,如果需要显示年月日,时分秒,只需要以下两步: 1.dateTimePicker1.Format = DateTimePickerFormat.Time 2.dateTimePicker1.CustomFormat = yyyy-MM-dd HH:mm:ss Tips:  a. dateTimePicker1.ShowUpDown = t

小程序button控件上下边框的显示和隐藏

问题 想使用button自带的loading图标功能,但又不需要button显示边框线 button控件有一条淡灰色的边框,在控件上了样式 border:none; 无法让button边框隐藏 代码如下: <button class="btn">.btn{border:none; /*一般使用这个就是可以去掉边框了*/} 解决方案 发现button控件有一个伪元素(::after

全英文地图/天地图和谷歌瓦片地图杂交/设备分布和轨迹回放/无需翻墙离线使用

一、前言说明 随着风云局势的剧烈变化,对我们搞软件开发的人员来说,影响也是越发明显,比如之前对美对欧的软件居多,现在慢慢的变成了对大鹅和中东以及非洲的居多,这两年明显问有没有俄语或者阿拉伯语的输入法的增多,这要是放在2019年以前,一年也遇不到一个人问这种需求场景的。 地图应用这块也是,之前的应用主要在国内,现在慢慢的多了一些外国的应用场景,这就遇到一个大问题,我们平时主要开发用的都是国内的地