【发布时间】:2020-09-28 00:19:58
【问题描述】:
为了熟悉“几何”数据类型,我想在表格中导入 GPX 文件并将其显示在 OSM 地图上。我正在使用 MariaDB/phpmyadmin,因为这是我的主机提供给我的。我使用“几何”类型是因为我喜欢 ST_functions(而不是将 lat-lon 放在两列中并开发/复制所需的算法)。
在谷歌搜索和 youtube 上搜索了一段时间后,我想知道我做错了什么还是遇到了错误。因为我不知道会发生什么,我希望有人能让我走上正轨。
我从安装了 XAMPP 7.3.4 (phpmyadmin 4.8.5/mariadb 10.1.38) 的本地 PC 开始。我从一个列数据类型 POINT 开始,很惊讶 phpmyadmin 可以选择在地图上显示记录的内容,并且很失望我只看到了蓝色的水。编辑记录时,phpmyadmin 显示了必须呈现的地图和数据,这清楚地表明 SRID 为“0”。无法获取“4326”上的 SRID,直到某处提示的某些文本遇到使用数据类型 GEOMETRY 的列。但只显示了一张世界地图。
经过大量尝试,我决定使用托管环境(phpmyadmin 4.9.5/mariadb 10.3.22)。令我惊讶的是,这一点在地图上是可见的。只是,在世界不同的地方。看着lat-lon,我看到它们被互换了。将它们放在经纬度序列中,该点在我预期的位置可见。
因为主机提供了更高版本的安装,我安装了更新的 XAMPP 7.4.6 (phpmyadmin 5.0.2/mariadb 10.4.1)。 很惊讶我的观点没有出现,只是再次出现在世界地图上。那么需要注意的是本地机器上的 OSM-map 的一些配置吗? lat-lon 还是要互换的。
Mapping is ok, lat-lon interchanged
在巴黎散步的地图。首先是在 Prune 中映射 GPX,其次是在 MariaDB 中导入跟踪点。完全相同的映射,只需要交换纬度点。因此,我认为使用的 SRID 和/或坐标没有问题,只是 phpmysql 将 lat 作为 y 和 lon 作为 x,而不是预期的 lat 作为 x 和 lon 作为 Y,这将步行放在索马里前面的海中某处:
Mapping of walk in Paris presented in Prune
Mapping of same gps-points in phpmyadmin, lat-lon interchanged
除了数据的呈现之外,我在使用 phpmyadmin 的插入选项时也遇到了困难。使用 sql 时,我只在表中一次获取数据。插入选项生成的 sql 会给出错误。我必须编辑那个 sql,我必须删除“'”和“\”。比较使用的版本,我发现删除“'”和“\”的数量和位置存在差异。
我查看了 phpmyadmin-issues,似乎没有打开任何内容。我可以找到那些表明我遇到的某种问题的封闭的人。 geo 上的很多文档都是关于 postgresql 的,一些是关于 mysql 的,但很少是关于 mariadb 和 phpmysql 的,很难找到好的方向。
所以,我最大的三个问题是它是否打算存储 lon-lat 而不是 lat-lon(或者我是否必须使用另一个 srid?)第二个问题是我必须配置什么才能让地图像它一样在本地工作和我的主人一起做(如果这是导致问题的原因)?第三是是否可以在不编辑生成的sql的情况下使用phpmysql的insert-option?
提前致谢。
【问题讨论】:
标签: sql phpmyadmin geometry mariadb