Projet

Général

Profil

Development #20826

opengis : pouvoir préciser la projection "préférée" du serveur

Ajouté par Frédéric Péters il y a plus de 6 ans. Mis à jour il y a plus de 5 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Version cible:
-
Début:
20 décembre 2017
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:

Description

Pour le calcul des tuiles le serveur peut avoir une configuration avec des tuiles déjà préparées pour une projection particulière, ça serait alors bien utile de pouvoir préciser la projection à utiliser dans la requête au service GetMap.


Fichiers


Demandes liées

Lié à Passerelle - Development #21558: opengis: rajouter le geocodage inverseFermé31 janvier 2018

Actions

Révisions associées

Révision 9539f8e4 (diff)
Ajouté par Serghei Mihai il y a environ 6 ans

opengis: add preferred projection system (#20826)

Historique

#1

Mis à jour par Frédéric Péters il y a plus de 6 ans

  • Priorité changé de Normal à Bas

Aucune espèce de priorité, j'ai testé le SIG Strasbourg et même sans précalcul ça m'apparait ok.

#2

Mis à jour par Serghei Mihai il y a environ 6 ans

  • Assigné à mis à Serghei Mihai
  • Priorité changé de Bas à Normal
#3

Mis à jour par Serghei Mihai il y a environ 6 ans

Avec comme valeur par défaut WGS84.

#4

Mis à jour par Frédéric Péters il y a environ 6 ans

On est d'accord que ça change le comportement des connecteurs actuels ? On est d'accord aussi que c'est une mauvaise idée de faire ça ?

Et le code n'est pas correct, il y a un peu plus haut la conversion des coordonnées reçues/calculées vers ce système de coordonnées, et celui-ci n'est pas mis à jour par le patch. (et donc on va se trouver à filer des coordonnées en epsg:3857 en les déclarant comme EPSG:4326….

Et pourquoi ce paramètre n'est pas utilisé dans l'endpoint feature_info ?

#5

Mis à jour par Serghei Mihai il y a environ 6 ans

Frédéric Péters a écrit :

On est d'accord que ça change le comportement des connecteurs actuels ? On est d'accord aussi que c'est une mauvaise idée de faire ça ?

Je me disais qu'il valait mieux laisser une valeur par défaut qui n'implique aucune comprehension, mais tu as raison. Il faudra de toute façon le paramètrer. Autant garder la compatibilité avec l'existant.

Comme le endpoint feature_info utilisait une projection différente de tile, il faudrait faire le tour des connecteurs et le modifier.

#6

Mis à jour par Frédéric Péters il y a environ 6 ans

    query_layer = models.CharField(_('Query Layer'), max_length=256)
    projection = models.CharField(_('Preferred projection'), default='EPSG:3857', max_length=256)

Je ne sais pas si on est uniforme dans la capitalisation ailleurs dans Passerelle mais ici on ne l'est visibliement pas. Et peut-être "SIG Projection" pour bien noter qu'on parle de la projection de ce côté-là ?

Aussi, je me suis demandé un peu si on ne limiterait pas la liste, pour permettre en plus des libellés aux projections, genre ('EPSG:2154', 'EPSG:2154 (Lambert 93)').

#7

Mis à jour par Serghei Mihai il y a environ 6 ans

#8

Mis à jour par Serghei Mihai il y a environ 6 ans

Ok, libellé de l'attribut plus parlant.

Je me disais aussi initialement qu'une liste serait mieux, mais me suis posé la question des choix à y inclure. Et voilà, j'y rajoute toutes les projections avec lesquelles nous travaillons jusqu'à présent. Et au passage je rajoute celle dont j'aurai besoin à Grenoble.

#9

Mis à jour par Frédéric Péters il y a environ 6 ans

('epsg:3857', _('EPSG:4171 (Pseudo-Mercator)')),

3857 vs 4171 ?

#12

Mis à jour par Frédéric Péters il y a environ 6 ans

('epsg:3857', _('EPSG:3857 (Pseudo-Mercator)')),

Pour suivre https://epsg.io/3857 , plutôt avoir : EPSG:3857 (WGS 84 / Pseudo-Mercator). Et trier.

EPSG:4171 qui était la valeur utilisée, n'est même plus disponible. ?

On passait EPSG:XXXX, on passe epsg:XXXX, on est sûr que derrière les serveurs vont accepter ce changement ?

#13

Mis à jour par Serghei Mihai il y a environ 6 ans

Dans les exemples de doc de geoserver je vois que les noms des paramètres et leur valeurs sont insensible à la case:

#14

Mis à jour par Serghei Mihai il y a environ 6 ans

Mais pour éviter de nous poser des questions je propose que les noms des projections soient en majuscule partout. pyproj les comprend bien en majuscules aussi.

#15

Mis à jour par Thomas Noël il y a environ 6 ans

Je ne comprends pas le code.

Avant on envoyait toujours 'EPSG:4171' ou 'EPSG:3857' selon le endpoint. Maintenant on va envoyer self.projection, très bien. Mais pourquoi fais-tu alors une conversion dans tile ? Justement on n'a plus à la faire, c'est le service wms qui va s'en charger... non ?

#16

Mis à jour par Thomas Noël il y a environ 6 ans

Vu en direct avec Serghei, ma lecture c'est que je ne comprends même pas le code existant.

Pour feature_info :
  • Combo ou wcs vont interroger avec des coordonnées 3857 (le truc utilisé par les cartes en ligne), et feature_info fait comme si c'était du 4171... ie le code actuel me semble bugué. De même, le retour de feature_info sera en 4171.
  • Ensuite, si on applique le patch, feature_info doit convertir en self.projection avant d'interroger le système en face. Et celui-ci renverra des coordonnées en self.projection, qu'il faudrait repasser en 3857.
Pour tile:
  • Pour les tuiles, le patch ne semble pas bon, sauf si j'ai raté quelque chose le endpoint reçoit du 3857 (et pas du 4326).
Peut-être que pour rendre le truc plus "extensible" et générique, on pourrait définir :
  • endpoint_projection : une projection attendue pour les x/y reçus par les endpoints, qui serait 3857 par défaut ; modifiable lors de l'appel avec un ?proj=...
  • gis_projection : une projection pour interroger le SIG en face, 4326 par défaut (le format des SIG de base, semble-t-il) [ce que propose ce patch]
  • feature_info_gis_projection : une projection pour feature_info si différente (?)
  • tile_gis_projection : une projection pour les tuiles si différente (?)

... parce que sinon on va lutter sans fin en fonction du/des logiciels en face et de leurs possibilités.

La difficulté pour moi c'est de reconvertir les résultats reçus du SIG (le build_dict_from_xml étant pour l'instant très kiss)

#17

Mis à jour par Serghei Mihai il y a environ 6 ans

Je n'ai pas suivi l'historique des devs, notamment de feature_info, mais en reprenant l'exemple de l'url donnée dans #15431 et en changeant le système de projection en 3857 le résultat est le même, y compris les coordonnées.
Mais je n'ai pas l'impression que les coordonnées sont utilisées.

Sinon c'est EPSG:3857 qui est utilisé par les cartes, j'ai foiré mon patch.

Frédéric, tu peux nous rafrachir la mémoire du pourquoi tile et feature_info ont été implementées initialement avec des systèmes de projection différents?

#18

Mis à jour par Frédéric Péters il y a environ 6 ans

Je n'ai pas suivi l'historique des devs, notamment de feature_info

C'est toi qui a développé ça.

#19

Mis à jour par Serghei Mihai il y a environ 6 ans

Mes deux contributions au connecteur sont la séparation des urls pour les flux wms et wfs, et le endpoint features.

#20

Mis à jour par Frédéric Péters il y a environ 6 ans

Ok désolé j'ai lu trop rapidement un git blame et visiblement ma mémoire étant ce qu'elle est, je n'ai pas plus de contexte que les tickets (#15431 puis #19603), juste que sans doute derrière ça attendait des trucs différents et voilà.

#21

Mis à jour par Thomas Noël il y a environ 6 ans

Ok.

Je propose d'interroger en self.project=4326 par défaut, avec conversion des inputs en 3857 vers en self.projection.

Et tant pis pour l'instant pour les coordonnées de retour ? On laisse passer build_dict_from_xml et c'est tout ? Ça me semble problématique, même si j'ai l'impression qu'on pinaille pour au final des histoires de quelques pixels (ça serait à vérifier, c'est juste mon impression au vu du code existant... qui marche ?).

