2014-04-22 5 views
2

J'ai utilisé ArcMap pour accéder aux données SIG sur un serveur de données spatiales. Je veux savoir comment faire de même dans R.Comment obtenir des données d'un serveur SIG dans R?

Je sais lire dans R. Je shapefiles ai utilisé avec succès maptools et rgdal pour ouvrir et carte

shapefiles stockés localement (par exemple http://www.nceas.ucsb.edu/scicomp/usecases/ReadWriteESRIShapeFiles) Mon problème est lorsque les données ne sont pas stockées localement, mais plutôt sur un serveur d'applications. Je crois que c'est une base de données Oracle. J'ai reçu des informations sur le 1. Serveur 2. Instance (un nombre) 3. Base de données 4. Utilisateur et 5. Mot de passe. Normalement, j'inclurais un exemple, mais il est douteux qu'un utilisateur externe puisse accéder aux serveurs.

Par exemple, voici comment lire et tracer des fichiers locaux en R

library(rgdal) 
    ogrInfo(".", "nw-rivers") 
    centroids.rg <- readOGR(".", "nw-centroids") 
    plot(centroids.rg) 

Le « » pointe vers le répertoire local. Comment est-ce que je changerais ceci pour accéder aux données sur un serveur? La syntaxe actuelle du code serait utile.

Répondre

2

Vous pouvez lire les données d'Oracle Spatial à l'aide de blocs de données GDAL/OGR:

http://www.gdal.org/ogr/drv_oci.html

si vous avez le pilote dans votre GDAL/OGR l'installation. Si:

require(rgdal) 
ogrDrivers() 

montre le pilote Oracle, vous pouvez utiliser readOGR avec tous les paramètres au bon endroit.

A une supposition, et par analogie avec l'exemple PostGIS, je dirais essayer:

dsn="OCI:userid/[email protected]_instance:") 
ogrListLayers(dsn) 
s = readOGR(dsn, layername) 

mais je n'ai pas un serveur Oracle pour le tester sur (si je le faisais je serais un fossé demain pour PostGIS, et dépensez la licence d'économie sur un yacht) et vous ne sentez pas certain qu'il s'agit d'un serveur Oracle de toute façon. Le principe général pour se connecter à n'importe quelle base de données spatiale est le même - vérifiez que vous avez un pilote OGR, déterminez à quoi ressemble le paramètre dsn, essayez-le.

Une autre méthode consiste à utiliser ODBC ou une autre connexion de base de données R non spatiale. Cependant, vous récupérerez probablement les données spatiales sous forme WKB ou WKT et devrez les convertir en SpatialWhatevers (point, lignes, polygones?).

PostGIS exemple est ici:

https://gis.stackexchange.com/questions/64950/which-is-the-best-way-of-working-with-postgis-data-in-r

+0

Merci pour la réponse rapide ... si j'avais des informations comme serveur - xxx-yyy instance - 1234 Database - ABCDE utilisateur - monlogin PWord - mypassword quelle serait la syntaxe de dsn? – climatron

+0

Vous pouvez convertir WKB en objets spatiaux en utilisant la fonction 'readWKB' dans le paquet [wkb] (http://cran.r-project.org/web/packages/wkb/index.html) et vous pouvez convertir WKT en Spatial objets avec la fonction 'readWKT' dans le paquet [rgeos] (http://cran.r-project.org/web/packages/rgeos/index.html). – ianmcook

Questions connexes