如何将 "empty" POINT() 几何值输入到 POINT 类型的 MySQL 字段中?

How do I enter an "empty" POINT() geometry value into a MySQL field of type POINT?

我有一个带有 POINT 几何字段的 table。我像这样输入 latitude/longitude 点:

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

有时我没有 lat/lon 值可以输入。我无法输入空白、NULL 或空的 POINT() ...因为 POINT(0,0) 实际上是地球上的一个位置,这也不起作用。

这里的解决方案是什么?

我会使用北极坐标

INSERT INTO table( point )
VALUES( POINT(0.0000,90.0000);

如果极点的实际坐标可能是个问题,我会将 lon 值从 0.0000 更改。

只有 GeometryCollection 支持 EMPTY:https://dev.mysql.com/doc/refman/8.0/en/gis-data-formats.html

INSERT INTO table( point )
VALUES( ST_GeomFromText('GEOMETRYCOLLECTION EMPTY') );

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

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