Как получить данные с ГИС-сервера в R?

Я использую ArcMap для доступа к данным ГИС на сервере пространственных данных. Я хочу выяснить, как сделать то же самое в R.

Я знаю, как читать шейп-файлы в R. Я успешно использовал maptools и rgdal для открытия и сопоставления локально сохраненных шейп-файлов (например, http://www.nceas.ucsb.edu/scicomp/usecases/ReadWriteESRIShapeFiles)

Моя проблема в том, что данные не хранятся локально, а находятся на сервере приложений. Я считаю, что это база данных Oracle. Мне предоставили информацию о 1. Сервер 2. Экземпляр (число) 3. База данных 4. Пользователь и 5. Пароль. Обычно я бы включил пример, но сомнительно, чтобы внешний пользователь мог получить доступ к серверам.

Например, вот как читать и строить локальные файлы в R

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

Знак "." указывает на локальный каталог. Как мне изменить это, чтобы получить доступ к данным на сервере? Фактический синтаксис кода был бы полезен.


person climatron    schedule 22.04.2014    source источник


Ответы (1)


Вы можете читать данные из Oracle Spatial DB с помощью GDAL / OGR:

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

если у вас есть драйвер в вашей установке GDAL / OGR. Если:

require(rgdal)
ogrDrivers()

показывает драйвер Oracle, тогда вы можете использовать readOGR со всеми параметрами в нужном месте.

Предположительно и по аналогии с примером PostGIS, я бы сказал, попробуйте:

dsn="OCI:userid/password@database_instance:")
ogrListLayers(dsn)
s = readOGR(dsn, layername)

но у меня нет сервера Oracle, на котором можно было бы его протестировать (если бы я сделал это, я бы отказался от него завтра для PostGIS и потратил бы сэкономленную лицензию на яхту), и вы все равно не уверены, что это сервер Oracle. Общий принцип подключения к любой пространственной базе данных такой же - проверьте, что у вас есть драйвер OGR, выясните, как выглядит параметр dsn, попробуйте.

Другой способ - использовать ODBC или другое непространственное соединение с базой данных R. Однако вы, скорее всего, получите обратно пространственные данные в форме WKB или WKT и должны будете преобразовать их в SpatialWhatevers (точки, линии, многоугольники?).

Пример PostGIS здесь:

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

person Spacedman    schedule 22.04.2014
comment
Спасибо за быстрый ответ ... если бы у меня была такая информация, как Server - xxx-yyy Instance - 1234 Database - abcde User - mylogin Pword - mypassword, каким был бы синтаксис dsn? - person climatron; 24.04.2014
comment
Вы можете преобразовать WKB в пространственные объекты с помощью функции readWKB в пакете wkb, и вы можете преобразовать WKT в пространственные объекты с помощью функции readWKT в пакете rgeos. - person ianmcook; 02.03.2015