This message is in MIME format. Since your mail reader does not understand
this format, some or all of this message may not be legible.


You're perfectly right Bill, a Thiessen/Vorono=EF approach would =
probably be
much better. Sorry about that Adam.

                -----Original Message-----
                From:   Quantitative Decisions [mailto:[EMAIL PROTECTED]]
                Sent:   Wednesday, April 11, 2001 5:28 PM
                To:     [EMAIL PROTECTED]
                Subject:        MI-L Re: Calculating distance from a point
to bodies of water

                At 03:43 PM 4/11/01 -0400, a respondent wrote:
                >At first sight, if your bodies of water are closed
polygons, you could
                >determine which body of water is the closest of a
particular point. To
                >narrow the search, you could calculate the distance between
your point and
                >the centroid of each body of water and keep, say, the 10
closest ones.

                This clever idea will fail in some exceptional cases, such
as when the=20
                bodies of water are long rivers: New Orleans, for instance,
is right on the=20
                Mississippi River, but it is closer to the centroids of
hundreds of=20
                tributaries (and hundreds of other rivers, lakes, and bayous
unconnected to=20
                the Mississippi) than it is to the centroid of the river
itself.

                The computational geometry literature contains many
efficient and correct=20
                solutions to the problem of finding the distances from each
point to its=20
                nearest polygon.  One of them, a vector approach,
generalizes the Thiessen=20
                polygon construction; references to this are in Preparata &
Shamos'=20
                book.  Another, a raster approach, constructs the distance
grid for the=20
                collection of water body polygons.  After this preliminary
computation,=20
                finding the required distances is very rapid: you just
interpolate within=20
                the distance grid.  Other approaches use quadtrees or other
spatial data=20
                structures precomputed from the polygons.  Most GIS software
has one (or=20
                more) of these solutions built in to its basic
functionality.


                >Since the distance between a point and a
                >line is proportional to the area of the triangle formed by
the point and the
                >two nodes of the line,

                This statement assumes the perpendicular from the point to
the line falls=20
                between the two nodes, which will usually *not* be the case.

                The general formula is easily expressed in vector notation.
Let the=20
                endpoints of the line segment be a and b and let the point
be p.  Let v =3D=20
                b-a.  Each of a, b, p, and v is a vector.  Compute t =3D inner
product of v=20
                with (p-a) and v2 =3D inner product of v with itself; t and v2
are=20
                numbers.   If t <=3D 0, the closest point to p is a and the
distance is=20
                |p-a|.  If t >=3D v2, the closest point to p is b and the
distance is=20
                |p-b|.  Otherwise, v2 <> 0, the point c =3D a + t*v/v2 is the
closest point=20
                to p along the line segment between a and b, and the
distance is |p-c|.


                >I would use the determinant method to calculate it.
                >This method works as follow: calculate the determinant of
this matrix:
                >xp yp 1
                >x1 y1 1
                >x2 y2 1

                None of these possibilities can be expressed by a
determinant based on the=20
                point and node coordinates alone: a square root operation is
unavoidable=20
                (except for some special configurations).  This is clear
when you consider=20
                the effect of changing the units of measurement.  If all
coordinates are=20
                multiplied by z, to be consistent the answer had better be
multiplied by=20
                |z|; however, the determinant above (or any similar looking
expression)=20
                will be multiplied by z^2.

                --Bill Huber
                Quantitative Decisions



=09
_______________________________________________________________________
                List hosting provided by Directions Magazine |
www.directionsmag.com |
                To unsubscribe, send e-mail to
[EMAIL PROTECTED] and
                put "unsubscribe MapInfo-L" in the message body.



_______________________________________________________________________
List hosting provided by Directions Magazine | www.directionsmag.com |
To unsubscribe, send e-mail to [EMAIL PROTECTED] and
put "unsubscribe MapInfo-L" in the message body.

Reply via email to