2014-01-17 49 views
2

我有一个带有纬度,经度和坐标列的表格。有超过500,000行。坐标字段当前在每一行都是空的。我需要做的是将经度和纬度转换为地理空间POINT()并将其放置在坐标列中。这可能吗?将纬度/经度字段转换为地理空间点

我知道POINT s时,可以插入这样的:

INSERT INTO `myTable` (`coordinates`) VALUES (GeomFromText('POINT(50.2 51.6)')); 

我基本上需要从每一行从latitudelongitude拉动值做的正是这一点,但。

+0

是纬度50.2和经度51.6? – ganders

+0

@ganders没有,这只是一个例子。有50万不同的纬度和经度点FLOAT(10,6)类型 – jskidd3

+0

我问的是,50.2地图到纬度列,并且51.6地图到经度列? (有500,000个条目,就像你说的) – ganders

回答

3

一个GeomFromText需要一个字符串,你得很多的连击

INSERT INTO myTable (coordinates) 
    SELECT GeomFromText(CONCAT('POINT(',ot.latitude, ' ', ot.longitude,')')) 
    FROM otherTable ot; 

如果它是一个更新现有表latitudelongitude列插入新列coordinates做到这一点:

UPDATE myTable 
SET coordinates = GeomFromText(CONCAT('POINT(',latitude, ' ', longitude,')')); 
+0

如果所有列都在同一个表中,使用'UPDATE'会不会更好? – jskidd3

+0

@ jskidd3如果lat和long在同一个表中,那么请进行更新。我不确定他们是谁。 – Ray

+0

道歉我的错,你能更新你的SQL代表这个? “ – jskidd3

0

会这样的工作?

Update myTable 
Set coordinates = GeomFromText('POINT(' + latitude + ' ' + longitude + ')') 

这是假设您的坐标列与您的lat和long存在于同一张表中。

(请记住,这是SqlServer的/ T-SQL语法)...