[R-sig-Geo] "Geographical CRS given to non-conformant data" for CRS of epsg:4326
Roger Bivand
Roger.Bivand at nhh.no
Sat Dec 17 16:27:57 CET 2011
On Sat, 17 Dec 2011, Roger Bivand wrote:
> On Fri, 16 Dec 2011, Agustin Lobo wrote:
>
>> Hi!
>>
>> I've uploaded the file here:
>> https://sites.google.com/site/filestemp2/home/world_adm0.zip
>>
>> It was a popular file, but actually cannot find it in the diva server any
>> more
>> According to qgis, there are no coordinates beyond +/- 90 or +/-180
>>
>> Extents:
>> In layer spatial reference system units : xMin,yMin -180,-90 :
>> xMax,yMax 180,83.623
>> but readOGR() probably makes a more rigorous check.
>
> Right. Thanks for access to the file. If I change the name of the *.prj file,
> I see:
>
>> wrld <- readOGR(".", "world_adm0")
>> print(bbox(wrld), digits=12)
> min max
> x -180.000183105 180.0000000000
> y -90.000000000 83.6230316162
>
> so it is going sufficiently far below -180 for the validity check at
> .Machine$double.eps ^ 0.25 (0.0001220703), but passes with a slightly slacker
> tolerance. I suggest providing a tolerance in an option in sp to resolve
> this. The error is primarily to stop users assigning a +proj=longlat to
> projected coordinates (yes, it does happen). I'll look to add an options
> mechanism to sp to handle both error/warning and tolerance for the power to
> .Machine$double.eps.
This is now committed to the rspatial R-forge project, module sp, revision
1179. Now it is possible either to throw a warning rather than an error,
and/or to alter the tolerance; the error message now shows the exceeding
value(s):
> library(rgdal)
Loading required package: sp
Geospatial Data Abstraction Library extensions to R successfully loaded
Loaded GDAL runtime: GDAL 1.8.1, released 2011/07/09
Path to GDAL shared files: /usr/local/share/gdal
Loaded PROJ.4 runtime: Rel. 4.7.1, 23 September 2009, [PJ_VERSION: 470]
Path to PROJ.4 shared files: (autodetected)
> wrld1 <- readOGR(".", "world_adm0")
OGR data source with driver: ESRI Shapefile
Source: ".", layer: "world_adm0"
with 209 features and 3 fields
Feature type: wkbPolygon with 2 dimensions
Error in validityMethod(as(object, superClass)) :
Geographical CRS given to non-conformant data: -180.000183105
> set_ll_warn(TRUE)
[1] TRUE
> wrld1 <- readOGR(".", "world_adm0")
OGR data source with driver: ESRI Shapefile
Source: ".", layer: "world_adm0"
with 209 features and 3 fields
Feature type: wkbPolygon with 2 dimensions
Warning message:
In validityMethod(as(object, superClass)) :
Geographical CRS given to non-conformant data: -180.000183105
> set_ll_warn(FALSE)
[1] FALSE
> set_ll_TOL(0.2)
[1] 0.2
> wrld1 <- readOGR(".", "world_adm0")
OGR data source with driver: ESRI Shapefile
Source: ".", layer: "world_adm0"
with 209 features and 3 fields
Feature type: wkbPolygon with 2 dimensions
>
Please let me know if this helps,
Roger
>
> Had you looked at using the wrld_simpl dataset that is disributed with
> maptools:
>
> data(wrld_simpl)
>
> and joining countries with the codes included? It is a bit out od date in not
> having the Sudan split; it is about twice the object size of the file you are
> using, plotting somewhat more slowly:
>
>> object.size(wrld_simpl)
> 6349008 bytes
>> object.size(wrld)
> 3250784 bytes
>> plot(wrld_simpl)
>> plot(wrld, border="red", add=TRUE)
>
> The file simplifies sea ice in Antarctica, and discards many small islands,
> otherwise they match pretty well.
>
> Roger
>
>>
>> Could it be possible that readOGR() read the file with a warning
>> and print the offending coordinates?
>>
>> readOGR() works fine with this alternative file:
>> http://www.gadm.org/data/gadm_v1_lev0_shp.zip
>>
>> but it's huge and cannot actually work with it and have not found a
>> third alternative.
>>
>> Thanks,
>>
>> Agus
>>
>> 2011/12/16 Roger Bivand <Roger.Bivand at nhh.no>:
>>> On Fri, 16 Dec 2011, Robert J. Hijmans wrote:
>>>
>>>> Agus,
>>>>
>>>> This is likely because there are some longitude coordinates that are <
>>>> -180 or > 180.
>>>> OGR does not complain, but, as these are lon/lat data, sp runs
>>>> sp:::.ll_sanity and throws an error.
>>>>
>>>> I think it would be preferable if sp gave a warning rather than an error,
>>>> at least when longitudes are within a reasonable number (-360 -- 360 ?).
>>>> I
>>>> think that a longitude of, e.g. 181 is perfectly interpretable, and
>>>> sometimes useful. For example to plot Russia, or Fiji in one piece in
>>>> lon/lat coordinates.
>>>
>>>
>>> As Agus knows, unless the file is made available, help will likely not be
>>> forthcoming. Without a traceback(), we don't know where the error is being
>>> thrown. The fact that an out of domain number is interpretable in one
>>> context doesn't necessarily make it acceptable in others, I believe. We
>>> could go to an option setting, which would slacken the error to a warning
>>> if
>>> set. Opinions?
>>>
>>> Roger
>>>
>>>
>>>>
>>>> Robert
>>>>
>>>>
>>>> On Fri, Dec 16, 2011 at 4:24 AM, Agustin Lobo <alobolistas at gmail.com>
>>>> wrote:
>>>>
>>>>> Hi!
>>>>> I' trying to read this shapefile that is just in lon,lat WGS84
>>>>>>
>>>>>> ogrInfo(dsn=datad,layer="world_adm0v2")
>>>>>
>>>>> Source:
>>>>> "/media/Iomega_HDD/JACOB/ExIE2011DATA/ExFireBorneoDATA/world_adm0",
>>>>> layer: "world_adm0v2"
>>>>> Driver: ESRI Shapefile number of rows 209
>>>>> Feature type: wkbPolygon with 2 dimensions
>>>>> +proj=longlat +datum=WGS84 +no_defs
>>>>> Number of fields: 3
>>>>> name type length typeName
>>>>> 1 NAME 4 40 String
>>>>> 2 GMI_CNTRY 4 3 String
>>>>> 3 REGION 4 25 String
>>>>>
>>>>> but I get:
>>>>>>
>>>>>> world <-readOGR(dsn=datad,layer="world_adm0v2")
>>>>>
>>>>> OGR data source with driver: ESRI Shapefile
>>>>> Source:
>>>>> "/media/Iomega_HDD/JACOB/ExIE2011DATA/ExFireBorneoDATA/world_adm0",
>>>>> layer: "world_adm0v2"
>>>>> with 209 features and 3 fields
>>>>> Feature type: wkbPolygon with 2 dimensions
>>>>> Error in validityMethod(as(object, superClass)) :
>>>>> Geographical CRS given to non-conformant data
>>>>> I've tried
>>>>>>
>>>>>> world
>>>>>
>>>>>
>>>>> <-readOGR(dsn=datad,layer="world_adm0v2",p4s=CRSargs(CRS("+init=epsg:4326")))
>>>>> but get the same result
>>>>>
>>>>> can't this CRS (epsg:4326)
>>>>> +proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs +towgs84=0,0,0
>>>>> be read by readOGR() ?
>>>>>
>>>>> Thanks
>>>>> Agus
>>>>>
>>>>> _______________________________________________
>>>>> R-sig-Geo mailing list
>>>>> R-sig-Geo at r-project.org
>>>>> https://stat.ethz.ch/mailman/listinfo/r-sig-geo
>>>>>
>>>>
>>>> [[alternative HTML version deleted]]
>>>>
>>>> _______________________________________________
>>>> R-sig-Geo mailing list
>>>> R-sig-Geo at r-project.org
>>>> https://stat.ethz.ch/mailman/listinfo/r-sig-geo
>>>>
>>>
>>> --
>>> Roger Bivand
>>> Department of Economics, NHH Norwegian School of Economics,
>>> 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
>>>
>>>
>>> _______________________________________________
>>> R-sig-Geo mailing list
>>> R-sig-Geo at r-project.org
>>> https://stat.ethz.ch/mailman/listinfo/r-sig-geo
>>
>
>
--
Roger Bivand
Department of Economics, NHH Norwegian School of Economics,
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 R-sig-Geo
mailing list