DotSpatial.Projections.Reproject.ReprojectPoints with Height? - gis

https://github.com/DotSpatial/DotSpatial/blob/master/Source/DotSpatial.Projections/Reproject.cs
Please can someone explain the Z array that the '.ReprojectPoints' command uses. Using the 'Earth from Space' projection: '+proj=ortho' I would like to reproject a point so that it is a specified distance above the planet surface - the idea is to draw a line from Point A on the ground to Point B on the ground that arcs into the sky and then comes down to earth again. Has anyone done this?

Related

Get the world coordinates of a markup in Forge

I am trying to get the world coordinates( i.e. viewer coordinate) of a markups position. But I am unable to get It.
What I am doing:
In case of Arrow:-
I have drawn an arrow and I am getting its head and tail. Then I am trying to convert it to world client using viewer.clientToWorld as shown below
In Above screen shot m is my markup
Reason I am doing this is that I want to set a cutPlane in viewer which is exactly parallel to my markup.
Also suggest how can I find a plane which is parallel to the line and will be along z axis.
Thanks & Regards
Saurabh A.
viewer.clientToWorld could only get you the world positions when the client coords intersect a node (a point/part of the model).
To get world positions when the client coords are not intersecting see here

Function for densest sphere packing inside a sphere

I'm trying to write a function for the densest packing of identical spheres inside a spherical boundary.
I'm thinking it will be something like spherepack(c,r,n), where:
c - centre of the boundary sphere (x,y,z coordinates)
r - radius of the boundary sphere
n - number of identical spheres to be packed inside the boundary
I want the outputs to be the x,y,z coordinates of the centre of each packed sphere. Does anyone know how this could be done?
How about what you might call the 'brute force' method. ie Model what would happen if you had a pile of n unit sized spheres and just tried packing them together in every possible close-packed configuration, and then measured the smallest containing sphere for the pack. I can imagine an algorythm for that, but it is not very programatically efficient, or mathmatically beautiful. Would it have to run fast, or just get the right answer?
Unfortunately, the assumption that close packing is densest is not correct :(

what are xllcorner and yllcorner for South America?

I have a map of south America,I want to plug it in a global map of which the projection is WGS84 using arcGIS. In order to put on right place ,xllcorner and yllcorner have to be assigned in ASCII file correctly.I have been searching thru internet but didn't find the right values.any suggestions or help
There are no general coordinates for the lowerleft corner of south america. This all heavily depends on the map you are using, and its coordinate system. I think the best thing you can do is to georectify your image to get the correct projection.

Around-the-world path breaking in Google Static Maps

I'm creating Google Static Maps with a path between markers and have come across certain coordinate combinations that break the path.
The path breaks in this example (markers # Beijing, SF, NY, Azores, Rome):
http://maps.google.com/maps/api/staticmap?path=color:0xff0000cc|weight:3|39.904214,116.407413|37.77493,-122.419416|40.714353,-74.005973|38.721642,-27.220577|41.89052,12.494249&markers=39.904214,116.407413|37.77493,-122.419416|40.714353,-74.005973|38.721642,-27.220577|41.89052,12.494249&maptype=terrain&sensor=false&size=640x404
And works in this example (marker # Rome removed)
http://maps.google.com/maps/api/staticmap?path=color:0xff0000cc|weight:3|39.904214,116.407413|37.77493,-122.419416|40.714353,-74.005973|38.721642,-27.220577&markers=39.904214,116.407413|37.77493,-122.419416|40.714353,-74.005973|38.721642,-27.220577&maptype=terrain&sensor=false&size=640x404
The cause is not crossing over the Greenwich Meridian as I initially thought. It breaks even if I add a marker before that, seemingly any a point East of the automatically calculated centerpoint of the map...but only when the path starts on the other side of -180 longitude.
To prove that, you can see that the Beijing, SF, NY, Azores, Rome path displays correctly when I set the map centerpoint to -170,35
http://maps.google.com/maps/api/staticmap?path=color:0xff0000cc|weight:3|39.904214,116.407413|37.77493,-122.419416|40.714353,-74.005973|38.721642,-27.220577|41.89052,12.494249&markers=39.904214,116.407413|37.77493,-122.419416|40.714353,-74.005973|38.721642,-27.220577|41.89052,12.494249&maptype=terrain&sensor=false&size=640x404&center=-170,35
Unfortunately, I can't programmatically set center like this because I never know the collection of points I'm going to get, and it would be next to impossible to detect that the passed points would cause a line break.
Any ideas?
First: you can calculate the center even if you don't know the collection of points (locations) at compile time: at runtime you know all the points (otherwise it would be not possible to insert the coordinates into the URL), therefore you can easily iterate over all the points and compute the center. You can computing the average of all coordinates and you get the geometric center (also called centroid): this is the easier way. Another way to do is to check the most distant pair of locations (for both, latitude and longitude) and then set the middle point as center: this requires slightly more coding (for instance to compute the longitude distance you need to take into account the you have to compute the distance in two directions, since it is possible to go 'around the world) and it has an higher complexity.
I don't go deeper in this topic because, even if you compute correctly the center of your points, this does NOT resolve the problem, and moreover the center provided automatically by the Google static map API is always correct: again the center is related to the problem, but it is not the (couse of the) problem.
An aspect that is trivial but important to keep in mind: Google static map draws a path between two locations always by considering the shortest path, i.e. by drawing the shortest straight line.
Therefore if you are in a situation where your path has to go from a location A to a location B, and the shortest path between A and B goes 'around the world' (or better, it goes out from one side of the image), then the path appears 'borken' as in maps that you have shown. In practice A and B are near the left and right margins of the map, and the map can not be centered in some point along the shortest path between A and B because of the others point of the path. And this is what happen when you remove 'Rome': without Rome the map can be centered in a way that the path is not borken.
Formally, I think that the problem appears (i.e. the path is broken), when the projection of the path on the equator is longer than 360 degree of longitudes, and the path always goes in the same direction (i.e. always west to east or always east to west).
Google static map in this situation simply adds another world map next to the first one: if you set the zoom to the minimum, you can see up to three world maps. This is really impractical for several reasons:
you can not zoom out infinitely;
if you want also insert markers into the map they will be drawn only on the 'main' map;
potentially you can have a path that goes around the world (passing in sequence from America, Europe, Asia, and America again and so on...) many times, and it would be really terrible to have so many little maps one after each other;
I googled a lot about this problem, and I didn't find any solution, there is a bug open on the bug tracker, but it is unsolved.
In my opinion the 'right' way to do is simply the following: at most one map and if a path has to goes out from one margin of the map/image, then it should appear on the opposite margin and continues to the destination, drawn on the same map.
So I found a first workaround:
you draw your path, and with the same style (line's color, etc) you also draw the path in a reversed way (Google static map allows to draws multiple paths in the same map), i.e. path=A|B|C&path=C|B|A and this will solve the problem in many situations (i.e. the path exits from one side of the image and enters from the other). Unfortunately this not works always: if you have a path that cross the image margin two consecutive times, then you lose a portion of your path
To solve this problem I found a second workaround:
- not draw simply the path and its reverse, but draw a different path for every pair of locations of the path (and reversed), i.e. for a path A->B->C then: path:A|B,path=B|C,path=C|B,path=B|A and this works always
The drawback is that in this way the URL becomes very long and the limit of 2048 characters for URLs is easily reached.
The best solution would be to compute manually the center, check manually where the path will cross the margin, and only for this portion of the path draw an additional path going between the two locations at the margin (and maybe also the reverse), but I do not think it really worth, although I do not think Google ever will solve this problem.

How does Google do Maps' Street View Cursor "Following"

In Google Maps Street View your cursor turns into a rectangular/oval shape as you mouse over different parts of the scene. For example:
http://maps.google.com/?q=loc:+Maryland+Ave+at+e.+26th+st+Baltimore+MD+US&ie=UTF8&z=16&iwloc=A&layer=c&cbll=39.319313,-76.618426&panoid=6W2XgkHoGuf6_SKv0LIL9Q&cbp=12,307.06,,0,3.16
As you move the cursor over the building it "hugs" the walls. It's not just as simple as following the intersection because if you continue on to the left you can see the angle change as it hits different faces of the buildings.
Do they do some sort of image analysis to identify faces of the buildings or do they, as they take the picture, do some sort of laser range finder and then later combine it with the picture?
They do use laser range scanners. And according to the Google Lat Long Blog:
We have been able to accomplish this
by making a compact representation of
the building facade and road geometry
for all the Street View panoramas
using laser point clouds and
differences between consecutive
pictures.