QGIS enregistre incorrectement le polygone avec CRS personnalisé, tout en le projetant correctement à la volée

8

Je divise un polygone terrestre afin de déplacer le centrage de la projection vers l'océan Pacifique. Je parviens à découper avec succès le polygone d'origine sur le 22 méridien, et cela semble bien quand je fais une reprojection à la volée avec mon CRS personnalisé:

Projection de polygone OTF

Mais semble légèrement se déplacer lors de la sauvegarde du polygone avec le même CRS:

projection de polygone enregistrée

Mon CRS utilise cette chaîne proj4: +proj=eqc +lon_0=-158 +datum=WGS84 +units=m +no_defs +lon_wrap=-158

Des idées sur ce qui pourrait être à l'origine de cela?

srha
la source
cela est dû à des entités chevauchant le méridien est de -156 + 180 = 24 degrés (cela est plus commun avec le franchissement de l'antiméridien 180W, mais est différent lorsque vous avez déplacé la carte
Steven Kay
@StevenKay qui est en fait une faute de frappe de ma part: x corrigé mon message d'origine
srha
2
Peut-être lié: gis.stackexchange.com/questions/70411/… . J'ai utilisé une sphère au lieu d'un ellipsoïde, un polygone coupé de 0,2 degrés de large et aucune +lon_wrapoption.
AndreJ

Réponses:

6

Ces `` artefacts '' sont un problème bien connu, et sont généralement le résultat de polygones traversant l'antiméridien (180 degrés e / w) La solution de référence est généralement ogr2ogr avec l'option wrapdateline.

Mais cela ne vous aidera pas. Dans votre cas, vous utilisez un décalage autour de -156. Cela signifie que toute entité traversant le méridien 24E (-156 + 180 = 24) vous pose des problèmes.

Pour résoudre ce problème, j'ai retiré une fine bande de chaque côté du 24E.

J'ai commencé avec les données de Natural Earth, et j'ai arrêté la projection (pour l'instant), et j'ai juste utilisé WGS84.

Pour dessiner le méridien 24E, j'ai utilisé le plugin QuickWKT et ajouté les éléments suivants en tant que nouveau calque ...

LINESTRING (24 -90,24 90)

Cela trace une seule ligne le long du méridien 24E.

Ensuite, j'ai numérisé manuellement une couche à gratter polygonale , en ajoutant deux polygones, un de chaque côté de la ligne et un hémisphère de taille, mais en serrant la ligne aussi près que possible. (Notez la qualité du dessin au trait ici ...)

entrez la description de l'image ici

Vous devriez probablement le faire aussi avec le plugin QuickWKT, pour obtenir plus de précision - cela implique plus de frappe et je voulais un test rapide :)

Ensuite, j'ai utilisé le clip pour découper mon fichier de formes d'origine sur le calque avec les deux polygones. Cela coupe une fine bande autour du méridien 24E ...

entrez la description de l'image ici

enfin, j'ai appliqué la projection OTF en utilisant votre CRS personnalisé - et le résultat fixe.

entrez la description de l'image ici

Steven Kay
la source
Ah, oh non! J'aurais aimé être revenu sur mon ordinateur plus tôt avant que vous ayez fait tout ce travail pour moi. Ma chaîne proj4 était en fait d'environ 158; Je viens de coller le mauvais (avec 156) après avoir fait quelques expériences.
srha
vous verrez le même problème avec 158 (je le fais quand même) - changez simplement 24 en 22. Si vous l'avez fait fonctionner sans faire cela, faites-moi savoir comment - je n'ai trouvé la fonctionnalité lon_wrap dans proj4 que très récemment :) (pensez-y, cela pourrait expliquer pourquoi Madagscar semble légèrement décalé ...)
Steven Kay
1
J'ai donc fait toutes les étapes que vous avez faites (essentiellement) - bande de polygones WKT vers 22; Vecteur> Géotraitement> La différence est la couche d'entrée et la bande WKT la couche de différence; Reprojet OTF. Jusqu'à ce point, tout a l'air super. Le problème se pose après avoir enregistré mon polygone résultant avec le même CRS personnalisé - le polygone enregistré est tout bancal mais celui de l'OTF est très bien :(
srha
1
merci pour la clarification ... viens de charger le calque enregistré de mon projet (maintenant supprimé) (enregistré à l'aide des crs proj4 personnalisés) et la valeur lon_wrap n'apparaît pas dans les métadonnées du calque. cela pourrait être le problème
Steven Kay
Hmm. Savez-vous comment résoudre ce problème? Je trouve la documentation proj4 un peu déroutante.
srha