Geographic Tools as Coordinates
, Kinematics
and GeodesicUtilities
.
Use these classes to store informations on geographical position in different coordinates system.
Use AbsoluteCoordinates
to store an absolute coordinate.
Absolute coordinate is build by latitude
(degrees or radians), longitude
(degrees or radians) and altitude
(meters).
Example : create absolute coordinates.
coord1 := AbsoluteCoordinates latitudeInDegrees: 48.3897 longitudeInDegrees: -4.48333 altitudeInMeters: 52. "Brest french city position"
coord2 := AbsoluteCoordinates latitudeInDegrees: 48.8667 longitudeInDegrees: 2.33333 altitudeInMeters: 79. "Paris french city position"
Use CartesianCoordinates
to store a cartesian coordinate.
Cartesian coordinate is build by x
(meters), y
(meters) and z
(meters).
Example : create cartesian coordinates.
coord := CartesianCoordinates xInMeters: 2 yInMeters: 5 zInMeters: 1.
Use PolarCoordinates
to store a polar coordinate.
Polar coordinate is build by azimuth
(radians), distance
(meters) and elevation
(meters).
Example : create polar coordinates.
coord := PolarCoordinates azimuthInRadians: 0 distanceInMeters: 50 elevationInMeters: 20.
Convert a polar coordinate into cartesian coordinates.
polarCoord := PolarCoordinates zero. "This constructor create a polar coordinates initialized at zero point"
cartCoord := polarCoord asCartesianCoordinates.
To know if a coordinate is valid :
coord isValid.
To know if a coordinate is empty :
coord isEmpty.
There are a lot of functionnaly to discover.
Use Kinematics
to store informations on course
(direction in degrees or radians), speed
(m/s, knots) and heading
(orientation in degrees or radians).
Example : create kinematics information.
kin := Kinematics new.
kin groundSpeedInMetersPerSeconds: 50.
kin courseInDegrees: 180.
kin headingInDegrees: 2.
Use GeodesicUtilities
to compute angle and distance between Geodesic (lat/long) coordinates, taking in account the earth curve.
"Brest french city position"
coord1 := AbsoluteCoordinates latitudeInDegrees: 48.3897 longitudeInDegrees: -4.48333 altitudeInMeters: 52.
"Paris french city position"
coord2 := AbsoluteCoordinates latitudeInDegrees: 48.8667 longitudeInDegrees: 2.33333 altitudeInMeters: 79.
"Return an azimuth in Radians between the positions of these two cities depending Earth curve"
GeodesicUtilities convertGeodesicToAzimuthInRadiansFrom: coord1 to: coord2.
To install GeoTools on your Pharo image you can just execute the following script:
Metacello new
baseline: 'GeoTools';
repository: 'github://OpenSmock/GeoTools:main/src';
load.