Title: Problem with co-ordinates... Help please ???

Analytic geometry methods only have a chance of working if you use a projected coordinate system.  A conformal projection (such as the British National Grid you're using) is preferred, if you want vectors calculated from your coordinates to have a chance of representing vectors on the Earth. 

 

If you're displaying the result data using a different projection than the "current coordinate system" you were calculating in, things may appear off anyway.

 

Even then, some things can bite you:

 

First of all, you have to make sure you've set MapBasic's "current coordinate system" to the desired coordinate system.  What values are you actually getting out of the calls to ObjectNodeX() and ObjectNodeY()? (hint: Use print statements.)  If they're BNG coordinates then you've done this correctly. If they're latitudes and longitudes, [FA1, FA2] is not really a vector, fLinkLength isn't really a length, and [FB1, FB2] isn't really a normal unit vector.  Set the "current coordinate system" by issuing

 

Set Coordsys Table mytable

 

before you begin looping through mytable.

 

Secondly, if your bounds are too wide, then the granularity of your space is too large, and when MapInfo knocks the coordinates you calculate over to the corner of the nearest grid cell, the movement may be large enough to see.  This will occur with very small widths and can only be solved by using a coordinate system with tighter bounds.

 

Finally, if fOffset is large, fOffset*[FB1, FB2] will never represent a vector normal to your line segment on the surface of the Earth, because even a conformal projection represents angles correctly only over short distances (actually 0, but they don't go far out of whack until the distances get large).  The solution is to use spherical geometry to insert several intermediate points, something that's probably too complicated to be worth the effort.

 

Hope this helps

Spencer

 


From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Gibb, Stuart
Sent: Monday, October 16, 2006 12:20 PM
To: mapinfo-l@lists.directionsmag.com
Subject: [MI-L] Problem with co-ordinates... Help please ???

 

 

All,

I am using the following snippets of code to create fixed width band regions at 90 degrees to a series of given straight lines. The lines contain numerical data which I can then thematically map. I also have a version that creates variable width bands but for the moment I'll assume all bands are the same width.

After a lot of tweaking I thought I had finished the tool...Unfortunately, after crudely holding the corner of a sheet of paper up to the screen it appears my bands aren't perfectly perpendicular to the original line though I am clueless as to what could have gone wrong…

Is there any error converting degrees to radians and then back again in MapInfo ? Also, I am the using British national grid co-ordinate set, could this where my slight discrepancy has come from multiplying ?

    fFNodeX = ObjectNodeX(oLine, 1, 1) ' read longitude
    fFNodeY = ObjectNodeY(oLine, 1, 1) ' read latitude
    fTNodeX = ObjectNodeX(oLine, 1, k) ' read longitude
    fTNodeY = ObjectNodeY(oLine, 1, k) ' read latitude

    fA1 = fTNodeX - fFNodeX
    fA2 = fTNodeY - fFNodeY
    fLinkLength = SQR(fA1*fA1 + fA2*fA2)
    fB1 = -fA2/fLinkLength
    fB2 = fA1/fLinkLength

    x1 = fFNodeX + (fB1 *(fWidth + fOffset))
    y1 = fFNodeY + (fB2 *(fWidth + fOffset))
    x2 = fTNodeX + (fB1 *(fWidth + fOffset))
    y2 = fTNodeY + (fB2 *(fWidth + fOffset))
    x3 = fTNodeX + (fB1 * fOffset)
    y3 = fTNodeY + (fB2 * fOffset)
    x4 = fFNodeX + (fB1 * fOffset)
    y4 = fFNodeY + (fB2 * fOffset)

As always, any help would be greatly appreciated…

Many thanks

Stu

 

 

 

Visit our website at http://www.halcrow.com

------------------------------------------------------------------------
The contents of this email are confidential, for the sole use
of the intended recipient at the email address to which it has
been addressed and do not give rise to any binding legal
obligation upon Halcrow companies unless subsequently confirmed
on headed business notepaper sent by fax, letter or as an email
attachment.  Whilst reasonable care has been taken to avoid virus
transmission, no responsibility for viruses is taken and it is
your responsibility to carry out such checks as you feel
appropriate.  Emails supplied are as found and there's no
guarantee that the messages contained within the body of the
email have not been edited after receipt. If you receive this
email in error, please contact the sender immediately and delete
the message from your system.
Thank you.
-------------------------------------------------------------------------

_______________________________________________
MapInfo-L mailing list
MapInfo-L@lists.directionsmag.com
http://www.directionsmag.com/mailman/listinfo/mapinfo-l

Reply via email to