Geodesy
About
A Dart library for implementing geodesic and trigonometric calculations based on a spherical Earth model for working with points and paths such as distances, bearings and destinations.
How to Use Geodesy
Commands
For Dart
dart pub add geodesyFor Flutter
flutter pub add geodesyImport the library in your dart file
import 'package:geodesy/geodesy.dart';Initialization
final Geodesy geodesy = Geodesy();Class
The Geodesy class provides a collection of methods for performing various geodetic calculations, including distance calculations, point intersections, and more. This class is designed to work with geographical coordinates in the form of latitude and longitude.
Please see the details here.
Static Methods
Static methods are avilable without using Geodesy instance.
Please see the details here.
Example - Geodesy Class
Please check out here for more.
import 'package:geodesy/geodesy.dart';
void main(){
final Geodesy geodesy = Geodesy();
// Calculate Bounding Box
// Example central position (San Francisco)
final centerPoint = const LatLng(37.7749, -122.4194);
// Example distance in kilometers
final distanceInKm = 1.0;
final boundingBox = geodesy.calculateBoundingBox(centerPoint, distanceInKm);
print('[calculateBoundingBox]: ');
print(' > Top Left: ${boundingBox[0]}');
print(' > Bottom Right: ${boundingBox[1]}');
// Polygon Centroid
List<LatLng> polygon = [
const LatLng(0, 0),
const LatLng(4, 0),
const LatLng(4, 4),
const LatLng(0, 4)
];
LatLng centroid = geodesy.findPolygonCentroid(polygon);
print("Centroid: ${centroid.latitude}, ${centroid.longitude}");
// Polygon Intersection
final List<LatLng> polygon1 = [
const LatLng(0, 0),
const LatLng(0, 2),
const LatLng(2, 2),
const LatLng(2, 0),
];
final List<LatLng> polygon2 = [
const LatLng(1, 1),
const LatLng(1, 3),
const LatLng(3, 3),
const LatLng(3, 1),
];
final List<LatLng> intersectionPoints =
geodesy.getPolygonIntersection(polygon1, polygon2);
print('Intersection Points:');
for (final point in intersectionPoints) {
print('Latitude: ${point.latitude}, Longitude: ${point.longitude}');
}
}Example Static Methods
import 'package:geodesy/geodesy.dart';
void main() {
// Calculate Bounding Box
// Example central position (San Francisco)
final centerPoint = const LatLng(37.7749, -122.4194);
// Example distance in kilometers
final distanceInKm = 1.0;
// Static Method
final boundingBox =
BoundingBox.calculateBoundingBox(centerPoint, distanceInKm);
print('[calculateBoundingBox]: ');
print(' > Top Left: ${boundingBox[0]}');
print(' > Bottom Right: ${boundingBox[1]}');
// Polygon Centroid
List<LatLng> polygon = [
const LatLng(0, 0),
const LatLng(4, 0),
const LatLng(4, 4),
const LatLng(0, 4)
];
// Static Method
final LatLng centroid = PolygonCentroid.findPolygonCentroid(polygon);
print("Centroid: ${centroid.latitude}, ${centroid.longitude}");
// Polygon Intersection
final List<LatLng> polygon1 = [
const LatLng(0, 0),
const LatLng(0, 2),
const LatLng(2, 2),
const LatLng(2, 0),
];
final List<LatLng> polygon2 = [
const LatLng(1, 1),
const LatLng(1, 3),
const LatLng(3, 3),
const LatLng(3, 1),
];
// Static Method
final List<LatLng> intersectionPoints =
PolygonIntersection.getPolygonIntersection(polygon1, polygon2);
print('Intersection Points:');
for (final point in intersectionPoints) {
print('Latitude: ${point.latitude}, Longitude: ${point.longitude}');
}
}