[OpenLayers-Users] Get point on line?

Bill Thoen bthoen at gisnet.com
Sat May 2 09:28:40 EDT 2009


I put an article about great circle algorithms in the wiki some time ago 
that might help you.  The links to the demos are down right now (that 
server needs a power supply I think) but the algorithms and formulas are 
shown on the wiki page at 
http://trac.openlayers.org/wiki/GreatCircleAlgorithms. Hopefully that 
will give you enough help to complete your task.

Unfortunately, I'm swamped with my own OpenLayers problems right now, so 
I don't have any free time to help you much more than that. JavaScript 
and OpenLayers is so much fun that it's all too easy to program yourself 
into places you have no business being. 

But if you got the answers to all your problems immediately, your heart 
wouldn't become purified by the long quest.

Good luck!

- Bill Thoen


shane_china wrote:
> Hi, Bill Thoen, I go to the website and find the formulary I want. As
> following:
> Point(s) known distance from a great circle
> Let points A and B define a great circle route and D be a third point. Find
> the points on the great circle through A and B that lie a distance d from D,
> if they exist. 
>    A = crs_AD - crs_AB
>
> ( crs_AB and crs_AD are the initial GC bearings from A to B and D,
> respectively. Compute using Course between points) 
>
>    b = dist_AD
>
> (dist_AD is the distance from A to D. Compute using Distance between points) 
>
>    r=(cos(b)^2+sin(b)^2*cos(A)^2)^(1/2)
>
> (acos(r) is the XTD) 
>
>    p=atan2(sin(b)*cos(A),cos(b))
>
> (p is the ATD) 
>
>    IF (cos(d)^2 > r^2) THEN
>       No points exist
>    ELSE
>       Two points exist
>      dp = p +- acos(cos(d)/r)
>    ENDIF
>
> dp are the distances of the desired points from A along AB. Their lat/lons
> can be computed using Lat/lon given radial and distance 
>
> But I want to know, Is there any such fomulary in OpenLayers to help me
> simplify the algorithm? For example, I know "OpenLayers.Util.distVencenty",
> this method can calculate the distance between two points. Does openlayers
> also have such functions can help me? Thank you.
>
> My math is not so good. Write the algorithm in js all by myself is so
> difficult for me.
>
>
>
>
> Bill Thoen wrote:
>   
>> Yes, it's a little different for the spherical (Lon/Lat) case. For those 
>> formulas, check out Ed Williams' Aviation Formulary website at 
>> http://williams.best.vwh.net/avform.htm. What you're looking for is 
>> determining waypoint locations, i think.
>>
>> - Bill Thoen
>>
>> shane_china wrote:
>>     
>>> Bill Thoen wrote:
>>>   
>>>       
>>>> shane_china wrote:
>>>>     
>>>>         
>>>>> In openlayers,
>>>>> I have a straight line with two endpoints. How could I get a point on
>>>>> the
>>>>> line with given distance to one endpoint? Thank you. 
>>>>>
>>>>>       
>>>>>           
>>>> You can find a point anywhere on a line by using a ratio calculation.  
>>>> Start with the distance to your point divided by the total distance of 
>>>> your line, then your new X coordinate = the difference between the X 
>>>> coordinates of the endpoints times the ratio (plus the X coordinate of 
>>>> the starting line endpoint. For example, if your endpoints are at 
>>>> coordinates (X0, Y0) and (X1,Y1) then the Cartesian distance is
>>>>
>>>> D = sqrt((X1-X0)*(X1-X0) + (Y1-Y0)*(Y1-Y0))
>>>>
>>>> Then if the ratio between this and the distance to your point is d, your 
>>>> new point's coordinates will be:
>>>>
>>>> X= X0+(X1-X0)*d/D
>>>> Y=Y0+(Y1-Y0)*d/D
>>>>     
>>>>         
>>> So thank you for your answer. Your advise is in X-Y coodinates. Does this
>>> method also apply to lon lat coodinates? Our earth is a ball, so is it
>>> different?
>>> I haven't demonstrate it yet.
>>>   
>>>       
>> _______________________________________________
>> Users mailing list
>> Users at openlayers.org
>> http://openlayers.org/mailman/listinfo/users
>>
>>
>>     
>
>   



More information about the Users mailing list