确定方形岛屿的外边界

时间:2010-11-11 17:08:35

标签: sql tsql

这可能是不可能的,但你永远不会知道。

我在表格中有一堆正方形由PK,TopLeftLatitude,TopLeftLongitude,LowerRightLatitude,LowerRightLongitude组成的广场和一组名为“国家/地区名称组成的国家/地区”的国家/地区。国家和广场之间有m:m的关系,所以我还有一张表国家广场,包括PKCountry,PKSquare。

我想确定使用SQL给出一些国家/广场的邻近方格的外点。显然,一些国家可能包含“正方形岛屿”,这使得这个更加复杂......

你认为这可能吗?任何反馈都会非常受欢迎。

感谢。

祝福,

基督教

PS:

让我们说这是两个相邻的正方形(非常简单的例子):

5,1,3,3 5,3,3,5

结果将是

5,1,3,5

我想我可以通过循环查看所有内容并检查内容来在C#中执行此操作,但我正在寻找一种基于集合的方法,这可能涉及断路器。

3 个答案:

答案 0 :(得分:1)

你可以拥有一个包含数据的临时表 - PK,TopLeftLatitude,TopLeftLongitude,LowerRightLatitude,LowerRightLongitude,LowerLeftLatitude,LowerLeftLongitude,TopRightLatitude,TopRightLongitude。 - 这意味着存储广场所有角落的所有坐标。既然你提到这些是正方形,我敢打赌你可以找到一个正方形的2个对角坐标,知道另外两个。

现在,查找给定国家/地区的记录,查找与相邻方块没有任何共同坐标的坐标,例如查找不相等的(TopLeftLatitude,TopLeftLongitude)组合(TopRightLatitude, TopRightLongitude)或(LowerLeftLatitude,LowerLeftLongitude)或(LowerRightLatitude,LowerRightLongitude)。

对(TopRightLatitude,TopRightLongitude)和(LowerLeftLatitude,LowerLeftLongitude)和(LowerRightLatitude,LowerRightLongitude)执行类似的检查将为您提供最外层的坐标。我猜这应该适用于岛屿,因为它会给你所有的外部坐标(纬度和经度),有多少。

答案 1 :(得分:0)

如果将您的问题重述为“我如何找到包含一组已知方块的正方形的左上角和右下角坐标”是正确的,那么方法可能是:

  1. 将知道方格值移动到表格
  2. 将适当的值添加到坐标,使所有值都为正
  3. EX square 1 =左上-5,2(lat,long)右下-7,5(lat,long)    square 2 =左上3,3(lat,long)右下-10,4(lat,long) 归一化后的表值加10,使所有值为正(Llat,Llong,Rlat,Rlong)

    Square1 5,2,3,15

    Square2 13,13,0,4

    max(Llat),min(Llong)应该是TopLeft,min(L1lat),max(L1long)应该是右下角。

答案 2 :(得分:-1)

我曾在一次书面面试中被问过类似的问题。我写道,我不知道,但提供了一些不这样做的例子。他们给了我这份工作。

当我回到家时,我查了一下并找到了做这个的公式。不幸的是,我不记得公式被称为什么,但它是以某人的名字命名的。所以你的问题的答案是“是的,有的”,但你可能会说“不是我知道的”。