Opasnet map: Difference between revisions

From Opasnet
Jump to navigation Jump to search
(→‎Static GoogleMaps test: function reorganised)
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) (type: truth; paradigms: science: attack)

+ 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>