我正在创建一个数据库来跟踪坐标系统中事件的(规范化)坐标。想想看:一张篮球投篮图,在那里,投篮尝试的坐标相对于他们在篮球场上的位置进行存储,无论是正向还是负向,都来自中央球场。
我不太确定在数据库中存储这些信息的最佳方法,以便在使用这些数据时给予自己最大的灵活性。我的选择是:
TEXT/CHAR列中DECIMAL列中POINT对象存储坐标我的目标是存储一个规范化的vector2 (作为包围框的百分比),这样我就可以将位置映射回任意大小的矩形上。
能做计算是很好的,就像距离另一点的距离,但我对空间物体的理解是,它更适合地理坐标,而不是归一化向量。然而,其他选项使计算变得更加困难,尽管目前对于我的项目来说,它们并不是一个明确的要求。
是否可以使用空间点,计算是否类似于测量地理点?
发布于 2014-03-29 05:15:22
可以使用POINT,但更麻烦的是检索或修改以二进制形式存储的值。您将无法直接查看或修改该字段;您将使用SQL语句获取组件或创建一个新的点来替换旧的组件。
它们作为数字存储,您可以对它们执行正常的数学操作。地理空间类型的距离计算将使用其他地理空间数据类型,如LINESTRING。
要插入一个点,就必须从两个数字中创建一个点(我认为就您的情况而言,这些数字的大小没有问题):
INSERT INTO coordinatetable(testpoint) VALUES (GeomFromText('POINT(-100473882.33 2133151132.13)'));
INSERT INTO coordinatetable(testpoint) VALUES (GeomFromText('POINT(0.3 -0.213318973)'));要检索它,您必须分别选择X和Y值
SELECT X(testpoint), Y(testpoint) from coordinatetable;对于您的情况,我将把X和Y坐标存储在两个十进制列中。检索、修改以及将X和Y坐标分开将使您能够直接访问坐标,而不是从存储在单个字段中的数据中提取所需的值。对于较大的数据集,它可能会加快查询速度。
例如:
https://stackoverflow.com/questions/22726363
复制相似问题