MapServer 之 使用 MySQL 数据

在开源数据库中,对空间数据支持最好的是 PostgreSQL/PostGIS,postgresql 是开源数据库领域另一个著名的数据库,其支持基本的空间数据类型,如 point、line、polygon、box、path 等,由于本文主要讲解 mysql 的问题,这里就不展开了。PostGIS 是对 PostgreSQL 的空间扩展,使 PostgreSQL 对空间数据的支持能力提升到了一个更高层次:比如对空间数据对象的运算和分析。虽然 PostgreSQL/PostGIS 对空间数据的支持比较全面,但是国内使用的并不多,使用最多的还是 MySQL,因此,我们这篇文章中主要讲解 MySQL 中存储的空间数据的利用问题。

MySQL 从 4.1 开始支持空间数据类型,可能由于历史原因,或者很多技术人员并不了解 GIS,很多空间位置数据存储并没有使用专有的空间数据类型字段,而是使用了两个 float 类型存储,分别代表经度和纬度,经纬度数据一般是来自 GPS 传感器;当然还有一些数据就直接利用了 MySQL 的空间扩展,空间数据表中的 geometry 类型存储空间数据。那么这两种在 MySQL 数据库中存储的空间信息怎么利用呢?

本文结合 MapServer , OGR 和 MySQL ,对存储于 MySQL 数据库中的空间数据信息进行访问和渲染利用。

1. 服务器端渲染地图的必要性

那么当我们需要将这些存储在 MySQL 数据库中的空间数据渲染并显示到地图上时,怎么办呢?由于一般要素(非地图底图)的渲染,数据量并不是很大,因此很多做法是将经纬度字段取出,拼接成 GeoJSON 或者 KML 等空间数据交换格式,然后发送到客户端进行渲染,客户端可能是浏览器,浏览器的计算能力是有限的,这样的做法有两个瓶颈:

1. 随着数据量的增大,网络传输需要的时间变长;
2. 客户端计算能力有限,如果计算量过大,会导致浏览器假死,造成很不好的体验。

如果我们将渲染的任务交给服务器端,将渲染的图片结果传回客户端,那么以上的瓶颈就可以突破,且服务器端的计算能力可以通过增加服务器进行扩展,理论上是无限的。

如果数据库服务器软件使用 MapServer,我们可以通过 MapServer 来直接渲染 MySQL 中存储的空间数据,MapServer 对 MySQL 数据源的支持是由于得到 GDAL/OGR 的能力,MapServer 不能支持的数据往往通过 GDAL/OGR 来读取并渲染。分为两种情况:

1. 如果 MySQL 中的空间数据是存储在 geometry 字段中,那么可以直接读取;
2. 如果 MySQL 中的空间数据是通过两个字段分别代表 经纬度的形式存储的,那么需要构造虚拟图层。

2. 数据存储形式为 geometry

MySQL 对空间数据的支持是比较直观的,其空间数据类型直接对应于 OpenGIS 的规范,其能容纳空间数据的字段类型包括:GEOMETR

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值