En tout cas, difficile de pousser cela en recette maintenant (bascule en prod dans 3 jours). Plutôt début de semaine prochaine.

#22

Mis à jour par Serghei Mihai il y a environ 6 ans

Oui, rajouter la conversion des coordonnées dans feature_info vers la projection choisie.
Je vais zapper pour l'instant la conversion des coordonées de retour.

Par rapport à l'existant: il y a déjà quelque part le connecteur deployé, ou les 2 endpoints: feature_info et tile sont utilisés. Après les changements de ce ticket il faudrait instancier un connecteur supplémentaire avec un autre système de projection.

Je vais m'arranger pour décaler l'arrivée en recette.

#24

Mis à jour par Emmanuel Cazenave il y a environ 6 ans

 # convert only when projection system is other than WGS84
 if self.projection != 'EPSG:4326':

WGS84 c'est EPSG:3857 non ? donc le commentaire match pas avec le code ?

Aussi 'EPSG:4326' est utilisé à plusieurs endroits et semble avoir un statut particulier (projection par défaut ?), bref le mettre dans une variable globale avec un nom qui permette à ignorant comme moi de comprendre ce que c'est, ce serait bien.

#25

Mis à jour par Emmanuel Cazenave il y a environ 6 ans

Emmanuel Cazenave a écrit :

[...]

WGS84 c'est EPSG:3857 non ? donc le commentaire match pas avec le code ?

Oublie ça, my bad.

#26

Mis à jour par Emmanuel Cazenave il y a environ 6 ans

ack

#27

Mis à jour par Serghei Mihai il y a environ 6 ans

  • Statut changé de Nouveau à Résolu (à déployer)
commit 9539f8e432b54a47745613221b6bea0fa2fe14d8 (origin/master, origin/HEAD)
Author: Serghei Mihai <smihai@entrouvert.com>
Date:   Mon Feb 19 11:03:06 2018 +0100

    opengis: add preferred projection system (#20826)
#28

Mis à jour par Benjamin Dauvergne il y a plus de 5 ans

  • Statut changé de Résolu (à déployer) à Fermé

Formats disponibles : Atom PDF