GeoServer发布ArcMap配图
创始人
2025-05-31 06:19:58

项目过程中遇到一个需求:leaflet要使用自定义的底图。现在配图一般都会用ArcMap,但是不能使用ArcGIS Server发布(没买)。所以需要研究一下怎样把ArcMap配的地图用GeoServer发布出去。

首先需要明确一点,动态地图服务(WMS)想都不要想,他是实时渲染的,需要数据+样式,只能发布瓦片服务。

一、数据准备

数据准备分两步:
第一步,确定数据和mxd文件都是WGS 1984 Web Mercator Auxiliary Sphere(WKID:3857)坐标系。我这里是需要使用Leaflet加载,3857是最方便的。其他情况也需要尽量保证数据和配图都是投影坐标系,否则GeoServer的GeoWebCache插件不好处理。
第二步:切片获得arcgis瓦片。这里有两种方式,一种是发布到ArcGIS Server等待其切片完成,一种是分享为切片包。使用第二种方式需要在ArcMap里打开相关的选项:Customize>Sharing>Enable ArcGIS Runtime Tools,这里需要注意,很多同志ArcGIS10.4以后的版本是通过直接覆盖AfCore.dll破解而不是通过License破解的,这种破解方式这个ArcGIS Runtime Tools是用不了的。

无论采取什么切片方式,如果最终使用leaflet加载,推荐使用用自带的Arcgis Online…切片方案,可适当调整级别,不然会很大很大。如果有其他的需求,可以自己使用ArcGIS工具箱里的切片方案制作工具来做一个。

最后如果使用ArcGIS Server切片,就将切片文件从缓存文件夹里拷出来,如果分享成切片包,就将切片包改成.zip文件,将切片文件从里面解压出来。拷出来需要有以下这些东西。

二、配置GeoServer

  1. 给GeoServer设置缓存路径,在GeoServer文件夹下打开webapps/geoserver/WEB-INF/web.xml,在里面加入如下代码,其中param-value下填入缓存要存放的路径,保存。然后将ArcGIS切片文件拷进这个文件夹。
GEOWEBCACHE_CACHE_DIR/home/zxhm/geoserver/cache_dir
 
  1. 随后启动GeoServer,GeoServer会在缓存路径下生成geowebcache.xml文件,在里面的layers节点下面加入如下代码。其中tilingScheme节点下填入要发布的切片的conf.xml路径,里面主要是瓦片配置。tileCachePath节点下加入_alllayers的路径。
hbw_tiled/home/zxhm/geoserver/cache_dir/hbw_tiled/conf.xml/home/zxhm/geoserver/cache_dir/hbw_tiled/_alllayersfalse

三、配置GeoWebCache

GeoServer是不支持arcgisLayer的,因此需要借助GeoWebCache插件。虽然比较新的版本是自带GeoWebCache插件的,但是他又把里面识别arcgisLayer的功能给摘了出去,所以需要配置一下。

  1. 在这里下载一个完整版的GeoWebCache,把里面的geowebcache.war用压缩软件打开,从/WEB-INF下解压出geowebcache-arcgiscache-context.xml,从/WEB-INF/lib种解压出gwc-arcgiscache-x.x.x.jar
  2. 打开GeoServer文件夹webapps/geoserver/WEB-INF/lib,将gwc-arcgiscache-x.x.x.jar拷到里面。找到gs-gwc-x.x.x.jar,用压缩软件打开,将geowebcache-arcgiscache-context.xml加入其中。
  3. gs-gwc-x.x.x.jar中找到geowebcache-servlet.xml,在里面加入

找到geowebcache-core-context.xml,在里面加入


  1. 启动GeoServer,检查切片图层里是否有在第二步发布的图层。选择坐标系和格式可以看看能否预览。

四、Leaflet加载

Leaflet加载就是普普通通加载WMTS了,代码如下:

const params = 'layer=hbw_tiled&style=&tilematrixset=EPSG:3857_hbw_tiled&Service=WMTS&Request=GetTile&Version=1.0.0&Format=image/png'
L.tileLayer(`${geoServerBase}gwc/service/wmts?${params}&TileMatrix=EPSG:3857_hbw_tiled:{z}&TileCol={x}&TileRow={y}`,{maxZoom: 18,minZoom: 12,
}).addTo(map)

