Custom SSIS task
$250-750 USD
Pagado a la entrega
We are in need of a custom SSIS Data Flow Task. The task is not very complicated. It has to add a field with the calculated distance between two coordinates. We need to be able to specify 4 fields.
- Start Latitude (in decimal degrees)
- Start Longitude (in decimal degrees)
- Stop Latitude (in decimal degrees)
- Stop Longitude (in decimal degrees)
The task needs to add a field 'distance'. The distance is in miles or kilometers. This should be an option in the task screen.
Of course the task has to be as fast as it is possible. It has to calculate millions of records.
The calculation for this task is (in c#):
using System;
//:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
//::: :::
//::: :::
//::: Definitions: :::
//::: South latitudes are negative, east longitudes are positive :::
//::: :::
//::: Passed to function: :::
//::: lat1, lon1 = Latitude and Longitude of point 1 (in decimal degrees) :::
//::: lat2, lon2 = Latitude and Longitude of point 2 (in decimal degrees) :::
//::: unit = the unit you desire for results :::
//::: where: 'M' is statute miles :::
//::: 'K' is kilometers (default) :::
//::: 'N' is nautical miles :::
//::: :::
//::: :::
//:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
private double distance(double lat1, double lon1, double lat2, double lon2, char unit) {
double theta = lon1 - lon2;
double dist = [login to view URL](deg2rad(lat1)) * [login to view URL](deg2rad(lat2)) + [login to view URL](deg2rad(lat1)) * [login to view URL](deg2rad(lat2)) * [login to view URL](deg2rad(theta));
dist = [login to view URL](dist);
dist = rad2deg(dist);
dist = dist * 60 * 1.1515;
if (unit == 'K') {
dist = dist * 1.609344;
} else if (unit == 'N') {
dist = dist * 0.8684;
}
return (dist);
}
//:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
//:: This function converts decimal degrees to radians :::
//:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
private double deg2rad(double deg) {
return (deg * [login to view URL] / 180.0);
}
//:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
//:: This function converts radians to decimal degrees :::
//:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
private double rad2deg(double rad) {
return (rad / [login to view URL] * 180.0);
}
Nº del proyecto: #489806