【问题标题】:Convert MySQL's POINT to text in PHP将 MySQL 的 POINT 转换为 PHP 中的文本
【发布时间】:2016-05-26 17:04:07
【问题描述】:

使用 PHP,如何将 POINT 数据类型中的值转换为 POINT (-34.601020 -58.371020) 之类的字符串(最好使用 WKT 或 GeoJSON 中的输出)

如果我回显原始值,我会得到奇怪的字符。

我尝试使用bin2hex,然后尝试将十六进制转换为字符串,但没有成功。

我知道 MySQL 的 AsText(),但我想用 PHP 来做。

【问题讨论】:

  • 为什么不使用AsText函数呢? MySQL 的内部格式不是 PHP 需要理解的。将您的顾虑分开。
  • @tadman 假设我无法更改创建查询的代码,所以我尝试在 PHP 中手工制作 AsText 函数
  • 这可能是一场你赢不了的战斗。祝你好运。
  • @tadman 好吧....我赢了! =)

标签: php mysql gis geospatial


【解决方案1】:

终于搞定了!!!

我必须使用unpack 才能从 MySQL 中提取二进制数据

$point_value = $data_from_db["point_field"];

$coordinates = unpack('x/x/x/x/corder/Ltype/dlat/dlon', $point_value);

echo $coordinates['lat'];
echo $coordinates['lon'];

Here 是帮助我解决此问题的教程

【讨论】:

  • 可以简化 x/x/x/x: $coordinates = unpack('x4/corder/Ltype/dlat/dlon', $point_value);由于不需要订单/类型,因此可以“屏蔽”两者: $coordinates = unpack('x4/clat/Llat/dlat/dlon', $point_value);
猜你喜欢
  • 2012-12-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多