php explode mysql 几何线串类型

标签 php mysql geometry explode spatial

如何将很长的mysql行字符串转换为数组(逐点)的最佳方法,我认为使用explode是方法,但在将字符串参数传递给explode之前需要进行一些文本操作。

这是查询结果的var_dump:

array (size=1)
    'route' => string 'LINESTRING(-25.3233034167988 -57.640113830566406,-25.3229348965009 -57.64023184776306,-25.322653656571582 -57.63954520225525,-25.323410093517822 -57.63928771018982,-25.3229058027454 -57.6378607749939,-25.322973688164012 -57.63678789138794,-25.323371301994506 -57.63360142707825,-25.322003892857673 -57.633676528930664,-25.31995759927745 -57.633376121520996,-25.319336915717006 -57.63331174850464,-25.317988857651912 -57.63302206993103,-25.317377862364236 -57.63294696807861,-25.317688209562228 -57.62954592704773'... (length=4354)

目标是拥有一个像这样的数组: 路线:

array (size=4354)
    0 => { x=> '-25.3233034167988', y=> '-57.640113830566406'}
    1 => { x=> '-25.3229348965009 ', y=> '-57.64023184776306'}

等等

使用 nickb 代码,结果是:

array (size=112)
  0 => 
    array (size=2)
      'x' => string '-25.3233034167988' (length=17)
      'y' => string '-57.640113830566406' (length=19)
  1 => 
    array (size=2)
      'x' => string '-25.3229348965009' (length=17)
      'y' => string '-57.64023184776306' (length=18)
  2 => 
    array (size=2)
      'x' => string '-25.322653656571582' (length=19)
      'y' => string '-57.63954520225525' (length=18)

完美

最佳答案

我会做一些简单的字符串操作,然后用 str_getcsv() 形成数组:

$str = $array['route']; // Get the string from the array
// Get rid "LINESTRING(" and trailing ")"
$str = substr( $str, 11, (strlen( $str) - 1) - 11); 

现在,您只需输入 xy 键,如下所示:

// Form the objective array:
$objective = array();
foreach( str_getcsv( $str) as $k => $v) {
    list( $x, $y) = explode( ' ', $v);
    $objective[$k]['x'] = $x;
    $objective[$k]['y'] = $y;
}

可以从this demo看到这将打印:

Array ( [0] => Array ( [x] => -25.3233034167988 [y] => -57.640113830566406 ) ... etc ...)

关于php explode mysql 几何线串类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16794433/

相关文章:

python - 如何检查所有给定点(空间中)是否位于同一条线上?

postgresql - 如何使用 Postgis 查找我所在城市的所有街道交叉口

c++ - 计算两条边的交集

php - 为什么 CodeIgniter 将我的 SQL 查询作为一个数组返回,其中包含一个对象?

php - 在 php 脚本中创建数据库表的克隆

javascript - 将键、值插入数组 : jQuery

php - 文件上传空字符串

php - MySQL 查询错误 COUNT

php - MYSQL 中的区分条件

mysql - Rails 3 ORDER BY FIELD 和最后一个