Clase DistanciaUtils
Varios cálculos de distancia y constantes. En la medida de lo posible, un Calculadora de distancia, recuperado de DistCalc debe usarse en lugar de llamar a estos métodos directamente.
Este código vino de Apache Lucene, LUCENE-1387, que a su vez procedía de "LocalLucene".
Herencia
Miembros heredados
Asamblea: Spatial4n.dll
Sintaxis
public static class DistanceUtils
Terrenos
Nombre | Descripción |
---|---|
DEG_180_AS_RADS | |
DEG_225_AS_RADS | |
DEG_270_AS_RADS | |
DEG_45_AS_RADS | |
DEG_90_AS_RADS | |
DEG_TO_KM | Equivalente a Grados2Dist(1, EARTH_MEAN_RADIUS_KM) |
GRADOS_A_RADIANES | |
TIERRA_ECUATORIAL_RADIUS_KM | |
EARTH_ECUATORIAL_RADIUS_MI | |
TIERRA_MEAN_RADIUS_KM | La Unión Internacional de Geodesia y Geofísica dice que el radio medio de la Tierra en KM es: |
TIERRA_MEAN_RADIUS_MI | |
KM_TO_DEG | |
KM_TO_MILES | |
MILLAS_A_KM | |
RADIANS_TO_DEGREES | |
SIN_45_AS_RADS |
Métodos
Nombre | Descripción |
---|---|
CalcBoxByDistFromPt_deltaLonDEG(Doble, Doble, Doble) | La longitud delta de un punto-distancia. En otras palabras, la mitad del ancho del cuadro delimitador de un círculo. |
CalcBoxByDistFromPt_latHorizAxisDEG(Doble, Doble, Doble) | La latitud del eje horizontal (por ejemplo, línea izquierda-derecha) de un círculo. El eje horizontal de un círculo pasa por sus bordes más a la izquierda y más a la derecha. En un plano 2D, este resultado siempre es
|
CalcBoxByDistFromPtDEG(Doble, Doble, Doble, SpatialContext, IRectangle) | Calcula el cuadro delimitador de un círculo, según lo especificado por su punto central y la distancia. |
CalcLonDegreesAtLat(Doble, Doble) | Calcula la distancia en grados de longitud en latitud Se utiliza para calcular una nueva distancia de zona de influencia ampliada para tener en cuenta los efectos de sesgo de las formas que utilizan el espacio lat-lon como un plano 2D en lugar de una esfera. El búfer expandido seguramente cubrirá el área deseada, pero la forma aún está sesgada y, por lo tanto, cubrirá un área más grande. Para la latitud 0 (el ecuador) el resultado es el mismo buffer. A 60 (o -60) grados, el resultado es el doble del búfer, lo que significa que una forma a 60 grados es dos veces más alta que ancha cuando se proyecta en un plano de latitud y longitud, incluso si en el mundo real es igual en todos los sentidos. Si el resultado se suma a abs(lat ) es >= 90 grados, entonces el sesgo es tan severo que la persona que llama debería considerar cambiar la forma y sustituirla por un casquete esférico.
|
Grados2Dist(Doble, Doble) | Convierte |
Dist2Grados(Doble, Doble) | Convierte una distancia en las unidades del radio a grados (360 grados son en un círculo). Se asume un modelo de tierra esférica. |
Dist2Radianes(Doble, Doble) | Convierte una distancia en las unidades de |
DistHaversineRAD(Doble, Doble, Doble, Doble) | |
DistLawOfCosinesRAD(Doble, Doble, Doble, Doble) | Calcula la distancia entre dos lat/lng usando la ley de los cosenos. Debido a errores de condicionamiento numérico, no es tan precisa como la fórmula de Haversine para distancias pequeñas. Pero con doble precisión, no es tan malo... supuestamente 1 metro. Los argumentos y el valor devuelto están en radianes. |
DistSquaredCartesian(Doble[], Doble[]) | El cuadrado de la Distancia cartesiana. No es realmente una distancia, pero es útil si lo único que importa es comparar el resultado con otro. |
DistVincentyRAD(Doble, Doble, Doble, Doble) | Calcula la distancia del gran círculo utilizando la fórmula de Vincenty, simplificada para un modelo esférico. Esta fórmula es precisa para cualquier par de puntos. La ecuación fue tomada de Wikipedia . Los argumentos están en radianes y el resultado está en radianes. |
NormLatDEG(Doble) | Pone en el rango -90 <= lat_deg <= 90. |
NormLonDEG(Doble) | Pone en rango -180 <= lon_deg <= +180. |
PointOnBearingRAD(Doble, Doble, Doble, Doble, Contexto Espacial, IPoint) | Dado un punto de inicio (startLat, startLon) y un rumbo en una esfera de radio esferaRadio, devolver el punto de destino. |
Radianes2Dist(Doble, Doble) | Convierte |
Hasta Grados (Doble) | Igual que el de Java |
ARadianes(Doble) | Igual que el de Java |
VectorBoxCorner(Doble[], Doble[], Doble, Booleano) | Devuelve las coordenadas de un vector que es la esquina de un cuadro (superior derecha o inferior izquierda), asumiendo un sistema de coordenadas Rectangular. Tenga en cuenta que esto no se aplica a puntos en una esfera o elipse (aunque podría usarse como una aproximación). |
DistanciaVector(Doble[], Doble[], Doble) | Calcule la norma p (es decir, la longitud) entre dos vectores |
DistanciaVector(Doble[], Doble[], Doble, Doble) | Calcule la norma p (es decir, la longitud) entre dos vectores |