Table of Contents

Class CoverageHitTest

Namespace
EncDotNet.S100.Collections.Library
Assembly
EncDotNet.S100.Collections.dll

Point hit-testing of library item coverage (issue #655): whether a position lies within an item's coverage polygons (or bounds), across the antimeridian.

public static class CoverageHitTest
Inheritance
CoverageHitTest
Inherited Members

Remarks

Coverage rings arrive in two antimeridian conventions: NOAA writes continuous longitudes (e.g. −219.5 for 140.5°E), while S-100 catalogues keep −180..180 and let a ring jump across the seam. Rings are unwrapped into continuous longitudes and tested at the point and its ±360° copies.

Methods

Area(CollectionItem)

A size used to prefer the most detailed of several overlapping items: the bounds' area in square degrees (smaller is more detailed).

public static double Area(CollectionItem item)

Parameters

item CollectionItem

Returns

double

Contains(CollectionItem, GeoPosition)

True when position lies within the item's coverage (or bounds).

public static bool Contains(CollectionItem item, GeoPosition position)

Parameters

item CollectionItem
position GeoPosition

Returns

bool

Unwrap(IReadOnlyList<GeoPosition>)

Makes a ring's longitudes continuous: each vertex is moved by a multiple of 360° so it lies within 180° of its predecessor.

public static GeoPosition[] Unwrap(IReadOnlyList<GeoPosition> ring)

Parameters

ring IReadOnlyList<GeoPosition>

Returns

GeoPosition[]