Jeśli masz możliwość sterownika PostGIS w pakiecie rgdal, to jest tylko kwestia utworzenia ciągu połączenia i korzystania z niego. Tutaj łączę się z moją lokalną bazą danych gis
przy użyciu domyślnych poświadczeń, więc moje DSN jest raczej proste. Konieczne może być dodanie hosta, nazwy użytkownika lub hasła. Zobacz dokumentację gdal, aby uzyskać informacje.
> require(rgdal)
> dsn="PG:dbname='gis'"
Jakie tabele są w tej bazie danych?
> ogrListLayers(dsn)
[1] "ccsm_polygons" "nongp" "WrldTZA"
[4] "nongpritalin" "ritalinmerge" "metforminmergev"
Uzyskać jeden:
> polys = readOGR(dsn="PG:dbname='gis'","ccsm_polygons")
OGR data source with driver: PostgreSQL
Source: "PG:dbname='gis'", layer: "ccsm_polygons"
with 32768 features and 4 fields
Feature type: wkbMultiPolygon with 2 dimensions
Co mam
> summary(polys)
Object of class SpatialPolygonsDataFrame
Coordinates:
min max
x -179.2969 180.7031
y -90.0000 90.0000
Is projected: NA
proj4string : [NA]
Data attributes:
area perimeter ccsm_polys ccsm_pol_1
Min. :1.000 Min. :5.000 Min. : 2 Min. : 1
1st Qu.:1.000 1st Qu.:5.000 1st Qu.: 8194 1st Qu.: 8193
Median :1.000 Median :5.000 Median :16386 Median :16384
Mean :1.016 Mean :5.016 Mean :16386 Mean :16384
3rd Qu.:1.000 3rd Qu.:5.000 3rd Qu.:24577 3rd Qu.:24576
Max. :2.000 Max. :6.000 Max. :32769 Max. :32768
W przeciwnym razie możesz użyć funkcji bazy danych R i bezpośrednio przeszukać tabele.
> require(RPostgreSQL)
Loading required package: RPostgreSQL
Loading required package: DBI
> m <- dbDriver("PostgreSQL")
> con <- dbConnect(m, dbname="gis")
> q="SELECT ST_AsText(the_geom) AS geom from ccsm_polygons LIMIT 10;"
> rs = dbSendQuery(con,q)
> df = fetch(rs,n=-1)
Zwraca geometrię elementu, w df$geom
której będziesz musiał przekonwertować na sp
obiekty klasy (SpatialPolygons, SpatialPoints, SpatialLines), aby cokolwiek zrobić. Pomaga w tym funkcja readWKT w rgeos.
Rzeczy, na które należy uważać, to zwykle takie rzeczy, jak kolumny bazy danych, których nie można zmapować na typy danych R. Do zapytania możesz dołączyć SQL, aby wykonywać konwersje, filtrowanie lub ograniczanie. To powinno wystartować.
rgadl
? Jestem w Ubuntu 13.04 ...