I need use the data of this site: http://www.navcen.uscg.gov/?Do=gpsArchives&path=2012
to develop a small software that plot a chart about satellate availability, something like this: http://i.stack.imgur.com/X0iGL.jpg
The user must set a day, a latitude/longitude position and a time zone, then my application must plot the satellate availability for 7 days (from user day) to choose the best day.
I'm not a GPS expert so I don't know which and how use the data from almanac to make the plot.
Any idea?
If you're good at Matlab you could try using this
This program calculate GPS visible satellites by exerting terrain for high accuracy prediction.
inputs:
Coordinate of Station on earth.
GPS Almanac file.
Terrain Data in "txt" format(just for DSM calculation).
Or you could go through the gpstk code and refer to how ComputeStationSatelliteVisibility l is implemented
The almanac contains the elipse parameters that describe the curve of one satellite around the earth. Using these params you could determine where the sats are positioned for a specific time and position.
Assume a visibility of 170° of the sky: 5° are hidden by houses or mountains at the horizon.
Refer to :
http://www.navcen.uscg.gov/?pageName=gpsAlmanacs
and
http://www.navcen.uscg.gov/pdf/gps/Programmatically%20Accessing.pdf
Related
My educational project is about "sign language recognition using kinect camera" .
I want to compare the hand motion trajectories using DTW as the distance measure , and then do a NN-DTW classification .
Hand trajectory is constructed from the hand joint position in consecutive frames in 3D coordinate system.
x,y,z coordinate for hand joint , in every frame , is obtained from using kinect camera .
Which option is more appropriate for measuring the distance of these trajectories? DTWi or DTWd ?
Short answer: DTWd (for your specific use-case)
You might want to have a look at this paper:
Shokoohi-Yekta, M., Wang, J., & Keogh, E. (2015). On the Non-Trivial Generalization of Dynamic Time Warping to the Multi-Dimensional Case. Proceedings of the 2015 SIAM International Conference on Data Mining, 289–297. https://doi.org/10.1137/1.9781611974010.33
According to this paper, one of the two (i.e., DTWi or DTWd) always exhibits better performance. However, the decision will depend on the data you are using. In general terms, the authors say that "results suggest if the data dimensions are dependently warped, use DTWd to classify the data. If the data dimensions are independently warped, DTWi will give you more accurate results for classifying the data"
If you do not want to make that decision before hand, you can continuously adapt the selection to the one that suits best as explained in their paper.
I'm trying to track the distance a user has moved over time in my application using the GPS. I have the basic idea in place, so I store the previous location and when a new GPS location is sent I calculate the distance between them, and add that to the total distance. So far so good.
There are two big issues with this simple implementation:
Since the GPS is inacurate, when the user moves, the GPS points will not be a straight line but more of a "zig zag" pattern making it look like the user has moved longer than he actually have moved.
Also a accuracy problem. If the phone just lays on the table and polls GPS possitions, the answer is usually a couple of meters different every time, so you see the meters start accumulating even when the phone is laying still.
Both of these makes the tracking useless of coruse, since the number I'm providing is nowwhere near accurate enough.
But I guess that this problem is solvable since there are a lot of fitness trackers and similar out there that does track distance from GPS. I guess they do some kind of interpolation between the GPS values or something like that? I guess that won't be 100% accurate either, but probably good enough for my usage.
So what I'm after is basically a algorithm where I can put in my GPS positions, and get as good approximation of distance travelled as possible.
Note that I cannot presume that the user will follow roads, so I cannot use the Google Distance Matrix API or similar for this.
This is a common problem with the position data that is produced by GPS receivers. A typical consumer grade receiver that I have used has a position accuracy defined as a CEP of 2.5 metres. This means that for a stationary receiver in a "perfect" sky view environment over time 50% of the position fixes will lie within a circle with a radius of 2.5 metres. If you look at the position that the receiver reports it appears to wander at random around the true position sometimes moving a number of metres away from its true location. If you simply integrate the distance moved between samples then you will get a very large apparent distance travelled.for a stationary device.
A simple algorithm that I have used quite successfully for a vehicle odometer function is as follows
for(;;)
{
Stored_Position = Current_Position ;
do
{
Distance_Moved = Distance_Between( Current_Position, Stored_Position ) ;
} while ( Distance_Moved < MOVEMENT_THRESHOLD ) ;
Cumulative_Distance += Distance_Moved ;
}
The value of MOVEMENT_THRESHOLD will have an effect on the accuracy of the final result. If the value is too small then some of the random wandering performed by the stationary receiver will be included in the final result. If the value is too large then the path taken will be approximated to a series of straight lines each of which is as long as the threshold value. The extra distance travelled by the receiver as its path deviates from this straight line segment will be missed.
The accuracy of this approach, when compared with the vehicle odometer, was pretty good. How well it works with a pedestrian would have to be tested. The problem with people is that they can make much sharper turns than a vehicle resulting in larger errors from the straight line approximation. There is also the perennial problem with sky view obscuration and signal multipath caused by buildings, vehicles etc. that can induce positional errors of 10s of metres.
I have a point cloud (data set) (3D) representing an urban terrain consisting of flat roof surfaces (of buildings) . My aim is to figure out the flat surfaces , waterbodies from the given data set .The data set is a text file consisting of the number of points followed by their individual x , y , z co-ordinates. As a trial attempt , I have generated the 2D-Delaunay triangulation of the given data set to get the triangulated surface. Henceforth, I plan to execute a graph-traversal over the faces of the triangulation to look for neighbourhood points with nearly the same z-coordinate value and treat them as a flat surface . I am using CGAL libraries to accomplish the same in C++. Is there a better approach for identifying flat surface or my method seems decent enough ?
You might get inspiration (or just run) Advancing Front Reconstruction
No idea how your point cloud looks, but maybe Point Set Shape Detection
might help you to identify flat areas.
I have some data that tells me the amount of hours water is available for particular towns.
You can see it here
I want to use train a Multilayer Perceptron based on that data, to take a set of coordinates and indicate the approximate number of hours for which that coordinate will have water.
Does this make sense?
If so, am I correct in saying, there has to be two input layers? One for lat and one for long. And the output layer should be the number of hours.
Would love some guidance.
I would solve that differently:
Just create an ArrayList of WaterInfo:
WaterInfo contains lat,lon, waterHours.
Then for a given coordinate search the closest WaterInfo in the list.
Since you have not many elements, just do a brute force search, to find the closest.
You further can optimize, to find the three closest WaterInfo points, and calculate the weithted average of WaterHours. As weight you use the air distance from current position to Waterinfo position.
To answer your question:
"Does this makes sense"?
From the goal to get a working solution: NO!
Ask yourself, why do you want to use MLP for this task.
Further i doubt that using two layers for lat / long makes sense.
A coordinate (lat/lon) is one point on the world, so that should be one layer in the model. You can convert the lat/lon coord to a cell identifier: Span a grid over Brazil; with cell width 10 or 50km; now convert a lat/long coordinate to a cellId: Like E4 on a chess board, you will calculate one integer value representing the cell. (There are other solutions to get an unique number, too, choose one you like)
Now you have a modell geoCellID -> waterHours, which better represents the real world situation.
Simmilar with Direction between 2 Latitude/Longitude points in C#
but with objective-c
Also I want a formula that works for large distance near the pole if it's possible.
You'll need the following complete but rather difficult stuff. A slightly easier description is found on wikipedia.
Or you could save yourself a lot of time and use CLLocation's distanceFromLocation method:
distanceFromLocation:
Returns the distance (in meters) from the receiver’s location to the specified location.
Discussion
This method measures the distance between the two locations by tracing a line between them that follows the curvature of the Earth. The resulting arc is a smooth curve and does not take into account specific altitude changes between the two locations.
http://developer.apple.com/library/ios/DOCUMENTATION/CoreLocation/Reference/CLLocation_Class/CLLocation/CLLocation.html#//apple_ref/occ/instm/CLLocation/distanceFromLocation: