0

我有一个名为位置的旧数据库,在命名位置内有一个表。

该表有 7 个变量:id (int, index)、approved(int)、city(text)、country(text)、heading(double)、lat(double)、lng(double)。

我有一个名为复杂性的新数据库。该数据库有一个名为 gsvraw 的新表

我需要将旧表复制到新表,但这是棘手的地方:

新数据库将使用 MySQL 的空间索引,以便我以后可以在多边形内进行搜索。在新数据库中,我想添加一个名为 location 的新列,而不是 lat、lng。

创建新列的示例语句:

ALTER TABLE gsvraw ADD location POINT NOT NULL;
CREATE SPATIAL INDEX location ON gsvraw (location);

这是将新值插入位置列的示例语句:

INSERT INTO gsvraw (location) VALUES( GeomFromText( 'POINT(40 -100)' ));

40 和 -100 将是 lat 和 lng。

有任何想法吗?

我在麻省理工学院的三个不同的“大师”中的每一个都浪费了一个小时,实际上一无所获。

我正在运行的服务器导致了重大问题,因此使用 python 和 MySQLdb 已经过时了。

希望有人比我们更聪明,可以帮助处理原始 sql 语句。

我正在使用 MAMP pro 在带有 Apache MySQL 和 PHP 的 Mac 上运行它。这会引起一些麻烦,所以目前唯一可行的解​​决方案是直接使用 php 和 sql。有任何想法吗?

解决方案:

<?php
$con = mysql_pconnect("localhost","username","password");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }
mysql_select_db("database1", $con);


$result = mysql_query("SELECT * FROM database1 WHERE ") 
or die(mysql_error());  

$con2 = mysql_pconnect("localhost","username","password");
if (!$con2)
  {
  die('Could not connect: ' . mysql_error());
  }
mysql_select_db("complexity", $con2);

while($row = mysql_fetch_array( $result )) {

    mysql_query("INSERT INTO table1 (id, approved, city, country, heading, location) VALUES ('".$row['id']."', '".$row['approved']."', '".$row['city']."', '".$row['country']."', '".$row['heading']."', PointFromText('POINT(".$row['lng']." ".$row['lat'].")'))", $con2);

} 
?>
4

1 回答 1

0

您是否尝试过 PointFromText 功能?

set location = PointFromText(CONCAT('POINT(',latitude,' ',longitude,')'));
于 2011-02-18T01:49:17.250 回答