https://github.com/technobre/powerutils.geolocation
Library to work with geographic coordinates
https://github.com/technobre/powerutils.geolocation
c-sharp dotnet geolocation globalization
Last synced: 5 months ago
JSON representation
Library to work with geographic coordinates
- Host: GitHub
- URL: https://github.com/technobre/powerutils.geolocation
- Owner: TechNobre
- License: mit
- Created: 2022-01-28T02:11:07.000Z (over 4 years ago)
- Default Branch: main
- Last Pushed: 2025-01-23T21:26:18.000Z (over 1 year ago)
- Last Synced: 2025-01-23T21:28:57.414Z (over 1 year ago)
- Topics: c-sharp, dotnet, geolocation, globalization
- Language: C#
- Homepage: https://www.nuget.org/packages/PowerUtils.Geolocation
- Size: 210 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
- Codeowners: .github/CODEOWNERS
- Security: SECURITY.md
Awesome Lists containing this project
README
# PowerUtils.Geolocation

***Library to work with geographic coordinates***

[](https://dashboard.stryker-mutator.io/reports/github.com/TechNobre/PowerUtils.AspNetCore.ErrorHandler/main)
[](https://sonarcloud.io/summary/new_code?id=TechNobre_PowerUtils.Geolocation)
[](https://sonarcloud.io/summary/new_code?id=TechNobre_PowerUtils.Geolocation)
[](https://sonarcloud.io/summary/new_code?id=TechNobre_PowerUtils.Geolocation)
[](https://sonarcloud.io/summary/new_code?id=TechNobre_PowerUtils.Geolocation)
[](https://www.nuget.org/packages/PowerUtils.Geolocation)
[](https://www.nuget.org/packages/PowerUtils.Geolocation)
[](https://github.com/TechNobre/PowerUtils.Geolocation/blob/main/LICENSE)
- [Support to ](#support-to-)
- [How to use ](#how-to-use-)
- [Install NuGet package](#install-nuget-package)
- [Exceptions ](#exceptions-)
- [Types ](#types-)
- [CardinalDirection ](#cardinaldirection-)
- [DistanceUnit ](#distanceunit-)
- [GeographicalOrientation ](#geographicalorientation-)
- [Extensions ](#extensions-)
- [LengthConversionExtensions ](#lengthconversionextensions-)
- [.FromKilometerToMeter() ](#fromkilometertometer-)
- [.FromKilometerToMile() ](#fromkilometertomile-)
- [.FromKilometerTo() ](#fromkilometerto-)
- [.FromMeterToKilometer() ](#frommetertokilometer-)
- [.FromMeterToMile() ](#frommetertomile-)
- [.FromMeterTo() ](#frommeterto-)
- [.FromMileToMeter() ](#frommiletometer-)
- [.FromMileToKilometer() ](#frommiletokilometer-)
- [.FromMileTo() ](#frommileto-)
- [ConversionExtensions ](#conversionextensions-)
- [.GetGeographicalOrientation() ](#getgeographicalorientation-)
- [.ToRadian() ](#toradian-)
- [.ToDegree() ](#todegree-)
- [.ToDegree() ](#todegree--1)
- [.ToDDPoint() ](#toddpoint-)
- [Objects ](#objects-)
- [GeoDDCoordinate ](#geoddcoordinate-)
- [Deconstruct ](#deconstruct-)
- [.Clone() ](#clone-)
- [Comparisons ](#comparisons-)
- [Implicits ](#implicits-)
- [Parse ](#parse-)
- [Distance ](#distance-)
- [GeoJSON ](#geojson-)
- [Implicits ](#implicits--1)
- [Guard ](#guard-)
- [GuardGeolocation.Against.Latitude() ](#guardgeolocationagainstlatitude-)
- [GuardGeolocation.Against.Longitude() ](#guardgeolocationagainstlongitude-)
- [Contribution](#contribution)
## Support to
- .NET 10.0
- .NET 9.0
- .NET 8.0
- .NET 7.0
- .NET 6.0
### Install NuGet package
This package is available through Nuget Packages: https://www.nuget.org/packages/PowerUtils.Geolocation
**Nuget**
```bash
Install-Package PowerUtils.Geolocation
```
**.NET CLI**
```
dotnet add package PowerUtils.Geolocation
```
### Exceptions
`namespace PowerUtils.Geolocation.Exceptions`
- `InvalidCoordinateException(coordinate);`
- `MinLatitudeException(coordinate);`
- `MaxLatitudeException(coordinate);`
- `MinLongitudeException(coordinate);`
- `MaxLongitudeException(coordinate);`
### Types
`namespace PowerUtils.Geolocation.Types`
```csharp
public enum CardinalDirection
{
North,
South,
East,
West,
}
```
```csharp
public enum DistanceUnit
{
kilometer,
Meter,
Mile
}
```
```csharp
public enum GeographicalOrientation
{
Latitude,
Longitude
}
```
### Extensions
`namespace PowerUtils.Geolocation`
#### LengthConversionExtensions
#### .FromKilometerToMeter()
Convert kilometers to meters (int, uint, long, ulong, float, double, decimal)
```csharp
// result = 45_000
var result = 45.FromKilometerToMeter();
```
#### .FromKilometerToMile()
Convert kilometers to miles (float, double, decimal)
```csharp
// result = 137.472_122
var result = (221.24).FromKilometerToMile();
```
#### .FromKilometerTo()
Converting (double, decimal, float) numbers in kilometers to a new unit
```csharp
// result = 20_000
var result = 20.FromKilometerTo(DistanceUnit.Meter);
```
#### .FromMeterToKilometer()
Convert meters to kilometers (int, uint, long, ulong, float, double, decimal)
```csharp
// result = 45
var result = (45_000).FromMeterToKilometer();
```
#### .FromMeterToMile()
Convert meters to kilometers (float, double, decimal)
```csharp
// result = 7.098204899547
var result = (11_423.457).FromMeterToMile();
```
#### .FromMeterTo()
Converting (double, decimal, float) numbers in meters to a new unit
```csharp
// result = 0.002
var result = 2.FromMeterTo(DistanceUnit.kilometer);
```
#### .FromMileToMeter()
Convert miles to meters (float, double, decimal)
```csharp
// result = 356_050.3816
var result = (221.24).FromMileToMeter();
```
#### .FromMileToKilometer()
Convert miles to kilometers (float, double, decimal)
```csharp
// result = 356.05038160000004
var result = (221.24).FromMileToKilometer();
```
#### .FromMileTo()
Converting (double, decimal, float) numbers in miles to a new unit
```csharp
// result = 32_18.68
var result = 2.FromMileTo(DistanceUnit.kilometer);
```
##### .GetGeographicalOrientation()
Get the geographical orientation from a specific cardinal direction
```csharp
// result = GeographicalOrientation.Longitude
var result = CardinalDirection.North.GetGeographicalOrientation();
```
##### .ToRadian()
Convert degree to radian (PI / 180)
```csharp
// result = 0.19198621771937624
var result = 11.ToRadian();
```
##### .ToDegree()
Convert radian to degree (180 / PI)
```csharp
// result = 11
var result = (0.19198621771937624).ToDegree();
```
##### .ToDegree()
Convert radian to degree (180 / PI)
```csharp
// result = 11
var result = (0.19198621771937624).ToDegree();
```
##### .ToDDPoint()
Convert decimal degree point (string) to decimal degree point (double)
```csharp
// result = -8.668_173
var result = "-8,668173".ToDDPoint();
```
### Objects
`namespace PowerUtils.Geolocation`
#### GeoDDCoordinate
Decimal degree coordinate
```csharp
var coordinate = new GeoDDCoordinate(81.54, -54.1272);
(var latitude, var longitude) = coordinates;
```
##### Deconstruct
Deconstruct GeoDDCoordinate to double latitude and double longitude
```csharp
(var latitude, var longitude) = coordinates;
```
##### .Clone()
Create a new object 'GeoDDCoordinate' with the same data
```csharp
(var newCoordinate = coordinates.Clone();
```
```csharp
GeoDDCoordinate left = new(1.54, 54.1272);
GeoDDCoordinate right = new(1.54, 54.1272);
// result1 = true
var result1 = left == right;
// result2 = false
var result2 = left != right;
// result3 = true
var result3 = left.Equals(right);
```
```csharp
var text1 = "-12.51214,14.1272";
var coordinate = (GeoDDCoordinate)text1;
var text2 = (string)coordinate;
```
```csharp
var coordinate1 = GeoDDCoordinate.Parse("12,152", "-8,12");
var coordinate2 = GeoDDCoordinate.Parse("81.54 , -54.1272");
var result3 = GeoDDCoordinate.TryParse("12,152", "-8,12", out var coordinate3);
var result4 = GeoDDCoordinate.TryParse("81.54 , -54.1272", out var coordinate4);
```
```csharp
// distance1 = 189143
var distance1 = GeoDDCoordinate.Distance(37.165611, -8.545786, 38.737545, -9.370047, 0);
// distance2 = 18542.719416538552
var distance2 = GeoDDCoordinate.PreciseDistance(37.068673, -7.939493, 37.098708, -8.145107);
GeoDDCoordinate left = new(37.068673, -7.939493);
GeoDDCoordinate right = new(37.098708, -8.145107);
// distance3 = 18543
var distance3 = left.Distance(right);
```
```csharp
var coordinate = new GeoDDCoordinate(9.1, 12);
var result = new GeoJSON(coordinate);
```
```csharp
var coordinate = new GeoDDCoordinate(9.1, 12);
var geoJSON = (GeoJSON)coordinate;
var result = (GeoDDCoordinate)geoJSON;
```
```csharp
var latitude = GuardGeolocation.Against.Latitude(degree);
var longitude = GuardGeolocation.Against.Longitude(degree);
```
#### GuardGeolocation.Against.Latitude()
- Exception
- MinLatitudeException
- MaxLatitudeException
#### GuardGeolocation.Against.Longitude()
- Exception
- MinLongitudeException
- MaxLongitudeException
If you have any questions, comments, or suggestions, please open an [issue](https://github.com/TechNobre/PowerUtils.Geolocation/issues/new/choose) or create a [pull request](https://github.com/TechNobre/PowerUtils.Geolocation/compare)