[GRASS-stats] Re: [R-sig-Geo] Fail to load a vector layer using spgrass6

Roger Bivand Roger.Bivand at nhh.no
Thu Dec 16 05:22:32 EST 2010


On Thu, 16 Dec 2010, Roger Bivand wrote:

> On Wed, 15 Dec 2010, Dylan Beaudette wrote:
>
>> 2010/12/15 Roger Bivand <Roger.Bivand at nhh.no>:
>>> On Wed, 15 Dec 2010, Pierre Roudier wrote:
>>> 
>>>> Roger,
>>>> 
>>>>> The latest (0.6-23) spgrass6 has a fix for a specific problem in the
>>>>> layer
>>>>> parameter of v.out.ogr in GRASS7 - I see that you are using the previous
>>>>> spgrass6. Could you try updating spgrass6?
>>>>> 
>>>> 
>>>> I did update and got the same error on both GRASS 6.4 and GRASS 7.0
>>> 
>>> Pierre,
>>> 
>>> Please use a toy example, with a common data set such as spearfish. You 
>>> have
>>> 355021 areas, which must be getting close to maxing out what a shapefile 
>>> can
>>> take.
>>> 
>>> Using GML is almost certainly a bad idea, as everything gets converted to
>>> text.
>>> 
>>> The main problem of trying to use other drivers than "ESRI Shapefile" is
>>> that each driver has very specific requirements of the dsn and olayer
>>> strings. The interface functions for vector data presuppose "ESRI
>>> Shapefile", so dsn is a directory, and olayer is the shared file name 
>>> within
>>> the directory. This is what you are seeing in the error messages below. 
>>> ESRI
>>> Shapefile works with a directory as dsn, GML doesn't; ESRI Shapefile 
>>> doesn't
>>> work with a file as dsn, GML does. For GML, KML, and some others, the dsn 
>>> is
>>> a file name, and olayer is a placeholder. Providing the driver-specific
>>> modifications is arguably not a robust way to proceed.
>>> 
>>> I'm unsure about the advisability of persisting with a driver= argument. 
>>> I'd
>>> welcome arguments for or against, and if for, some R code to match the
>>> drivers to the dsn/olayer formats, that does not presuppose the presence 
>>> of
>>> drivers that have external dependencies.
>> 
>> Thanks for taking time to tinker with this possibility. I know this is
>> asking a lot, but how about providing 2 well-supported drivers: say
>> shapefiles and sqlite? Then, a simple switch statement could be used
>> to describe the dsn, as opposed to a more generic option. Maybe this
>> would introduce too many branches in the code-- but sometimes it would
>> be really nice to have an alternative to shapefiles during this
>> process.
>
> This draft:

Sorry, this is the complete URL:

http:/spatial.nhh.no/R/Devel/spgrass6_0.6-25.tar.gz

Roger

