如何将 "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
));
我有一个带有 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
));