On 19-Dec-04 Andreas Kretschmer,,, wrote: > Hello, > I'm verry new in R.
Welcome! > My Problem: > > I have a PostgreSQL-Server with installed support for the R-Language. > And now I have a table with a Polygon like this: > > test_db=# select * from geo where id=1; > id | koerper > ----+--------------------------------- > 1 | ((0,0),(0,2),(2,2),(3,3),(5,0)) > (1 row) > > Now, I need to know the area of this object. Please, can you tell me, > if it possible to use the installed plr - Language zu calculate the > area? > > I have some experience to draw diagramms from Postgres via the > R-language, but I'm a absolute novice to use R to solve problems like > this. Not sure what you mean by "the installed plr - Language", but for calculating areas og polygons you may find the following function useful. Example based on the coordinates ((0,0),(0,2),(2,2),(3,3),(5,0)) you give above. Let X be the matrix of the coordinates: > X [,1] [,2] [1,] 0 0 [2,] 0 2 [3,] 2 2 [4,] 3 3 [5,] 5 0 Function "area": area<-function(X){ X<-rbind(X,X[1,]) x<-X[,1]; y<-X[,2]; lx<-length(x) -sum((x[2:lx]-x[1:lx-1])*(y[2:lx]+y[1:lx-1]))/2 } > area(X) [1] -9.5 Note that this function generates a "signed area": positive if the bounding contour is "counter-clockwise" in the order of the vertices as given in X, negative if clockwise. The principle of the function is that it first closes the polygon by repeating the first point, and then (in effect) calculates the contour integral Int -y*dx round the contour of the polygon (equivalent to Int x*dy). Hoping this helps, Ted. -------------------------------------------------------------------- E-Mail: (Ted Harding) <[EMAIL PROTECTED]> Fax-to-email: +44 (0)870 094 0861 [NB: New number!] Date: 19-Dec-04 Time: 13:40:32 ------------------------------ XFMail ------------------------------ ______________________________________________ [EMAIL PROTECTED] mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html