larss@nada.kth.se (Lars Schylberg) (09/25/89)
Here's a cartographic problem that I have and that I would
want to have an solution to. My problem is that I want to label
areas and have to have a point that I know is inside a polygon.
I would be interested if someone had a piece of C-code or if
someone would want to discuss this in psuedo code manner.
I would want to input a polygon with x and y coordinates and
have it to return a point(x,y) that is surely inside the polygon
even if the polygon is in horse shoe form or as L form.
point_in_pol( x_input_string, y_input_string, return_x, return_y);
int *x_input_string, * y_input_string;
int *return_x, *return_y;
{
}
It should work on this sample data set with north and east
coordinates:
A 8 north ^
100 100 400 + o-----------o
400 100 | | |
400 200 + | o---------o
150 200 | | |
150 300 + | o---------o
400 300 | | |
400 400 + o-----------o
100 400 |
+---+---+---+---+---+---+--->
400 east
or this data of and L formed polygon.
A 6 north ^
100 100 400 + o---o
400 100 | | |
400 200 + | |
200 200 | | |
200 400 + | o-------o
100 400 | | |
+ o-----------o
|
+---+---+---+---+---+---+--->
400 east
The A stands for that the polygon describes an area and the number
after tells how many points the polygon has.
I know that Monmonier in his book Computer Assisted Cartography from
1982 has part of one solution where he uses plumb line intersections
to determine if a point is inside a polygon or not. But then you need
a good guess for a starting point. I'm sure there must be someone out
there have this solution and I don't want reenvent the wheel again by
writing this routine again.
Lars.
PS. this is also posted to the GIS AND DIGITAL CARTOGRAPHY NEWSLETTER DS.
--
Lars Schylberg Email: larss@fmi.kth.se (Internet)
Department of Photogrammetry larss@sekth.bitnet (Bitnet)
Royal Institute of Technolgy Tel. +46 8 790 86 33 (office)
S-100 44 STOCKHOLM, SWEDEN Fax. +46 8 10 91 99