>
> spgrass6_0.6-25.tar.gz
>
> (also committed on CVS) provides ESRI Shapefile, MapInfo File, GML, and 
> SQLite intermediate formats. Could you please try it, to see if SQLite 
> handles the specific attribute data concerns you mentioned? The main 
> shapefile <> sqlite difference I see is that the shapefiles have 0-based 
> FIDs, the sqlite 1-based, and the sqlite files insist more forcefully on 
> having 3D coordinates, I think.
>
> Best wishes,
>
> Roger
>
>> 
>>> I would suggest that you try to install the GRASS plugin for GDAL/OGR, and
>>> try to use that, since an intermediate file solution with the standard
>>> driver seems undesirable.
>> 
>> I would second this.
>> 
>> Cheers,
>> Dylan
>> 
>> 
>>> I'm also very unsure about what you want to do with the data in R.
>>> Visualising will be painfully slow, and if you need to do analysis on the
>>> attribute data alone, you may as well transfer just that, not the
>>> geometries.
>>> 
>>> Have you considered using a database back-end?
>>> 
>>> Note that you have problems in ph_cl which require the c flag.
>>> 
>>> Roger
>>> 
>>>> 
>>>>> If that doesn't work, please move thread only to grass-stats, and try
>>>>> using
>>>>> v.out.ogr to export the vector to the GRASS mapset temporary directory
>>>>> manually - use g.tempfile to find out what the path to that directory 
>>>>> is.
>>>>> If
>>>>> v.out.ogr appears to complete without problems, do check the temporary
>>>>> directory to be sure.
>>>>> 
>>>> 
>>>> The output of g.tempfile is:
>>>> 
>>>> 
>>>> /home/roudierp/Documents/GRASSDATA/NZTM2000/nitrif_inhib/.tmp/A208_RoudierP/18058.0
>>>> 
>>>> When using that tempfile for export as Shapefile it fails:
>>>> 
>>>> v.out.ogr in=ph_cl
>>>> 
>>>> dsn='/home/roudierp/Documents/GRASSDATA/NZTM2000/nitrif_inhib/.tmp/A208_RoudierP/18058.0'
>>>> format=ESRI_Shapefile
>>>> WARNING: The map contains islands. To preserve them in the output map, 
>>>> use
>>>>        the -c flag
>>>> ERROR 1:
>>>> /home/roudierp/Documents/GRASSDATA/NZTM2000/nitrif_inhib/.tmp/A208_RoudierP/18058.0
>>>> is not a directory.
>>>> 
>>>> ERROR: Unable to open OGR data source
>>>> 
>>>>  '/home/roudierp/Documents/GRASSDATA/NZTM2000/nitrif_inhib/.tmp/A208_RoudierP/18058.0'
>>>> 
>>>> However, if I specify the tmp folder that works:
>>>> v.out.ogr in=ph_cl
>>>> 
>>>> dsn='/home/roudierp/Documents/GRASSDATA/NZTM2000/nitrif_inhib/.tmp/A208_RoudierP/'
>>>> format=ESRI_Shapefile
>>>> 
>>>> BUT - and that's where it gets tricky, if I want to use the GML
>>>> driver, this is the opposite situation:
>>>> 
>>>> v.out.ogr in=ph_cl
>>>> 
>>>> dsn='/home/roudierp/Documents/GRASSDATA/NZTM2000/nitrif_inhib/.tmp/A208_RoudierP/'
>>>> format=GML
>>>> ERROR 4: Failed to create GML file
>>>> 
>>>> /home/roudierp/Documents/GRASSDATA/NZTM2000/nitrif_inhib/.tmp/A208_RoudierP/.
>>>> ERROR: Unable to open OGR data source
>>>> 
>>>>  '/home/roudierp/Documents/GRASSDATA/NZTM2000/nitrif_inhib/.tmp/A208_RoudierP/'
>>>> 
>>>> While this works:
>>>> 
>>>> v.out.ogr in=ph_cl
>>>> 
>>>> dsn='/home/roudierp/Documents/GRASSDATA/NZTM2000/nitrif_inhib/.tmp/A208_RoudierP/18628.0'
>>>> format=GML
>>>> Exporting 355021 areas (may take some time)...
>>>> 
>>>> Any idea?
>>>> 
>>>> Pierre
>>>> 
>>>>> Roger
>>>>> 
>>>>>> 
>>>>>>> And GDAL 1.7.1 is not the current
>>>>>>> version, which is 1.7.3. Did you install GDAL and/or GRASS from 
>>>>>>> source,
>>>>>>> or
>>>>>>> from binaries (in my experience, installing from source ensures more
>>>>>>> consistency, and the GDAL/OGR GRASS plugins are often the source of
>>>>>>> problems
>>>>>>> because of version mismatch).
>>>>>> 
>>>>>> I installed both GRASS 6.4 and GDAL/OGR from binaries, yes.
>>>>>> 
>>>>>>> PS. The best list is probably:
>>>>>>> 
>>>>>>> http://grass.osgeo.org/statsgrass/index.php
>>>>>> 
>>>>>> OK. I am sending that message to that list, and keep R-sig-geo for
>>>>>> consistency. Sorry for cross-posting.
>>>>>> 
>>>>>> Thanks again,
>>>>>> 
>>>>>> Pierre
>>>>>> 
>>>>>>> 
>>>>>>> Roger
>>>>>>> 
>>>>>>> 
>>>>>>> as it is more specific, and also seen by GRASS developers.
>>>>>>> 
>>>>>>>> 
>>>>>>>> I tried to play with the different options but I did not succeed>
>>>>>>>> Here's more info about my data and platform:
>>>>>>>> 
>>>>>>>> Here is the output of v.info for the data I want to load:
>>>>>>>> GRASS 7.0.svn (NZTM2000):~ > v.info ph_cl
>>>>>>>> 
>>>>>>>> 
>>>>>>>> 
>>>>>>>> +----------------------------------------------------------------------------+
>>>>>>>> | Name:            ph_cl
>>>>>>>>   |
>>>>>>>> | Mapset:          nitrif_inhib
>>>>>>>>    |
>>>>>>>> | Location:        NZTM2000
>>>>>>>>    |
>>>>>>>> | Database:        /home/roudierp/Documents/GRASSDATA
>>>>>>>>    |
>>>>>>>> | Title:
>>>>>>>>   |
>>>>>>>> | Map scale:       1:1
>>>>>>>>   |
>>>>>>>> | Map format:      native
>>>>>>>>    |
>>>>>>>> | Name of creator: roudierp
>>>>>>>>    |
>>>>>>>> | Organization:
>>>>>>>>    |
>>>>>>>> | Source date:     Mon Dec 13 11:30:11 2010
>>>>>>>>    |
>>>>>>>> 
>>>>>>>> 
>>>>>>>> 
>>>>>>>> |----------------------------------------------------------------------------|
>>>>>>>> |   Type of map: vector (level: 2)
>>>>>>>>   |
>>>>>>>> |
>>>>>>>>    |
>>>>>>>> |   Number of points:       0               Number of centroids:
>>>>>>>>  236847
>>>>>>>>   |
>>>>>>>> |   Number of lines:        0               Number of boundaries:
>>>>>>>> 892041
>>>>>>>>   |
>>>>>>>> |   Number of areas:        355021          Number of islands:
>>>>>>>>  79124
>>>>>>>>    |
>>>>>>>> |
>>>>>>>>    |
>>>>>>>> |   Map is 3D:              No
>>>>>>>>   |
>>>>>>>> |   Number of dblinks:      1
>>>>>>>>    |
>>>>>>>> |
>>>>>>>>    |
>>>>>>>> |   Projection: Transverse Mercator
>>>>>>>>    |
>>>>>>>> |
>>>>>>>>    |
>>>>>>>> |               N:  6190887.80270169    S:  4823266.04395524
>>>>>>>>   |
>>>>>>>> |               E:  2091804.65744429    W:   1170289.3071784
>>>>>>>>   |
>>>>>>>> |
>>>>>>>>    |
>>>>>>>> |   Digitization threshold: 0
>>>>>>>>    |
>>>>>>>> |   Comment:
>>>>>>>>   |
>>>>>>>> |
>>>>>>>>    |
>>>>>>>> 
>>>>>>>> 
>>>>>>>> 
>>>>>>>> +----------------------------------------------------------------------------+
>>>>>>>> 
>>>>>>>> And finally some metadata about the software packages I used:
>>>>>>>> 
>>>>>>>> here's the sessionInfo():
>>>>>>>> 
>>>>>>>>> sessionInfo()
>>>>>>>> 
>>>>>>>> R version 2.12.0 (2010-10-15)
>>>>>>>> Platform: x86_64-unknown-linux-gnu (64-bit)
>>>>>>>> 
>>>>>>>> locale:
>>>>>>>> [1] LC_CTYPE=en_GB.UTF-8       LC_NUMERIC=C
>>>>>>>> [3] LC_TIME=en_GB.UTF-8        LC_COLLATE=en_GB.UTF-8
>>>>>>>> [5] LC_MONETARY=C              LC_MESSAGES=en_GB.UTF-8
>>>>>>>> [7] LC_PAPER=en_GB.UTF-8       LC_NAME=C
>>>>>>>> [9] LC_ADDRESS=C               LC_TELEPHONE=C
>>>>>>>> [11] LC_MEASUREMENT=en_GB.UTF-8 LC_IDENTIFICATION=C
>>>>>>>> 
>>>>>>>> attached base packages:
>>>>>>>> [1] stats     graphics  grDevices utils     datasets  methods   base
>>>>>>>> 
>>>>>>>> other attached packages:
>>>>>>>> [1] spgrass6_0.6-21 XML_3.2-0       rgdal_0.6-31    sp_0.9-74
>>>>>>>> 
>>>>>>>> loaded via a namespace (and not attached):
>>>>>>>> [1] grid_2.12.0     lattice_0.19-13
>>>>>>>> 
>>>>>>>>> library(spgrass6)
>>>>>>>> 
>>>>>>>> Loading required package: sp
>>>>>>>> Loading required package: rgdal
>>>>>>>> Geospatial Data Abstraction Library extensions to R successfully
>>>>>>>> loaded
>>>>>>>> Loaded GDAL runtime: GDAL 1.7.1, released 2010/02/08
>>>>>>>> Path to GDAL shared files: /usr/share/gdal
>>>>>>>> Loaded PROJ.4 runtime: Rel. 4.7.1, 23 September 2009
>>>>>>>> Path to PROJ.4 shared files: /usr/share/proj/
>>>>>>>> Loading required package: XML
>>>>>>>> GRASS GIS interface loaded with GRASS version: 7.0.svn
>>>>>>>> and location: NZTM2000
>>>>>>>> 
>>>>>>>> I got the last CRAN version of sp.
>>>>>>>> 
>>>>>>>> This runs on a linux machine:
>>>>>>>> GRASS 7.0.svn (NZTM2000):~ > uname -a
>>>>>>>> Linux A208_RoudierP 2.6.34.7-0.5-xen #1 SMP 2010-10-25 08:40:12 +0200
>>>>>>>> x86_64 x86_64 x86_64 GNU/Linux
>>>>>>>> 
>>>>>>>> 
>>>>>>>> Cheers,
>>>>>>>> 
>>>>>>>> Pierre
>>>>>>>> 
>>>>>>>> _______________________________________________
>>>>>>>> R-sig-Geo mailing list
>>>>>>>> R-sig-Geo at r-project.org
>>>>>>>> https://stat.ethz.ch/mailman/listinfo/r-sig-geo
>>>>>>>> 
>>>>>>> 
>>>>>>> --
>>>>>>> Roger Bivand
>>>>>>> Economic Geography Section, Department of Economics, Norwegian School
>>>>>>> of
>>>>>>> Economics and Business Administration, Helleveien 30, N-5045 Bergen,
>>>>>>> Norway. voice: +47 55 95 93 55; fax +47 55 95 95 43
>>>>>>> e-mail: Roger.Bivand at nhh.no
>>>>>>> 
>>>>>>> 
>>>>>> 
>>>>> 
>>>>> --
>>>>> Roger Bivand
>>>>> Economic Geography Section, Department of Economics, Norwegian School of
>>>>> Economics and Business Administration, Helleveien 30, N-5045 Bergen,
>>>>> Norway. voice: +47 55 95 93 55; fax +47 55 95 95 43
>>>>> e-mail: Roger.Bivand at nhh.no
>>>> 
>>> 
>>> --
>>> Roger Bivand
>>> Economic Geography Section, Department of Economics, Norwegian School of
>>> Economics and Business Administration, Helleveien 30, N-5045 Bergen,
>>> Norway. voice: +47 55 95 93 55; fax +47 55 95 95 43
>>> e-mail: Roger.Bivand at nhh.no
>>> 
>>> _______________________________________________
>>> grass-stats mailing list
>>> grass-stats at lists.osgeo.org
>>> http://lists.osgeo.org/mailman/listinfo/grass-stats
>>> 
>>> 
>> 
>
>

-- 
Roger Bivand
Economic Geography Section, Department of Economics, Norwegian School of
Economics and Business Administration, Helleveien 30, N-5045 Bergen,
Norway. voice: +47 55 95 93 55; fax +47 55 95 95 43
e-mail: Roger.Bivand at nhh.no


More information about the grass-stats mailing list