Questions tagged «mysql-spatial»

4
对于农产品农场应用而言,PostGIS是否会比MySQL提供优势?
我有一个Web应用程序,用于存储西密歇根州农场的位置。您可以搜索产品(例如“西兰花”),它将向您显示所有种植该产品的农场。 现在,我正在使用MySQL并使用三角函数来计算用户位置和每个服务器场的位置之间的差异。这不是一个坏方法,但确实需要做一些事情。 我很快想做的另一件事是为不同地区的不同产品制定生长季节。(例如,我想证明鳄梨在加利福尼亚的某个特定时间生长,但在俄亥俄州却没有。) 我意识到这是一个开放性的问题,并且可能是幼稚的问题,但是对我来说,转向PostgreSQL / PostGIS以利用其空间功能是否值得?

1
ST_Distance_Sphere中的默认地球半径从何而来?
MySQL在文档中说 ST_Distance_Sphere 计算使用球形地球和可配置的半径。可选的radius参数应以米为单位。如果省略,则默认半径为6,370,986米。如果存在radius参数,但不是正数,ER_WRONG_ARGUMENTS则会发生错误。 PostGIS在的文档中说ST_Distance_Sphere(尽管这些文档不再准确) 使用球形地球,半径为6370986米。 他们从哪里获得默认的6,370,986米? WGS84说长轴半径为6,378,137.0 m。现在使用平均半径的PostGIS本质上使用6371008。 看代码 #define WGS84_MAJOR_AXIS 6378137.0 #define WGS84_INVERSE_FLATTENING 298.257223563 #define WGS84_MINOR_AXIS (WGS84_MAJOR_AXIS - WGS84_MAJOR_AXIS / WGS84_INVERSE_FLATTENING) #define WGS84_RADIUS ((2.0 * WGS84_MAJOR_AXIS + WGS84_MINOR_AXIS ) / 3.0) 那意味着 -- SELECT 6378137.0 - 6378137.0 / 298.257223563; WGS84_MINOR_AXIS = 6356752.314245179498 -- SELECT ( 2.0 * 6378137.0 + …

2
在MySQL中存储lng / lat的数据类型
我在MySQL数据库中存储了大量的lnt / lat点。目前,这些是英国在M中的预计点,但从长远来看,我想确保可以存储世界各地的点的坐标。我应该使用哪种数据类型? 我开始使用decimal(18,12),但不确定是否需要此精度或是否可以使用float。我包括了我的代码,以防万一我应该考虑的其他事项: CREATE TABLE UKTest ( lat FLOAT, lng FLOAT ) 我是SQL的新手,所以不确定运行查询时数据类型是否重要。我假设总体内存将根据变量类型而有所不同。对于这种类型的工作,使用空间数据库而不是基本的MySQL数据库有好处吗?

3
在MySQL中使用空间索引时性能不佳
重新建议在Stack Overflow上提出的一个问题,这是一个更好的论坛。 我正在尝试进行一些实验,以推动不是地理空间但非常适合的数据集,并且发现结果有些令人不安。数据集是基因组数据,例如人类基因组,其中我们有一个DNA区域,其中诸如基因之类的元素占据特定的起始和终止坐标(我们的X轴)。我们有多个占据Y轴的DNA(染色体)区域。目标是带回沿单个Y坐标与两个X坐标相交的所有项目,例如LineString(START 1,END 2)。 该理论听起来很合理,所以我将其推入了现有的基于MySQL的基因组项目中,并提出了一个表结构,如下所示: CREATE TABLE `spatial_feature` ( `spatial_feature_id` int(10) unsigned NOT NULL AUTO_INCREMENT, `external_id` int(10) unsigned NOT NULL, `external_type` int(3) unsigned NOT NULL, `location` geometry NOT NULL, PRIMARY KEY (`spatial_feature_id`), SPATIAL KEY `sf_location_idx` (`location`) ) ENGINE=MyISAM; external_id表示我们已编码到该表中的实体的标识符并对其进行编码external_type。一切看起来都很不错,我输入了一些初步的数据(30,000行),这些数据似乎运行良好。当它增加到超过300万行标记时,MySQL拒绝使用空间索引,并且在强制使用空间索引时速度较慢(40秒与使用全表扫描的5秒相比)。当添加更多数据时,该索引开始使用,但性能损失仍然存在。强制关闭索引可使查询降低到8秒。我正在使用的查询看起来像: select count(*) from spatial_feature where MBRIntersects(GeomFromText('LineString(7420023 1, 7420023 1)'), location); …

4
如何有效地找到20个最接近的点
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使其成为地理信息系统堆栈交换的主题。 去年关闭。 假设我想在我附近找到20家最接近的商家。 My table structure is like this: BusinessID varchar(250) utf8_unicode_ci No None Browse distinct values Change Drop Primary Unique Index Fulltext Prominent double No None Browse distinct values Change Drop Primary Unique Index Fulltext LatLong point No None Browse distinct values Change Drop Primary Unique Index …
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.