如何将“空”POINT()几何值输入到MySQL类型为POINT的字段中?

7

我有一张表,其中包含一个POINT几何字段。我像这样输入纬度/经度点:

INSERT INTO table( point )
VALUES( POINT( lon_value, lat_value );

有时我没有经纬度数值可以输入。我不能输入空格、空值或一个空的POINT(),因为POINT(0,0)实际上是地球上的一个位置,这也行不通。那么这里有什么解决方案呢?
3个回答

8
我会使用北极的坐标。
INSERT INTO table( point )
VALUES( POINT(0.0000,90.0000);

如果极点的实际坐标可能成为问题,我建议将经度值从0.0000更改。

4
真的吗?难道没有更好的方法吗?根据我理解手册,POINT使用了25个字节,这是对内存的错误使用。 - Mike Casan Ballester
1
这个问题有任何更新吗?仍在寻找答案。 - pbarney
1
25个字节太多了。如果人们不需要双精度坐标,他们应该引入“smallpoint”和“tinypoint”类型。而且在25个字节中不允许使用“NULL”,这实在是荒谬的。感谢北极点的想法。那里足够冷,可以用作null。 :) - dotNET

3

0

由于南半球和北半球的纬度有效范围分别为-90和+90度;我可以通过传入并使用99(任意超出范围的数字)进行纬度比较来切换值以及将值从NULL转换回去,如下所示:

("UPDATE
     tableName SET LatLng = IF(%Lat = 99, NULL, POINT(%Lat, %Lng))
     Where itemID = %itemID"
, array(
     'itemID' => $itemID, 
     'Lat' => $Lat == NULL99 : $Lat,
     'Lng' => $Lng == NULLNULL : $Lng 
));

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接