划分地理区域

Posted

技术标签:

【中文标题】划分地理区域【英文标题】:Dividing a geographic region 【发布时间】:2012-06-02 18:17:08 【问题描述】:

我有一个由左下角和右上角坐标定义的地理区域。我如何将此区域划分为 20x20km 的区域。我的意思是实际上地球的形状不是扁平的,而是圆形的。边界框只是一个近似值。它甚至不是真正意义上的矩形。这只是一个假设。假设左下坐标由 x1,y1 给出,右上坐标由 x2,y2 给出,y1 处 x1 到 x2 的长度与 y2 处 x1 到 x2 之间的长度不同。我该如何克服这个问题

实际上,我必须使用 matlab 的 meshgrid 函数为该区域创建一个空间网格网格。这样网格的面积为 20x20km。

meshgrid(x1:deltaY:x2,y1:deltaX:y2)

如您所见,我只能拥有一个 deltaX 和一个 deltaY。我想选择 deltaX 和 deltaY 以便增量创建大小为 20x20km 的网格。然而,这个 deltaX 和 deltaY 应该根据位置而变化。有什么建议吗?

我的意思是说 deltaX=del1。然后点 (x1,y1) 到 (x1,y1+del1) 之间的距离为 20 公里。但是当我测量点 (x2,y1) 到 (x2, y1_del1) 之间的距离时,距离小于 20 公里。上面的 meshgrid 函数确实创建了网格。但距离并不一致。任何想法如何克服这个问题?

【问题讨论】:

(x2, y1_del1) 应该是 (x2, y1+del1)。如果我是对的,请更新问题 【参考方案1】:

请记住,地球表面 20 公里的距离非常短,大​​约为 0.01 弧度 - 因此,对于任何非科学领域,您所看到的区域都将近似为平坦。假设它是科学的......

要在 meshgrid 中获得除单调步骤之外的其他内容,您应该创建一个函数,该函数将您想要的 (x,y) 作为其输入,并将其映射到您选择的单位中的 (x_0,y_0) 和 (x_max,y_max) .这是一个内联函数,展示了使用函数进行网格网格步骤的想法

step=inline('log10(x)');
[x,y]=meshgrid(step(1:10),step(1:10));
image(255*x.*y)
colormap(gray(255))

那么你如何确定函数应该是什么?如果没有更多关于您的数据集是什么样子、您如何与之交互以及您的准确性要求是什么的信息,我们很难准确地回答这个问题。如果您可以访问每个点的实际位置,则应一次更改一个维度(例如,如果您的数据网格与您的纬度网格对齐)并使用模型选择技术(akaike/bayes 标准)进行曲线拟合找到最适合您数据的函数。

【讨论】:

以上是关于划分地理区域的主要内容,如果未能解决你的问题,请参考以下文章

将被划分为 100 公里乘 100 平方公里的区域的地球区域

Mysql闭包表之关于国家区域的一个实践

LA和TA

第1章·子网划分的意义及案例

第1章·子网划分的意义及案例

根据开始和结束地理坐标以指定间隔划分地理线