首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何生成测试MS地理空间数据

如何生成测试MS地理空间数据
EN

Stack Overflow用户
提问于 2014-12-06 14:59:30
回答 2查看 444关注 0票数 0

我想在SQL 2012中对地理空间数据的搜索算法进行一些性能测试。

使用以下字段生成X个随机数据点的SQL命令是什么?

  1. 经度双倍
  2. 纬度双
  3. 地理地理位置
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-12-07 23:21:43

这应该会让你开始:

代码语言:javascript
复制
CREATE TABLE NumberTable
  (
    number INT
  );

;WITH Numbers(number) AS
(SELECT 1 AS number
 UNION ALL
 SELECT number + 1 FROM Numbers WHERE number < 100
)
INSERT INTO NumberTable (number)
  SELECT N1.number + ((N2.number - 1) * 100)
    FROM Numbers N1, Numbers N2 OPTION(MAXRECURSION 100);

CREATE TABLE MyData 
  (
    id INT IDENTITY PRIMARY KEY,
    longitude DECIMAL(7, 4),
    latitude DECIMAL(6, 4),
    location GEOGRAPHY
  );

INSERT INTO MyData (longitude, latitude)
  SELECT CAST(NEWID() AS BINARY(8)) % 1800000 * 0.0001,
    CAST(NEWID() AS BINARY(8)) % 900000 * 0.0001 FROM NumberTable WHERE number < 101;

UPDATE MyData
SET location =
      geography::STPointFromText(
        CONCAT('POINT (',
               CONVERT(VARCHAR(20), longitude),
               ' ',
               CONVERT(VARCHAR(20), latitude),
               ')'),
        4326)
WHERE location IS NULL;

SELECT
  id
  , longitude
  , latitude
  , location.STAsText() locationAsText
FROM MyData;

SQL Fiddle

注意目前限制生成记录数量的“100”和"101“。

如果你认为合适,请评论或扩展你的问题。

票数 1
EN

Stack Overflow用户

发布于 2016-05-11 10:35:48

迟答,但对线程访问者有用:

如果您想使用time命令--这很好,但是根据您的需要采用代码可能非常耗时。我建议为此目的使用一些第三方工具,其中大多数都有一个功能齐全的免费试用版(比如来自ApexSQL红门的SQL测试数据生成器)。

这些工具可以帮助您节省大量时间,因为它们可以在几次单击中创建大量数据。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27332944

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档