public class EllipsoidTessellator extends Object
大地点
的划分的类。
该类通常用于地球观测任务,以创建可用作可见性事件检测器基础的瓦片或网格。当需要与表面相关的元素时,使用瓦片,创建的瓦片完全覆盖感兴趣区域。当需要与点相关的元素时,使用网格,创建的点完全位于感兴趣区域内。
需要注意的是,由于划分本质上创建了一个几乎是二维笛卡尔地图,它永远无法完全满足几何尺寸,因为球体和椭球体都不是可展曲面。这意味着划分总是会出现失真,并且随着要划分的区域大小增加,失真会增加。
Constructor and Description |
---|
EllipsoidTessellator(OneAxisEllipsoid ellipsoid, TileAiming aiming, int quantization)
简单构造函数。
|
Modifier and Type | Method and Description |
---|---|
static org.hipparchus.geometry.spherical.twod.SphericalPolygonsSet |
buildSimpleZone(double tolerance, double[]... points)
构建一个简单区域(无孔连接区域)。
|
static org.hipparchus.geometry.spherical.twod.SphericalPolygonsSet |
buildSimpleZone(double tolerance, GeodeticPoint... points)
构建一个简单区域(无孔连接区域)。
|
List<List<GeodeticPoint>> |
sample(org.hipparchus.geometry.spherical.twod.SphericalPolygonsSet zone, double width, double length)
将兴趣区域采样为 大地点 的网格样本。
|
List<List<Tile>> |
tessellate(org.hipparchus.geometry.spherical.twod.SphericalPolygonsSet zone, double fullWidth, double fullLength, double widthOverlap, double lengthOverlap, boolean truncateLastWidth, boolean truncateLastLength)
将兴趣区域划分为瓦片。
|
protected GeodeticPoint |
toGeodetic(org.hipparchus.geometry.spherical.twod.S2Point point)
将单位二球上的点转换为大地坐标。
|
public EllipsoidTessellator(OneAxisEllipsoid ellipsoid, TileAiming aiming, int quantization)
内部使用量化
参数来调整点的定位。例如,当将量化设置为4时,具有4个角点的完整瓦片(由瓦片长度分隔)将实际上在包含25个点的网格上计算(5行5点,因为每边将分为4段,因此将有5个点)。这种量化允许粗略调整以平衡兴趣区域周围的边缘,并且随着每个点的沿着和横跨方向的重新调整,几何精度得到改善。
建议至少使用量化参数为2进行划分。理由是,使用量化为1将意味着所有使用的点都是瓦片的顶点,因此会导致小区域生成4个具有共享顶点的瓦片,这4个瓦片覆盖了四个象限的北西、北东、南东和南西。量化值至少为2允许移动瓦片,使中心点成为内部点而不是瓦片顶点,从而使单个瓦片覆盖小区域。甚至更大的值如4或8将允许更精细的定位以平衡区域周围的瓦片边缘。
ellipsoid
- 底层椭球体
aiming
- 用于定向瓦片的瞄准
quantization
- 将瓦片边分割为细定位的段数
public List<List<Tile>> tessellate(org.hipparchus.geometry.spherical.twod.SphericalPolygonsSet zone, double fullWidth, double fullLength, double widthOverlap, double lengthOverlap, boolean truncateLastWidth, boolean truncateLastLength)
创建的瓦片将完全覆盖兴趣区域。
瓦片角的顶点与下一个顶点相同角的顶点之间的距离通过从完整宽度(或完整长度)中减去重叠宽度(或重叠长度)来计算。例如,如果完整宽度指定为55公里,宽度重叠指定为+5公里,则连续的瓦片将跨越如下:
为了实现相同的50公里步长,但使用5公里间隙而不是重叠,需要将完整宽度指定为45公里,重叠指定为-5公里。使用这些设置,连续的瓦片将跨越如下:
zone
- 要划分的兴趣区域
fullWidth
- 表面上的完整瓦片宽度,包括重叠(以米为单位)
fullLength
- 表面上的完整瓦片长度,包括重叠(以米为单位)
widthOverlap
- 相邻瓦片之间的重叠(以米为单位),如果为负数,则瓦片之间将有间隙而不是重叠
lengthOverlap
- 相邻瓦片之间的重叠(以米为单位),如果为负数,则瓦片之间将有间隙而不是重叠
truncateLastWidth
- 如果为true,则第一个瓦片条将尽可能靠近兴趣区域开始,最后一个瓦片条的宽度也将减小以保持靠近兴趣区域;如果为false,则所有瓦片条将具有相同的fullWidth
,并且它们将在兴趣区域周围平衡
truncateLastLength
- 如果为true,则每个条中的第一个瓦片将尽可能靠近兴趣区域开始,每个条中的最后一个瓦片将减小其长度以保持靠近兴趣区域;如果为false,则每个条中的所有瓦片将具有相同的fullLength
,并且它们将在兴趣区域周围平衡
public List<List<GeodeticPoint>> sample(org.hipparchus.geometry.spherical.twod.SphericalPolygonsSet zone, double width, double length)
大地点
的网格样本。
创建的点将完全位于兴趣区域内。
zone
- 要采样的兴趣区域
width
- 表面上的网格样本单元宽度(以米为单位)
length
- 表面上的网格样本单元长度(以米为单位)
protected GeodeticPoint toGeodetic(org.hipparchus.geometry.spherical.twod.S2Point point)
point
- 单位二球上的点
public static org.hipparchus.geometry.spherical.twod.SphericalPolygonsSet buildSimpleZone(double tolerance, double[]... points)
为了构建更复杂的区域(非连接或带孔),用户应直接调用Hipparchus的SphericalPolygonsSet
构造函数和region factory
(如果需要集合操作,如并集、交集、差等)。
请注意,顶点边界点必须以逆时针的方式给出。使用错误的顺序定义了真实区域的补集,并且通常会导致划分失败,因为区域太宽。
tolerance
- 视为相等的角度分隔(通常为1.0e-10以下)
points
- 边界的顶点,按逆时针顺序给出,每个点是一个包含纬度在索引0处和经度在索引1处的两个元素数组
public static org.hipparchus.geometry.spherical.twod.SphericalPolygonsSet buildSimpleZone(double tolerance, GeodeticPoint... points)
为了构建更复杂的区域(非连接或带孔),用户应直接调用Hipparchus的SphericalPolygonsSet
构造函数和region factory
(如果需要集合操作,如并集、交集、差等)。
请注意,顶点边界点必须以逆时针的方式给出。使用错误的顺序定义了真实区域的补集,并且通常会导致划分失败,因为区域太宽。
tolerance
- 视为相等的角度分隔(通常为1.0e-10以下)
points
- 边界的顶点,按逆时针顺序给出
Copyright © 2002-2023 CS GROUP. All rights reserved.