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.