分享一个Geoserver发布Mysql8经纬度反了的解决

概述

最近做东西用的数据库是MySQL8,Geoserver也升级到了2.25.2的版本,本文就分享一下在这个配置下发布服务遇到的坑和最后的解决方法。

环境信息

image.png
image.png

事件与解决

最近项目里面有一批数据要在地图上展示,由于数据量比较大,也为了图省事,就想着在geoserver里面直接发布成服务。于是就按照老经验,创建了一个geometry字段,再用sql更新字段的值。

-- 创建表
CREATE TABLE layer_poi  (
    id INT NOT NULL,
    geom geometry,
    PRIMARY KEY (id)
);
-- 更新值
update layer_poi set geom = st_geomfromtext(
CONCAT('POINT(',lon,' ',lat,')')
)
where 1=1;
image.png

紧接着去Geoserver里面发布服务,可发布服务计算数据范围的时候发现经纬是反的。


image.png

于是就想到是不是MySQL里面经纬度反转导致的,于是就更新了一下sql

-- 指定经纬度顺序
update layer_poi set geom = st_geomfromtext(
CONCAT('POINT(',lon,' ',lat,')')
, 4326 
,'axis-order=long-lat'
)
where 1=1;

再去发布服务发现还是反着的。

于是就翻了一下mysql的官方文档,发现了point类,官方的解释如下:

A Point is a geometry that represents a single location in coordinate space.(翻译:点是表示坐标空间中单个位置的几何图形)

于是,就将创建表和更新表的sql进行了修改:

-- 创建表
CREATE TABLE layer_poi  (
    id INT NOT NULL,
    geom point,
    PRIMARY KEY (id)
);
-- 更新值
update layer_poi set geom = point(lon, lat)
where 1=1;

这个时候再去发布服务,计算图层范围的时候发现是对的。

image.png
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容