gpt4 book ai didi

java - 英国大陆 OS UK 网格引用

转载 作者:行者123 更新时间:2023-12-02 09:55:10 31 4
gpt4 key购买 nike

我正在尝试限制 UK OS Grid References (easting and northing) 的大集合仅限那些在英国大陆的人。

-- 网格引用的背景 --

操作系统“国家网格”由相对于原点 (0,0) 的“东向”和“北向”组成。就我们的目的而言,(700000, 1300000) 是理论最大值(英国的右上角)。

--我需要什么,以及到目前为止我已经做了什么--

我需要排除任何不在英国大陆(即英国最大的岛屿)的网格引用。我很高兴这是一个粗略的“最佳猜测”算法;但我绝对需要比整个值(value)观更好的东西;这就是我现在所拥有的。

OS系统将国家分为100km squares ,这是一个开始。下图显示了英国是如何 split 的:

OS UK Grid References Map (来自naturalearthdata、Pethrus 和nandhp 的cmglee、Strebe、MansLaughter、Alexrk2 - 英国国家网格.svgOSGB 1936 Datum.svg 上的西北欧洲,CC BY-SA 3.0,https://commons.wikimedia.org/w/index.php?curid=35301574 )

据此,考虑到每个正方形(里面有两个字母)是十万平方米,我知道我只需要考虑西边的SW到东边的TG(100000到700000)和北边的北距最高点的近似范围 SW..NC(0 到 999999)- 这大大减少了数字;但还有更多工作要做。

因此,到目前为止,我的逻辑给了我的是矩形 SW..HW..JW..TW。

我知道,对于每个东距或东距范围,我可以存储有效北距值的 map (反之亦然) - 这将是实现此目的的一个选项;但是我想知道是否有人有其他想法。我正在考虑存储某种代表英国的多边形,然后检查该多边形是否包含给定点?

我将在 Java 中实现,使用整数作为东距和北距值。

因此,我当前的粗略方法只是一个简单的方法:

    public final static int minOSEasting = 100000;
public final static int minOSNorthing = 1;
public final static int maxOSEasting = 700000;
public final static int maxOSNorthing = 1000000;
public static boolean isValid(int easting, int northing)
{
return (easting > minOSEasting && easting < maxOSEasting && northing > minOSNorthing && northing < maxOSNorthing);
}

我不想使用外部库或 Web 服务调用。

--编辑--请参阅我的答案( https://stackoverflow.com/a/56059697/318414 )了解我最终使用的坐标

最佳答案

似乎您只想要多边形算法中的一个点。试试这个

Point in Polygon Algorithm

关于java - 英国大陆 OS UK 网格引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56058192/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com