[R-sig-Geo] geoJSON and leaflet

Tim Salabim t|m@@ppe|h@n@ @end|ng |rom gm@||@com
Tue Jul 9 15:13:30 CEST 2019


Hi Benjamin,
What you get back from the jsonlite::fromJSON() call is a simplified list
with the data (including the geometry information) as a data frame in one
of the list slots. GeoJson is usually a character string. Therefore, if you
open your map in the browser and open the console (Ctrl + i) you will see
the error message: "Invalid GeoJson object".

I am no expert on geojson structure, but it seems that the data that you
request is not in standard format. I tried a few different ways of parsing
the data to a valid GeoJson string but did not have success. Maybe someone
else with more insight has some helpful ideas how to achieve this.

However, I found a workaround to get the polygons shown on the map using
library(sf) - see code below. Note, this only visualises the geometry
information only, so direct popup queries via "~" are not possible.

library(leaflet)
library(jsonlite)
library(sf)

url <- "
http://www.georisques.gouv.fr/api/v1/sis?rayon=1000&latlon=4.854899%2C%2045.763079&page=1&page_size=10
"

geojson <- jsonlite::fromJSON(url)

# convert coordinate arrays to matrices
geom = lapply(geojson$data$geom$coordinates, matrix, ncol = 2)
# create multipolygon from coordinate matrices
geom = st_cast(st_polygon(geom), "MULTIPOLYGON")

leaflet() %>%
  addTiles()%>%
  setView(lng = 4.854899, lat = 45.763079, zoom = 14) %>%
  addMarkers(lng = 4.872536, lat = 45.758321)%>%
  addPolygons(data = geom)

HTH,
Tim



On Tue, Jul 9, 2019 at 1:49 PM Benjamin Pauget <benjamin.pauget using tesora.fr>
wrote:

> Hi,
>
> I’m writting because I have some trouble with a geoJSON file and a leaflet.
>
> I’m trying to display polygon on a leaflet map, but nothing append ☹
>
> I have no error message.
>
> Do you have some advice/ideas?
>
>
>
> Best regards
>
>
>
>
>
> Here is my code :
>
> library(leaflet)
>
> library(jsonlite)
>
> url <- "
> http://www.georisques.gouv.fr/api/v1/sis?rayon=1000&latlon=4.854899%2C%2045.763079&page=1&page_size=10
> "
>
> geojson <- jsonlite::fromJSON(url)
>
> leaflet() %>%
>
>   addTiles()%>%
>
>   setView(lng = 4.854899, lat = 45.763079, zoom = 14) %>%
>
>   addMarkers(lng = 4.872536, lat = 45.758321)%>%
>
>   addGeoJSON(geojson) # doesn’t work by using geojson$data or
> geojson$data$geom
>
>
>
>
>
>
>
>
>
> *Benjamin PAUGET*
>
> Responsable R&D
>
> [image: cid:image005.png using 01D4F3BB.3531D840]
>
>
>
> +33 (0)1 81 94 13 70
>
> +33 (0)6 47 01 85 92
>
> Le Visium
>
> 22 Av Aristide Briand
>
> 94110 ARCUEIL
>
> https://tesora.fr/
>
> Linkedin <https://www.linkedin.com/company/tesora-france>
>
>
>
>
> _______________________________________________
> R-sig-Geo mailing list
> R-sig-Geo using r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-sig-geo
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://stat.ethz.ch/pipermail/r-sig-geo/attachments/20190709/60fb117b/attachment.html>

-------------- next part --------------
A non-text attachment was scrubbed...
Name: image001.png
Type: image/png
Size: 5152 bytes
Desc: not available
URL: <https://stat.ethz.ch/pipermail/r-sig-geo/attachments/20190709/60fb117b/attachment.png>


More information about the R-sig-Geo mailing list