相关内容

热门资讯

游戏服务器是什么怎么租用 游戏服务器是什么怎么租用 我是艾西,作为一个常年与游戏行业保持着高频率的服务器供应商&...
Flink-转换算子  基本转换算子         map(映射)         filter(过滤&#...
2023年金三银四大厂高频Ja... Java 面试 谈到 Java 面试,相信大家第一时间脑子里想到的词肯定是金三银四&#...
C语言手撕一个Hash表(Ha... 什么是Hash Table 散列表用的是数组支持按照下标随机访问数据的特性,所以散列表...
springMVC01- 文章目录今日目标一、SpringMVC简介1 SpringMVC概述问题导入1.1 SpringMV...
Electron开发的应用利用... 技术选型: 1、electron:21.3.3 2、electron-v...
【Elastic (ELK) ... 目录 一、ES 基本概念介绍 1.1 ES 是什么 1.2 ES 主要功能 1.3 ES 相关术语 ...
指定wb用户在指定日期范围内的... 一、操作步骤 只记录过程,不讲述原理 1.获取用户ID和cookie 用户ID在进入个...
sheng的学习笔记-IO多路... 基础概念IO分为几种:同步阻塞的BIO,同步非阻塞的NIO,...
接口自动化测试(Python+...  目录:导读 (1)接口自动化测试的优缺点 (2)Pyth...
重构条件-Consolidat... 重构条件-Consolidate Conditional Expression合并条件式二 1.合并...
【论文阅读】BiSeNet V... 前言BiSeNet V2延续了v1版本的双边结构,分别处理空间细节信息、高层语义信息。...
二、马尔可夫决策过程与贝尔曼方... 这里写目录标题1 马尔可夫性质2 马尔可夫过程3 马尔可夫奖励过程(Markov re...
golang端口重用 文章目录前言SO_REUSEADDR简介Python中的用法golang用法其他学习总结 前言 服...
Zabbix“专家坐诊”第18... 问题一 Q:Zabbix5.0版本,如图,请问这里怎么修改...
深度学习技巧应用5-神经网络中... 大家好,我是微学AI,今天给大家带来深度学习技巧应用5-神经网络中的模型...
Mongodb 常用基本语法与... 常用操作 1、 Help查看命令提示 db.help(); 2、 切换/创建数据库 use t...
java中Long型数据大小比... 起因 今天在做项目的时候,想构建一个树形结构,从数据库中查询出了所有数据...
【Linux】-- 进程概念 基本概念进程(Process):是操作系统进行资源分配的最小单位。一个进程是一个程序的一次执行过程。...
2023-03-22干活小计: transformer: position-embedding: 残差:我也会了 ad...
verilog(基础知识) 摘要:主要写自己的学习内容,可能不完整 概述 对硬件描述,主要是对芯片设计进行验证人员对其进行验证...
MySQL函数 - 字符串函数... 文章目录1 字符串函数2 数值函数3 日期函数4 流程函数 函数是指一段可以直接被另一段程序调用的程...
Word2010(详细布局解释... 目录一、界面介绍二、选项卡1、文件选项卡(保存、打开、新建、打印、保存并发送、选项&#...
ProTradex是链上衍生品... 目前,链上衍生品市场的总市值已经超过100亿美元,链上衍生品市场的产品类...
spring boot 集成 ... 要将 PostGIS 集成到 Spring Boot 应用程序中,需要按照以下步骤进行操作:1. 将...
【DDIM精读】公式推导加代码... 【DDIM精读】公式推导加代码分析。1.前言:ddim总览2.均值(μ\...
系统开发-McCabe复杂度(... 系统开发(上)-软件设计(三十二)https...
每日学术速递3.22 CV - 计算机视觉 |  ML - 机器学习 |  RL - 强化学习 | NLP 自然语言处理 ...
CCF-CSP题解 第二题(J... 目录 201312-2:ISBN号码 201403-2:窗口 20140...
在服务器上搭建nacos集群-... 搭建集群需要具备JDK环境,1个Nginx+3个nacos注册中心+1...