讲师中心 微信公众号
AI工具推荐 视频效率加速

如何通过phpMyAdmin将查询出的地理空间数据绘制在地图上?

星伟君_1768

星伟君_1768

发布时间:2026-07-08 06:34:14

|

218人浏览过

|

来源于php中文网

原创

phpMyAdmin 不支持地图可视化,仅能显示地理字段的WKT/WKB文本;需用ST_X()、ST_Y()提取经纬度导出CSV,或用MySQL命令行导出GeoJSON供Leaflet等前端使用。

phpMyAdmin 本身不支持地图可视化

phpmyadmin 是一个数据库管理工具,不是 gis 可视化平台。它能显示 point、polygon 等地理空间字段的 wkt(如 point(116.4 39.9))或 wkb 值,但不会渲染成地图。直接点击“浏览”或“查询结果”看到的只是文本或十六进制,不是可交互地图。

常见错误现象:
– 查询返回 0x0101000000F3E2A8...(WKB),误以为是坐标;
– 在“结构”页看到字段类型为 POINT,就期待右侧自动出地图;
– 导出 CSV 后用 Excel 打开,发现经纬度列被截断或格式错乱。

  • 确认字段是否真实存储了有效坐标:执行 SELECT ST_AsText(location) FROM places;,确保返回类似 POINT(116.4074 39.9042) 的标准 WKT
  • 避免用 phpMyAdmin 直接导出二进制 WKB —— 它在 CSV/JSON 导出中默认转成十六进制字符串,前端无法解析
  • 如果必须从 phpMyAdmin 中取数据,导出时选择 CSV 格式,并勾选 Display NULL values as empty strings,同时手动添加 ST_AsText() 包裹字段

导出地理坐标前必须转换为经纬度数值对

MySQL 的 POINT 字段不能直接喂给 Leaflet 或 Google Maps API。你需要把 POINT 拆成两个浮点数字段:经度(X)和纬度(Y)。MySQL 提供 ST_X() 和 ST_Y() 函数完成这个转换。

使用场景:你想导出带坐标的列表用于前端 JS 渲染,或者导入到 QGIS / Kepler.gl。

SELECT id, name, ST_X(location) AS lng, ST_Y(location) AS lat FROM venues;

注意:
– ST_X() 返回经度(longitude),不是 X 轴意义上的“横坐标”——地理坐标系中经度对应 X;
– 如果表里混合了 NULL 或非法几何(如 POINT(0 0) 表示未知位置),建议加 WHERE location IS NOT NULL AND ST_IsValid(location) 过滤;
– phpMyAdmin 的“导出”功能对函数计算字段支持良好,但不要在导出设置里勾选“包含列名”以外的额外格式(比如“删除表”或“添加 INSERT 语句”),否则 CSV 会混乱。

立即学习“PHP免费学习笔记(深入)”;

btpanel phpsite 宝塔面板PHP网站
btpanel phpsite 宝塔面板PHP网站

宝塔面板 PHP 网站管理:站点创建、删除、启停、PHP 版本切换、域名管理、SSL证书管理、伪静态管理、数据库管理

下载

用 phpMyAdmin 导出后,前端加载地图的最小可行路径

你不需要写后端接口——只要把导出的 CSV 改成 JSON 或直接读入 JS,就能用 Leaflet 快速画点。关键在于数据格式干净、坐标顺序正确。

  • 从 phpMyAdmin 导出时选择 CSV,字段分隔符用英文逗号,文本限定符用双引号,导出内容为上一步的 SELECT ... ST_X(), ST_Y() 查询结果
  • 用文本编辑器打开 CSV,删掉第一行(列名)或保留并用 JS 跳过;确保没有 BOM、空行、多余引号;经纬度列不要有单位或括号
  • 前端示例(纯 HTML + Leaflet):
    <script>
    const data = [
      {name: "北京站", lng: 116.4074, lat: 39.9042},
      {name: "西直门", lng: 116.3503, lat: 39.9544}
    ];
    const map = L.map('map').setView([39.9, 116.4], 12);
    L.tileLayer('https://{a-d}.tile.openstreetmap.org/{z}/{x}/{y}.png').addTo(map);
    data.forEach(p => L.marker([p.lat, p.lng]).bindPopup(p.name).addTo(map));
    </script>
  • 注意坐标顺序:Leaflet 构造 L.marker([lat, lng]),而 MySQL 的 ST_Y() 是纬度、ST_X() 是经度——千万别写反成 [lng, lat],否则点会出现在南大西洋

更可靠的做法:绕过 phpMyAdmin,用 MySQL 命令行或脚本导出 GeoJSON

phpMyAdmin 对复杂地理函数支持有限,比如 ST_AsGeoJSON() 在旧版 MySQL 或某些 phpMyAdmin 配置下会报错或返回 NULL。真正想做批量地图展示,应跳过界面,用命令行直连导出标准 GeoJSON。

示例命令(本地有 MySQL CLI):

