Wikisym 2012 Demo: Difference between revisions

From Opasnet
Jump to navigation Jump to search
mNo edit summary
mNo edit summary
Line 32: Line 32:




== Plots on dynamic Google Maps ==
== Points on dynamic Google Maps ==
This examples plots buildings of Kuopio on Google Maps. User can give the minimum age of buildings to plot as an input parameter.
This examples plots buildings of Kuopio on Google Maps. User can give the minimum age of buildings to plot as an input parameter.


Line 120: Line 120:
google.show_kml_data_on_maps(data)
google.show_kml_data_on_maps(data)


</rcode>
== Large quantity of points on a static Google Maps ==
This example plots large number of point data on static Google Maps. The map produced in this example shows the age (in years) distribution of properites within Kuopio. User can select the number of age classes (4,6 or 8) and the type of classification.
<rcode name='static_gmaps_test'
graphics='1'
Variables="name:myclasses|description:Number of classes|type:selection|options:'4';4;'6';6;'8';8|default:'8'|
name:classtype|description:Type of classification|type:selection|options:'equal';Equal Int;'quantile';Quantile;'sd';Standard deviation;'jenks';Jenks|default:'quantile'
"
>
#code goes here
library(RgoogleMaps)
library(rgdal)
library(maptools)
library(RColorBrewer)
library(classInt)
library(OpasnetBaseUtils)
shp<-readOGR('PG:host=localhost user=postgres dbname=spatial_db','kuopio_house')
plotvar<-shp@data$ika
nclr<-myclasses
plotclr<-brewer.pal(nclr,"Spectral")
class<-classIntervals(plotvar,nclr,style=classtype)
colcode<-findColours(class,plotclr)
epsg4326String <- CRS("+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs")
proj4string(shp)<-("+init=epsg:3067")
shp2<-spTransform(shp,epsg4326String)
#get marker information for all points
mymarkers<-cbind.data.frame(lat=c(shp2@coords[,2]),lon=c(shp2@coords[,1]),color=colcode);
#get the bounding box:
bb <- qbbox(lat = mymarkers[,"lat"], lon = mymarkers[,"lon"])
#MyMap function without the "file destination" parameter
MyRmap<-function (lonR, latR, center, size = c(640, 640), 
    MINIMUMSIZE = FALSE, RETURNIMAGE = TRUE, GRAYSCALE = FALSE,
    NEWMAP = TRUE, zoom, verbose = 1, ...)
{
    if (missing(zoom))
        zoom <- min(MaxZoom(latR, lonR, size))
    if (missing(center)) {
        lat.center <- mean(latR)
        lon.center <- mean(lonR)
    }
    else {
        lat.center <- center[1]
        lon.center <- center[2]
    }
    if (MINIMUMSIZE) {
        ll <- LatLon2XY(latR[1], lonR[1], zoom)
        ur <- LatLon2XY(latR[2], lonR[2], zoom)
        cr <- LatLon2XY(lat.center, lon.center, zoom)
        ll.Rcoords <- Tile2R(ll, cr)
        ur.Rcoords <- Tile2R(ur, cr)
        if (verbose > 1) {
            cat("ll:")
            print(ll)
            print(ll.Rcoords)
            cat("ur:")
            print(ur)
            print(ur.Rcoords)
            cat("cr:")
            print(cr)
        }
        size[1] <- 2 * max(c(ceiling(abs(ll.Rcoords$X)), ceiling(abs(ur.Rcoords$X)))) +
            1
        size[2] <- 2 * max(c(ceiling(abs(ll.Rcoords$Y)), ceiling(abs(ur.Rcoords$Y)))) +
            1
        if (verbose)
            cat("new size: ", size, "\n")
    }
    return(google.get_map(center = c(lat.center, lon.center), zoom = zoom,
        size = size, RETURNIMAGE = RETURNIMAGE,
        GRAYSCALE = GRAYSCALE, verbose = verbose, ...))
}
MyMap<-MyRmap(bb$lonR,bb$latR,maptype="mobile",scale="2")
PlotOnStaticMap(MyMap,size=c(640,640))
PlotOnStaticMap(MyMap,size=c(640,640),lat=mymarkers[,"lat"],lon=mymarkers[,"lon"],pch=19,cex=0.3,col=colcode,add=T)
legend("topleft", legend=names(attr(colcode, "table")),title="Building Age (Yr)", fill=attr(colcode, "palette"),  cex=1.0, bty="y",bg="white")
</rcode>
</rcode>

Revision as of 11:05, 21 August 2012

Polygons on dynamic Google Maps

This example plots municipalities of Finland on Google Maps using data from National Land Survey of Finland.

+ Show code


Points on dynamic Google Maps

This examples plots buildings of Kuopio on Google Maps. User can give the minimum age of buildings to plot as an input parameter.


Building minimum age:

+ Show code

Large quantity of points on a static Google Maps

This example plots large number of point data on static Google Maps. The map produced in this example shows the age (in years) distribution of properites within Kuopio. User can select the number of age classes (4,6 or 8) and the type of classification.

Number of classes:

Type of classification:

+ Show code