Re: [R-sig-Geo] Convert geojson file to R

2022-11-29 Thread Barry Rowlingson
Ah ha, its a file with no line endings. Count the lines, zero:

$ wc -l countrymasks.geojson
0 countrymasks.geojson

Although adding a line ending to the file still produces the error.
Hmm. Even running it through `json_pp` to get it on multiple lines
results in the error:


$ more countrymasks_pp.geojson
{
   "features" : [
  {
 "geometry" : {
"coordinates" : [
...


> cm = sf::st_read("./countrymasks_pp.geojson")
Reading layer `countrymasks_pp' from data source
  `/nobackup/rowlings/Downloads/SO/countrymasks_pp.geojson' using
driver `GeoJSON'
Error in CPL_read_ogr(dsn, layer, query, as.character(options), quiet,  :
  attempt to set index 210/210 in SET_STRING_ELT

Weirdly weird, `ogrinfo` thinks there's 210 features, but `st_read`
with my "query" fix gets 214...


$ ogrinfo -so -al countrymasks_pp.geojson
INFO: Open of `countrymasks_pp.geojson'
  using driver `GeoJSON' successful.

Layer name: countrymasks_pp
Geometry: Unknown (any)
Feature Count: 210   <--- 210 features


> cm = sf::st_read("./countrymasks_pp.geojson", query="select * from 
> countrymasks_pp where 1 = 1")
Reading query `select * from countrymasks_pp where 1 = 1'
from data source
`/nobackup/rowlings/Downloads/SO/countrymasks_pp.geojson' using driver
`GeoJSON'
Simple feature collection with 214 features and 15 fields
Geometry type: MULTIPOLYGON


I now notice some of the rows have incomplete property sets, for
example Paraguay has:

"properties" : {
"ISIPEDIA" : "PRY",
"NAME" : "Paraguay",
"an_crop" : "t",
"an_range" : "t",
"asap0_id" : 178,
"asap_cntry" : "f",
"g1_units" : 17,
"isocode" : "PY",
"km2_crop" : 80032,
"km2_rang2" : 20908,
"km2_tot" : 399367,
"name0" : "Paraguay",
"name0_shr" : "Paraguay"
 },

but Palestine has:

 "properties" : {
"ISIPEDIA" : "PSE",
"NAME" : "Palestine, State of",
"isocode" : "PS",
"km2_crop" : 84,
"km2_rang2" : 3423,
"km2_tot" : 6224,
"name0" : "Palestine, State of"
 }

Then there "Caribbean island small states" which has a vector in its properties:

   "properties" : {
"ISIPEDIA" : "CSID",
"NAME" : "Caribbean island small states",
"country_codes" : [
   "BRB",
   "DMA",
   "VIR",
   "BHS",
   "GRD",
   "ATG",
   "ANT",
   "LCA",
   "BLZ",
   "CYM",
   "VCT"
]

I wonder if these irregularities are causing odd problems with the
various gdal ways of parsing this...

Ugh. Let's all use geopackages

B

On Tue, Nov 29, 2022 at 11:34 AM Edzer Pebesma
 wrote:
>
> Interestingly, what seems to works is
>
> readLines('countrymasks.geojson') |> st_read() -> r
>
> with a warning:
>
> Warning message:
> In readLines("countrymasks.geojson") :
>incomplete final line found on 'countrymasks.geojson'
>
>
> On 29/11/2022 00:58, Miluji Sb wrote:
> > Thank you. I will report this bug (I did not have the confidence to call
> > this a bug before).
> >
> > Even using your code, I get the same output.
> >
> > structure(list(X = c(-67.3804401, -67.36091, -67.38058,
> > -67.339709998, -67.3780199, -67.32211), Y = c(-55.565569996,
> > -55.584009899, -55.600410001, -55.614969997, -55.63521,
> > -55.640089997), L1 = c(1, 1, 1, 1, 1, 1), L2 = c(1, 1, 1,
> > 1, 1, 1), L3 = c(1, 1, 1, 1, 1, 1)), row.names = c(NA, 6L), class =
> > "data.frame")
> >
> > Thank you again.
> >
> > On Mon, Nov 28, 2022 at 11:13 PM Barry Rowlingson 
> > wrote:
> >
> >> This seems to be a weird bug in `st_read`. If you read it with an SQL
> >> query that matches every row it works:
> >>
> >>> js = st_read("./countrymasks.geojson", query="select * from countrymasks
> >> where 1 = 1")
> >> Reading query `select * from countrymasks where 1 = 1' from data
> >> source `/home/rowlings/Downloads/countrymasks.geojson' using driver
> >> `GeoJSON'
> >> Simple feature collection with 214 features and 15 fields
> >> Geometry type: MULTIPOLYGON
> >> Dimension: XY
> >> Bounding box:  xmin: -180 ymin: -55.79439 xmax: 180 ymax: 83.62742
> >> Geodetic CRS:  WGS 84
> >>
> >> But leave out the query and you get that C code level error. Another
> >> equivalent query would be "select * from countrymasks" (without the
> >> "where" clause) but this
> >> triggers the error too. Very odd. Worth reporting as a bug?
> >>
> >> Barry
> >>
> >>
> >>
> >>
> >> On Mon, Nov 28, 2022 at 8:08 PM Miluji Sb  wrote:
> >>>
> >>> Thank you for reply. When I try using sf, I get the following error;
> >>>
> >>> Error in CPL_read_ogr(dsn, layer, query, as.character(options), quiet,  :
> >>>attempt to set index 210/210 in SET_STRING_ELT.
> >>>
> >>> Thanks again!
> >>>
> >>> 

Re: [R-sig-Geo] Convert geojson file to R

2022-11-29 Thread Edzer Pebesma

Interestingly, what seems to works is

readLines('countrymasks.geojson') |> st_read() -> r

with a warning:

Warning message:
In readLines("countrymasks.geojson") :
  incomplete final line found on 'countrymasks.geojson'


On 29/11/2022 00:58, Miluji Sb wrote:

Thank you. I will report this bug (I did not have the confidence to call
this a bug before).

Even using your code, I get the same output.

structure(list(X = c(-67.3804401, -67.36091, -67.38058,
-67.339709998, -67.3780199, -67.32211), Y = c(-55.565569996,
-55.584009899, -55.600410001, -55.614969997, -55.63521,
-55.640089997), L1 = c(1, 1, 1, 1, 1, 1), L2 = c(1, 1, 1,
1, 1, 1), L3 = c(1, 1, 1, 1, 1, 1)), row.names = c(NA, 6L), class =
"data.frame")

Thank you again.

On Mon, Nov 28, 2022 at 11:13 PM Barry Rowlingson 
wrote:


This seems to be a weird bug in `st_read`. If you read it with an SQL
query that matches every row it works:


js = st_read("./countrymasks.geojson", query="select * from countrymasks

where 1 = 1")
Reading query `select * from countrymasks where 1 = 1' from data
source `/home/rowlings/Downloads/countrymasks.geojson' using driver
`GeoJSON'
Simple feature collection with 214 features and 15 fields
Geometry type: MULTIPOLYGON
Dimension: XY
Bounding box:  xmin: -180 ymin: -55.79439 xmax: 180 ymax: 83.62742
Geodetic CRS:  WGS 84

But leave out the query and you get that C code level error. Another
equivalent query would be "select * from countrymasks" (without the
"where" clause) but this
triggers the error too. Very odd. Worth reporting as a bug?

Barry




On Mon, Nov 28, 2022 at 8:08 PM Miluji Sb  wrote:


Thank you for reply. When I try using sf, I get the following error;

Error in CPL_read_ogr(dsn, layer, query, as.character(options), quiet,  :
   attempt to set index 210/210 in SET_STRING_ELT.

Thanks again!

On Mon, Nov 28, 2022 at 1:50 PM Josiah Parry 

wrote:



You're going to want to read the file with sf.

Try object <- sf::st_read("~countrymasks.geojson")

On Mon, Nov 28, 2022 at 7:09 AM Miluji Sb  wrote:


Greetings everyone,

I would like to convert the geojson file (



https://drive.google.com/file/d/18h3sOjZg5jp5euLTWRi5mC40Sja8TZDN/view?usp=sharing

)
to a dataframe - essentially obtain which has coordinates matched to a
country.

I have tried the following;

###
states <- geojsonsf::geojson_sf("~/countrymasks.geojson")
geo <- geojsonsf::sf_geojson(states)
sf <- sf::st_read(geo, quiet = T )
df <- as.data.frame(sf::st_coordinates(sf) )
##

But I get the following output, I am a bit lost. Any help will be

highly

appreciated.

Best,

   structure(list(X = c(-67.3804401, -67.36091, -67.38058,
-67.339709998, -67.3780199, -67.32211), Y =
c(-55.565569996,
-55.584009899, -55.600410001, -55.614969997, -55.63521,
-55.640089997), L1 = c(1, 1, 1, 1, 1, 1), L2 = c(1, 1, 1,
1, 1, 1), L3 = c(1, 1, 1, 1, 1, 1)), row.names = c(NA, 6L), class =
"data.frame")

 [[alternative HTML version deleted]]

___
R-sig-Geo mailing list
R-sig-Geo@r-project.org
https://stat.ethz.ch/mailman/listinfo/r-sig-geo





 [[alternative HTML version deleted]]

___
R-sig-Geo mailing list
R-sig-Geo@r-project.org
https://stat.ethz.ch/mailman/listinfo/r-sig-geo




[[alternative HTML version deleted]]

___
R-sig-Geo mailing list
R-sig-Geo@r-project.org
https://stat.ethz.ch/mailman/listinfo/r-sig-geo


--
Edzer Pebesma
Institute for Geoinformatics
Heisenbergstrasse 2, 48151 Muenster, Germany
Phone: +49 251 8333081

___
R-sig-Geo mailing list
R-sig-Geo@r-project.org
https://stat.ethz.ch/mailman/listinfo/r-sig-geo


Re: [R-sig-Geo] Convert geojson file to R

2022-11-28 Thread Miluji Sb
Thank you. I will report this bug (I did not have the confidence to call
this a bug before).

Even using your code, I get the same output.

structure(list(X = c(-67.3804401, -67.36091, -67.38058,
-67.339709998, -67.3780199, -67.32211), Y = c(-55.565569996,
-55.584009899, -55.600410001, -55.614969997, -55.63521,
-55.640089997), L1 = c(1, 1, 1, 1, 1, 1), L2 = c(1, 1, 1,
1, 1, 1), L3 = c(1, 1, 1, 1, 1, 1)), row.names = c(NA, 6L), class =
"data.frame")

Thank you again.

On Mon, Nov 28, 2022 at 11:13 PM Barry Rowlingson 
wrote:

> This seems to be a weird bug in `st_read`. If you read it with an SQL
> query that matches every row it works:
>
> > js = st_read("./countrymasks.geojson", query="select * from countrymasks
> where 1 = 1")
> Reading query `select * from countrymasks where 1 = 1' from data
> source `/home/rowlings/Downloads/countrymasks.geojson' using driver
> `GeoJSON'
> Simple feature collection with 214 features and 15 fields
> Geometry type: MULTIPOLYGON
> Dimension: XY
> Bounding box:  xmin: -180 ymin: -55.79439 xmax: 180 ymax: 83.62742
> Geodetic CRS:  WGS 84
>
> But leave out the query and you get that C code level error. Another
> equivalent query would be "select * from countrymasks" (without the
> "where" clause) but this
> triggers the error too. Very odd. Worth reporting as a bug?
>
> Barry
>
>
>
>
> On Mon, Nov 28, 2022 at 8:08 PM Miluji Sb  wrote:
> >
> > Thank you for reply. When I try using sf, I get the following error;
> >
> > Error in CPL_read_ogr(dsn, layer, query, as.character(options), quiet,  :
> >   attempt to set index 210/210 in SET_STRING_ELT.
> >
> > Thanks again!
> >
> > On Mon, Nov 28, 2022 at 1:50 PM Josiah Parry 
> wrote:
> >
> > > You're going to want to read the file with sf.
> > >
> > > Try object <- sf::st_read("~countrymasks.geojson")
> > >
> > > On Mon, Nov 28, 2022 at 7:09 AM Miluji Sb  wrote:
> > >
> > >> Greetings everyone,
> > >>
> > >> I would like to convert the geojson file (
> > >>
> > >>
> https://drive.google.com/file/d/18h3sOjZg5jp5euLTWRi5mC40Sja8TZDN/view?usp=sharing
> > >> )
> > >> to a dataframe - essentially obtain which has coordinates matched to a
> > >> country.
> > >>
> > >> I have tried the following;
> > >>
> > >> ###
> > >> states <- geojsonsf::geojson_sf("~/countrymasks.geojson")
> > >> geo <- geojsonsf::sf_geojson(states)
> > >> sf <- sf::st_read(geo, quiet = T )
> > >> df <- as.data.frame(sf::st_coordinates(sf) )
> > >> ##
> > >>
> > >> But I get the following output, I am a bit lost. Any help will be
> highly
> > >> appreciated.
> > >>
> > >> Best,
> > >>
> > >>   structure(list(X = c(-67.3804401, -67.36091, -67.38058,
> > >> -67.339709998, -67.3780199, -67.32211), Y =
> > >> c(-55.565569996,
> > >> -55.584009899, -55.600410001, -55.614969997, -55.63521,
> > >> -55.640089997), L1 = c(1, 1, 1, 1, 1, 1), L2 = c(1, 1, 1,
> > >> 1, 1, 1), L3 = c(1, 1, 1, 1, 1, 1)), row.names = c(NA, 6L), class =
> > >> "data.frame")
> > >>
> > >> [[alternative HTML version deleted]]
> > >>
> > >> ___
> > >> R-sig-Geo mailing list
> > >> R-sig-Geo@r-project.org
> > >> https://stat.ethz.ch/mailman/listinfo/r-sig-geo
> > >>
> > >
> >
> > [[alternative HTML version deleted]]
> >
> > ___
> > R-sig-Geo mailing list
> > R-sig-Geo@r-project.org
> > https://stat.ethz.ch/mailman/listinfo/r-sig-geo
>

[[alternative HTML version deleted]]

___
R-sig-Geo mailing list
R-sig-Geo@r-project.org
https://stat.ethz.ch/mailman/listinfo/r-sig-geo


Re: [R-sig-Geo] Convert geojson file to R

2022-11-28 Thread Barry Rowlingson
This seems to be a weird bug in `st_read`. If you read it with an SQL
query that matches every row it works:

> js = st_read("./countrymasks.geojson", query="select * from countrymasks 
> where 1 = 1")
Reading query `select * from countrymasks where 1 = 1' from data
source `/home/rowlings/Downloads/countrymasks.geojson' using driver
`GeoJSON'
Simple feature collection with 214 features and 15 fields
Geometry type: MULTIPOLYGON
Dimension: XY
Bounding box:  xmin: -180 ymin: -55.79439 xmax: 180 ymax: 83.62742
Geodetic CRS:  WGS 84

But leave out the query and you get that C code level error. Another
equivalent query would be "select * from countrymasks" (without the
"where" clause) but this
triggers the error too. Very odd. Worth reporting as a bug?

Barry




On Mon, Nov 28, 2022 at 8:08 PM Miluji Sb  wrote:
>
> Thank you for reply. When I try using sf, I get the following error;
>
> Error in CPL_read_ogr(dsn, layer, query, as.character(options), quiet,  :
>   attempt to set index 210/210 in SET_STRING_ELT.
>
> Thanks again!
>
> On Mon, Nov 28, 2022 at 1:50 PM Josiah Parry  wrote:
>
> > You're going to want to read the file with sf.
> >
> > Try object <- sf::st_read("~countrymasks.geojson")
> >
> > On Mon, Nov 28, 2022 at 7:09 AM Miluji Sb  wrote:
> >
> >> Greetings everyone,
> >>
> >> I would like to convert the geojson file (
> >>
> >> https://drive.google.com/file/d/18h3sOjZg5jp5euLTWRi5mC40Sja8TZDN/view?usp=sharing
> >> )
> >> to a dataframe - essentially obtain which has coordinates matched to a
> >> country.
> >>
> >> I have tried the following;
> >>
> >> ###
> >> states <- geojsonsf::geojson_sf("~/countrymasks.geojson")
> >> geo <- geojsonsf::sf_geojson(states)
> >> sf <- sf::st_read(geo, quiet = T )
> >> df <- as.data.frame(sf::st_coordinates(sf) )
> >> ##
> >>
> >> But I get the following output, I am a bit lost. Any help will be highly
> >> appreciated.
> >>
> >> Best,
> >>
> >>   structure(list(X = c(-67.3804401, -67.36091, -67.38058,
> >> -67.339709998, -67.3780199, -67.32211), Y =
> >> c(-55.565569996,
> >> -55.584009899, -55.600410001, -55.614969997, -55.63521,
> >> -55.640089997), L1 = c(1, 1, 1, 1, 1, 1), L2 = c(1, 1, 1,
> >> 1, 1, 1), L3 = c(1, 1, 1, 1, 1, 1)), row.names = c(NA, 6L), class =
> >> "data.frame")
> >>
> >> [[alternative HTML version deleted]]
> >>
> >> ___
> >> R-sig-Geo mailing list
> >> R-sig-Geo@r-project.org
> >> https://stat.ethz.ch/mailman/listinfo/r-sig-geo
> >>
> >
>
> [[alternative HTML version deleted]]
>
> ___
> R-sig-Geo mailing list
> R-sig-Geo@r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-sig-geo

___
R-sig-Geo mailing list
R-sig-Geo@r-project.org
https://stat.ethz.ch/mailman/listinfo/r-sig-geo


Re: [R-sig-Geo] Convert geojson file to R

2022-11-28 Thread Miluji Sb
Thank you for reply. When I try using sf, I get the following error;

Error in CPL_read_ogr(dsn, layer, query, as.character(options), quiet,  :
  attempt to set index 210/210 in SET_STRING_ELT.

Thanks again!

On Mon, Nov 28, 2022 at 1:50 PM Josiah Parry  wrote:

> You're going to want to read the file with sf.
>
> Try object <- sf::st_read("~countrymasks.geojson")
>
> On Mon, Nov 28, 2022 at 7:09 AM Miluji Sb  wrote:
>
>> Greetings everyone,
>>
>> I would like to convert the geojson file (
>>
>> https://drive.google.com/file/d/18h3sOjZg5jp5euLTWRi5mC40Sja8TZDN/view?usp=sharing
>> )
>> to a dataframe - essentially obtain which has coordinates matched to a
>> country.
>>
>> I have tried the following;
>>
>> ###
>> states <- geojsonsf::geojson_sf("~/countrymasks.geojson")
>> geo <- geojsonsf::sf_geojson(states)
>> sf <- sf::st_read(geo, quiet = T )
>> df <- as.data.frame(sf::st_coordinates(sf) )
>> ##
>>
>> But I get the following output, I am a bit lost. Any help will be highly
>> appreciated.
>>
>> Best,
>>
>>   structure(list(X = c(-67.3804401, -67.36091, -67.38058,
>> -67.339709998, -67.3780199, -67.32211), Y =
>> c(-55.565569996,
>> -55.584009899, -55.600410001, -55.614969997, -55.63521,
>> -55.640089997), L1 = c(1, 1, 1, 1, 1, 1), L2 = c(1, 1, 1,
>> 1, 1, 1), L3 = c(1, 1, 1, 1, 1, 1)), row.names = c(NA, 6L), class =
>> "data.frame")
>>
>> [[alternative HTML version deleted]]
>>
>> ___
>> R-sig-Geo mailing list
>> R-sig-Geo@r-project.org
>> https://stat.ethz.ch/mailman/listinfo/r-sig-geo
>>
>

[[alternative HTML version deleted]]

___
R-sig-Geo mailing list
R-sig-Geo@r-project.org
https://stat.ethz.ch/mailman/listinfo/r-sig-geo


Re: [R-sig-Geo] Convert geojson file to R

2022-11-28 Thread Josiah Parry
You're going to want to read the file with sf.

Try object <- sf::st_read("~countrymasks.geojson")

On Mon, Nov 28, 2022 at 7:09 AM Miluji Sb  wrote:

> Greetings everyone,
>
> I would like to convert the geojson file (
>
> https://drive.google.com/file/d/18h3sOjZg5jp5euLTWRi5mC40Sja8TZDN/view?usp=sharing
> )
> to a dataframe - essentially obtain which has coordinates matched to a
> country.
>
> I have tried the following;
>
> ###
> states <- geojsonsf::geojson_sf("~/countrymasks.geojson")
> geo <- geojsonsf::sf_geojson(states)
> sf <- sf::st_read(geo, quiet = T )
> df <- as.data.frame(sf::st_coordinates(sf) )
> ##
>
> But I get the following output, I am a bit lost. Any help will be highly
> appreciated.
>
> Best,
>
>   structure(list(X = c(-67.3804401, -67.36091, -67.38058,
> -67.339709998, -67.3780199, -67.32211), Y =
> c(-55.565569996,
> -55.584009899, -55.600410001, -55.614969997, -55.63521,
> -55.640089997), L1 = c(1, 1, 1, 1, 1, 1), L2 = c(1, 1, 1,
> 1, 1, 1), L3 = c(1, 1, 1, 1, 1, 1)), row.names = c(NA, 6L), class =
> "data.frame")
>
> [[alternative HTML version deleted]]
>
> ___
> R-sig-Geo mailing list
> R-sig-Geo@r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-sig-geo
>

[[alternative HTML version deleted]]

___
R-sig-Geo mailing list
R-sig-Geo@r-project.org
https://stat.ethz.ch/mailman/listinfo/r-sig-geo