EMODnet / emodnet.wfs

Access EMODnet Web Feature Service data through R
https://emodnet.github.io/emodnet.wfs/
Other
8 stars 4 forks source link

CRS representations across services appear to still use PROJ4 strings #25

Closed annakrystalli closed 6 months ago

annakrystalli commented 3 years ago

@salvafern I have noticed that sf objects returned for the servers often encode CRSs in the deprecated PROJ4 string format (eg +init=epsg:3034 returned by emodnet_get_layers(service="geology_seabed_substrate_maps", layers = "seabed_substrate_1m", reduce_layers = T)).

I know there's been big changes in the geospatial software landscape in terms of expressing CRSs as a result of changes in versions of the PROJ library > 5 & GDAL > 3 (see for example discussions of handling changes in package rgdal and here in sf. So my questions are:

LennertSchepers commented 3 years ago

Can we check which versions of PROJ & GDAL the servers are using? I did a quick search and I don't think this is possible automatically. For example, looking at GeoServer (one of the most popular open source software for hosting GIS layers and OGC services) it's quite hard to determine the GDAL version used:

"GeoServer and GDAL are under continuous development/improvement so each release series of GeoServer has some requirements in terms of which GDAL version need to be used. This is usually reported in the documentation unless there are typos or some sections don't get updated properly during updates. Example: since you are using 2.16, you need GDAL 2.x as reported here: https://docs.geoserver.org/stable/en/user/data/raster/gdal.html#installing-gdal-native-libraries " (from https://sourceforge.net/p/geoserver/mailman/message/36779617/ )

It's possible to retrieve the geoserver version (and other server metadata) by a REST API but it requires authentication. (See comment here: https://gis.stackexchange.com/a/269834 and https://docs.geoserver.org/stable/en/user/rest/about.html)

maelle commented 8 months ago

@salvafern what work is involved here? Thank you!

salvafern commented 8 months ago

I am not sure I am reproducing correctly but I don't see a PROJ4 string now:

library(EMODnetWFS)
t <- emodnet_get_layers(service="geology_seabed_substrate_maps", layers = "seabed_substrate_1m", reduce_layers = T)
# ✔ WFS client created successfully
# ℹ Service: "https://drive.emodnet-geology.eu/geoserver/gtk/wfs"
# ℹ Version: "2.0.0"

sf::st_crs(t)
# Coordinate Reference System:
#   User input: epsg:3034 
# wkt:
#   PROJCRS["ETRS89-extended / LCC Europe",
#           BASEGEOGCRS["ETRS89",
#                       ENSEMBLE["European Terrestrial Reference System 1989 ensemble",
#                                MEMBER["European Terrestrial Reference Frame 1989"],
#                                MEMBER["European Terrestrial Reference Frame 1990"],
#                                MEMBER["European Terrestrial Reference Frame 1991"],
#                                MEMBER["European Terrestrial Reference Frame 1992"],
#                                MEMBER["European Terrestrial Reference Frame 1993"],
#                                MEMBER["European Terrestrial Reference Frame 1994"],
#                                MEMBER["European Terrestrial Reference Frame 1996"],
#                                MEMBER["European Terrestrial Reference Frame 1997"],
#                                MEMBER["European Terrestrial Reference Frame 2000"],
#                                MEMBER["European Terrestrial Reference Frame 2005"],
#                                MEMBER["European Terrestrial Reference Frame 2014"],
#                                ELLIPSOID["GRS 1980",6378137,298.257222101,
#                                          LENGTHUNIT["metre",1]],
#                                ENSEMBLEACCURACY[0.1]],
#                       PRIMEM["Greenwich",0,
#                              ANGLEUNIT["degree",0.0174532925199433]],
#                       ID["EPSG",4258]],
#           CONVERSION["Europe Conformal 2001",
#                      METHOD["Lambert Conic Conformal (2SP)",
#                             ID["EPSG",9802]],
#                      PARAMETER["Latitude of false origin",52,
#                                ANGLEUNIT["degree",0.0174532925199433],
#                                ID["EPSG",8821]],
#                      PARAMETER["Longitude of false origin",10,
#                                ANGLEUNIT["degree",0.0174532925199433],
#                                ID["EPSG",8822]],
#                      PARAMETER["Latitude of 1st standard parallel",35,
#                                ANGLEUNIT["degree",0.0174532925199433],
#                                ID["EPSG",8823]],
#                      PARAMETER["Latitude of 2nd standard parallel",65,
#                                ANGLEUNIT["degree",0.0174532925199433],
#                                ID["EPSG",8824]],
#                      PARAMETER["Easting at false origin",4000000,
#                                LENGTHUNIT["metre",1],
#                                ID["EPSG",8826]],
#                      PARAMETER["Northing at false origin",2800000,
#                                LENGTHUNIT["metre",1],
#                                ID["EPSG",8827]]],
#           CS[Cartesian,2],
#           AXIS["northing (N)",north,
#                ORDER[1],
#                LENGTHUNIT["metre",1]],
#           AXIS["easting (E)",east,
#                ORDER[2],
#                LENGTHUNIT["metre",1]],
#           USAGE[
#             SCOPE["Conformal mapping at scales of 1:500,000 and smaller."],
#             AREA["Europe - European Union (EU) countries and candidates. Europe - onshore and offshore: Albania; Andorra; Austria; Belgium; Bosnia and Herzegovina; Bulgaria; Croatia; Cyprus; Czechia; Denmark; Estonia; Faroe Islands; Finland; France; Germany; Gibraltar; Greece; Hungary; Iceland; Ireland; Italy; Kosovo; Latvia; Liechtenstein; Lithuania; Luxembourg; Malta; Monaco; Montenegro; Netherlands; North Macedonia; Norway including Svalbard and Jan Mayen; Poland; Portugal including Madeira and Azores; Romania; San Marino; Serbia; Slovakia; Slovenia; Spain including Canary Islands; Sweden; Switzerland; Turkey; United Kingdom (UK) including Channel Islands and Isle of Man; Vatican City State."],
#             BBOX[24.6,-35.58,84.73,44.83]],
#           ID["EPSG",3034]]

In any case I would say we move forward by:

maelle commented 8 months ago

Thanks!

Check if any EMODnet lot returns PROJ4 strings.

So you mean making one query per service to check?

salvafern commented 8 months ago

Yes - if none return the PROJ4 string then we could just close this issue.

maelle commented 7 months ago

Checks under way! @salvafern could we also ask centrally about the versions of PROJ and GDAL used?

maelle commented 7 months ago

Does this look ok in terms of projections:

https://gist.github.com/maelle/20c8ba8950a4b68dcb92e5f8f734aca8

maelle commented 6 months ago

if no error/warning/message from sf, probably ok