Difference between revisions of "Opasnet map"

From Testiwiki
Jump to: navigation, search
(Static GoogleMaps test: function reorganised)
(Static GoogleMaps test: function MyRmap moved to OpasnetUtils/Drafts)
Line 212: Line 212:
 
==== Static GoogleMaps test ====
 
==== Static GoogleMaps test ====
  
<rcode name='staticmapstest' graphics='1'>
+
<rcode name='staticmapstest' graphics=1 embed=1>
  
 
library(RgoogleMaps)
 
library(RgoogleMaps)
Line 221: Line 221:
 
library(OpasnetUtils)
 
library(OpasnetUtils)
 
library(OpasnetUtilsExt)
 
library(OpasnetUtilsExt)
 +
 +
objects.latest("Op_en6007", code_name = "answer") # [[OpasnetUtils/Drafts]]. We need MyRmap.
  
 
shp <- readOGR('PG:host=localhost user=postgres dbname=spatial_db','kuopio_house')
 
shp <- readOGR('PG:host=localhost user=postgres dbname=spatial_db','kuopio_house')
 +
proj4string(shp) <- ("+init=epsg:3067") # The map projection of NLS Finland.
 +
 
#oprint(shp@data[1:100 , ])
 
#oprint(shp@data[1:100 , ])
 
plotvar <- shp@data$ika
 
nclr <- 8
 
  
 
epsg4326String <- CRS("+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs")
 
epsg4326String <- CRS("+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs")
proj4string(shp) <- ("+init=epsg:3067")
+
shp2 <- spTransform(shp,epsg4326String) # Convert to longitude-latitude projection.
shp2 <- spTransform(shp,epsg4326String)
 
 
 
# MyMap function without the "file destination" parameter
 
# Requires RgoogleMaps package
 
 
 
MyRmap <- function (
 
shp2, # a spatial data object
 
# lonR, # longitude of data points
 
# latR, # latitude of data points
 
center, # center of the map
 
size = c(640, 480), # size of the map. This produces the right dimensions in Opasnet.
 
MINIMUMSIZE = FALSE,
 
RETURNIMAGE = TRUE,
 
GRAYSCALE = FALSE,
 
NEWMAP = TRUE,
 
zoom,
 
verbose = 1,
 
pch = 19,
 
cex = 0.3,
 
legend_title = "",
 
...
 
) {
 
plotclr <- brewer.pal(nclr,"Spectral")
 
class <- classIntervals(plotvar,nclr,style="quantile")
 
colcode <- findColours(class,plotclr)
 
 
 
latR <- shp2@coords[ , 2]
 
lonR <- shp2@coords[ , 1]
 
 
 
mymarkers <- 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"])
 
 
 
    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")
 
    }
 
 
 
MyMap <- GetMap(
 
center = c(lat.center, lon.center),
 
zoom = zoom,
 
size = size,
 
RETURNIMAGE = RETURNIMAGE,
 
GRAYSCALE = GRAYSCALE,
 
verbose = verbose,
 
...
 
)
 
 
 
PlotOnStaticMap(MyMap)
 
 
 
PlotOnStaticMap(
 
MyMap,
 
lat = mymarkers[,"lat"],
 
lon = mymarkers[,"lon"],
 
pch = pch,
 
cex = cex,
 
col = colcode,
 
add = T
 
)
 
 
 
legend(
 
"topleft",
 
legend = names(attr(colcode, "table")),
 
title = legend_title,
 
fill = attr(colcode, "palette"),
 
cex = 1.0,
 
bty = "y",
 
bg = "white"
 
)
 
}
 
  
temp <- MyRmap(shp2, maptype = "mobile", legend_title = "Ikä") # bb$lonR, bb$latR
+
MyRmap(shp2, plotvar = "ika", legend_title = "Ikä", numbins = 8, pch = 19, cex = 0.3) # Draw the map.
  
 
</rcode>
 
</rcode>

Revision as of 14:16, 23 December 2013



Question

How should GIS data be handled and visualised in Opasnet?

Answer

  • Original GIS data is stored in a PostgreSQL database.
  • Data is accessed by R using the RGDAL package and ?? connection.
  • Data in manipulated in R.
  • Ovariables are converted to SpatialPointsDataFrame objects using ova2spat function.
  • Data is displayed by producing a KML file with ?? package.
    • The KML file is created with MyPointKML function, if pins are shown.
    • The KML file is saved at the R-tools server.
    • Google Maps is used to show the KML file on a web page.

Currently, ova2spat and MyPointKML functions are located in OpasnetUtils/Drafts. Therefore, you need this command:

objects.latest("Op_en6007", code_name = "answer") # OpasnetUtils/Drafts. We need MyPointsKML and ova2spat.

This is the projection that the National Land Survey Finland uses: [1].

Key guidance:


Rationale

All pieces of the puzzle exist already.


Dependencies

Calculations

Kuopio buildings with Google pin map

+ Show code


GoogleMaps Sorvi MML TEST

#: Something wrong with sorvi. --Jouni (talk) 12:54, 23 December 2013 (EET)

+ Show code

Google with shapefiles

+ Show code

Google show data from url on map

+ Show code

Google circles

+ Show code

Static GoogleMaps test

+ Show code

See also

Keywords

References


Related files

<mfanonymousfilelist></mfanonymousfilelist>