mysql -u user -p -D dbname -e "SELECT JSON_OBJECT('type', 'FeatureCollection', 'features', JSON_ARRAYAGG(JSON_OBJECT('type', 'Feature', 'geometry', ST_AsGeoJSON(location), 'properties', JSON_OBJECT('name', name)))) FROM places WHERE ST_IsValid(location);" > map.geojson

这个输出可直接拖进 QGIS、Kepler.gl 或用 fetch() 加载到 Leaflet:
– ST_AsGeoJSON() 自动处理坐标系(默认 EPSG:4326)、嵌套结构和空值
– 不依赖 phpMyAdmin 的导出逻辑,避免 CSV 编码、换行、引号等陷阱
– 如果提示 ST_AsGeoJSON() does not exist,说明 MySQL 版本 ST_AsText() + 手动拼接

容易被忽略的一点:phpMyAdmin 页面里看到的“空间结果”标签页,只对简单查询生效(比如 SELECT location FROM t),且仅渲染为 SVG 小图,无缩放、无标注、不支持导出——它不是地图工具,只是个调试预览。

相关文章

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

VibeKnow
VibeKnow Hot

一款AI视频创作工具,主要用于全球首个AI知识视频创作平台,文档、文章、网页,一键生成视频,适合需要提升相关任务效率的用户。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

UpDream
UpDream Hot

一款AI视频创作工具,主要用于哔哩哔哩推出的自研AI视频创作工具,适合需要提升相关任务效率的用户。

Lovart
Lovart Hot

一款面向视觉设计创作的AI设计平台,可通过智能体和画布工作流辅助制作海报、Logo、网页、PPT及其他视觉内容。

PixTV
PixTV Hot

PixTV是一款面向AIGC内容创作的AI视频生成工具。

音述AI
音述AI Hot

一款AI音频处理工具,主要用于音述AI是一个以“用声音述说故事”为核心的 AI 音乐创作与声音分享社区,适合需要提升相关任务效率的用户。

火山引擎

火山引擎是一款面向企业的云计算与AI服务平台。

相关专题

更多
php文件怎么打开
php文件怎么打开

打开php文件步骤:1、选择文本编辑器;2、在选择的文本编辑器中,创建一个新的文件,并将其保存为.php文件;3、在创建的PHP文件中,编写PHP代码;4、要在本地计算机上运行PHP文件,需要设置一个服务器环境;5、安装服务器环境后,需要将PHP文件放入服务器目录中;6、一旦将PHP文件放入服务器目录中,就可以通过浏览器来运行它。

11184

2023.09.01

php怎么取出数组的前几个元素
php怎么取出数组的前几个元素

取出php数组的前几个元素的方法有使用array_slice()函数、使用array_splice()函数、使用循环遍历、使用array_slice()函数和array_values()函数等。本专题为大家提供php数组相关的文章、下载、课程内容,供大家免费下载体验。

6501

2023.10.11

php反序列化失败怎么办
php反序列化失败怎么办

php反序列化失败的解决办法检查序列化数据。检查类定义、检查错误日志、更新PHP版本和应用安全措施等。本专题为大家提供php反序列化相关的文章、下载、课程内容,供大家免费下载体验。

2155

2023.10.11

php怎么连接mssql数据库
php怎么连接mssql数据库

连接方法:1、通过mssql_系列函数;2、通过sqlsrv_系列函数;3、通过odbc方式连接;4、通过PDO方式;5、通过COM方式连接。想了解php怎么连接mssql数据库的详细内容,可以访问下面的文章。

4108

2023.10.23

php连接mssql数据库的方法
php连接mssql数据库的方法

php连接mssql数据库的方法有使用PHP的MSSQL扩展、使用PDO等。想了解更多php连接mssql数据库相关内容,可以阅读本专题下面的文章。

4834

2023.10.23

html怎么上传
html怎么上传

html通过使用HTML表单、JavaScript和PHP上传。更多关于html的问题详细请看本专题下面的文章。php中文网欢迎大家前来学习。

3791

2023.11.03

PHP出现乱码怎么解决
PHP出现乱码怎么解决

PHP出现乱码可以通过修改PHP文件头部的字符编码设置、检查PHP文件的编码格式、检查数据库连接设置和检查HTML页面的字符编码设置来解决。更多关于php乱码的问题详情请看本专题下面的文章。php中文网欢迎大家前来学习。

5437

2023.11.09

php文件怎么在手机上打开
php文件怎么在手机上打开

php文件在手机上打开需要在手机上搭建一个能够运行php的服务器环境,并将php文件上传到服务器上。再在手机上的浏览器中输入服务器的IP地址或域名,加上php文件的路径,即可打开php文件并查看其内容。更多关于php相关问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

4262

2023.11.13

剧云故事大纲与分场规划教程
剧云故事大纲与分场规划教程

本专题讲解剧云梗概与多级大纲功能,覆盖全局、分集、分场结构生成,以及主线冲突、剧情节点和场次顺序调整。

0

2026.10.22

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
phpMyAdmin 常见问题
phpMyAdmin 常见问题

共0课时 | 0人学习

phpMyAdmin 配置文档
phpMyAdmin 配置文档

共0课时 | 0人学习

phpMyAdmin 安装文档
phpMyAdmin 安装文档

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn